|
|
1.1 root 1: /*
2: * BarChart, A simple multi source loadable class.
3: *
4: * Written by: Joe Freeman 7/92
5: *
6: * HSB color sweep stolen from some of Randy Nelson's code
7: * should use NXEqualColor() for duplicates
8: *
9: */
10: /* bar spacing:Each plot is a width of 2N and each gap is a width of 1N
11: * The total width is m*(2N+N) + N = 3mN+N = where m is number of bars
12: * Thus N = width / (3m+1)
13: */
14:
15: /* Generated by Interface Builder */
16:
17: #import <appkit/appkit.h>
18: #import <dbkit/dbkit.h>
19:
20: typedef enum _graphType {
21: DRAW_H_BAR = 0,
22: DRAW_V_BAR = 1,
23: DRAW_H_LINE = 2,
24: DRAW_V_LINE = 3 /* not impl */
25: } graphType;
26:
27:
28: @interface ChartOfMatrix:View
29: {
30: id dataSrc; /* only connect in nib if is really matrix */
31: id minField;
32: id maxField;
33: id meanField;
34:
35: float minSheetSet, maxSheetSet;/* min and max size if not auto */
36: float vMargin,hMargin;/* size of top/bottom, right/left margins */
37: struct _COM_Flags {
38: BOOL autoScale:1; /* set vertical on fly or from xxxSheetSet */
39: BOOL randomBarColors:1;/* random color for the bars */
40: BOOL drawFrame:1; /* the black line around the plot */
41: unsigned drawType:3; /* bars, h, v, line */
42: unsigned dummy:10;
43: } COM_Flags;
44: NXColor backgroundColor;
45: NXColor highlightColor;
46: unsigned int highlightIndex; /* currently selected row */
47: int numPrototypes; /* number of prototype bars/ points disp IB */
48: int borderType; /* should we bezel */
49:
50: id mrExpression,mrFetchGroup; /* if getting fed from recordList */
51:
52: }
53:
54: - initFrame:(NXRect *)r;
55: - awake;
56:
57: /*============================================================
58: * color dragging support
59: *============================================================*/
60:
61: - (NXDragOperation)draggingEntered:(id <NXDraggingInfo>)sender;
62: - (BOOL)performDragOperation:(id <NXDraggingInfo>)sender;
63:
64: /*============================================================
65: * instance set / query methods
66: *============================================================*/
67:
68: - setGraphType:(int)drawCode;
69: - (int)graphType;
70:
71: /* */
72: - takeRandomColorStateFrom:sender;
73: - setRandomBarColorEnabled:(BOOL)flag;
74: - (BOOL)isRandomBarColorEnabled;
75: - takeBackgroundColorFrom:sender;
76: - setBackgroundColor:(NXColor)aColor;
77: - (NXColor)backgroundColor;
78: - takeHighlightColorFrom:sender;
79: - setHighlightColor:(NXColor)aColor;
80: - (NXColor)highlightColor;
81:
82:
83: /* set and query the size for the margins (in points) */
84: - takeHMarginFrom:sender;
85: - takeVMarginFrom:sender;
86: - (float)hMargin;
87: - (float)vMargin;
88:
89: /* fancy controls */
90: - takeFrameStateFrom:sender;
91: - (BOOL)frameState;
92: - takeNumProtosFrom:sender;
93: - (int)numProtos;
94: - takeBorderTypeFrom:sender; /* what type of bezel gets sender's tag*/
95: - (int)borderType;
96:
97: - takeAutoScaleStateFrom:sender;
98: - setAutoScale:(BOOL)flag;
99: - (BOOL)autoScale;
100:
101: /* when autoscale is off, set the min and max for the sheet */
102: - takeMinValueFrom:sender;
103: - takeMaxValueFrom:sender;
104: - (double)minValue;
105: - (double)maxValue;
106:
107: /*============================================================
108: * pasteboard
109: *============================================================*/
110:
111: - copy:sender;
112:
113: /*============================================================
114: * do real work
115: *============================================================*/
116:
117: - (int)numLocations;
118: - (float)valueOfLocation:(int)n;
119: - calcRect:(NXRect *)r
120: ofBar:(int)n
121: insideRect:(NXRect *)boundingRect
122: usingMin:(float)minSheetVal;
123:
124: /*============================================================
125: * target action loading
126: *============================================================*/
127:
128: - plotFromMatrix:sender;
129: /* we get this when DBModule fetches new batch of values */
130:
131: /*============================================================
132: * dbKit feed
133: *============================================================*/
134:
135: - associationContentsDidChange:association;
136: /* we get this when values are updated via UI */
137: - association:association setValue:(DBValue *)value;
138: /* we get this when the selection changes */
139: - associationSelectionDidChange:association;
140: /* we get this when a row is deleted */
141: - associationCurrentRecordDidDelete:association;
142:
143:
144: /*============================================================
145: * do a selection with the mouse
146: *============================================================*/
147:
148: - mouseDown:(NXEvent *)theEvent;
149:
150: /*============================================================
151: * archiving for the inspector
152: *============================================================*/
153:
154: - read:(NXTypedStream *)stream;
155: - write:(NXTypedStream *)stream;
156:
157: /*============================================================
158: * rendering
159: *============================================================*/
160:
161: - calcMin:(float *)rMin andMax:(float *)rMax andMean:(float *)rMean;
162: - renderVLines:(NXRect *)r min:(float )minSheetVal max:(float )maxSheetVal;
163: - renderBars:(NXRect *)r min:(float )minSheetVal max:(float )maxSheetVal;
164:
165: /*============================================================
166: * rendering
167: *============================================================*/
168:
169: - drawSelf:(NXRect *)r :(int)c;
170:
171: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.