<div dir="ltr">Thank you for your help, after playing a lot with the configuration of this class, I managed to achieve what I wanted. Thank you very much.<div>I include my code for future reference.</div><div>Thanks a lot!</div><div><br></div><div><div><font face="monospace, monospace">// NOTE: m_configuration is a struct with the configuration to use for the scalar bar</font></div><div><font face="monospace, monospace">vtkSmartPointer<vtkContext2DScalarBarActor> m_scalarBarActor = vtkSmartPointer<vtkContext2DScalarBarActor>::New();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">m_scalarBarActor->SetHeight(0.75); </font></div><div><font face="monospace, monospace">m_scalarBarActor->GetPositionCoordinate()->SetCoordinateSystemToNormalizedViewport();</font></div><div><font face="monospace, monospace">m_scalarBarActor->GetPositionCoordinate()->SetValue(0.02, 0.1, 0.0);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">m_scalarBarActor->DrawColorBarOn();</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetFixedAnnotationLeaderLineColor(true);</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetMaximumWidthInPixels(80);</font></div><div><font face="monospace, monospace">m_scalarBarActor->AutomaticAnnotationsOff();</font></div><div><font face="monospace, monospace">m_scalarBarActor->AutomaticLabelFormatOff();</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetAddRangeAnnotations(0);</font></div><div><font face="monospace, monospace">m_scalarBarActor->AnnotationTextScalingOn();</font></div><div><font face="monospace, monospace">m_scalarBarActor->UnconstrainedFontSizeOff();</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetScalarBarLength(0.8);</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetScalarBarThickness(30);</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetOrientationToVertical();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">m_scalarBarActor->ForceHorizontalTitleOn();</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetTitleJustification(VTK_TEXT_LEFT);</font></div><div><font face="monospace, monospace">vtkTextProperty* titleTextProperty = m_scalarBarActor->GetTitleTextProperty();</font></div><div><font face="monospace, monospace">vtkTextProperty* labelTextProperty = m_scalarBarActor->GetLabelTextProperty();</font></div><div><font face="monospace, monospace">labelTextProperty->SetColor(0.0,0.0,0.0);</font></div><div><font face="monospace, monospace">labelTextProperty->BoldOff();</font></div><div><font face="monospace, monospace">labelTextProperty->ItalicOff();</font></div><div><font face="monospace, monospace">labelTextProperty->ShadowOn();</font></div><div><font face="monospace, monospace">titleTextProperty->SetFontFamily(m_configuration.fontToUse); // 0 for arial, 1 for courier, 2 for times</font></div><div><font face="monospace, monospace">titleTextProperty->SetFontSize(m_configuration.sizeTitle);</font></div><div><font face="monospace, monospace">labelTextProperty->SetFontFamily(m_configuration.fontToUse); // 0 for arial, 1 for courier, 2 for times</font></div><div><font face="monospace, monospace">labelTextProperty->SetFontSize(m_configuration.sizeLabels);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">m_scalarBarActor->SetLabelFormat(m_configuration.numberFormat.c_str());</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetRangeLabelFormat(m_scalarBarActor->GetLabelFormat());</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetMaximumNumberOfColors(m_configuration.numOfColors);</font></div><div><font face="monospace, monospace">m_scalarBarActor->SetNumberOfLabels(m_configuration.numOfLabels); </font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">double rangeForTable[2];</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">rangeForTable[0] = m_configuration.currentRange[m_configuration.componentToUse*2];</font></div><div><font face="monospace, monospace">rangeForTable[1] = m_configuration.currentRange[m_configuration.componentToUse*2+1];</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">// This is the LookupTable for vtkContext2DScalarBarActor</font></div><div><font face="monospace, monospace">vtkSmartPointer<vtkDiscretizableColorTransferFunction> tempLUT = vtkSmartPointer<vtkDiscretizableColorTransferFunction>::New();</font></div><div><font face="monospace, monospace">tempLUT->SetColorSpaceToHSV();</font></div><div><font face="monospace, monospace">tempLUT->SetHSVWrap(0);</font></div><div><font face="monospace, monospace">tempLUT->AddHSVPoint(rangeForTable[0], m_configuration.rangeHue[0], m_configuration.rangeSaturation[0], m_configuration.rangeValue[0]);</font></div><div><font face="monospace, monospace">tempLUT->AddHSVPoint(rangeForTable[1], m_configuration.rangeHue[1], m_configuration.rangeSaturation[1], m_configuration.rangeValue[1]);</font></div><div><font face="monospace, monospace">tempLUT->SetNumberOfValues(m_configuration.numOfColors);</font></div><div><font face="monospace, monospace">tempLUT->SetIndexedLookup(0);</font></div><div><font face="monospace, monospace">tempLUT->SetScaleToLinear();</font></div><div><font face="monospace, monospace">tempLUT->Build();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">// This is the LookupTable for vtkActor that shows the result in the model.</font></div><div><font face="monospace, monospace">vtkSmartPointer<vtkLookupTable> m_scalarBarLUT = vtkSmartPointer<vtkLookupTable>::New();</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetRampToLinear();</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetTableRange(rangeForTable);</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetNumberOfTableValues(m_configuration.numOfColors);</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetUseAboveRangeColor(1);</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetUseBelowRangeColor(1);</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetBelowRangeColor(m_configuration.belowRangeColor);</font></div><div><font face="monospace, monospace">m_scalarBarLUT->SetAboveRangeColor(m_configuration.aboveRangeColor);</font></div><div><font face="monospace, monospace">// Copy the values from one table to the other</font></div><div><font face="monospace, monospace">double deltaColor = rangeForTable[1] - rangeForTable[0];</font></div><div><font face="monospace, monospace">for (int i = 0; i < m_configuration.numOfColors; ++i)</font></div><div><font face="monospace, monospace">{</font></div><div><font face="monospace, monospace"><span style="white-space:pre">    </span>double colorRGBA[4] = {1.0, 0.0, 0.0, 1.0};</font></div><div><font face="monospace, monospace"><span style="white-space:pre">    </span>double currentColorStep = (double(i)/m_configuration.numOfColors);</font></div><div><font face="monospace, monospace"><span style="white-space:pre">     </span>double v = rangeForTable[0] + deltaColor*currentColorStep;</font></div><div><font face="monospace, monospace"><span style="white-space:pre">     </span>tempLUT->GetColor(v, colorRGBA);</font></div><div><font face="monospace, monospace"><span style="white-space:pre">    </span>m_scalarBarLUT->SetTableValue(i, colorRGBA);</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">m_scalarBarLUT->Build();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">m_scalarBarActor->SetLookupTable(tempLUT);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">// Mapper is the mapper of the vtkActor, defined in another place</font></div><div><font face="monospace, monospace">m_mapper->SetScalarRange(rangeForTable);</font></div><div><font face="monospace, monospace">m_mapper->SetLookupTable(m_scalarBarLUT);</font></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 October 2017 at 15:05, Cory Quammen <span dir="ltr"><<a href="mailto:cory.quammen@kitware.com" target="_blank">cory.quammen@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">[snip]<br><div><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Then, I tried to define the LookupTable as vtkDiscretizableColorTransferF<wbr>unction, but I can't find the way to make it work. </div><div>First of all, I would like to define the first and last value, and map between them using a given number of values (see call SetNumberOfTableValues). In vtkLookupTable I do this by setting the HSV range. I guess I could do the same calling vtkDiscretizableColorTransferF<wbr>unction::AddHSVPoint(). But the colors in between are not correct.</div></div></blockquote><div><br></div><div><br></div></span><div>By default the vtkDiscretizableColorTransferF<wbr>unction interpolates colors through the RGB color space. To replicate what the vtkLookupTable does, you will need to call<br></div><div><br></div><div>tempLUT->SetColorSpaceToHSV();
          <br></div><span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Second thing is that the range is wrong and the method vtkScalarsToColors::SetTableRa<wbr>nge is not available in vtkDiscretizableColorTransferF<wbr>unction. </div></div></blockquote><div><br></div></span><div>tempLUT->SetRange(min, max); should do the trick.</div><div><br></div><div>HTH,</div><div>Cory<br></div><div><div class="gmail-m_-1503488520340187563m_4294597620871782592h5"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>See in the screenshot how the values go from 0 to 1 instead of from 293 to 630...</div><div><br></div><div>Here's the code of how I do it with vtkLookupTable:</div><div><font face="monospace, monospace">vtkSmartPointer<vtkLookupTable<wbr>> tempLUT = vtkSmartPointer<vtkLookupTable<wbr>>::New();</font></div><div><div><font face="monospace, monospace">tempLUT->SetRampToLinear();</font></div><div><font face="monospace, monospace">tempLUT->SetTableRange (rangeForTable); </font></div><div><font face="monospace, monospace">tempLUT->SetNumberOfTableValue<wbr>s(m_configuration.numOfColors)<wbr>;</font></div><div><font face="monospace, monospace">tempLUT->SetHueRange (m_configuration.rangeHue[0], m_configuration.rangeHue[1]);</font></div><div><font face="monospace, monospace">tempLUT->SetSaturationRange (m_configuration.rangeSaturati<wbr>on[0], m_configuration.rangeSaturatio<wbr>n[1]);</font></div><div><font face="monospace, monospace">tempLUT->SetValueRange (m_configuration.rangeValue[0]<wbr>, m_configuration.rangeValue[1])<wbr>;</font></div><div><font face="monospace, monospace">tempLUT->Build();</font></div></div><div><br></div><div>Here's my code with vtkDiscretizableColorTransferF<wbr>unction, which doesn't work (see screenshot):<br></div><div><div><font face="monospace, monospace">vtkSmartPointer<vtkDiscretizab<wbr>leColorTransferFunction> tempLUT = vtkSmartPointer<vtkDiscretizab<wbr>leColorTransferFunction>::New(<wbr>);</font></div><div><font face="monospace, monospace">tempLUT->AddHSVPoint(0, m_configuration.rangeHue[0], m_configuration.rangeSaturatio<wbr>n[0], m_configuration.rangeValue[0])<wbr>;</font></div><div><font face="monospace, monospace">tempLUT->AddHSVPoint(1, m_configuration.rangeHue[1], m_configuration.rangeSaturatio<wbr>n[1], m_configuration.rangeValue[1])<wbr>;</font></div><div><font face="monospace, monospace">tempLUT->SetNumberOfValues(m_c<wbr>onfiguration.numOfColors);</font></div><div><font face="monospace, monospace">tempLUT->SetIndexedLookup(0);</font></div><div><font face="monospace, monospace">tempLUT->Build();</font></div></div><div><br></div><div>I attach a screenshot of the difference I get.</div><div><br></div><div>Thank you!</div></div><div class="gmail_extra"><div><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-h5"><br><div class="gmail_quote">On 12 October 2017 at 15:37, Cory Quammen <span dir="ltr"><<a href="mailto:cory.quammen@kitware.com" target="_blank">cory.quammen@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Fernando,</div><div><br></div>Because you are using a scalar bar actor from ParaView, I suggest using the vtkContext2DScalarBarActor. Font sizes are fixed in this scalar bar actor implementation.<div><br></div><div>HTH,</div><div>Cory</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-m_-9131748958244259937h5">On Thu, Oct 12, 2017 at 9:33 AM, Fernando Nellmeldin <span dir="ltr"><<a href="mailto:f.nellmeldin@open-engineering.com" target="_blank">f.nellmeldin@open-engineering<wbr>.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-m_-9131748958244259937h5"><div dir="ltr">Hello.<div><br><div>I know that this issue was discussed many times before in this list, but I can't find a way to do what I want. I'm using VTK 7.1.1 (under Windows). So maybe there were some improvements. </div><div><br></div><div>In fact, I'm using vtkPVScalarBarActor which includes some very well welcomed improvements, but the discussion should apply also to the normal vtkScalarBarActor.</div><div><a href="https://www.paraview.org/ParaView/Doc/Nightly/www/cxx-doc/classvtkPVScalarBarActor.html" target="_blank">https://www.paraview.org/ParaV<wbr>iew/Doc/Nightly/www/cxx-doc/cl<wbr>assvtkPVScalarBarActor.html</a><br></div><div><br></div><div>The issue is that the size of the labels for values depends on the viewport. So when the viewport changes the size, the labels also change their size. Is it possible to avoid this? I would like to set the size of the labels as constant or at least to define a maximum/minimum size, because sometimes it gets veeeeery small/big and it is not very pleaseant.</div><div><br></div><div>Thank you!<br></div><div><br></div><div>PS: </div><div>Here's my code to configure the vtkPVScalarBarActor, in case it's useful... (I guess there are some calls that are useless):</div><div><br></div><div><div><font face="monospace, monospace">vtkSmartPointer<vtkPVScalarBar<wbr>Actor> scalarBarActor = vtkSmartPointer<vtkPVScalarBar<wbr>Actor>::New();</font></div><div><font face="monospace, monospace">scalarBarActor->GetPositionCoo<wbr>rdinate()->SetCoordinateSystem<wbr>ToDisplay();<span style="white-space:pre-wrap">     </span></font></div><div><font face="monospace, monospace">scalarBarActor->GetPositionCoo<wbr>rdinate()->SetValue(20, 20, 0.0);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">scalarBarActor->SetAddRangeAnn<wbr>otations(0);</font></div><div><font face="monospace, monospace">scalarBarActor->DrawTickMarksO<wbr>ff();</font></div><div><font face="monospace, monospace">scalarBarActor->UnconstrainedF<wbr>ontSizeOff();</font></div><div><font face="monospace, monospace">scalarBarActor->AnnotationText<wbr>ScalingOn();</font></div><div><font face="monospace, monospace">scalarBarActor->SetFixedAnnota<wbr>tionLeaderLineColor(true);<br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">scalarBarActor->SetOrientation<wbr>ToVertical();</font></div><div><font face="monospace, monospace">//scalarBarActor->SetWidth(0.1<wbr>); // width in viewport coordinates</font></div><div><font face="monospace, monospace">scalarBarActor->SetMaximumWidt<wbr>hInPixels(80);</font></div><div><font face="monospace, monospace">scalarBarActor->GetLabelTextPr<wbr>operty()->BoldOff();</font></div><div><font face="monospace, monospace">scalarBarActor->GetLabelTextPr<wbr>operty()->ItalicOff();</font></div><div><font face="monospace, monospace">scalarBarActor->GetLabelTextPr<wbr>operty()->ShadowOn();</font></div><div><font face="monospace, monospace">scalarBarActor->AutomaticLabel<wbr>FormatOff();</font></div><div><div><font face="monospace, monospace">scalarBarActor->SetLabelFormat<wbr>("%.2f");</font></div><div><font face="monospace, monospace">scalarBarActor->SetRangeLabelF<wbr>ormat(scalarBarActor->GetLabel<wbr>Format());</font></div></div><div><font face="monospace, monospace">scalarBarActor->SetMaximumNumb<wbr>erOfColors(100);<br></font></div><div><font face="monospace, monospace">scalarBarActor->SetNumberOfLab<wbr>els(5);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">scalarBarActor->SetLookupTable<wbr>(tempLUT); // defined elsewhere, doesn't matter</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">scalarBarActor->SetTitle("Disp<wbr>lacements");</font></div><div><font face="monospace, monospace">scalarBarActor->SetTitleJustif<wbr>ication(VTK_TEXT_RIGHT);</font></div><div><font face="monospace, monospace">scalarBarActor->GetTitleTextPr<wbr>operty()->SetFontSize(8);</font></div><div><br></div></div></div></div>
<br></div></div>______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensou<wbr>rce/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" rel="noreferrer" target="_blank">http://www.vtk.org/Wiki/VTK_FA<wbr>Q</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=<wbr>vtkusers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" rel="noreferrer" target="_blank">http://public.kitware.com/mail<wbr>man/listinfo/vtkusers</a><br>
<br></blockquote></div><span class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-m_-9131748958244259937HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-m_-9131748958244259937m_4308854907294506211gmail_signature">Cory Quammen<br>Staff R&D Engineer<br>Kitware, Inc.</div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div>-- <br><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail-m_-9131748958244259937gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><b>Fernando NELLMELDIN</b><br>Software Engineer<div style="font-size:12.8px"><b style="font-size:12.8px"><font color="#cc0000">______________________________<wbr>______________________________<wbr>___</font></b><br></div><div><div style="font-size:12.8px"><b style="font-size:12.8px"><font color="#000000"><br></font></b></div><div style="font-size:12.8px"><b style="font-size:12.8px"><font color="#000000">O</font><font color="#cc0000">pen E</font><font color="#000000">ngineering s.a.</font></b><br></div><div style="font-size:12.8px"><font color="#000000"><br></font></div><div style="font-size:12.8px"><font color="#000000"><a href="https://maps.google.com/?q=Rue+Bois+Saint-Jean+15&entry=gmail&source=g" target="_blank">Rue Bois Saint-Jean 15</a>/1</font></div><div style="font-size:12.8px"><font color="#000000">B-4102 Seraing (Belgium)</font></div><div><font style="font-size:12.8px" color="#000000">Tel: </font><a href="tel:+32%204%20353%2030%2034" value="+3243533034" target="_blank">+32.4.353.30.34</a> </div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><a href="http://www.open-engineering.com/" style="color:rgb(17,85,204)" target="_blank">http://www.open-engineering.co<wbr>m</a></div><div style="font-size:12.8px"><a href="https://www.linkedin.com/company/open-engineering?trk=biz-companies-cym" style="color:rgb(17,85,204)" target="_blank">https://www.linkedin.com/compa<wbr>ny/open-engineering?trk=biz-co<wbr>mpanies-cym</a><br></div><div style="font-size:12.8px"><b><font color="#cc0000"><span style="font-family:"arial black",sans-serif;font-size:12.8px">______________________________<wbr>______________________________<wbr>_____________<br></span></font></b></div></div></div></div></div></div></div>
</div>
</blockquote></div></div></div><div><div class="gmail-m_-1503488520340187563m_4294597620871782592h5"><br><br clear="all"><br>-- <br><div class="gmail-m_-1503488520340187563m_4294597620871782592m_-220291256800942644gmail_signature">Cory Quammen<br>Staff R&D Engineer<br>Kitware, Inc.</div>
</div></div></div></div></div>
</blockquote></div><div class="gmail-m_-1503488520340187563m_4294597620871782592gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><div style="font-size:12.8px"><b><font color="#cc0000"><span style="font-family:"arial black",sans-serif;font-size:12.8px"><br></span></font></b></div></div></div></div></div></div></div>
</div></div></div>