00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00091
#ifndef __vtkXYPlotActor_h
00092
#define __vtkXYPlotActor_h
00093
00094 #define VTK_XYPLOT_INDEX 0
00095 #define VTK_XYPLOT_ARC_LENGTH 1
00096 #define VTK_XYPLOT_NORMALIZED_ARC_LENGTH 2
00097 #define VTK_XYPLOT_VALUE 3
00098
00099 #define VTK_XYPLOT_ROW 0
00100 #define VTK_XYPLOT_COLUMN 1
00101
00102
#include "vtkActor2D.h"
00103
00104
class vtkAppendPolyData;
00105
class vtkAxisActor2D;
00106
class vtkDataObject;
00107
class vtkDataObjectCollection;
00108
class vtkDataSet;
00109
class vtkDataSetCollection;
00110
class vtkGlyph2D;
00111
class vtkGlyphSource2D;
00112
class vtkIntArray;
00113
class vtkLegendBoxActor;
00114
class vtkPlanes;
00115
class vtkPolyData;
00116
class vtkPolyDataMapper2D;
00117
class vtkTextMapper;
00118
class vtkTextProperty;
00119
00120 class VTK_HYBRID_EXPORT vtkXYPlotActor :
public vtkActor2D
00121 {
00122
public:
00123 vtkTypeRevisionMacro(vtkXYPlotActor,
vtkActor2D);
00124
void PrintSelf(ostream& os,
vtkIndent indent);
00125
00130
static vtkXYPlotActor *
New();
00131
00132
00133
00134
00135
00136
00138
00142
void AddInput(
vtkDataSet *in,
const char* arrayName,
int component);
00143 void AddInput(
vtkDataSet *in) {this->AddInput(in, NULL, 0);}
00145
00147
00148
void RemoveInput(
vtkDataSet *in,
const char* arrayName,
int component);
00149 void RemoveInput(
vtkDataSet *in) {this->RemoveInput(in, NULL, 0);}
00151
00154
void RemoveAllInputs();
00155
00157 vtkDataSetCollection *GetInputList() {
return this->InputList;}
00158
00160
00163
void SetPointComponent(
int i,
int comp);
00164
int GetPointComponent(
int i);
00165
00167
00169
00177 vtkSetClampMacro(XValues,
int,VTK_XYPLOT_INDEX,VTK_XYPLOT_VALUE);
00178 vtkGetMacro(XValues,
int);
00179 void SetXValuesToIndex(){this->SetXValues(
VTK_XYPLOT_INDEX);};
00180 void SetXValuesToArcLength() {this->SetXValues(
VTK_XYPLOT_ARC_LENGTH);};
00181 void SetXValuesToNormalizedArcLength()
00182 {this->SetXValues(
VTK_XYPLOT_NORMALIZED_ARC_LENGTH);};
00183 void SetXValuesToValue() {this->SetXValues(
VTK_XYPLOT_VALUE);};
00184
const char *GetXValuesAsString();
00186
00187
00188
00189
00190
00191
00193
void AddDataObjectInput(
vtkDataObject *in);
00194
00196
void RemoveDataObjectInput(
vtkDataObject *in);
00197
00199
00200 vtkDataObjectCollection *GetDataObjectInputList()
00201 {
return this->DataObjectInputList;}
00203
00205
00207 vtkSetClampMacro(DataObjectPlotMode,
int,VTK_XYPLOT_COLUMN,VTK_XYPLOT_ROW);
00208 vtkGetMacro(DataObjectPlotMode,
int);
00209 void SetDataObjectPlotModeToRows()
00210 {this->SetDataObjectPlotMode(
VTK_XYPLOT_ROW);}
00211 void SetDataObjectPlotModeToColumns()
00212 {this->SetDataObjectPlotMode(
VTK_XYPLOT_COLUMN);}
00213
const char *GetDataObjectPlotModeAsString();
00215
00217
00223
void SetDataObjectXComponent(
int i,
int comp);
00224
int GetDataObjectXComponent(
int i);
00226
00228
00234
void SetDataObjectYComponent(
int i,
int comp);
00235
int GetDataObjectYComponent(
int i);
00236
00238
00239
00240
00241
00242
00243
00244
void SetPlotColor(
int i,
float r,
float g,
float b);
00245 void SetPlotColor(
int i,
const float color[3]) {
00246 this->SetPlotColor(i, color[0], color[1], color[2]); };
00247
float *GetPlotColor(
int i);
00248
void SetPlotSymbol(
int i,
vtkPolyData *input);
00249
vtkPolyData *GetPlotSymbol(
int i);
00250
void SetPlotLabel(
int i,
const char *label);
00251
const char *GetPlotLabel(
int i);
00252
00253
00254
00255
00256 vtkGetMacro(PlotCurvePoints,
int);
00257 vtkSetMacro(PlotCurvePoints,
int);
00258 vtkBooleanMacro(PlotCurvePoints,
int);
00259
00260 vtkGetMacro(PlotCurveLines,
int);
00261 vtkSetMacro(PlotCurveLines,
int);
00262 vtkBooleanMacro(PlotCurveLines,
int);
00263
00264
void SetPlotLines(
int i,
int);
00265
int GetPlotLines(
int i);
00266
00267
void SetPlotPoints(
int i,
int);
00268
int GetPlotPoints(
int i);
00269
00270
00272
00274 vtkSetMacro(ExchangeAxes,
int);
00275 vtkGetMacro(ExchangeAxes,
int);
00276 vtkBooleanMacro(ExchangeAxes,
int);
00278
00280
00284 vtkSetMacro(ReverseXAxis,
int);
00285 vtkGetMacro(ReverseXAxis,
int);
00286 vtkBooleanMacro(ReverseXAxis,
int);
00288
00290
00294 vtkSetMacro(ReverseYAxis,
int);
00295 vtkGetMacro(ReverseYAxis,
int);
00296 vtkBooleanMacro(ReverseYAxis,
int);
00298
00300
00304 vtkLegendBoxActor *GetLegendBoxActor()
00305 {
return this->LegendActor;}
00306 vtkGlyphSource2D *GetGlyphSource()
00307 {
return this->GlyphSource;}
00309
00311
00313 vtkSetStringMacro(Title);
00314 vtkGetStringMacro(Title);
00315 vtkSetStringMacro(XTitle);
00316 vtkGetStringMacro(XTitle);
00317 vtkSetStringMacro(YTitle);
00318 vtkGetStringMacro(YTitle);
00320
00322
00324 vtkAxisActor2D *GetXAxisActor2D()
00325 {
return this->XAxis;}
00326 vtkAxisActor2D *GetYAxisActor2D()
00327 {
return this->YAxis;}
00329
00331
00337 vtkSetVector2Macro(XRange,
float);
00338 vtkGetVectorMacro(XRange,
float,2);
00339 vtkSetVector2Macro(YRange,
float);
00340 vtkGetVectorMacro(YRange,
float,2);
00341 void SetPlotRange(
float xmin,
float ymin,
float xmax,
float ymax)
00342 {this->SetXRange(xmin,xmax); this->SetYRange(ymin,ymax);}
00344
00346
00351 vtkSetClampMacro(NumberOfXLabels,
int, 0, 50);
00352 vtkGetMacro(NumberOfXLabels,
int);
00353 vtkSetClampMacro(NumberOfYLabels,
int, 0, 50);
00354 vtkGetMacro(NumberOfYLabels,
int);
00355 void SetNumberOfLabels(
int num)
00356 {this->SetNumberOfXLabels(num); this->SetNumberOfYLabels(num);}
00358
00360
00363 vtkSetMacro(Legend,
int);
00364 vtkGetMacro(Legend,
int);
00365 vtkBooleanMacro(Legend,
int);
00367
00369
00375 vtkSetVector2Macro(LegendPosition,
float);
00376 vtkGetVector2Macro(LegendPosition,
float);
00377 vtkSetVector2Macro(LegendPosition2,
float);
00378 vtkGetVector2Macro(LegendPosition2,
float);
00380
00382
00383
virtual void SetTitleTextProperty(
vtkTextProperty *p);
00384 vtkGetObjectMacro(TitleTextProperty,
vtkTextProperty);
00386
00388
00390
virtual void SetAxisTitleTextProperty(
vtkTextProperty *p);
00391 vtkGetObjectMacro(AxisTitleTextProperty,
vtkTextProperty);
00393
00395
00397
virtual void SetAxisLabelTextProperty(
vtkTextProperty *p);
00398 vtkGetObjectMacro(AxisLabelTextProperty,
vtkTextProperty);
00400
00401
#ifndef VTK_REMOVE_LEGACY_CODE
00402
00403
00407
virtual void SetFontFamily(
int val);
00408
virtual int GetFontFamily();
00409 void SetFontFamilyToArial() { this->SetFontFamily(
VTK_ARIAL); };
00410 void SetFontFamilyToCourier() { this->SetFontFamily(
VTK_COURIER);};
00411 void SetFontFamilyToTimes() { this->SetFontFamily(
VTK_TIMES); };
00413
#endif
00414
00415
#ifndef VTK_REMOVE_LEGACY_CODE
00416
00417
00420
virtual void SetBold(
int val);
00421
virtual int GetBold();
00422 vtkBooleanMacro(Bold,
int);
00424
#endif
00425
00426
#ifndef VTK_REMOVE_LEGACY_CODE
00427
00428
00431
virtual void SetItalic(
int val);
00432
virtual int GetItalic();
00433 vtkBooleanMacro(Italic,
int);
00435
#endif
00436
00437
#ifndef VTK_REMOVE_LEGACY_CODE
00438
00439
00442
virtual void SetShadow(
int val);
00443
virtual int GetShadow();
00444 vtkBooleanMacro(Shadow,
int);
00446
#endif
00447
00449
00450 vtkSetMacro(Logx,
int);
00451 vtkGetMacro(Logx,
int);
00452 vtkBooleanMacro(Logx,
int);
00454
00456
00457
virtual void SetLabelFormat (
const char* _arg);
00458 vtkGetStringMacro(LabelFormat);
00460
00462
00464 vtkSetClampMacro(Border,
int, 0, 50);
00465 vtkGetMacro(Border,
int);
00467
00469
00472 vtkGetMacro(PlotPoints,
int);
00473 vtkSetMacro(PlotPoints,
int);
00474 vtkBooleanMacro(PlotPoints,
int);
00476
00478
00480 vtkGetMacro(PlotLines,
int);
00481 vtkSetMacro(PlotLines,
int);
00482 vtkBooleanMacro(PlotLines,
int);
00484
00486
00489 vtkSetClampMacro(GlyphSize,
float, 0.0, 0.2);
00490 vtkGetMacro(GlyphSize,
float);
00492
00495
void ViewportToPlotCoordinate(
vtkViewport *viewport,
float &u,
float &v);
00496
00498
00501
void ViewportToPlotCoordinate(
vtkViewport *viewport);
00502 vtkSetVector2Macro(PlotCoordinate,
float);
00503 vtkGetVector2Macro(PlotCoordinate,
float);
00505
00507
void PlotToViewportCoordinate(
vtkViewport *viewport,
float &u,
float &v);
00508
00510
00514
void PlotToViewportCoordinate(
vtkViewport *viewport);
00515 vtkSetVector2Macro(ViewportCoordinate,
float);
00516 vtkGetVector2Macro(ViewportCoordinate,
float);
00518
00521
int IsInPlot(
vtkViewport *viewport,
float u,
float v);
00522
00524
unsigned long GetMTime();
00525
00526
00528
00530
int RenderOpaqueGeometry(
vtkViewport*);
00531
int RenderOverlay(
vtkViewport*);
00532 int RenderTranslucentGeometry(
vtkViewport *) {
return 0;}
00534
00538
void ReleaseGraphicsResources(
vtkWindow *);
00539
00540
00541
protected:
00542 vtkXYPlotActor();
00543 ~vtkXYPlotActor();
00544
00545 vtkDataSetCollection *InputList;
00546 char** SelectedInputScalars;
00547 vtkIntArray* SelectedInputScalarsComponent;
00548 vtkDataObjectCollection *DataObjectInputList;
00549 char *Title;
00550 char *XTitle;
00551 char *YTitle;
00552 int XValues;
00553 int NumberOfXLabels;
00554 int NumberOfYLabels;
00555 int Logx;
00556 char *LabelFormat;
00557 float XRange[2];
00558 float YRange[2];
00559 float XComputedRange[2];
00560 float YComputedRange[2];
00561 int Border;
00562 int PlotLines;
00563 int PlotPoints;
00564 int PlotCurveLines;
00565 int PlotCurvePoints;
00566 int ExchangeAxes;
00567 int ReverseXAxis;
00568 int ReverseYAxis;
00569
00570 vtkTextMapper *TitleMapper;
00571 vtkActor2D *TitleActor;
00572 vtkTextProperty *TitleTextProperty;
00573
00574 vtkAxisActor2D *XAxis;
00575 vtkAxisActor2D *YAxis;
00576
00577 vtkTextProperty *AxisTitleTextProperty;
00578 vtkTextProperty *AxisLabelTextProperty;
00579
00580 float ViewportCoordinate[2];
00581 float PlotCoordinate[2];
00582
00583
00584 int DataObjectPlotMode;
00585 vtkIntArray *XComponent;
00586 vtkIntArray *YComponent;
00587 vtkIntArray *LinesOn;
00588 vtkIntArray *PointsOn;
00589
00590
00591
00592
00593 int NumberOfInputs;
00594 vtkPolyData **PlotData;
00595 vtkGlyph2D **PlotGlyph;
00596 vtkAppendPolyData **PlotAppend;
00597 vtkPolyDataMapper2D **PlotMapper;
00598 vtkActor2D **PlotActor;
00599
void InitializeEntries();
00600
00601
00602
00603 int Legend;
00604 float LegendPosition[2];
00605 float LegendPosition2[2];
00606 vtkLegendBoxActor *LegendActor;
00607 vtkGlyphSource2D *GlyphSource;
00608 vtkPlanes *ClipPlanes;
00609 float GlyphSize;
00610
00611
00612 int CachedSize[2];
00613 vtkTimeStamp BuildTime;
00614
00615
void ComputeXRange(
float range[2],
float *lengths);
00616
void ComputeYRange(
float range[2]);
00617
void ComputeDORange(
float xrange[2],
float yrange[2],
float *lengths);
00618
00619
virtual void CreatePlotData(
int *pos,
int *pos2,
float xRange[2],
00620
float yRange[2],
float *norms,
00621
int numDS,
int numDO);
00622
void PlaceAxes(
vtkViewport *viewport,
int *size,
int pos[2],
int pos2[2]);
00623
void GenerateClipPlanes(
int *pos,
int *pos2);
00624
float ComputeGlyphScale(
int i,
int *pos,
int *pos2);
00625
void ClipPlotData(
int *pos,
int *pos2,
vtkPolyData *pd);
00626
float *TransformPoint(
int pos[2],
int pos2[2],
float x[3],
float xNew[3]);
00627
00628
private:
00629 vtkXYPlotActor(
const vtkXYPlotActor&);
00630
void operator=(
const vtkXYPlotActor&);
00631 };
00632
00633
00634
#endif
00635