@@ -51,8 +51,7 @@ namespace SCIRun{
5151 boost::optional<ColorMapHandle> pcolorMap,
5252 boost::optional<ColorMapHandle> scolorMap,
5353 boost::optional<ColorMapHandle> tcolorMap)
54- : module_(mod),
55- pf_handle (pf), pf_info(pf)
54+ : module_(mod), pf_handle(pf), pf_info(pf)
5655 {
5756 // Save field info
5857 p_vfld = (pf)->vfield ();
@@ -134,48 +133,50 @@ namespace SCIRun{
134133
135134 // If color map was picked, set the chosen color map
136135 if (colorScheme == ColorScheme::COLOR_MAP)
136+ {
137+ switch (renState.mColorInput )
137138 {
138- switch (renState.mColorInput )
139+ case RenderState::InputPort::PRIMARY_PORT:
140+ if (pcolorMap)
139141 {
140- case RenderState::InputPort::PRIMARY_PORT:
141- if (pcolorMap)
142- {
143- colorMap = pcolorMap;
144- colorMapGiven = true ;
145- }
146- else
147- {
148- colorMapGiven = false ;
149- }
150- break ;
151- case RenderState::InputPort::SECONDARY_PORT:
152- if (scolorMap)
153- {
154- colorMap = scolorMap;
155- colorMapGiven = true ;
156- }
157- else
158- {
159- colorMapGiven = false ;
160- }
161- break ;
162- case RenderState::InputPort::TERTIARY_PORT:
163- if (tcolorMap)
164- {
165- colorMap = tcolorMap;
166- colorMapGiven = true ;
167- }
168- else
169- {
170- colorMapGiven = false ;
171- }
172- break ;
173- default :
174- throw std::invalid_argument (" Selected port was not primary, secondary, or tertiary." );
175- break ;
142+ colorMap = pcolorMap;
143+ colorMapGiven = true ;
176144 }
145+ else
146+ {
147+ colorMapGiven = false ;
148+ }
149+ break ;
150+ case RenderState::InputPort::SECONDARY_PORT:
151+ if (scolorMap)
152+ {
153+ colorMap = scolorMap;
154+ colorMapGiven = true ;
155+ }
156+ else
157+ {
158+ colorMapGiven = false ;
159+ }
160+ break ;
161+ case RenderState::InputPort::TERTIARY_PORT:
162+ if (tcolorMap)
163+ {
164+ colorMap = tcolorMap;
165+ colorMapGiven = true ;
166+ }
167+ else
168+ {
169+ colorMapGiven = false ;
170+ }
171+ break ;
172+ default :
173+ throw std::invalid_argument (" Selected port was not primary, secondary, or tertiary." );
174+ break ;
177175 }
178176
177+ spiltColorMapToTextureAndCoordinates ();
178+ }
179+
179180 // Get color input type from render state
180181 colorInput = renState.mColorInput ;
181182
@@ -267,10 +268,10 @@ namespace SCIRun{
267268
268269 ColorRGB colorMapVal;
269270 switch (colorInput)
270- {
271+ {
271272 case RenderState::InputPort::PRIMARY_PORT:
272273 switch (pf_data_type)
273- {
274+ {
274275 case FieldDataType::Scalar:
275276 colorMapVal = colorMap.get ()->valueToColor (pinputScalar.get ());
276277 break ;
@@ -283,11 +284,11 @@ namespace SCIRun{
283284 default :
284285 throw std::invalid_argument (" Primary color map did not find scalar, vector, or tensor data." );
285286 break ;
286- }
287+ }
287288 break ;
288289 case RenderState::InputPort::SECONDARY_PORT:
289290 switch (sf_data_type)
290- {
291+ {
291292 case FieldDataType::Scalar:
292293 colorMapVal = colorMap.get ()->valueToColor (sinputScalar.get ());
293294 break ;
@@ -300,11 +301,11 @@ namespace SCIRun{
300301 default :
301302 throw std::invalid_argument (" Secondary color map did not find scalar, vector, or tensor data." );
302303 break ;
303- }
304+ }
304305 break ;
305306 case RenderState::InputPort::TERTIARY_PORT:
306307 switch (tf_data_type)
307- {
308+ {
308309 case FieldDataType::Scalar:
309310 colorMapVal = colorMap.get ()->valueToColor (tinputScalar.get ());
310311 break ;
@@ -317,12 +318,12 @@ namespace SCIRun{
317318 default :
318319 throw std::invalid_argument (" Tertiary color map did not find scalar, vector, or tensor data." );
319320 break ;
320- }
321+ }
321322 break ;
322323 default :
323324 throw std::invalid_argument (" Color map selection was not given a primary, secondary, or tertiary port." );
324325 break ;
325- }
326+ }
326327 return colorMapVal;
327328 }
328329
@@ -331,40 +332,40 @@ namespace SCIRun{
331332 {
332333 // Make sure color map port and correpsonding field data is given for chosen color map
333334 if (colorScheme == ColorScheme::COLOR_MAP)
335+ {
336+ switch (colorInput)
334337 {
335- switch (colorInput)
338+ case RenderState::InputPort::PRIMARY_PORT:
339+ if (!colorMap)
336340 {
337- case RenderState::InputPort::PRIMARY_PORT:
338- if (!colorMap)
339- {
340- throw std::invalid_argument (" Primary Color Map input is required." );
341- }
342- break ;
343- case RenderState::InputPort::SECONDARY_PORT:
344- if (!(secondaryFieldGiven && colorMap))
345- {
346- throw std::invalid_argument (" Secondary Field and Color Map input is required." );
347- }
348- if (s_vfld->num_values () < p_vfld->num_values ())
349- {
350- throw std::invalid_argument (" Secondary Field input cannot have a smaller size than the Primary Field input." );
351- }
352- break ;
353- case RenderState::InputPort::TERTIARY_PORT:
354- if (!(tertiaryFieldGiven && colorMap))
355- {
356- throw std::invalid_argument (" Tertiary Field and Color Map input is required." );
357- }
358- if (t_vfld->num_values () < p_vfld->num_values ())
359- {
360- throw std::invalid_argument (" Tertiary Field input cannot have a smaller size than the Primary Field input." );
361- }
362- break ;
363- default :
364- throw std::invalid_argument (" Must select a primary, secondary, or tertiary port for color map input." );
365- break ;
341+ throw std::invalid_argument (" Primary Color Map input is required." );
342+ }
343+ break ;
344+ case RenderState::InputPort::SECONDARY_PORT:
345+ if (!(secondaryFieldGiven && colorMap))
346+ {
347+ throw std::invalid_argument (" Secondary Field and Color Map input is required." );
366348 }
349+ if (s_vfld->num_values () < p_vfld->num_values ())
350+ {
351+ throw std::invalid_argument (" Secondary Field input cannot have a smaller size than the Primary Field input." );
352+ }
353+ break ;
354+ case RenderState::InputPort::TERTIARY_PORT:
355+ if (!(tertiaryFieldGiven && colorMap))
356+ {
357+ throw std::invalid_argument (" Tertiary Field and Color Map input is required." );
358+ }
359+ if (t_vfld->num_values () < p_vfld->num_values ())
360+ {
361+ throw std::invalid_argument (" Tertiary Field input cannot have a smaller size than the Primary Field input." );
362+ }
363+ break ;
364+ default :
365+ throw std::invalid_argument (" Must select a primary, secondary, or tertiary port for color map input." );
366+ break ;
367367 }
368+ }
368369 // Make sure scalar is not given for rgb conversion
369370 else if (colorScheme == ColorScheme::COLOR_IN_SITU)
370371 {
@@ -647,6 +648,24 @@ namespace SCIRun{
647648 {
648649 return pf_handle->mesh ()->getFacade ();
649650 }
651+
652+ void ShowFieldGlyphsPortHandler::spiltColorMapToTextureAndCoordinates ()
653+ {
654+ ColorMapHandle realColorMap = nullptr ;
655+
656+ if (colorMap) realColorMap = colorMap.get ();
657+ else realColorMap = StandardColorMapFactory::create ();
658+
659+ textureMap = StandardColorMapFactory::create (realColorMap->getColorMapName (),
660+ realColorMap->getColorMapResolution (), realColorMap->getColorMapShift (),
661+ realColorMap->getColorMapInvert (), 0.5 , 1.0 , realColorMap->getAlphaLookup ());
662+
663+ coordinateMap = StandardColorMapFactory::create (" Grayscale" , 256 , 0 , false ,
664+ realColorMap->getColorMapRescaleScale (), realColorMap->getColorMapRescaleShift ());
665+
666+ colorMap = coordinateMap;
667+ }
668+
650669 }
651670 }
652671}
0 commit comments