<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thanks David, <div><br></div><div>yes such a feature to get the scalar range over all the components would be nice.</div><div>Maybe we should also update the documentation (<a href="http://www.vtk.org/doc/nightly/html/classvtkDataSet.html#a9c8f06877f41b3e1944f2d10281083a6">http://www.vtk.org/doc/nightly/html/classvtkDataSet.html#a9c8f06877f41b3e1944f2d10281083a6</a>).</div><div><br></div><div><meta charset="utf-8"><span class="Apple-style-span" style="font-family: 'Lucida Grande', Verdana, Geneva, Arial, sans-serif; font-size: 12px; "><div class="memproto" style="font-family: 'Lucida Grande', Verdana, Geneva, Arial, sans-serif; font-size: 12px; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(168, 184, 217); border-left-width: 1px; border-left-style: solid; border-left-color: rgb(168, 184, 217); border-right-width: 1px; border-right-style: solid; border-right-color: rgb(168, 184, 217); padding-top: 6px; padding-right: 0px; padding-bottom: 6px; padding-left: 0px; color: rgb(37, 53, 85); font-weight: bold; text-shadow: rgba(255, 255, 255, 0.898438) 0px 1px 1px; -webkit-box-shadow: rgba(0, 0, 0, 0.148438) 5px 5px 5px; border-top-right-radius: 8px 8px; border-top-left-radius: 8px 8px; background-image: url(http://www.vtk.org/doc/nightly/html/nav_f.png); background-color: rgb(226, 232, 242); position: static; z-index: auto; background-repeat: repeat no-repeat; "><table class="memname" style="font-family: 'Lucida Grande', Verdana, Geneva, Arial, sans-serif; font-size: 12px; white-space: nowrap; font-weight: bold; margin-left: 6px; "><tbody><tr><td class="memname" style="white-space: nowrap; font-weight: bold; margin-left: 6px; ">virtual void vtkDataSet::GetScalarRange</td><td>(</td><td class="paramtype" style="white-space: nowrap; ">double </td><td class="paramname" style="color: rgb(96, 32, 32); white-space: nowrap; "><em style="font-style: normal; ">range</em>[2]</td><td>)</td><td><code>[virtual]</code></td></tr></tbody></table></div><div class="memdoc" style="font-family: 'Lucida Grande', Verdana, Geneva, Arial, sans-serif; font-size: 12px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(168, 184, 217); border-left-width: 1px; border-left-style: solid; border-left-color: rgb(168, 184, 217); border-right-width: 1px; border-right-style: solid; border-right-color: rgb(168, 184, 217); padding-top: 2px; padding-right: 5px; padding-bottom: 2px; padding-left: 5px; background-color: rgb(251, 252, 253); border-top-width: 0px; border-bottom-left-radius: 8px 8px; border-bottom-right-radius: 8px 8px; -webkit-box-shadow: rgba(0, 0, 0, 0.148438) 5px 5px 5px; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, from(rgb(255, 255, 255)), color-stop(0.6, rgb(255, 255, 255)), color-stop(0.6, rgb(255, 255, 255)), color-stop(0.95, rgb(247, 248, 251)), to(rgb(238, 241, 247))); position: static; z-index: auto; "><p style="font-family: 'Lucida Grande', Verdana, Geneva, Arial, sans-serif; font-size: 12px; ">Convenience method to get the range of the scalar data (if there is any scalar data). Returns the (min/max) range of combined point and cell data. If there are no point or cell scalars the method will return (0,1). Note: Update needs to be called to create the scalars. THIS METHOD IS THREAD SAFE IF FIRST CALLED FROM A SINGLE THREAD AND THE DATASET IS NOT MODIFIED</p><div><br></div></div></span></div><div><br><div><div>To  highlight that it computes the scalar range on the first component?</div><div><br></div><div>Thanks!</div><div><br></div><div>Nicolas</div><div><br></div><div>On May 7, 2011, at 5:25 PM, David Gobbi wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>The only way that I know of is to get the range directly from the scalars,<br><br>double range[2];<br>data->GetPointData()->GetScalars()->GetRange(range, component);<br><br>Personally, I would not be opposed to changing vtkDataSet::ComputeRange()<br>so that it computed the range over all components.<br><br>  David<br><br><br>On Sat, May 7, 2011 at 1:37 PM, Nicolas Rannou<br><<a href="mailto:Nicolas_Rannou@hms.harvard.edu">Nicolas_Rannou@hms.harvard.edu</a>> wrote:<br><blockquote type="cite">Hi David,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Thanks for the clarification.<br></blockquote><blockquote type="cite">Which is the best practice to get the scalar range of each component then?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On May 6, 2011, at 5:53 PM, David Gobbi wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Hi Nicolas,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">The GetScalarRange() method computes the scalar range of the first component.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">- David<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">On Fri, May 6, 2011 at 3:00 PM, Nicolas Rannou<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><<a href="mailto:nicolas_rannou@hms.harvard.edu">nicolas_rannou@hms.harvard.edu</a>> wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Hello,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">I'm experiencing a strange behavior in VTK which might be a bug.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">It took me a while to locate the issue:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">if I create a LUT with a NULL red component:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  iRed = 0;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  iGreen = 255;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  iBlue = 255;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  iAlpha = 255;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  double iRange[2] = {0, 255};<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  vtkSmartPointer<vtkLookupTable> lut =<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">      vtkSmartPointer<vtkLookupTable>::New();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  double* HSV = vtkMath::RGBToHSV(iRed,iGreen,iBlue);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->SetAlpha(iAlpha);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->SetHueRange(HSV[0], HSV[0]);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->SetSaturationRange(1, 1);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->SetValueRange(0, 1);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->SetRange(iRange);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  lut->Build();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">I color my image with this LUT:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  vtkSmartPointer<vtkImageMapToColors> coloredImage =<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">      vtkSmartPointer<vtkImageMapToColors>::New();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  coloredImage->SetLookupTable(iLUT);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  coloredImage->SetInput( iImage );<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  coloredImage->PassAlphaToOutputOff();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  coloredImage->SetOutputFormatToRGB();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  coloredImage->Update();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">then:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">  double* range = coloredImage->GetOutput()->GetScalarRange();<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">returns [0,0].<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">then everything I do with this image is messed up...<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">If iRed != 0, the scalar range of the "coloredImage" will be correct then my<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">pipeline is working.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Am I doing something wrong?<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Thanks,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Nicolas<br></blockquote></blockquote></blockquote></div></blockquote></div><br></div></body></html>