VTK  9.4.20241221
vtkContextArea.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
31#ifndef vtkContextArea_h
32#define vtkContextArea_h
33
35
36#include "vtkAxis.h" // For enums
37#include "vtkChartsCoreModule.h" // For export macro
38#include "vtkNew.h" // For vtkNew
39#include "vtkRect.h" // For vtkRect/vtkVector/vtkTuple
40#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
41
42VTK_ABI_NAMESPACE_BEGIN
43class vtkContextClip;
45class vtkPlotGrid;
46
47class VTKCHARTSCORE_EXPORT VTK_MARSHALAUTO vtkContextArea : public vtkAbstractContextItem
48{
49public:
52 void PrintSelf(ostream& os, vtkIndent indent) override;
53
55
60
66
70 bool Paint(vtkContext2D* painter) override;
71
73
78 vtkGetMacro(Geometry, vtkRecti);
79 vtkSetMacro(Geometry, vtkRecti);
81
83
87 vtkGetMacro(DrawAreaBounds, vtkRectd);
88 vtkSetMacro(DrawAreaBounds, vtkRectd);
90
92 {
96 DARB_FixedMargins
97 };
98
100
113 vtkGetMacro(DrawAreaResizeBehavior, DrawAreaResizeBehaviorType);
114 vtkSetMacro(DrawAreaResizeBehavior, DrawAreaResizeBehaviorType);
116
118
124 vtkGetMacro(FixedAspect, float)
125 virtual void SetFixedAspect(float aspect);
127
129
135 vtkGetMacro(FixedRect, vtkRecti);
136 virtual void SetFixedRect(vtkRecti rect);
137 virtual void SetFixedRect(int x, int y, int width, int height);
139
141
148 virtual const Margins& GetFixedMargins() { return this->FixedMargins; }
149 virtual void GetFixedMarginsArray(int margins[4]);
150 virtual const int* GetFixedMarginsArray();
151 virtual void SetFixedMargins(Margins margins);
152 virtual void SetFixedMargins(int margins[4]);
153 virtual void SetFixedMargins(int left, int right, int bottom, int top);
155
157
162 vtkGetMacro(FillViewport, bool);
163 vtkSetMacro(FillViewport, bool);
164 vtkBooleanMacro(FillViewport, bool);
166
168
171 virtual void SetShowGrid(bool show);
172 virtual bool GetShowGrid();
173 virtual void ShowGridOn() { this->SetShowGrid(true); }
174 virtual void ShowGridOff() { this->SetShowGrid(false); }
176
177protected:
179 ~vtkContextArea() override;
180
186 void LayoutAxes(vtkContext2D* painter);
187 virtual void SetAxisRange(vtkRectd const& data);
188 virtual void ComputeViewTransform();
189
194
196
204
210
215
220
225
230
236
242
248
253
259
265
272
279
283 virtual void InitializeDrawArea();
284
285 // Smart pointers for axis lifetime management. See this->Axes.
290
291private:
292 vtkContextArea(const vtkContextArea&) = delete;
293 void operator=(const vtkContextArea&) = delete;
294};
295
296VTK_ABI_NAMESPACE_END
297#endif // vtkContextArea_h
base class for items that are part of a vtkContextScene.
takes care of drawing 2D axes
Definition vtkAxis.h:171
Location
Enumeration of the axis locations in a conventional XY chart.
Definition vtkAxis.h:181
Class for drawing 2D primitives to a graphical context.
Clipped, transformed area with axes for context items.
vtkRecti ComputeDrawAreaGeometry(vtkContext2D *painter)
Return the draw area's geometry.
vtkRecti ComputeFixedRectDrawAreaGeometry(vtkContext2D *painter)
Working implementations for ComputeDrawAreaGeometry.
virtual void ComputeViewTransform()
virtual void GetFixedMarginsArray(int margins[4])
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
bool Paint(vtkContext2D *painter) override
Paint event for the item, called whenever the item needs to be drawn.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkRecti ComputeExpandedDrawAreaGeometry(vtkContext2D *painter)
Working implementations for ComputeDrawAreaGeometry.
vtkRecti DrawAreaGeometry
The rect defining the pixel location and size of the clipped and transformed area inside the axes.
vtkNew< vtkAxis > LeftAxis
virtual const int * GetFixedMarginsArray()
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
virtual void SetAxisRange(vtkRectd const &data)
vtkTuple< vtkAxis *, 4 > Axes
vtkAxis objects that surround the draw area, indexed by vtkAxis::Location.
virtual void ShowGridOff()
Turn on/off grid visibility.
vtkNew< vtkContextClip > Clip
The context item that clips rendered data.
float FixedAspect
The fixed aspect ratio, if DrawAreaResizeBehavior is FixedAspect.
virtual void ShowGridOn()
Turn on/off grid visibility.
vtkTuple< int, 4 > Margins
vtkNew< vtkAxis > BottomAxis
void UpdateDrawArea()
Set the transform to map DrawAreaBounds to DrawAreaGeometry.
vtkRecti ComputeFixedMarginsDrawAreaGeometry(vtkContext2D *painter)
Working implementations for ComputeDrawAreaGeometry.
vtkAxis * GetAxis(vtkAxis::Location location)
Get the vtkAxis associated with the specified location.
bool FillViewport
If true, Geometry is set to (0, 0, vpSize[0], vpSize[1]) at the start of each Paint call.
virtual void SetShowGrid(bool show)
Turn on/off grid visibility.
static vtkContextArea * New()
vtkNew< vtkAxis > TopAxis
vtkRecti FixedRect
The fixed rect to use for the draw area, if DrawAreaResizeBehavior is FixedRect.
vtkRecti Geometry
The rect defining the pixel location and size of the entire vtkContextArea, including axis label,...
vtkNew< vtkContextTransform > Transform
The context item that clips rendered data.
~vtkContextArea() override
void LayoutAxes(vtkContext2D *painter)
Sync the Axes locations with Geometry, and update the DrawAreaGeometry to account for Axes size (marg...
vtkNew< vtkAxis > RightAxis
virtual void SetFixedMargins(Margins margins)
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
Margins FixedMargins
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
vtkRectd DrawAreaBounds
The data bounds of the clipped and transformed area inside of the axes.
virtual void SetFixedMargins(int margins[4])
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
virtual void InitializeDrawArea()
Initialize the drawing area's item hierarchy.
vtkAbstractContextItem * GetDrawAreaItem()
Returns the vtkAbstractContextItem that will draw in the clipped, transformed space.
virtual bool GetShowGrid()
Turn on/off grid visibility.
vtkNew< vtkPlotGrid > Grid
The vtkPlotGrid that renders a grid atop the data in the draw area.
virtual void SetFixedMargins(int left, int right, int bottom, int top)
The left, right, bottom, and top margins for the draw area, if DrawAreaResizeBehavior is FixedMargins...
vtkRecti ComputeFixedAspectDrawAreaGeometry(vtkContext2D *painter)
Working implementations for ComputeDrawAreaGeometry.
DrawAreaResizeBehaviorType DrawAreaResizeBehavior
Controls how the draw area size is determined.
all children of this item are clipped by the specified area.
all children of this item are transformed by the vtkTransform2D of this item.
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:167
takes care of drawing the plot grid
Definition vtkPlotGrid.h:28
templated base type for containers of constant size.
Definition vtkTuple.h:27
#define VTK_MARSHALAUTO