home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- // FILENAME: eTImage.h
- // SUMMARY: Interface for Image annotations with Action support
- // SUPERCLASS: Object
- // INTERFACE: None
- // PROTOCOLS: <Annotation,HTMDSupport,ASCIISupport,LaTeXSupport,Tool,
- // InspectableTarget,DocNotification>
- // AUTHOR: Rohit Khare
- // COPYRIGHT: (c) 1994 California Institure of Technology, eText Project
- ///////////////////////////////////////////////////////////////////////////////
- // DESCRIPTION
- // This is a class with two faces: it is useful as an abstract
- // implementation of the <Annotation> protocol suitable for staic-image-like
- // annotation development (contrast eTView) AND it is a simple annotation
- // class for imageable data in its default implementation.
- // It uses eTImageComponent to hold its image data.
- ///////////////////////////////////////////////////////////////////////////////
- // HISTORY
- // 11/26/94: Added captionMode for text-graphics.
- // 10/30/94: Modified to support <InspectableTarget>
- // 07/16/94: Rewritten from scratch, integrating ImageAnnotation and Image
- ///////////////////////////////////////////////////////////////////////////////
-
- #import "Component.subproj/eTImageComponent.h"
- #import "eTextKernel.h"
-
- @interface eTImage:Object <DocNotification,Annotation,Tool,ASCIISupport,LaTeXSupport,HTMDSupport>
- {
- id theText;
- id etDoc;
-
- id imageComponent;
- id image;
- id altImageComponent;
- id altImage;
- char *description;
- NXSize size;
- BOOL usesButtonStyle;
- BOOL isDraggable;
- BOOL highlighted; // usesHighlightedStyle ????
- BOOL state; // button-emulation
- BOOL captionMode; // override to display text string in cell.
- }
-
- // "Delegate" methods
- // User Interaction
- - click:(NXEvent*)e;
- - doubleClick:(NXEvent*)e;
- - inspect:(NXEvent*)e;
- - drag: (Pasteboard *)draggingPboard image:(NXImage **)proxyImage;
- // client fills in for drag
-
- // "Client" methods -- feel free to access ivars directly.
- // Getter/Setter methods
- - setImageComponent: newImageComponent;
- - setAltImageComponent: newAltImageComponent;
- - setDescription: (const char *) newDescription;
- - setUsesButtonStyle:(BOOL)newState;
- - setDraggable:(BOOL)newState;
- - setSize:(const NXSize *)newSize;
- - setState:(int) newState; // can't do BOOL because of NS's Cell class
- - setCaptionMode;
- - eTextObj;
- - etDoc;
- - imageComponent;
- - altImageComponent;
- - (char *) description;
- - (char **) getDescription; // be careful of reallocing this
- - (BOOL) usesButtonStyle;
- - (BOOL) isDraggable;
- - (NXSize *) size;
- - (BOOL) state;
- - (BOOL) captionMode;
- // State Flushing
- - updateGraphics;
-
- // "Private" Methods; really, default implementations
- // Lifecycle
- + toolAwake:theApp;
- - init;
- - free; // NOTE: we free none of our ivars; subclasses must!
- - initFromPboard:thePB inDoc:theDoc linked:(BOOL) linked;
- // Drawing
- - calcCellSize:(NXSize *)theSize;
- - drawSelf:(const NXRect *)rect inView:view;
- - highlight:(const NXRect *)rect inView:view lit:(BOOL)flag;
- - (BOOL) trackMouse:(NXEvent *)theEvent
- inRect:(const NXRect *)rect
- ofView:view;
- // File I/O
- - readRichText:(NXStream *)stream forView:view;
- - writeRichText:(NXStream *)stream forView:view;
- // Drag-and-Drop
- - (NXDragOperation)draggingSourceOperationMaskForLocal:(BOOL)flag;
- - draggedImage:(NXImage *)image endedAt:(NXPoint *)screenPoint
- deposited:(BOOL)flag;
-
- @end