Viskores  1.0
AxisAnnotation2D.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 #ifndef viskores_rendering_AxisAnnotation2D_h
19 #define viskores_rendering_AxisAnnotation2D_h
20 
22 
23 #include <viskores/Range.h>
24 #include <viskores/cont/DataSet.h>
31 
32 namespace viskores
33 {
34 namespace rendering
35 {
36 
37 class VISKORES_RENDERING_EXPORT AxisAnnotation2D : public AxisAnnotation
38 {
39 protected:
40  viskores::Float64 MajorTickSizeX, MajorTickSizeY, MajorTickOffset;
41  viskores::Float64 MinorTickSizeX, MinorTickSizeY, MinorTickOffset;
42  viskores::Float64 PosX0, PosY0, PosX1, PosY1;
48 
51  std::vector<std::unique_ptr<TextAnnotation>> Labels;
52 
53  std::vector<viskores::Float64> PositionsMajor;
54  std::vector<viskores::Float64> ProportionsMajor;
55 
56  std::vector<viskores::Float64> PositionsMinor;
57  std::vector<viskores::Float64> ProportionsMinor;
58 
60 
61 public:
63 
64  AxisAnnotation2D(const AxisAnnotation2D&) = delete;
65 
66  AxisAnnotation2D& operator=(const AxisAnnotation2D&) = delete;
67 
68  void SetLogarithmic(bool l) { this->Logarithmic = l; }
69 
70  void SetMoreOrLessTickAdjustment(int offset) { this->MoreOrLessTickAdjustment = offset; }
71 
72  void SetColor(viskores::rendering::Color c) { this->Color = c; }
73 
74  void SetLineWidth(viskores::Float32 lw) { this->LineWidth = lw; }
75 
77  {
81  this->MajorTickSizeX = xlen;
82  this->MajorTickSizeY = ylen;
83  this->MajorTickOffset = offset;
84  }
85 
87  {
88  this->MinorTickSizeX = xlen;
89  this->MinorTickSizeY = ylen;
90  this->MinorTickOffset = offset;
91  }
92 
98  {
99  this->PosX0 = x0;
100  this->PosY0 = y0;
101 
102  this->PosX1 = x1;
103  this->PosY1 = y1;
104  }
105 
107  {
108  this->AlignH = h;
109  this->AlignV = v;
110  }
111 
113  {
114  this->FontScale = s;
115  for (auto& label : this->Labels)
116  label->SetScale(s);
117  }
118 
119  void SetRangeForAutoTicks(const viskores::Range& range);
121  {
122  this->SetRangeForAutoTicks(viskores::Range(lower, upper));
123  }
124 
125  void SetMajorTicks(const std::vector<viskores::Float64>& positions,
126  const std::vector<viskores::Float64>& proportions);
127 
128  void SetMinorTicks(const std::vector<viskores::Float64>& positions,
129  const std::vector<viskores::Float64>& proportions);
130 
131  void Render(const viskores::rendering::Camera& camera,
132  const viskores::rendering::WorldAnnotator& worldAnnotator,
133  viskores::rendering::Canvas& canvas) override;
134 };
135 }
136 } //namespace viskores::rendering
137 
138 #endif // viskores_rendering_AxisAnnotation2D_h
viskores::rendering::AxisAnnotation2D::MoreOrLessTickAdjustment
int MoreOrLessTickAdjustment
Definition: AxisAnnotation2D.h:59
viskores::rendering::AxisAnnotation2D::AlignV
TextAnnotation::VerticalAlignment AlignV
Definition: AxisAnnotation2D.h:50
viskores::rendering::AxisAnnotation2D::PositionsMajor
std::vector< viskores::Float64 > PositionsMajor
Definition: AxisAnnotation2D.h:53
viskores::rendering::AxisAnnotation2D::FontScale
viskores::Float32 FontScale
Definition: AxisAnnotation2D.h:44
viskores::rendering::AxisAnnotation2D::MajorTickSizeY
viskores::Float64 MajorTickSizeY
Definition: AxisAnnotation2D.h:40
viskores::rendering::AxisAnnotation2D::LineWidth
viskores::Float32 LineWidth
Definition: AxisAnnotation2D.h:45
viskores::rendering::AxisAnnotation2D::AlignH
TextAnnotation::HorizontalAlignment AlignH
Definition: AxisAnnotation2D.h:49
viskores::rendering::AxisAnnotation2D::SetScreenPosition
void SetScreenPosition(viskores::Float64 x0, viskores::Float64 y0, viskores::Float64 x1, viskores::Float64 y1)
Definition: AxisAnnotation2D.h:94
viskores::rendering::AxisAnnotation2D::SetMinorTickSize
void SetMinorTickSize(viskores::Float64 xlen, viskores::Float64 ylen, viskores::Float64 offset)
Definition: AxisAnnotation2D.h:86
viskores::rendering::TextAnnotation::HorizontalAlignment
HorizontalAlignment
Definition: TextAnnotation.h:35
TextAnnotation.h
viskores::rendering::TextAnnotation::VerticalAlignment
VerticalAlignment
Definition: TextAnnotation.h:41
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
viskores::Float32
float Float32
Base type to use for 32-bit floating-point numbers.
Definition: Types.h:165
viskores::rendering::AxisAnnotation2D::TickRange
viskores::Range TickRange
Definition: AxisAnnotation2D.h:43
viskores::rendering::AxisAnnotation2D::PosY1
viskores::Float64 PosY1
Definition: AxisAnnotation2D.h:42
WorldAnnotator.h
viskores::rendering::AxisAnnotation2D::SetLabelFontScale
void SetLabelFontScale(viskores::Float32 s)
Definition: AxisAnnotation2D.h:112
viskores::rendering::AxisAnnotation
Definition: AxisAnnotation.h:32
viskores::rendering::AxisAnnotation2D::Logarithmic
bool Logarithmic
Definition: AxisAnnotation2D.h:47
Range.h
viskores::rendering::AxisAnnotation2D::SetMoreOrLessTickAdjustment
void SetMoreOrLessTickAdjustment(int offset)
Definition: AxisAnnotation2D.h:70
viskores::rendering::AxisAnnotation2D::SetRangeForAutoTicks
void SetRangeForAutoTicks(viskores::Float64 lower, viskores::Float64 upper)
Definition: AxisAnnotation2D.h:120
viskores::rendering::AxisAnnotation2D::SetMajorTickSize
void SetMajorTickSize(viskores::Float64 xlen, viskores::Float64 ylen, viskores::Float64 offset)
Definition: AxisAnnotation2D.h:76
viskores::Range
Represent a continuous scalar range of values.
Definition: Range.h:39
viskores::rendering::AxisAnnotation2D::SetLogarithmic
void SetLogarithmic(bool l)
Definition: AxisAnnotation2D.h:68
viskores::rendering::AxisAnnotation2D::ProportionsMajor
std::vector< viskores::Float64 > ProportionsMajor
Definition: AxisAnnotation2D.h:54
viskores::rendering::Camera
Specifies the viewport for a rendering.
Definition: Camera.h:45
viskores::rendering::AxisAnnotation2D::SetColor
void SetColor(viskores::rendering::Color c)
Definition: AxisAnnotation2D.h:72
viskores::rendering::AxisAnnotation2D::Labels
std::vector< std::unique_ptr< TextAnnotation > > Labels
Definition: AxisAnnotation2D.h:51
viskores::rendering::AxisAnnotation2D::MinorTickSizeY
viskores::Float64 MinorTickSizeY
Definition: AxisAnnotation2D.h:41
Camera.h
viskores::rendering::AxisAnnotation2D::PositionsMinor
std::vector< viskores::Float64 > PositionsMinor
Definition: AxisAnnotation2D.h:56
AxisAnnotation.h
Color.h
viskores_rendering_export.h
Canvas.h
viskores::rendering::WorldAnnotator
Definition: WorldAnnotator.h:35
viskores::Float64
double Float64
Base type to use for 64-bit floating-point numbers.
Definition: Types.h:169
viskores::rendering::AxisAnnotation2D::SetLineWidth
void SetLineWidth(viskores::Float32 lw)
Definition: AxisAnnotation2D.h:74
viskores::rendering::AxisAnnotation2D::ProportionsMinor
std::vector< viskores::Float64 > ProportionsMinor
Definition: AxisAnnotation2D.h:57
viskores::rendering::AxisAnnotation2D::Color
viskores::rendering::Color Color
Definition: AxisAnnotation2D.h:46
DataSet.h
viskores::rendering::Canvas
Represents the image space that is the target of rendering.
Definition: Canvas.h:43
viskores::rendering::AxisAnnotation2D::SetLabelAlignment
void SetLabelAlignment(TextAnnotation::HorizontalAlignment h, TextAnnotation::VerticalAlignment v)
Definition: AxisAnnotation2D.h:106
viskores::rendering::Color
Representation of a color.
Definition: Color.h:37
viskores::rendering::AxisAnnotation2D
Definition: AxisAnnotation2D.h:37