void avtText2DColleague::Hide() { SetVisible(!GetVisible()); if(addedToRenderer) RemoveFromRenderer(); else AddToRenderer(); }
void mitk::VtkOverlay::AddToBaseRenderer(mitk::BaseRenderer *renderer) { if(!renderer) return; AddToRenderer(renderer,renderer->GetVtkRenderer()); }
void avtText2DColleague::HasPlots(void) { AddToRenderer(); }
void avtText2DColleague::SetOptions(const AnnotationObject &annot) { // Get the current options. AnnotationObject currentOptions; GetOptions(currentOptions); // // The text color has changed or the useForegroundForTextColor flag // has changed. // if(annot.GetUseForegroundForTextColor() != useForegroundForTextColor || annot.GetTextColor() != textColor) { // Record the text color that should be used when we're not using // the foreground text color. textColor = annot.GetTextColor(); useForegroundForTextColor = annot.GetUseForegroundForTextColor(); // Compute the text opacity. double tc[4]; tc[3] = double(textColor.Alpha()) / 255.; // Set the text color using the foreground color or the text color. if(useForegroundForTextColor) { // Get the foreground color. double fgColor[3]; mediator.GetForegroundColor(fgColor); textActor->GetTextProperty()->SetColor(fgColor[0], fgColor[1], fgColor[2]); } else { // Compute the text color as double. tc[0] = double(textColor.Red()) / 255.; tc[1] = double(textColor.Green()) / 255.; tc[2] = double(textColor.Blue()) / 255.; textActor->GetTextProperty()->SetColor(tc[0], tc[1], tc[2]); } // Set the text opacity. textActor->GetTextProperty()->SetOpacity(tc[3]); } // // Set the labels if the text vector is different // bool textChanged = false; if(currentOptions.GetText() != annot.GetText()) { const stringVector &text = annot.GetText(); if(text.size() > 0) SetText(text[0].c_str()); else SetText(""); textChanged = true; } // // Set the font properties if they are different. // if(currentOptions.GetFontFamily() != annot.GetFontFamily()) { int ff = annot.GetFontFamily(); if(ff == 0) textActor->GetTextProperty()->SetFontFamilyToArial(); else if(ff == 1) textActor->GetTextProperty()->SetFontFamilyToCourier(); else if(ff == 2) textActor->GetTextProperty()->SetFontFamilyToTimes(); } if(currentOptions.GetFontBold() != annot.GetFontBold()) textActor->GetTextProperty()->SetBold(annot.GetFontBold()?1:0); if(currentOptions.GetFontItalic() != annot.GetFontItalic()) textActor->GetTextProperty()->SetItalic(annot.GetFontItalic()?1:0); if(currentOptions.GetFontShadow() != annot.GetFontShadow()) textActor->GetTextProperty()->SetShadow(annot.GetFontShadow()?1:0); // // Set the position coordinates if they are different // if(!currentOptions.FieldsEqual(4, &annot) || !currentOptions.FieldsEqual(5, &annot) || textChanged) { const double *p1 = annot.GetPosition(); const double *p2 = annot.GetPosition2(); vtkCoordinate *pos = textActor->GetPositionCoordinate(); pos->SetCoordinateSystemToNormalizedViewport(); pos->SetValue(p1[0], p1[1], 0.); textActor->SetTextHeight(p2[0]); } // // Set the object's visibility. // if(currentOptions.GetVisible() != annot.GetVisible()) { SetVisible(annot.GetVisible()); if(annot.GetVisible()) AddToRenderer(); else RemoveFromRenderer(); } }
// **************************************************************************** // Method: avtImageColleague::HasPlots // // Purpose: // This method is called when the vis window gets some plots. We use this // signal to add the text actor to the renderer. // // Programmer: Brad Whitlock // Creation: Thu Nov 6 15:56:06 PST 2003 // // Modifications: // // **************************************************************************** void avtImageColleague::HasPlots(void) { AddToRenderer(); }
// **************************************************************************** // Method: avtImageColleague::SetOptions // // Purpose: // This method sets the text actor's properties from the values in the // annotation object. // // Programmer: John C. Anderson // Creation: Fri Sep 03 09:00:25 PDT 2004 // // Modifications: // Brad Whitlock, Tue Aug 31 11:56:56 PDT 2004 // I added code to set the object's visibility so objects that are not // visible remain invisible when restoring a session file. // // Dave Bremer, Fri Mar 9 16:09:36 PST 2007 // Slight change to error reporting message, for files that aren't readable // // **************************************************************************** void avtImageColleague::SetOptions(const AnnotationObject &annot) { // Get the current options. AnnotationObject currentOptions; GetOptions(currentOptions); maintainAspectRatio = annot.GetFontShadow(); bool updateOpacity = false; bool haveImage = true; const stringVector &text = annot.GetText(); if(text.size() > 0 && (text[0] != currentImage || useOpacityColor != (annot.GetIntAttribute1()>0) || (useOpacityColor && (opacityColor != annot.GetColor1())))) { useOpacityColor = annot.GetIntAttribute1(); if(useOpacityColor) opacityColor = annot.GetColor1(); updateOpacity = true; haveImage = UpdateImage(text[0]); } if(iData && useOpacityColor && updateOpacity) { // Make a copy of the data, but with an RGBA channel. if(iData->GetNumberOfScalarComponents() < 4) { vtkImageData *tmpdata = vtkImageData::New(); tmpdata->SetNumberOfScalarComponents(4, tmpdata->GetInformation()); tmpdata->SetExtent(iData->GetExtent()); for(int i = 0; i < iData->GetDimensions()[0]; ++i) for(int j = 0; j < iData->GetDimensions()[1]; ++j) { for(int c = 0; c < iData->GetNumberOfScalarComponents(); ++c) { tmpdata->SetScalarComponentFromDouble( i, j, 0, c, iData->GetScalarComponentAsDouble(i, j, 0, c)); } tmpdata->SetScalarComponentFromDouble(i, j, 0, 3, 255.); } #ifdef RESAMPLE_IMAGE resample->SetInputData(tmpdata); #endif iData->Delete(); iData = tmpdata; } // Go through and set the opacity to 0 for any matching colored pixel. #ifdef CAN_SET_OPACITY double a = double(annot.GetColor1().Alpha()); #endif for(int i = 0; i < iData->GetDimensions()[0]; ++i) for(int j = 0; j < iData->GetDimensions()[1]; ++j) { #ifdef CAN_SET_OPACITY iData->SetScalarComponentFromDouble(i, j, 0, 3, a); #endif if(iData->GetScalarComponentAsDouble(i, j, 0, 0) == opacityColor.Red() && iData->GetScalarComponentAsDouble(i, j, 0, 1) == opacityColor.Green() && iData->GetScalarComponentAsDouble(i, j, 0, 2) == opacityColor.Blue()) { iData->SetScalarComponentFromDouble(i, j, 0, 3, 0); } } #ifdef RESAMPLE_IMAGE resample->Update(); #endif } if((iData && resample) && (width != (int) annot.GetPosition2()[0] || height != (int) annot.GetPosition2()[1]) ) { if(!maintainAspectRatio) { width = (int) annot.GetPosition2()[0]; height = (int) annot.GetPosition2()[1]; } else if(width != (int) annot.GetPosition2()[0]) { width = (int) annot.GetPosition2()[0]; height = width; } else if(height != (int) annot.GetPosition2()[1]) { height = (int) annot.GetPosition2()[1]; width = height; } #ifdef RESAMPLE_IMAGE resample->SetAxisMagnificationFactor(0, width / 100.0F); resample->SetAxisMagnificationFactor(1, height / 100.0F); resample->SetAxisMagnificationFactor(2, 1); resample->Update(); #endif } actor->SetPosition(annot.GetPosition()[0], annot.GetPosition()[1]); #ifdef TESTING_IMAGE_RESCALE_BY_MAPPER actor->SetPosition2(0.2, 0.2); #endif #if 0 // This doesn't work right now. actor->GetProperty()->SetOpacity(annot.GetColor1().Alpha() / 255.0F); #endif // // Set the object's visibility. // if(iData == 0 && addedToRenderer) { debug1 << "Removing the image from the renderer because it could not be read." << endl; mediator.GetForeground()->RemoveActor2D(actor); addedToRenderer = false; // Delete the actor and mapper so the image mapper does not freak. actor->Delete(); mapper->Delete(); // Create a new actor and mapper. CreateActorAndMapper(); if(!haveImage) { char msg[1024]; SNPRINTF(msg, 1024, "Could not read image file: %s.", text[0].c_str()); avtCallback::IssueWarning(msg); } } else if(currentOptions.GetVisible() != annot.GetVisible()) { SetVisible(annot.GetVisible()); if(annot.GetVisible()) AddToRenderer(); else RemoveFromRenderer(); } }