This is Plot.h in view mode; [Download] [Up]
/* Plot.h by Jonas Karlsson, July 1990
*
* Copyright (C) 1991 The Board of Trustees of
* The Leland Stanford Junior University. All Rights Reserved.
*/
#define PLOT_H_ID "$Id: Plot.h,v 2.33.2.4 1994/02/08 20:30:09 rensing Exp $"
#import <appkit/appkit.h>
#import "Draw.subproj/Graphic.h"
#import "hippo.h"
#import "HTuple.h"
typedef struct cutParmType_t
{
char *cutFunc;
int varIndex;
float cutValue1;
float cutValue2;
int cutCode;
int blkSize;
} cutParmType;
typedef struct cutStorElem_t {
id plot;
NXAtom name;
func_id function;
BOOL invertFlag;
} cutStorElem;
typedef struct dependStorElem_t {
id plot;
NXAtom name;
} dependStorElem;
@interface Plot:Graphic
{
id graphicView; /* The View object in which drawing is done */
id hTuple; /* HTuple object for ntuple bound to display */
display disp;
BOOL cutHistFlag;
char *reffilename; /* filename of tuple referenced */
int ntindex; /* index to n-tuple in file */
BOOL refFlag; /* reference state before archiving */
BOOL fixBinsFlag; /* fixed bins state before archiving */
NXAtom uniqueName; /* unique name of plot */
/* data on plots used to make cut on this plot */
id cutPlotStor; /* Storage for cut Plots and func.*/
id cutPlotList; /* temporary List of cut Plots */
/* data used by Plot used for a Cut */
id dependStor; /* List of dependent Plots */
id dependList; /* temporary List of dependent Plots */
cutParmType cutParms;
int cutNumber; /* No longer used, but archived */
/* data used by Plot for functions */
List *funcList; /* List of functions or nil */
id inspector;
/* Flag used by Fit Inspector */
BOOL isFitted; /* YES if plot has not changed under fit */
}
+ initialize;
/*
* Class initializer. Sets version number of Class.
*/
- init;
- initPlotWithTuple: (HTuple *)ht Type: (graphtype_t) type;
- (const char *)name;
/*
* Retruns the unique name for the receiving object
*/
- setGraphicView:anObject;
/*
* Sets the graphic View object of the receiver.
*/
- graphicView;
/*
* Returns the view that receiving object is being displayed in.
*/
- setInspector:(id)anInspector;
- inspector;
- setHTuple: ht withDisplay:(display) d1;
/* Sets the ntuple handler and display hippo structures */
- setRefFilename:(const char *)filename;
/*
* Sets the name of the reference n-tuple file
*/
- changeRefFileNameIfValid:(const char *)filename;
/*
* Change the reference file name if it is a valid change. A
* valid change is one in which the n-tuple for the plot did not
* come from a file, i.e. it either came from pasteboard or from
* another part of the application.
*/
- setDispType:(graphtype_t *) type;
- closeTuple;
/*
* Un-binds the display from the n-tuple.
*/
- bindReference;
/*
* Attempts to bind the plot and its display to ntuple using its archived
* reference filename. This method is used for inserting a plot
* when reading document or when pasting from PasteBoard.
*/
- setRefFlag:(BOOL) refFlag;
/*
* Sets state of display's ntuple reference
*/
- setFitted:(BOOL) fitFlag;
/*
* Sets state of flag to show if plot matches fitted curve
*/
- (BOOL)isFitted;
/*
* Returns flag to show if plot matches fitted curve
*/
- setFixBinsFlag:(BOOL)flag;
/*
* Sets the fixed bins flag.
*/
- replaceTupleWith: ht;
/* Replaces the tuple handler of the display with new handler n1.
*/
- replace:oldTuple with:newTuple;
/*
* If oldTuple is the HTuple object for receiving Plot, then it
* is replaced with newTuple. returns self;
*/
- hTuple;
/*
* Returns the n-tuple handler object for display.
*/
- (ntuple) ntuple;
/* Returns the ntuple */
- addHTupleToList:tlist;
/*
* Adds the receiving object's hTuple to list tlist.
*/
- addPlotToList:list;
/*
* Receiving plot adds itself to the List list.
*/
- (display) histDisplay;
/* Returns the Hippo display */
- NameAxisX:(const char *)AxisName;
- NameAxisY:(const char *)AxisName;
- NameAxisZ:(const char *)AxisName;
- NameAxisW:(const char *)AxisName;
- NameAxisXE:(const char *)AxisName;
- NameAxisYE:(const char *)AxisName;
/*
* Set the label of the axes.
*/
- (const char *) axisLabelX;
/*
* Returns the x-axis label
*/
- (const char *) axisLabelY;
/*
* Returns the y-axis label
*/
- (const char *) axisLabelZ;
/*
* Returns the z-axis label
*/
- bindAxisX:(int *)dataDim;
/* Binds the X axis to data dimension dataDim.
*/
- bindAxisY:(int *)dataDim;
/* Binds the Y axis to data dimension dataDim.
*/
- bindAxisZ:(int *)dataDim;
/* Binds the Z axis to data dimension dataDim.
*/
- bindAxisW:(int *)dataDim;
/* Binds the weight to data dimension dataDim.
*/
- bindAxisXE:(int *)dataDim;
/* Binds the X error to data dimension dataDim.
*/
- bindAxisYE:(int *)dataDim;
/* Binds the Y error to data dimension dataDim.
*/
- setLogScale:(binding_t *)axis to:(int *)yesOrNo;
- (BOOL) isLogScaleX;
/*
* Returns YES if x-axis is displaying a log scale.
*/
- (BOOL) isLogScaleY;
/*
* Returns YES if y-axis is displaying a log scale.
*/
- (BOOL) isLogScaleZ;
/*
* Returns YES if z-axis is displaying a log scale.
*/
- setAutoScale:(binding_t *)axis to:(const int *)yesOrNo;
- setTitlesFlag:(const int *)yesOrNo;
/*
* Sets titles and labels drawing on or off
*/
- (int) titlesFlag;
/*
* Returns YES if titles and labels are being drawn
*/
- setAxesFlag:(int *)yesOrNo;
/*
* Sets drawing of axes on or off
*/
- (int) axesFlag;
/*
* Returns YES if axes are being drawn.
*/
- setNumBins:(binding_t *) axis to:(const int *)n;
/*
* Set the number of bins on axis axis to n.
*/
- (int) numBinsForAxis:(binding_t) axis;
- (float) widthForAxis:(binding_t) axis;
- setRange:(binding_t* ) axis to:(const NXPoint *)p;
/*
* Sets the range on axis axis to low and high given as x,y of point p.
*/
- setRangeAndNbins:(binding_t* ) axis to:(const NXPoint *)p;
/*
* Sets the range on axis axis to low and high given as x,y of point p.
* Also sets a new value of nBins and adjusts range to keep binwidth the same.
*/
- getRangeForAxisX:(NXPoint *)p;
- getRangeForAxisY:(NXPoint *)p;
- getRangeForAxisY:(NXPoint *)p normalizedTo:plot;
/*
* Returns, by reference, the range of the y axis. If both the receiving
* plot and plot are of graphtype HISTOGRAM, the the returned range
* is normalized to take into account the bin width.
*/
- getRangeForAxis:(binding_t) axis low:(float *) xl high:(float *) xh;
- setRangesFrom:plot;
- setRangesAndBinsFrom:plot;
/*
* Receiving plot sets x and y ranges to correspond to those of plot.
* If bot plots are graphtype HISTOGRAM, then receiving plot will
* take into account the bin width
*/
- setDrawType:(drawtype_t *) type;
- getDrawType:(drawtype_t *) type;
- setLineStyle:(linestyle_t *) style;
- getLineStyle:(linestyle_t *) style;
- setPlotSym:(plotsymbol_t *) plotsymbol;
- getPlotSym:(plotsymbol_t *) plotsymbol;
- setSymSize:(float *)plotsymsize;
- getSymSize:(float *)plotsymsize;
- setColorType:(const int *) onOff;
- (const char *) title;
/* Returns the title of the Histogram display
*/
- setTickLocation: (binding_t *) axis to:(plotloc_t *) loc;
- setScaleLocation: (binding_t *) axis to:(plotloc_t *) loc;
- setLabelLocation: (binding_t *) axis to:(plotloc_t *) loc;
- setScaleFontSize: (binding_t *) axis to:(float *) fontSize;
- setTickLength: (binding_t *) axis to:(float *) len;
/*
* axis frills.
*/
- print;
/* Generates line printer output to stdout
*/
- draw;
- setBounds:(const NXRect *)aRect;
- sizeToNaturalAspectRatio;
/*
* Sets size to default plot size keeping the upper left corner
* at its current postion.
*/
/* Methods supporting Archiving and de-Archiving */
- write:(NXTypedStream *) ts;
- read:(NXTypedStream *) ts;
- free;
/* frees the Hippo display (but not the tuple) and frees itself
*/
- wasRemovedFrom: gv;
@end
/* Methods dealing with cuts */
@interface Plot(Cut)
/* Methods supporting managing cutPlots to this plot */
- initCutWithTuple:ht Column:(int)i;
/*
* Initialize a new cut plot. Column specifies the column of the tuple to
* cut on.
*/
- (int) addCutPlot: cutPlot;
/*
* Adds a plot being used to display cuts to list of cut plots and
* returns 0 if successful. Returns 1 if the n-tuples of the
* receiving Plot and the cutPlot are different.
*/
- initCutParmsForColumn: (int)i;
/*
* set the cut parameters for the specified ntuple column.
*/
- bindCuts;
/*
* Attempts to bind the plot with its cuts, or its cut dependents.
* Should be invoked only after all plots have been bound.
*/
- changeCutPlot:cutPlot;
/*
* Informs receiving Plot that the plot cutPlot has changed the
* cut function parameters.
*/
- cutList;
/*
* Returns the list of plots being used to display the cuts on the
* receiving object.
*/
- (BOOL) hasCut;
/*
* Returns YES if a cut is being applied to the display
*/
- invertCutPlot:cutPlot;
/*
* Inverts the meaning of a cut
*/
- (BOOL) isInvertedCut:cutPlot;
/*
* Returns TRUE if give cutPlot has the invertFlag set to TRUE
*/
- removeAllCuts;
/*
* Receiving Plot removes all cuts.
*/
- removeCutPlot:cutPlot;
/*
* Receiving Plot removes cutPlot from list of plots that apply
* cut to its display.
*/
/* Methods used to support plot being used for display for a cut function */
- addCutDepend:sender;
/*
* Receiving object adds sender to list of Plots that depends
* on its cut control.
*/
- (unsigned) dependCount;
/*
* Returns the number of Plot objects depending on the receiving
* object to control its cut
*/
- dependList;
/*
* Returns a List object containing those Plots that depend on
* receiving objects cut paramaters.
*/
- getCutLow:(float *)low High:(float *)high;
/*
* Returns the cut parameters for cut functions being displayed by
* receiving object.
*/
- setCutLow:(float)low High:(float)high;
/*
* Sets the cut parameters for cut functions
*/
- (BOOL) isCutPlot;
/*
* Returns YES if receiving Plot is a plot that displays a cut,
* NO otherwise.
*/
- removeCutDepend:sender;
/*
* Removes the sender from list of Plots depending on receiver's
* cut control.
*/
- setCutHistFlag: (BOOL) yesOrNo;
/*
* Shows type of this plot. If it is a Cut Histogram, we handle it differently
*/
- (int) getCutColumn;
/*
* return the ntuple column being cut
*/
@end
/* Methods dealing with plot functions */
@interface Plot(Function)
- addFunction:aFunc;
/*
* Adds a Plot function to list of overlayed functions plotted
*/
- replaceDispFuncs;
/*
* Replaces the display's function list with new set built from
* the function list. This method is invoked when unarchiving
* a document.
*/
- removeFunction:aFunc;
/*
* Removes a Plot function from the list of overlayed functions.
*/
- (BOOL) hasFunction;
/*
* Returns YES only if receiving Plot has any plot functions attached.
*/
- (List *) functionList;
/*
* Returns the function list for receiving Plot.
*/
@end
/* Methods dealing with Three D rotations */
@interface Plot(ThreeD)
- mouseMoved:(const NXPoint *)offset withKey:(int *)flag;
- reset3D;
typedef struct {
int faceNo;
float value;
} grayValue_t;
- newGray3D:(grayValue_t *)grayValue;
- newTheta3D:(float *)angle;
- newPhi3D:(float *)angle;
- newDist3D:(float *)distance;
- toggleCube3D:(BOOL *)state;
- toggleWireFrame3D:(BOOL *)state;
- toggleFill3D:(BOOL *)state;
- toggleMesh3D:(BOOL *)state;
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.