VTK  9.0.1
vtkContextArea.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkContextArea.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
40 #ifndef vtkContextArea_h
41 #define vtkContextArea_h
42 
43 #include "vtkAbstractContextItem.h"
44 
45 #include "vtkAxis.h" // For enums
46 #include "vtkChartsCoreModule.h" // For export macro
47 #include "vtkNew.h" // For vtkNew
48 #include "vtkRect.h" // For vtkRect/vtkVector/vtkTuple
49 
50 class vtkContextClip;
52 class vtkPlotGrid;
53 
54 class VTKCHARTSCORE_EXPORT vtkContextArea : public vtkAbstractContextItem
55 {
56 public:
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
61  static vtkContextArea* New();
62 
67 
72  vtkAbstractContextItem* GetDrawAreaItem();
73 
77  bool Paint(vtkContext2D* painter) override;
78 
80 
85  vtkGetMacro(Geometry, vtkRecti);
86  vtkSetMacro(Geometry, vtkRecti);
88 
90 
94  vtkGetMacro(DrawAreaBounds, vtkRectd);
95  vtkSetMacro(DrawAreaBounds, vtkRectd);
97 
99  {
103  DARB_FixedMargins
104  };
105 
107 
120  vtkGetMacro(DrawAreaResizeBehavior, DrawAreaResizeBehaviorType);
121  vtkSetMacro(DrawAreaResizeBehavior, DrawAreaResizeBehaviorType);
123 
125 
131  vtkGetMacro(FixedAspect, float) virtual void SetFixedAspect(float aspect);
133 
135 
141  vtkGetMacro(FixedRect, vtkRecti);
142  virtual void SetFixedRect(vtkRecti rect);
143  virtual void SetFixedRect(int x, int y, int width, int height);
145 
147 
154  virtual const Margins& GetFixedMargins() { return this->FixedMargins; }
155  virtual void GetFixedMarginsArray(int margins[4]);
156  virtual const int* GetFixedMarginsArray();
157  virtual void SetFixedMargins(Margins margins);
158  virtual void SetFixedMargins(int margins[4]);
159  virtual void SetFixedMargins(int left, int right, int bottom, int top);
161 
163 
168  vtkGetMacro(FillViewport, bool);
169  vtkSetMacro(FillViewport, bool);
170  vtkBooleanMacro(FillViewport, bool);
172 
174 
177  virtual void SetShowGrid(bool show);
178  virtual bool GetShowGrid();
179  virtual void ShowGridOn() { this->SetShowGrid(true); }
180  virtual void ShowGridOff() { this->SetShowGrid(false); }
182 
183 protected:
184  vtkContextArea();
185  ~vtkContextArea() override;
186 
192  void LayoutAxes(vtkContext2D* painter);
193  virtual void SetAxisRange(vtkRectd const& data);
194  virtual void ComputeViewTransform();
195 
199  vtkRecti ComputeDrawAreaGeometry(vtkContext2D* painter);
200 
202 
205  vtkRecti ComputeExpandedDrawAreaGeometry(vtkContext2D* painter);
206  vtkRecti ComputeFixedAspectDrawAreaGeometry(vtkContext2D* painter);
207  vtkRecti ComputeFixedRectDrawAreaGeometry(vtkContext2D* painter);
208  vtkRecti ComputeFixedMarginsDrawAreaGeometry(vtkContext2D* painter);
210 
215  void UpdateDrawArea();
216 
221 
226 
231 
236 
242 
248 
254 
259 
264  float FixedAspect;
265 
271 
278 
285 
289  virtual void InitializeDrawArea();
290 
291  // Smart pointers for axis lifetime management. See this->Axes.
296 
297 private:
298  vtkContextArea(const vtkContextArea&) = delete;
299  void operator=(const vtkContextArea&) = delete;
300 };
301 
302 #endif // vtkContextArea_h
bool FillViewport
If true, Geometry is set to (0, 0, vpSize[0], vpSize[1]) at the start of each Paint call...
Location
Enumeration of the axis locations in a conventional XY chart.
Definition: vtkAxis.h:78
vtkTuple< int, 4 > Margins
vtkNew< vtkAxis > BottomAxis
virtual bool Paint(vtkContext2D *painter)
Paint event for the item, called whenever the item needs to be drawn.
virtual const Margins & GetFixedMargins()
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
virtual void ShowGridOff()
Turn on/off grid visibility.
vtkRecti Geometry
The rect defining the pixel location and size of the entire vtkContextArea, including axis label...
Margins FixedMargins
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
vtkNew< vtkContextClip > Clip
The context item that clips rendered data.
all children of this item are transformed by the vtkTransform2D of this item.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkRecti DrawAreaGeometry
The rect defining the pixel location and size of the clipped and transformed area inside the axes...
virtual void ShowGridOn()
Turn on/off grid visibility.
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:52
takes care of drawing 2D axes
Definition: vtkAxis.h:68
a simple class to control print indentation
Definition: vtkIndent.h:33
void show(std::shared_ptr< QObject > widgetOrWindow, const QSize &size)
vtkNew< vtkContextTransform > Transform
The context item that clips rendered data.
Clipped, transformed area with axes for context items.
vtkNew< vtkAxis > TopAxis
vtkNew< vtkAxis > LeftAxis
vtkRecti FixedRect
The fixed rect to use for the draw area, if DrawAreaResizeBehavior is FixedRect.
vtkNew< vtkAxis > RightAxis
float FixedAspect
The fixed aspect ratio, if DrawAreaResizeBehavior is FixedAspect.
base class for items that are part of a vtkContextScene.
takes care of drawing the plot grid
Definition: vtkPlotGrid.h:38
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkNew< vtkPlotGrid > Grid
The vtkPlotGrid that renders a grid atop the data in the draw area.
vtkRectd DrawAreaBounds
The data bounds of the clipped and transformed area inside of the axes.
vtkTuple< vtkAxis *, 4 > Axes
vtkAxis objects that surround the draw area, indexed by vtkAxis::Location.
all children of this item are clipped by the specified area.
DrawAreaResizeBehaviorType DrawAreaResizeBehavior
Controls how the draw area size is determined.