VTKFIG  0.20.20181114
Easy VTK based in situ visualization
vtkfigTools.cxx
Go to the documentation of this file.
1 #include <limits>
2 #include <vtkColorTransferFunction.h>
3 #include <vtkTextProperty.h>
4 
5 #include "vtkfigTools.h"
6 #include "config.h"
7 
8 namespace vtkfig
9 {
10 
11 
12 
13  size_t NSpin()
14  {
15  char *spinstr=getenv("VTKFIG_NSPIN");
16  if (spinstr==nullptr)
17  return std::numeric_limits<size_t>::max();
18  else
19  return atoi(spinstr);
20  }
21 
22 
23  // E.g. get such an array like this:
24  // probeFilter->Update();
25  // auto out =probeFilter->GetPolyDataOutput()->GetPointData()->GetVectors();
26  // PrintArray(out, cout);
27 
28 
29  void PrintArray(vtkSmartPointer<vtkDataArray> data, std::ostream & os)
30  {
31  auto nt=data->GetNumberOfTuples();
32  auto nc=data->GetNumberOfComponents();
33  assert(nc<32);
34  for (int it=0;it<nt;it++)
35  {
36  double tuple[32];
37  data->GetTuple(it,tuple);
38  for (int ic=0;ic<nc ; ic++)
39  {
40  cout << tuple[ic] << " ";
41  }
42  cout << endl;
43  }
44 
45  }
46 
47 
48  void PrintPoints(vtkSmartPointer<vtkPoints> pts, std::ostream & os)
49  {
50  PrintArray(pts->GetData(),os);
51  }
52 
53 
54 
55 
56  vtkSmartPointer<vtkLookupTable> BuildLookupTable(std::vector<RGBPoint> & xrgb, size_t size)
57  {
58  vtkSmartPointer<vtkColorTransferFunction> ctf = vtkSmartPointer<vtkColorTransferFunction>::New();
59  vtkSmartPointer<vtkLookupTable> lut = vtkSmartPointer<vtkLookupTable>::New();
60 
61  for (size_t i=0;i<xrgb.size(); i++)
62  {
63  if (xrgb[i].x<-1.0e-10)
64  {
65  lut->SetBelowRangeColor(xrgb[i].r,xrgb[i].g, xrgb[i].b,1);
66  lut->UseBelowRangeColorOn();
67  }
68  else if (xrgb[i].x>1.0+1.0e-10)
69  {
70  lut->SetAboveRangeColor(xrgb[i].r,xrgb[i].g, xrgb[i].b,1);
71  lut->UseAboveRangeColorOn();
72  }
73  else
74  ctf->AddRGBPoint(xrgb[i].x,xrgb[i].r,xrgb[i].g, xrgb[i].b);
75  }
76 
77  lut->SetNumberOfTableValues(size);
78  lut->Build();
79  for(size_t i = 0; i < size; ++i)
80  {
81  double rgb[3];
82  ctf->GetColor(static_cast<double>(i)/(double)size,rgb);
83  lut->SetTableValue(i,rgb[0],rgb[1],rgb[2]);
84  }
85  return lut;
86  }
87 
88  vtkSmartPointer<vtkScalarBarActor> BuildColorBar(vtkSmartPointer<vtkPolyDataMapper> mapper, int irank)
89  {
90 
91 // http://public.kitware.com/pipermail/vtkusers/2016-March/094540.html :
92 // vtkTextProperty::SetFontSize
93 // vtkScalarBarActor::GetTitleTextProperty
94 // vtkScalarBarActor::GetLabelTextProperty
95 // vtkScalarBarActor::GetAnnotationTextProperty
96 // vtkScalarBarActor::SetUnconstrainedFontSize
97 
98 
99  vtkSmartPointer<vtkScalarBarActor> colorbar = vtkSmartPointer<vtkScalarBarActor>::New();
100 
101  //colorbar->UnconstrainedFontSizeOn();
102  //colorbar->AnnotationTextScalingOff();
103  colorbar->SetLookupTable(mapper->GetLookupTable());
104  colorbar->SetWidth(0.175);
105  colorbar->SetHeight(0.8);
106  colorbar->SetLabelFormat(" %+9.2e");
107  colorbar->SetMaximumWidthInPixels(150);
108  colorbar->SetBarRatio(0.1);
109  colorbar->SetVerticalTitleSeparation(0);
110  colorbar->SetNumberOfLabels(11);
111  colorbar->SetPosition(0.8, 0.1);
112  if (irank>0)
113  colorbar->SetPosition(0.9, 0.1);
114 
115  colorbar->GetTitleTextProperty()->ItalicOff();
116  colorbar->GetLabelTextProperty()->ItalicOff();
117  colorbar->GetTitleTextProperty()->BoldOn();
118  colorbar->GetLabelTextProperty()->BoldOn();
119  colorbar->GetTitleTextProperty()->SetFontSize(10);
120  colorbar->GetLabelTextProperty()->SetFontSize(80);
121 
122 // colorbar->GetAnnotationTextProperty()->SetFontSize(80);
123 
124  colorbar->GetTitleTextProperty()->SetColor(0,0,0);
125  colorbar->GetTitleTextProperty()->SetFontFamilyToCourier();
126  colorbar->GetLabelTextProperty()->SetColor(0,0,0);
127  colorbar->GetLabelTextProperty()->SetFontFamilyToCourier();
128 // colorbar->GetAnnotationTextProperty()->SetColor(1,0,0);
129 
130  return colorbar;
131  }
132 
133 }
size_t NSpin()
Definition: vtkfigTools.cxx:13
void PrintArray(vtkSmartPointer< vtkDataArray > data, std::ostream &os)
Definition: vtkfigTools.cxx:29
void PrintPoints(vtkSmartPointer< vtkPoints > pts, std::ostream &os)
Definition: vtkfigTools.cxx:48
vtkSmartPointer< vtkLookupTable > BuildLookupTable(RGBTable &xrgb, size_t size)
vtkSmartPointer< vtkScalarBarActor > BuildColorBar(vtkSmartPointer< vtkPolyDataMapper > mapper, int irank=0)
Definition: vtkfigTools.cxx:88