This is Tree.h in view mode; [Download] [Up]
#import <appkit/appkit.h>
#import <soundkit/Sound.h>
#import <misckit/SearchableText.h>
#import "UPath.h"
#import "HitPath.h"
#define RECT_NODETYPE 0
#define ROUNDRECT_NODETYPE 1
#define ELLIPSE_NODETYPE 2
#define RHOMB_NODETYPE 3
#define HEXAGON_NODETYPE 4
#define ENDING_NONE 0
#define ENDING_ARROW 1
#define ENDING_HOLLOW 2
#define ENDING_DOUBLE 3
#define ENDING_SOLID 4
#define ENDING_CIRCLE 5
#define UPDATE_NONE 0x0
#define UPDATE_TREEVIEW 0x1
#define UPDATE_TEXTVIEW 0x2
#define CHECK_RESIZE 0x4
#define SCROLL_TREEVIEW 0x8
#define UPDATE_ALL (UPDATE_TREEVIEW | UPDATE_TEXTVIEW | CHECK_RESIZE)
@protocol TreeDelegate
- updateViewsDirty:(BOOL)aBool rect:(NXRect *)aRect flag:(int)aFlag;
- tree;
- declareSelection:aNode;
- (float)docScale;
- setDocScale:(float)aScale;
- currentNode;
- (BOOL)showMarker;
- undoManager;
@end
typedef struct _LINE {
NXCoord dx,dy;
struct _LINE *link;
} Polyline;
typedef struct _POLYGON {
struct {
Polyline *head,*tail;
} lower,upper;
} Polygon;
typedef struct _PROPERTIES {
NXCoord border,parentDistance;
int zipped,shadow,fill,outline;
id font;
int pathKind,linkKind;
NXColor fillColor,outlineColor,textColor,shadowColor;
float linewidth;
float biegFactor;
char *defaultNodeName;
int ending, parentEnding;
} Properties;
typedef struct _DRAWSTATE {
float linewidth;
NXColor color;
id font;
} DrawState;
typedef struct _TEXTPLACER {
float rect[2];
float roundRect[3];
float ellipse[2];
float rhomb[2];
float hexagon[3];
} TextPlacer;
@interface Tree:Object
{
Tree *parent,*child,*sibling;
NXCoord width,height,border,parentDistance,linewidth;
NXPoint pos,offset,deltaText,deltaLink,deltaShadow;
Polygon contour;
//BOOL zipped,updateLayout,shadow,outline,fill,selected;
int zipped,updateLayout,shadow,outline,fill,selected;
id nodeDescription;
UPath *gpath;
id delegate;
int pathKind,linkKind;
float biegFactor;
int ending, parentEnding;
NXColor fillColor,outlineColor,shadowColor;
TextPlacer placer;
NXDataLink *verknuepfung;
//BOOL hasVerknuepfung;
int hasVerknuepfung;
Sound *geraeusch;
//BOOL hasSound;
int hasSound;
TextFieldCell *textCell;
NXRect textCellFrame;
unsigned dgVertexNr[4], dgSymbolNr;
}
// creating and destroying
- initLabel:(const char *)aLabel props:(Properties *)aProps;
- free;
- copyFromZone:(NXZone *)zone;
// layout and drawing
- involved:(const NXRect *)aRect addTo:aList link:aPath;
- getBounds:(NXRect *)rect;
- getTreeBounds:(NXRect *)rect
lowerWidth:(NXCoord *)lowW lowerHeight:(NXCoord *)lowH;
- hit:(HitPath *)hitUPath;
- hitAttachment:(const NXPoint *)aPoint :(BOOL *)theAttach;
- activateAttachment:(NXEvent *)event inView:aView;
- activateSound:(NXEvent *)event inView:aView;
- drawNodeShadow:(DrawState *)aState;
- drawNodeFill:(DrawState *)aState;
- drawNodeOutline:(DrawState *)aState knobs:(BOOL)aBool;
- drawNodeEnding:(DrawState *)aState;
- drawNodeCellsInView:aView attachments:(BOOL)aBool;
- setOffset:(NXCoord)aX :(NXCoord)aY;
- (NXCoord)width;
- (NXCoord)height;
- (Polygon *)contour;
- layout;
- getTextFrame:(NXRect *)aRect;
// tree data structure manipulation
- sibling;
- child;
- parent;
- addTree:(Tree *)aTree;
- removeChild:(Tree *)aChild;
- insertTree:(Tree *)aTree at:(int)aPos;
//properties
- attachFile:(const char *)aFileName;
- breakAttachment;
- (BOOL)attached;
- attachSound:(const char *)aSoundName;
- breakSound;
- (BOOL)hasSound;
- attachedSound;
- setSound:aSound;
- applyStyleToSubtree;
- promoteProps:(Properties *)aProps;
- getProps:(Properties *)aProps;
- changeTo:(Properties *)aProps;
// tree properties
- (NXCoord)border;
- setBorder:(NXCoord)aBorder;
- (NXCoord)parentDistance;
- setParentDistance:(NXCoord)aParentDistance;
- (BOOL)shadow;
- setShadow:(BOOL)aShadow;
- (int)linkKind;
- setLinkKind:(int)aLinkKind;
- changeLinkKind;
- (float)biegFactor;
- setBiegFactor:(float)aBiegFactor;
- (NXColor)shadowColor;
- setShadowColor:(NXColor)aColor;
// node properties
- (const char *)label;
- setLabel:(const char *)aLabel;
- setRTFDescription:(const char *)aDescription;
- setDescription:(const char *)aDescription;
- changeDescriptionFrom:aTextView;
- putDescriptionIn:aTextView;
- (int)pathKind;
- setPathKind:(int)aPathKind;
- (BOOL)outline;
- setOutline:(BOOL)aOutline;
- font;
- changeFont:sender;
- (NXColor)fillColor;
- setFillColor:(NXColor)aColor;
- (NXColor)outlineColor;
- setOutlineColor:(NXColor)aColor;
- (NXColor)textColor;
- setTextColor:(NXColor)aColor;
- (float)linewidth;
- setLinewidth:(float)aLinewidth;
- (BOOL)zipped;
- changeZipped;
- (int)ending;
- setEnding:(int)aEnding;
- (int)parentEnding;
- setParentEnding:(int)aEnding;
// misc
- (BOOL)selected;
- setSelected:(BOOL)aBOOL;
- setUpdateLayout:(BOOL)aBool;
- positionFrom:(const NXPoint *)aPoint;
- setPositionTo:(const NXPoint *)aPoint;
- linkPoint:(NXPoint *)aPoint;
- linkParentPoint:(NXPoint *)aPoint;
- linkChildPoint:(NXPoint *)aPoint;
- delegate;
- setDelegate:aDelegate;
- setDelegateRecursive:aDelegate;
- textDidEnd:textObject endChar:(unsigned short)endChar;
// streaming to diagram2 format
- (unsigned)dgSymbolNr;
- dgWriteSymbol:(NXStream *)stream buffer:(char *)buffer filename:(const char *)aName;
- dgWriteVertex:(NXStream *)stream buffer:(char *)buffer;
- dgWriteLine:(NXStream *)stream buffer:(char *)buffer;
+ saveToD2Tree:aTree fromView:aView toFile:(const char *)aFile printInfo:aPrintInfo;
+ (unsigned)dgNextNr;
// streaming
- writeStyleToPBStream:(NXTypedStream *)stream;
- readStyleFromPBStream:(NXTypedStream *)stream;
- writeToPBStream:(NXTypedStream *)stream;
- writeToMMAPB:(NXStream *)stream;
- write:(NXTypedStream *)stream;
- read:(NXTypedStream *)stream;
- awake;
// SearchableText support
- searchTreeFor:(const char *)pattern untilNode:endNode
reverse:(BOOL)rev regexpr:(BOOL)regexpr cases:(BOOL)cases position:(int *)positionS size:(int *)sizeS;
- replaceTreeFor:(const char *)pattern with:(const char *)replacement untilNode:endNode
regexpr:(BOOL)regexpr cases:(BOOL)cases result:(int *)result;
- nextInDepth;
- previousInDepth;
- lastInDepth;
- (BOOL)replaceLabelSelectionWith:(const char *)replacement pos:(int)aPos size:(int)aSize;
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.