Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

172 lines
5.3 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkCornerAnnotation.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkCornerAnnotation - text annotation in four corners
// .SECTION Description
// This is an annotation object that manages four text actors / mappers
// to provide annotation in the four corners of a viewport
//
// .SECTION See Also
// vtkActor2D vtkTextMapper
#ifndef __vtkCornerAnnotation_h
#define __vtkCornerAnnotation_h
#include "vtkActor2D.h"
class vtkTextMapper;
class vtkImageMapToWindowLevelColors;
class vtkImageActor;
class vtkTextProperty;
class VTK_HYBRID_EXPORT vtkCornerAnnotation : public vtkActor2D
{
public:
vtkTypeRevisionMacro(vtkCornerAnnotation,vtkActor2D);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Instantiate object with a rectangle in normaled view coordinates
// of (0.2,0.85, 0.8, 0.95).
static vtkCornerAnnotation *New();
// Description:
// Draw the scalar bar and annotation text to the screen.
int RenderOpaqueGeometry(vtkViewport* viewport);
int RenderTranslucentGeometry(vtkViewport* ) {return 0;};
int RenderOverlay(vtkViewport* viewport);
// Description:
// Set/Get the maximum height of a line of text as a
// percentage of the vertical area allocated to this
// scaled text actor. Defaults to 1.0
vtkSetMacro(MaximumLineHeight,double);
vtkGetMacro(MaximumLineHeight,double);
// Description:
// Set/Get the minimum/maximum size font that will be shown.
// If the font drops below the minimum size it will not be rendered.
vtkSetMacro(MinimumFontSize,int);
vtkGetMacro(MinimumFontSize,int);
vtkSetMacro(MaximumFontSize,int);
vtkGetMacro(MaximumFontSize,int);
// Description:
// Set/Get font scaling factors
// The font size, f, is calculated as the largest possible value
// such that the annotations for the given viewport do not overlap.
// This font size is scaled non-linearly with the viewport size,
// to maintain an acceptable readable size at larger viewport sizes,
// without being too big.
// f' = linearScale * pow(f,nonlinearScale)
vtkSetMacro( LinearFontScaleFactor, double );
vtkGetMacro( LinearFontScaleFactor, double );
vtkSetMacro( NonlinearFontScaleFactor, double );
vtkGetMacro( NonlinearFontScaleFactor, double );
// Description:
// Release any graphics resources that are being consumed by this actor.
// The parameter window could be used to determine which graphic
// resources to release.
virtual void ReleaseGraphicsResources(vtkWindow *);
// Description:
// Set/Get the text to be displayed for each corner
void SetText(int i, const char *text);
char* GetText(int i);
void ClearAllTexts();
void CopyAllTextsFrom(vtkCornerAnnotation *ca);
// Description:
// Set an image actor to look at for slice information
void SetImageActor(vtkImageActor*);
vtkGetObjectMacro(ImageActor,vtkImageActor);
// Description:
// Set an instance of vtkImageMapToWindowLevelColors to use for
// looking at window level changes
void SetWindowLevel(vtkImageMapToWindowLevelColors*);
vtkGetObjectMacro(WindowLevel,vtkImageMapToWindowLevelColors);
// Description:
// Set the value to shift the level by.
vtkSetMacro(LevelShift, double);
vtkGetMacro(LevelShift, double);
// Description:
// Set the value to scale the level by.
vtkSetMacro(LevelScale, double);
vtkGetMacro(LevelScale, double);
// Description:
// Set/Get the text property of all corners.
virtual void SetTextProperty(vtkTextProperty *p);
vtkGetObjectMacro(TextProperty,vtkTextProperty);
// Description:
// Even if there is an image actor, should <slice> and <image> be displayed?
vtkBooleanMacro(ShowSliceAndImage, int);
vtkSetMacro(ShowSliceAndImage, int);
vtkGetMacro(ShowSliceAndImage, int);
protected:
vtkCornerAnnotation();
~vtkCornerAnnotation();
double MaximumLineHeight;
vtkTextProperty *TextProperty;
vtkImageMapToWindowLevelColors *WindowLevel;
double LevelShift;
double LevelScale;
vtkImageActor *ImageActor;
vtkImageActor *LastImageActor;
char *CornerText[4];
int FontSize;
vtkActor2D *TextActor[4];
vtkTimeStamp BuildTime;
int LastSize[2];
vtkTextMapper *TextMapper[4];
int MinimumFontSize;
int MaximumFontSize;
double LinearFontScaleFactor;
double NonlinearFontScaleFactor;
int ShowSliceAndImage;
// Description:
// Search for replacable tokens and replace
virtual void TextReplace(
vtkImageActor *ia, vtkImageMapToWindowLevelColors *wl);
// Description:
// Set text actor positions given a viewport size and justification
virtual void SetTextActorsPosition(int vsize[2]);
virtual void SetTextActorsJustification();
private:
vtkCornerAnnotation(const vtkCornerAnnotation&); // Not implemented.
void operator=(const vtkCornerAnnotation&); // Not implemented.
};
#endif