home *** CD-ROM | disk | FTP | other *** search
- typedef enum { Normal, Resizing } DrawStatusType;
- typedef enum { LEFT = 1, RIGHT, BOTTOM, TOP, HORIZONTAL_CENTERS, VERTICAL_CENTERS, BASELINES } AlignmentType;
-
- extern DrawStatusType DrawStatus;
- extern NXAtom DrawPboardType;
- extern BOOL InMsgPrint;
-
- typedef enum { ByRect, ByGraphic, ByList } DrawSelectionType;
-
- /* Update modes for links. */
-
- #define UPDATE_NEVER 0
- #define UPDATE_IMMEDIATELY -1
- #define UPDATE_NORMALLY 1
-
- @interface GraphicView : View
- {
- List *glist; /* the list of Graphics */
- List *slist; /* the list of selected Graphics. In
- Draw with undo we are very careful
- to keep slist sorted, like glist */
- Window *cacheWindow; /* the off-screen cache */
- struct {
- #ifdef __BIG_ENDIAN__
- unsigned int groupInSlist:1; /* whether a Group is in the slist */
- unsigned int cacheing:1; /* whether cacheing or drawing */
- unsigned int suspendLinkUpdate:1; /* don't update links */
- unsigned int grid:8; /* grid size */
- unsigned int showGrid:1; /* whether grid is visible */
- unsigned int locked:1; /* some graphics are locked */
- unsigned int gridDisabled:1; /* whether grid is enabled */
- unsigned int freeOriginalPaste:1;/* whether originalPaste needs free */
- unsigned int serviceActsOnSelection:1; /* whether service acts on selection */
- #else
- unsigned int serviceActsOnSelection:1; /* whether service acts on selection */
- unsigned int freeOriginalPaste:1;/* whether originalPaste needs free */
- unsigned int gridDisabled:1; /* whether grid is enabled */
- unsigned int locked:1; /* some graphics are locked */
- unsigned int showGrid:1; /* whether grid is visible */
- unsigned int grid:8; /* grid size */
- unsigned int suspendLinkUpdate:1; /* don't update links */
- unsigned int cacheing:1; /* whether cacheing or drawing */
- unsigned int groupInSlist:1; /* whether a Group is in the slist */
- #endif
- // These last 16 bits are NOT archived, so don't depend on them being permanent across a Save/Open
- unsigned int selectAll:1; /* select all was last select operation performed */
- unsigned int dragCopyOk:1; /* true if dragging with sourcMask == copy is ok */
- unsigned int dragLinkOk:1; /* true if dragging with sourcMask == link is ok */
- unsigned int padding:13;
- } gvFlags;
- short *gupCoords; /* points in the grid user path */
- int gupLength; /* number of points in gupCoords */
- char *gupOps; /* movetos and linetos in the gup */
- short *gupBBox; /* bounding box of the gup */
- float gridGray; /* grayness of the grid */
- int consecutivePastes; /* number of consecutive pastes */
- int lastPastedChangeCount; /* the change count of last paste */
- int lastCopiedChangeCount; /* the change count of last cut or copy */
- int lastCutChangeCount; /* the change count of last cut */
- View *editView; /* flipped subview for editing */
- Graphic *originalPaste; /* the first pasted graphic */
- NXDataLinkManager *linkManager; /* manager of data links */
- NXRect *invalidRect; /* invalid area which must be cleaned up */
- NXRect *dragRect; /* last rectangle we dragged out to select */
- Storage *linkTrackingRects; /* the rects of the links we are tracking */
- }
-
- /* Class initialization */
-
- + initialize;
-
- /* Alignment methods */
-
- + (SEL)actionFromAlignType:(AlignmentType)alignType;
-
- /* Creation methods */
-
- - initFrame:(const NXRect *)frameRect;
-
- /* Free method */
-
- - free;
-
- /* Public methods */
-
- - (BOOL)isEmpty;
- - (BOOL)hasEmptySelection;
- - dirty;
- - getSelection;
- - setGroupInSlist:(BOOL)setting;
- - resetGroupInSlist;
- - resetLockedFlag;
- - getBBox:(NXRect *)bbox of:(List *)list;
- - getBBox:(NXRect *)bbox of:(List *)list extended:(BOOL)flag;
-
- - redrawGraphics:graphicsList afterChangeAgent:changeAgent performs:(SEL)aSelector;
- - graphicsPerform:(SEL)aSelector;
- - graphicsPerform:(SEL)aSelector with:(void *)argument;
-
- - cache:(const NXRect *)rect;
- - cache:(const NXRect *)rect andUpdateLinks:(BOOL)updateLinks;
- - recacheSelection;
- - createCacheWindow:(Window *)cacheWindow;
- - selectionCache;
- - (int)cacheSelection;
- - (int)cacheList:(List *)list into:(Window *)cacheWindow withTransparentBackground:(BOOL)flag;
- - (int)cacheList:(List *)list into:(Window *)cacheWindow;
- - cacheGraphic:(Graphic *)graphic;
-
- - removeGraphic:(Graphic *)graphic;
- - insertGraphic:(Graphic *)graphic;
- - (Graphic *)selectedGraphic;
- - (List *)selectedGraphics;
- - (List *)graphics;
-
- - (int)gridSpacing;
- - (BOOL)gridIsVisible;
- - (BOOL)gridIsEnabled;
- - (float)gridGray;
- - setGridSpacing:(int)gridSpacing;
- - setGridEnabled:(BOOL)flag;
- - setGridVisible:(BOOL)flag;
- - setGridGray:(float)gray;
- - setGridSpacing:(int)gridSpacing andGray:(float)gray;
- - grid:(NXPoint *)point;
-
- - placeGraphic:(Graphic *)graphic at:(const NXPoint *)location;
-
- /* Methods overridden from superclass */
-
- - sizeTo:(NXCoord)width :(NXCoord)height;
- - mouseDown:(NXEvent *)event;
- - drawSelf:(const NXRect *)rects :(int)rectCount;
- - keyDown:(NXEvent *)event;
-
- /* Getting/Setting the current Graphic */
-
- - (Graphic *)currentGraphic;
- - setCurrentGraphic:sender;
-
- /* Writing Draw Forms */
-
- - (BOOL)hasFormEntries;
- - writeFormEntriesToFile:(const char *)filename;
-
- /* Target/Action methods */
-
- - delete:sender;
- - selectAll:sender;
- - deselectAll:sender;
- - lock:sender;
- - unlock:sender;
- - bringToFront:sender;
- - sendToBack:sender;
- - group:sender;
- - ungroup:sender;
- - align:sender;
- - changeAspectRatio:sender;
- - alignToGrid:sender;
- - sizeToGrid:sender;
- - enableGrid:sender;
- - hideGrid:sender;
- - addCoverSheetEntry:sender;
- - addLocalizableCoverSheetEntry:sender;
-
- /* Target/Action messages sent from Controls to set various parameters */
-
- - takeGridValueFrom:sender;
- - takeGridGrayFrom:sender;
- - takeGrayValueFrom:sender;
- - takeLineWidthFrom:sender;
- - takeLineJoinFrom:sender;
- - takeLineCapFrom:sender;
- - takeLineArrowFrom:sender;
- - takeFillValueFrom:sender;
- - takeFrameValueFrom:sender;
- - takeLineColorFrom:sender;
- - takeFillColorFrom:sender;
- - takeFormEntryStatusFrom:sender;
-
- - changeFont:sender;
-
- /* Accepting becoming the First Responder */
-
- - (BOOL)acceptsFirstResponder;
-
- /* Printing-related methods */
-
- - beginSetup;
-
- /* Archiving methods */
-
- - awake;
- - write:(NXTypedStream *)stream;
- - read:(NXTypedStream *)stream;
-
- /* Validates whether a menu command makes sense now */
-
- - (BOOL)validateCommand:(MenuCell *)menuCell;
-
- /* Useful scrolling methods */
-
- - scrollGraphicToVisible:(Graphic *)graphic;
- - scrollPointToVisible:(const NXPoint *)point;
- - scrollSelectionToVisible;
-
- @end
-
- /* Pasteboard */
-
- typedef enum { LinkOnly = -1, DontLink = 0, Link = 1 } LinkType;
-
- @interface GraphicView(Pasteboard)
-
- #define NUM_TYPES_DRAW_EXPORTS 3
-
- extern NXAtom *TypesDrawExports(void);
- extern NXAtom DrawPasteType(const NXAtom *types);
- extern NXAtom ForeignPasteType(const NXAtom *types);
- extern NXAtom TextPasteType(const NXAtom *types);
- extern BOOL IncludesType(const NXAtom *types, NXAtom type);
- extern NXAtom MatchTypes(const NXAtom *typesToMatch, const NXAtom *orderedTypes);
-
- + convert:(NXTypedStream *)ts to:(const char *)type using:(SEL)writer toPasteboard:(Pasteboard *)pb;
- + pasteboard:(Pasteboard *)sender provideData:(const char *)type;
-
- - writePSToStream:(NXStream *)stream;
- - writePSToStream:(NXStream *)stream usingList:(List *)aList;
- - writeTIFFToStream:(NXStream *)stream;
- - writeTIFFToStream:(NXStream *)stream usingList:(List *)aList;
-
- - copySelectionAsPSToStream:(NXStream *)stream;
- - copySelectionAsTIFFToStream:(NXStream *)stream;
- - copySelectionToStream:(NXStream *)stream;
-
- - copyToPasteboard:(Pasteboard *)pboard types:(NXAtom *)types;
- - copyToPasteboard:(Pasteboard *)pboard;
- - (BOOL)pasteForeignDataFromPasteboard:(Pasteboard *)pboard andLink:(LinkType)doLink at:(const NXPoint *)point;
- - pasteFromPasteboard:(Pasteboard *)pboard andLink:(LinkType)doLink at:(const NXPoint *)point;
- - paste:sender andLink:(LinkType)doLink;
- - cut:sender;
- - copy:sender;
- - paste:sender;
- - pasteAndLink:sender;
-
- @end
-
- /* Data link methods */
-
- @interface GraphicView(Links)
-
- - (NXSelection *)currentSelection;
- - (Graphic *)findGraphicInSelection:(NXSelection *)selection;
- - (List *)findGraphicsInSelection:(NXSelection *)selection;
-
- - writeLinkToPasteboard:(Pasteboard *)pboard types:(const NXAtom *)typesList;
- - (BOOL)addLink:(NXDataLink *)link toGraphic:(Graphic *)graphic at:(const NXPoint *)p update:(int)update;
-
- - pasteFromPasteboard:(Pasteboard *)pboard at:(NXSelection *)selection;
- - importFile:(const char *)filename at:(NXSelection *)selection;
- - pasteboard:(Pasteboard *)sender provideData:(const char *)type;
- - copyToPasteboard:(Pasteboard *)pboard at:(NXSelection *)selection cheapCopyAllowed:(BOOL)cheapCopyAllowed;
-
- - updateLinksPanel;
- - (NXDataLinkManager *)linkManager;
- - setLinkManager:(NXDataLinkManager *)linkManager;
- - showSelection:(NXSelection *)selection;
- - breakLinkAndRedrawOutlines:(NXDataLink *)aLink;
- - updateTrackedLinks:(const NXRect *)rect;
- - startTrackingLink:(NXDataLink *)link;
- - stopTrackingLink:(NXDataLink *)link;
-
- @end
-
- /* Dragging */
-
- @interface GraphicView(Drag)
-
- - registerForDragging;
- - (NXDragOperation)draggingEntered:(id <NXDraggingInfo>)sender;
- - (NXDragOperation)draggingUpdated:(id <NXDraggingInfo>)sender;
- - (BOOL)performDragOperation:(id <NXDraggingInfo>)sender;
-
- @end
-
- /* Services Menu */
-
- @interface GraphicView(Services)
-
- - validRequestorForSendType:(NXAtom)sendType andReturnType:(NXAtom)returnType;
- - (BOOL)writeSelectionToPasteboard:(Pasteboard *)pboard types:(NXAtom *)types;
- - readSelectionFromPasteboard:(Pasteboard *)pboard;
-
- @end
-
- /*
- * Since we can't be sure that we have an InspectorPanel, we use the
- * objective-C respondsTo: mechanism to see if we can send the message
- * initializeGraphic: to [NXApp inspectorPanel]. This dummy interface
- * declaration declares those messages (so that even if they don't exists,
- * we can at least use them to check with respondsTo:). We don't want
- * to import DrawApp.h or InspectorPanel.h since we might accidentally
- * introduce a dependency on them which wouldn't be caught because we
- * imported both of their interfaces.
- */
-
- @interface PossibleInspectorPanel : Object
-
- - inspectorPanel;
- - initializeGraphic:(Graphic *)graphic;
-
- @end
-