#include <SMESH_ScalarBarActor.h>

Definition at line 90 of file SMESH_ScalarBarActor.h.
| SMESH_ScalarBarActor::SMESH_ScalarBarActor | ( | ) | [protected] |
Definition at line 54 of file SMESH_ScalarBarActor.cxx.
References LabelFormat, LabelTextProperty, LastOrigin, LastSize, LookupTable, MaximumNumberOfColors, myDistribution, myDistributionActor, myDistributionColoringType, myDistributionMapper, New(), NumberOfLabels, NumberOfLabelsBuilt, Orientation, ScalarBar, ScalarBarActor, ScalarBarMapper, SMESH_MONOCOLOR_TYPE, TextActors, TextMappers, Title, TitleActor, TitleMapper, TitleTextProperty, and VTK_ORIENT_VERTICAL.
{
this->LookupTable = NULL;
this->Position2Coordinate->SetValue(0.17, 0.8);
this->PositionCoordinate->SetCoordinateSystemToNormalizedViewport();
this->PositionCoordinate->SetValue(0.82,0.1);
this->MaximumNumberOfColors = 64;
this->NumberOfLabels = 5;
this->NumberOfLabelsBuilt = 0;
this->Orientation = VTK_ORIENT_VERTICAL;
this->Title = NULL;
this->LabelTextProperty = vtkTextProperty::New();
this->LabelTextProperty->SetFontSize(12);
this->LabelTextProperty->SetBold(1);
this->LabelTextProperty->SetItalic(1);
this->LabelTextProperty->SetShadow(1);
this->LabelTextProperty->SetFontFamilyToArial();
this->TitleTextProperty = vtkTextProperty::New();
this->TitleTextProperty->ShallowCopy(this->LabelTextProperty);
this->LabelFormat = new char[8];
sprintf(this->LabelFormat,"%s","%-#6.3g");
this->TitleMapper = vtkTextMapper::New();
this->TitleActor = vtkActor2D::New();
this->TitleActor->SetMapper(this->TitleMapper);
this->TitleActor->GetPositionCoordinate()->
SetReferenceCoordinate(this->PositionCoordinate);
this->TextMappers = NULL;
this->TextActors = NULL;
this->ScalarBar = vtkPolyData::New();
this->ScalarBarMapper = vtkPolyDataMapper2D::New();
this->ScalarBarMapper->SetInput(this->ScalarBar);
this->ScalarBarActor = vtkActor2D::New();
this->ScalarBarActor->SetMapper(this->ScalarBarMapper);
this->ScalarBarActor->GetPositionCoordinate()->
SetReferenceCoordinate(this->PositionCoordinate);
this->LastOrigin[0] = 0;
this->LastOrigin[1] = 0;
this->LastSize[0] = 0;
this->LastSize[1] = 0;
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
myDistribution = vtkPolyData::New();
myDistributionMapper = vtkPolyDataMapper2D::New();
myDistributionMapper->SetInput(this->myDistribution);
myDistributionActor = vtkActor2D::New();
myDistributionActor->SetMapper(this->myDistributionMapper);
myDistributionActor->GetPositionCoordinate()->
SetReferenceCoordinate(this->PositionCoordinate);
// By default distribution histogram is invisible
myDistributionActor->SetVisibility(0);
// By default monocolor
myDistributionColoringType = SMESH_MONOCOLOR_TYPE;
// rnv end
}
| SMESH_ScalarBarActor::~SMESH_ScalarBarActor | ( | ) | [protected] |
Definition at line 143 of file SMESH_ScalarBarActor.cxx.
References LabelFormat, myDistribution, myDistributionActor, myDistributionMapper, NumberOfLabelsBuilt, ScalarBar, ScalarBarActor, ScalarBarMapper, SetLabelTextProperty(), SetLookupTable(), SetTitleTextProperty(), TextActors, TextMappers, Title, TitleActor, and TitleMapper.
{
if (this->LabelFormat)
{
delete [] this->LabelFormat;
this->LabelFormat = NULL;
}
this->TitleMapper->Delete();
this->TitleActor->Delete();
if (this->TextMappers != NULL )
{
for (int i=0; i < this->NumberOfLabelsBuilt; i++)
{
this->TextMappers[i]->Delete();
this->TextActors[i]->Delete();
}
delete [] this->TextMappers;
delete [] this->TextActors;
}
this->ScalarBar->Delete();
this->ScalarBarMapper->Delete();
this->ScalarBarActor->Delete();
if (this->Title)
{
delete [] this->Title;
this->Title = NULL;
}
this->SetLookupTable(NULL);
this->SetLabelTextProperty(NULL);
this->SetTitleTextProperty(NULL);
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram:
myDistribution->Delete();
myDistributionMapper->Delete();
myDistributionActor->Delete();
// rnv end
}
| SMESH_ScalarBarActor.SMESH_ScalarBarActor | ( | const SMESH_ScalarBarActor & | ) | [private] |
| void SMESH_ScalarBarActor::AllocateAndSizeLabels | ( | int * | labelSize, |
| int * | size, | ||
| vtkViewport * | viewport, | ||
| double * | range | ||
| ) | [protected, virtual] |
Definition at line 735 of file SMESH_ScalarBarActor.cxx.
References GetDistributionVisibility(), LabelFormat, LabelTextProperty, LookupTable, MaximumNumberOfColors, myNbValues, New(), NumberOfLabels, Orientation, TextActors, TextMappers, and VTK_ORIENT_VERTICAL.
Referenced by RenderOpaqueGeometry().
{
labelSize[0] = labelSize[1] = 0;
this->TextMappers = new vtkTextMapper * [this->NumberOfLabels];
this->TextActors = new vtkActor2D * [this->NumberOfLabels];
char string[512];
double val;
int i;
// TODO: this should be optimized, maybe by keeping a list of
// allocated mappers, in order to avoid creation/destruction of
// their underlying text properties (i.e. each time a mapper is
// created, text properties are created and shallow-assigned a font size
// which value might be "far" from the target font size).
// is this a vtkLookupTable or a subclass of vtkLookupTable
// with its scale set to log
vtkLookupTable *LUT = vtkLookupTable::SafeDownCast( this->LookupTable );
int isLogTable = 0;
if ( LUT )
{
if ( LUT->GetScale() == VTK_SCALE_LOG10 )
{
isLogTable = 1;
}
}
for (i=0; i < this->NumberOfLabels; i++)
{
this->TextMappers[i] = vtkTextMapper::New();
if ( isLogTable )
{
double lval;
if (this->NumberOfLabels > 1)
{
lval = log10(range[0]) + (double)i/(this->NumberOfLabels-1) *
(log10(range[1])-log10(range[0]));
}
else
{
lval = log10(range[0]) + 0.5*(log10(range[1])-log10(range[0]));
}
val = pow(10.0,lval);
}
else
{
if (this->NumberOfLabels > 1)
{
val = range[0] +
(double)i/(this->NumberOfLabels-1) * (range[1]-range[0]);
}
else
{
val = range[0] + 0.5*(range[1]-range[0]);
}
}
sprintf(string, this->LabelFormat, val);
this->TextMappers[i]->SetInput(string);
// Shallow copy here so that the size of the label prop is not affected
// by the automatic adjustment of its text mapper's size (i.e. its
// mapper's text property is identical except for the font size
// which will be modified later). This allows text actors to
// share the same text property, and in that case specifically allows
// the title and label text prop to be the same.
this->TextMappers[i]->GetTextProperty()->ShallowCopy(
this->LabelTextProperty);
this->TextActors[i] = vtkActor2D::New();
this->TextActors[i]->SetMapper(this->TextMappers[i]);
this->TextActors[i]->SetProperty(this->GetProperty());
this->TextActors[i]->GetPositionCoordinate()->
SetReferenceCoordinate(this->PositionCoordinate);
}
if (this->NumberOfLabels)
{
int targetWidth, targetHeight;
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
bool distrVisibility = this->MaximumNumberOfColors == this->myNbValues.size();
double coef;
if( GetDistributionVisibility() && distrVisibility )
if(this->Orientation == VTK_ORIENT_VERTICAL)
coef = 0.4;
else
coef = 0.18;
else
if(this->Orientation == VTK_ORIENT_VERTICAL)
coef = 0.6;
else
coef=0.25;
if ( this->Orientation == VTK_ORIENT_VERTICAL )
{
targetWidth = (int)(coef*size[0]);
targetHeight = (int)(0.86*size[1]/this->NumberOfLabels);
}
else
{
targetWidth = (int)(size[0]*0.8/this->NumberOfLabels);
targetHeight = (int)(coef*size[1]);
}
// rnv end
vtkTextMapper::SetMultipleConstrainedFontSize(viewport,
targetWidth,
targetHeight,
this->TextMappers,
this->NumberOfLabels,
labelSize);
}
}
| void SMESH_ScalarBarActor::GetDistributionColor | ( | double | rgb[3] | ) |
Definition at line 921 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), SMESHGUI_Preferences_ScalarBarDlg.onSelectionChanged(), and SMESH_ActorDef.UpdatePlot2Histogram().
{
myDistributionActor->GetProperty()->GetColor(rgb);
}
| int SMESH_ScalarBarActor.GetDistributionColoringType | ( | ) |
Definition at line 185 of file SMESH_ScalarBarActor.h.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), SMESHGUI_Preferences_ScalarBarDlg.onSelectionChanged(), and SMESH_ActorDef.UpdatePlot2Histogram().
{return myDistributionColoringType;}
| int SMESH_ScalarBarActor::GetDistributionVisibility | ( | ) | [virtual] |
Definition at line 906 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor.
Referenced by AllocateAndSizeLabels(), SMESHGUI_Selection.isDistributionVisible(), SMESHGUI_Preferences_ScalarBarDlg.onSelectionChanged(), RenderOpaqueGeometry(), ShowDistribution(), and SizeTitle().
{
return myDistributionActor->GetVisibility();
}
| static SMESH_ScalarBarActor* SMESH_ScalarBarActor.New | ( | ) | [static] |
Referenced by AllocateAndSizeLabels(), RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
| void SMESH_ScalarBarActor.operator= | ( | const SMESH_ScalarBarActor & | ) | [private] |
| void SMESH_ScalarBarActor::PrintSelf | ( | ostream & | os, |
| vtkIndent | indent | ||
| ) |
Definition at line 653 of file SMESH_ScalarBarActor.cxx.
References LabelFormat, LabelTextProperty, LookupTable, MaximumNumberOfColors, NumberOfLabels, NumberOfLabelsBuilt, Orientation, Title, TitleTextProperty, and VTK_ORIENT_HORIZONTAL.
{
this->Superclass::PrintSelf(os,indent);
if ( this->LookupTable )
{
os << indent << "Lookup Table:\n";
this->LookupTable->PrintSelf(os,indent.GetNextIndent());
}
else
{
os << indent << "Lookup Table: (none)\n";
}
if (this->TitleTextProperty)
{
os << indent << "Title Text Property:\n";
this->TitleTextProperty->PrintSelf(os,indent.GetNextIndent());
}
else
{
os << indent << "Title Text Property: (none)\n";
}
if (this->LabelTextProperty)
{
os << indent << "Label Text Property:\n";
this->LabelTextProperty->PrintSelf(os,indent.GetNextIndent());
}
else
{
os << indent << "Label Text Property: (none)\n";
}
os << indent << "Title: " << (this->Title ? this->Title : "(none)") << "\n";
os << indent << "Maximum Number Of Colors: "
<< this->MaximumNumberOfColors << "\n";
os << indent << "Number Of Labels: " << this->NumberOfLabels << "\n";
os << indent << "Number Of Labels Built: " << this->NumberOfLabelsBuilt << "\n";
os << indent << "Orientation: ";
if ( this->Orientation == VTK_ORIENT_HORIZONTAL )
{
os << "Horizontal\n";
}
else
{
os << "Vertical\n";
}
os << indent << "Label Format: " << this->LabelFormat << "\n";
}
| void SMESH_ScalarBarActor::ReleaseGraphicsResources | ( | vtkWindow * | win | ) | [virtual] |
Definition at line 125 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor, NumberOfLabelsBuilt, ScalarBarActor, TextActors, TextMappers, and TitleActor.
{
this->TitleActor->ReleaseGraphicsResources(win);
if (this->TextMappers != NULL )
{
for (int i=0; i < this->NumberOfLabelsBuilt; i++)
{
this->TextActors[i]->ReleaseGraphicsResources(win);
}
}
this->ScalarBarActor->ReleaseGraphicsResources(win);
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
myDistributionActor->ReleaseGraphicsResources(win);
}
| int SMESH_ScalarBarActor::RenderOpaqueGeometry | ( | vtkViewport * | viewport | ) |
Definition at line 217 of file SMESH_ScalarBarActor.cxx.
References AllocateAndSizeLabels(), BuildTime, GetDistributionVisibility(), LabelTextProperty, LastOrigin, LastSize, LookupTable, MaximumNumberOfColors, myDistribution, myDistributionActor, myDistributionColoringType, myNbValues, New(), NumberOfLabels, NumberOfLabelsBuilt, Orientation, ScalarBar, ScalarBarActor, SHRINK_COEF, ex21_lamp.size, SizeTitle(), SMESH_MONOCOLOR_TYPE, SMESH_MULTICOLOR_TYPE, TextActors, TextMappers, Title, TitleActor, TitleMapper, TitleTextProperty, VTK_ORIENT_VERTICAL, and ex13_hole1partial.x.
{
int renderedSomething = 0;
int i;
int size[2];
if (!this->LookupTable)
{
vtkWarningMacro(<<"Need a mapper to render a scalar bar");
return 0;
}
if (!this->TitleTextProperty)
{
vtkErrorMacro(<<"Need title text property to render a scalar bar");
return 0;
}
if (!this->LabelTextProperty)
{
vtkErrorMacro(<<"Need label text property to render a scalar bar");
return 0;
}
// Check to see whether we have to rebuild everything
int positionsHaveChanged = 0;
if (viewport->GetMTime() > this->BuildTime ||
(viewport->GetVTKWindow() &&
viewport->GetVTKWindow()->GetMTime() > this->BuildTime))
{
// if the viewport has changed we may - or may not need
// to rebuild, it depends on if the projected coords chage
int *barOrigin;
barOrigin = this->PositionCoordinate->GetComputedViewportValue(viewport);
size[0] =
this->Position2Coordinate->GetComputedViewportValue(viewport)[0] -
barOrigin[0];
size[1] =
this->Position2Coordinate->GetComputedViewportValue(viewport)[1] -
barOrigin[1];
if (this->LastSize[0] != size[0] ||
this->LastSize[1] != size[1] ||
this->LastOrigin[0] != barOrigin[0] ||
this->LastOrigin[1] != barOrigin[1])
{
positionsHaveChanged = 1;
}
}
// Check to see whether we have to rebuild everything
if (positionsHaveChanged ||
this->GetMTime() > this->BuildTime ||
this->LookupTable->GetMTime() > this->BuildTime ||
this->LabelTextProperty->GetMTime() > this->BuildTime ||
this->TitleTextProperty->GetMTime() > this->BuildTime)
{
vtkDebugMacro(<<"Rebuilding subobjects");
// Delete previously constructed objects
//
if (this->TextMappers != NULL )
{
for (i=0; i < this->NumberOfLabelsBuilt; i++)
{
this->TextMappers[i]->Delete();
this->TextActors[i]->Delete();
}
delete [] this->TextMappers;
delete [] this->TextActors;
}
// Build scalar bar object; determine its type
//
// is this a vtkLookupTable or a subclass of vtkLookupTable
// with its scale set to log
// NOTE: it's possible we could to without the 'lut' variable
// later in the code, but if the vtkLookupTableSafeDownCast operation
// fails for some reason, this code will break in new ways. So, the 'LUT'
// variable is used for this operation only
vtkLookupTable *LUT = vtkLookupTable::SafeDownCast( this->LookupTable );
int isLogTable = 0;
if ( LUT )
{
if ( LUT->GetScale() == VTK_SCALE_LOG10 )
{
isLogTable = 1;
}
}
// we hard code how many steps to display
vtkScalarsToColors *lut = this->LookupTable;
int numColors = this->MaximumNumberOfColors;
double *range = lut->GetRange();
int numPts = 2*(numColors + 1);
vtkPoints *pts = vtkPoints::New();
pts->SetNumberOfPoints(numPts);
vtkCellArray *polys = vtkCellArray::New();
polys->Allocate(polys->EstimateSize(numColors,4));
vtkUnsignedCharArray *colors = vtkUnsignedCharArray::New();
colors->SetNumberOfComponents(3);
colors->SetNumberOfTuples(numColors);
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
bool distrVisibility = (numColors == this->myNbValues.size());
vtkPoints *distrPts;
vtkCellArray *distrPolys;
vtkUnsignedCharArray *distColors = 0;
int numDistrPts = 0, numPositiveVal=0, maxValue=0;
if(!distrVisibility)
vtkDebugMacro(<<" Distribution invisible, because numColors == this->myNbValues.size()");
if (distrVisibility && GetDistributionVisibility()) {
for( i=0 ;i<myNbValues.size();i++ ) {
if(myNbValues[i]) {
numPositiveVal++;
maxValue = std::max(maxValue,myNbValues[i]);
}
}
numDistrPts = 4*(numPositiveVal);
distrPts = vtkPoints::New();
distrPolys = vtkCellArray::New();
distrPts->SetNumberOfPoints(numDistrPts);
distrPolys->Allocate(distrPolys->EstimateSize(numPositiveVal,4));
this->myDistribution->Initialize();
this->myDistribution->SetPoints(distrPts);
this->myDistribution->SetPolys(distrPolys);
distrPts->Delete();
distrPolys->Delete();
if ( myDistributionColoringType == SMESH_MULTICOLOR_TYPE ) {
distColors = vtkUnsignedCharArray::New();
distColors->SetNumberOfComponents(3);
distColors->SetNumberOfTuples(numPositiveVal);
this->myDistribution->GetCellData()->SetScalars(distColors);
distColors->Delete();
} else if( myDistributionColoringType == SMESH_MONOCOLOR_TYPE ){
this->myDistribution->GetCellData()->SetScalars(NULL);
}
} else {
myDistribution->Reset();
}
// rnv end
this->ScalarBarActor->SetProperty(this->GetProperty());
this->ScalarBar->Initialize();
this->ScalarBar->SetPoints(pts);
this->ScalarBar->SetPolys(polys);
this->ScalarBar->GetCellData()->SetScalars(colors);
pts->Delete(); polys->Delete(); colors->Delete();
// get the viewport size in display coordinates
int *barOrigin, barWidth, barHeight, distrHeight;
barOrigin = this->PositionCoordinate->GetComputedViewportValue(viewport);
size[0] =
this->Position2Coordinate->GetComputedViewportValue(viewport)[0] -
barOrigin[0];
size[1] =
this->Position2Coordinate->GetComputedViewportValue(viewport)[1] -
barOrigin[1];
this->LastOrigin[0] = barOrigin[0];
this->LastOrigin[1] = barOrigin[1];
this->LastSize[0] = size[0];
this->LastSize[1] = size[1];
// Update all the composing objects
this->TitleActor->SetProperty(this->GetProperty());
this->TitleMapper->SetInput(this->Title);
if (this->TitleTextProperty->GetMTime() > this->BuildTime)
{
// Shallow copy here so that the size of the title prop is not affected
// by the automatic adjustment of its text mapper's size (i.e. its
// mapper's text property is identical except for the font size
// which will be modified later). This allows text actors to
// share the same text property, and in that case specifically allows
// the title and label text prop to be the same.
this->TitleMapper->GetTextProperty()->ShallowCopy(this->TitleTextProperty);
this->TitleMapper->GetTextProperty()->SetJustificationToCentered();
}
// find the best size for the title font
int titleSize[2];
this->SizeTitle(titleSize, size, viewport);
// find the best size for the ticks
int labelSize[2];
this->AllocateAndSizeLabels(labelSize, size, viewport,range);
this->NumberOfLabelsBuilt = this->NumberOfLabels;
// generate points
double x[3]; x[2] = 0.0;
double delta, itemH, shrink;
if ( this->Orientation == VTK_ORIENT_VERTICAL ) {
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
double delimeter=0.0;
if(GetDistributionVisibility() && distrVisibility) {
delimeter=0.01*size[0]; //1 % from horizontal size of the full presentation size.
barWidth = size[0] - 4 - labelSize[0];
distrHeight = barWidth/2;
} else {
barWidth = size[0] - 4 - labelSize[0];
distrHeight = 0;
}
barHeight = (int)(0.86*size[1]);
delta=(double)barHeight/numColors;
for ( i=0; i<numPts/2; i++ ) {
x[0] = distrHeight+delimeter/2.0;
x[1] = i*delta;
pts->SetPoint(2*i,x);
x[0] = barWidth;
pts->SetPoint(2*i+1,x);
}
if(GetDistributionVisibility() && distrVisibility) {
// Distribution points
shrink = delta*SHRINK_COEF;
vtkIdType distPtsId=0;
vtkIdType distPtsIds[4];
for(i=0; i<numColors; i++) {
if(myNbValues[i]) {
itemH = distrHeight*((double)myNbValues[i]/maxValue);
if(distrHeight == itemH)
itemH = itemH - delimeter/2;
x[1] = i*delta+shrink;
// first point of polygon (quadrangle)
x[0] = 0;
distPtsIds[0] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// second point of polygon (quadrangle)
x[0] = itemH;
distPtsIds[1] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
x[1] = i*delta+delta-shrink;
// third point of polygon (quadrangle)
x[0] = 0;
distPtsIds[3] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// fourth point of polygon (quadrangle)
x[0] = itemH;
distPtsIds[2] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
//Inser Quadrangle
distrPolys->InsertNextCell(4,distPtsIds);
}
}
}
}
// rnv end
else {
barWidth = size[0];
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
double coef1, delimeter=0.0;
if(GetDistributionVisibility() && distrVisibility) {
coef1=0.62;
distrHeight = (int)((coef1/2)*size[1]);
//delimeter between distribution diagram and scalar bar
delimeter=0.02*size[1];
}
else {
coef1=0.4;
barHeight = (int)(coef1*size[1]);
distrHeight = 0;
}
barHeight = (int)(coef1*size[1]);
delta=(double)barWidth/numColors;
for (i=0; i<numPts/2; i++) {
x[0] = i*delta;
x[1] = barHeight;
pts->SetPoint(2*i,x);
x[1] = distrHeight + delimeter;
pts->SetPoint(2*i+1,x);
}
if(GetDistributionVisibility() && distrVisibility) {
// Distribution points
shrink = delta*SHRINK_COEF;
vtkIdType distPtsId=0;
vtkIdType distPtsIds[4];
for(i=0; i<numColors; i++) {
if(myNbValues[i]) {
itemH = distrHeight*((double)myNbValues[i]/maxValue);
// first point of polygon (quadrangle)
x[0] = i*delta+shrink;
x[1] = 0;
distPtsIds[0] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// second point of polygon (quadrangle)
x[0] = i*delta+shrink;
x[1] = itemH;
distPtsIds[3] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// third point of polygon (quadrangle)
x[0] = i*delta+delta-shrink;
x[1] = 0;
distPtsIds[1] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// fourth point of polygon (quadrangle)
x[0] = i*delta+delta-shrink;
x[1] = itemH;
distPtsIds[2] = distPtsId;
distrPts->SetPoint(distPtsId++,x);
// Add polygon into poly data
distrPolys->InsertNextCell(4,distPtsIds);
}
}
}
// rnv end
}
//polygons & cell colors
unsigned char *rgba, *rgb;
vtkIdType ptIds[4], dcCount=0;
for (i=0; i<numColors; i++)
{
ptIds[0] = 2*i;
ptIds[1] = ptIds[0] + 1;
ptIds[2] = ptIds[1] + 2;
ptIds[3] = ptIds[0] + 2;
polys->InsertNextCell(4,ptIds);
if ( isLogTable )
{
double rgbval = log10(range[0]) +
i*(log10(range[1])-log10(range[0]))/(numColors -1);
rgba = lut->MapValue(pow(10.0,rgbval));
}
else
{
rgba = lut->MapValue(range[0] + (range[1] - range[0])*
((double)i /(numColors-1.0)));
}
rgb = colors->GetPointer(3*i); //write into array directly
rgb[0] = rgba[0];
rgb[1] = rgba[1];
rgb[2] = rgba[2];
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
if(myNbValues[i] && myDistributionColoringType == SMESH_MULTICOLOR_TYPE && GetDistributionVisibility() && distrVisibility)
{
rgb = distColors->GetPointer(3*dcCount); //write into array directly
rgb[0] = rgba[0];
rgb[1] = rgba[1];
rgb[2] = rgba[2];
dcCount++;
}
}
// Now position everything properly
//
double val;
if (this->Orientation == VTK_ORIENT_VERTICAL)
{
int sizeTextData[2];
// center the title
this->TitleActor->SetPosition(size[0]/2, 0.9*size[1]);
for (i=0; i < this->NumberOfLabels; i++)
{
if (this->NumberOfLabels > 1)
{
val = (double)i/(this->NumberOfLabels-1) *barHeight;
}
else
{
val = 0.5*barHeight;
}
this->TextMappers[i]->GetSize(viewport,sizeTextData);
this->TextMappers[i]->GetTextProperty()->SetJustificationToLeft();
this->TextActors[i]->SetPosition(barWidth+3,
val - sizeTextData[1]/2);
}
}
else
{
this->TitleActor->SetPosition(size[0]/2,
barHeight + labelSize[1] + 0.1*size[1]);
for (i=0; i < this->NumberOfLabels; i++)
{
this->TextMappers[i]->GetTextProperty()->SetJustificationToCentered();
if (this->NumberOfLabels > 1)
{
val = (double)i/(this->NumberOfLabels-1) * barWidth;
}
else
{
val = 0.5*barWidth;
}
this->TextActors[i]->SetPosition(val, barHeight + 0.05*size[1]);
}
}
this->BuildTime.Modified();
}
// Everything is built, just have to render
if (this->Title != NULL)
{
renderedSomething += this->TitleActor->RenderOpaqueGeometry(viewport);
}
this->ScalarBarActor->RenderOpaqueGeometry(viewport);
this->myDistributionActor->RenderOpaqueGeometry(viewport);
for (i=0; i<this->NumberOfLabels; i++)
{
renderedSomething += this->TextActors[i]->RenderOpaqueGeometry(viewport);
}
renderedSomething = (renderedSomething > 0)?(1):(0);
return renderedSomething;
}
| int SMESH_ScalarBarActor::RenderOverlay | ( | vtkViewport * | viewport | ) |
Definition at line 187 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor, NumberOfLabels, ScalarBarActor, TextActors, Title, and TitleActor.
{
int renderedSomething = 0;
int i;
// Everything is built, just have to render
if (this->Title != NULL)
{
renderedSomething += this->TitleActor->RenderOverlay(viewport);
}
this->ScalarBarActor->RenderOverlay(viewport);
this->myDistributionActor->RenderOverlay(viewport);
if( this->TextActors == NULL)
{
vtkWarningMacro(<<"Need a mapper to render a scalar bar");
return renderedSomething;
}
for (i=0; i<this->NumberOfLabels; i++)
{
renderedSomething += this->TextActors[i]->RenderOverlay(viewport);
}
renderedSomething = (renderedSomething > 0)?(1):(0);
return renderedSomething;
}
| int SMESH_ScalarBarActor.RenderTranslucentGeometry | ( | vtkViewport * | ) |
Definition at line 105 of file SMESH_ScalarBarActor.h.
{ return 0; };
| void SMESH_ScalarBarActor::SetDistribution | ( | std::vector< int > | theNbValues | ) | [virtual] |
Definition at line 911 of file SMESH_ScalarBarActor.cxx.
References myNbValues.
Referenced by SMESH_ActorDef.UpdateDistribution().
{
myNbValues = theNbValues;
}
| void SMESH_ScalarBarActor::SetDistributionColor | ( | double | rgb[3] | ) |
Definition at line 916 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), and SMESH_ActorDef.UpdateScalarBar().
{
myDistributionActor->GetProperty()->SetColor(rgb);
Modified();
}
| void SMESH_ScalarBarActor.SetDistributionColoringType | ( | int | theDistributionColoringType | ) |
Definition at line 181 of file SMESH_ScalarBarActor.h.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), and SMESH_ActorDef.UpdateScalarBar().
{myDistributionColoringType = theDistributionColoringType;Modified();}
| void SMESH_ScalarBarActor::SetDistributionVisibility | ( | int | flag | ) | [virtual] |
Definition at line 899 of file SMESH_ScalarBarActor.cxx.
References myDistributionActor.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), ShowDistribution(), and SMESH_ActorDef.UpdateScalarBar().
{
myDistributionActor->SetVisibility(flag);
Modified();
}
| virtual void SMESH_ScalarBarActor.SetLabelTextProperty | ( | vtkTextProperty * | p | ) | [virtual] |
| virtual void SMESH_ScalarBarActor.SetLookupTable | ( | vtkScalarsToColors * | ) | [virtual] |
Referenced by ShallowCopy(), SMESH_ActorDef.SMESH_ActorDef(), and ~SMESH_ScalarBarActor().
| void SMESH_ScalarBarActor.SetOrientationToHorizontal | ( | ) |
Definition at line 137 of file SMESH_ScalarBarActor.h.
References VTK_ORIENT_HORIZONTAL.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), and SMESH_ActorDef.UpdateScalarBar().
{this->SetOrientation(VTK_ORIENT_HORIZONTAL);};
| void SMESH_ScalarBarActor.SetOrientationToVertical | ( | ) |
Definition at line 139 of file SMESH_ScalarBarActor.h.
References VTK_ORIENT_VERTICAL.
Referenced by SMESHGUI_Preferences_ScalarBarDlg.onApply(), and SMESH_ActorDef.UpdateScalarBar().
{this->SetOrientation(VTK_ORIENT_VERTICAL);};
| virtual void SMESH_ScalarBarActor.SetTitleTextProperty | ( | vtkTextProperty * | p | ) | [virtual] |
| void SMESH_ScalarBarActor::ShallowCopy | ( | vtkProp * | prop | ) |
Definition at line 707 of file SMESH_ScalarBarActor.cxx.
References SMESH_demo_hexa2_upd.a, SetLabelTextProperty(), SetLookupTable(), and SetTitleTextProperty().
{
SMESH_ScalarBarActor *a = SMESH_ScalarBarActor::SafeDownCast(prop);
if ( a != NULL )
{
this->SetPosition2(a->GetPosition2());
this->SetLookupTable(a->GetLookupTable());
this->SetMaximumNumberOfColors(a->GetMaximumNumberOfColors());
this->SetOrientation(a->GetOrientation());
this->SetLabelTextProperty(a->GetLabelTextProperty());
this->SetTitleTextProperty(a->GetTitleTextProperty());
this->SetLabelFormat(a->GetLabelFormat());
this->SetTitle(a->GetTitle());
this->GetPositionCoordinate()->SetCoordinateSystem(
a->GetPositionCoordinate()->GetCoordinateSystem());
this->GetPositionCoordinate()->SetValue(
a->GetPositionCoordinate()->GetValue());
this->GetPosition2Coordinate()->SetCoordinateSystem(
a->GetPosition2Coordinate()->GetCoordinateSystem());
this->GetPosition2Coordinate()->SetValue(
a->GetPosition2Coordinate()->GetValue());
}
// Now do superclass
this->vtkActor2D::ShallowCopy(prop);
}
| void SMESH_ScalarBarActor::SizeTitle | ( | int * | titleSize, |
| int * | size, | ||
| vtkViewport * | viewport | ||
| ) | [private] |
Definition at line 859 of file SMESH_ScalarBarActor.cxx.
References GetDistributionVisibility(), MaximumNumberOfColors, myNbValues, Orientation, Title, TitleMapper, and VTK_ORIENT_VERTICAL.
Referenced by RenderOpaqueGeometry().
{
titleSize[0] = titleSize[1] = 0;
if (this->Title == NULL || !strlen(this->Title))
{
return;
}
int targetWidth, targetHeight;
targetWidth = size[0];
// rnv begin
// Customization of the vtkScalarBarActor to show distribution histogram.
bool distrVisibility = this->MaximumNumberOfColors == this->myNbValues.size();
double coef;
if( GetDistributionVisibility() && distrVisibility )
coef=0.18;
else
coef=0.25;
if ( this->Orientation == VTK_ORIENT_VERTICAL )
{
targetHeight = (int)(0.1*size[1]);
}
else
{
targetHeight = (int)(coef*size[1]);
}
this->TitleMapper->SetConstrainedFontSize(
viewport, targetWidth, targetHeight);
this->TitleMapper->GetSize(viewport, titleSize);
}
| SMESH_ScalarBarActor.vtkGetMacro | ( | Orientation | , |
| int | |||
| ) |
| SMESH_ScalarBarActor.vtkGetMacro | ( | MaximumNumberOfColors | , |
| int | |||
| ) |
| SMESH_ScalarBarActor.vtkGetMacro | ( | NumberOfLabels | , |
| int | |||
| ) |
| SMESH_ScalarBarActor.vtkGetObjectMacro | ( | TitleTextProperty | , |
| vtkTextProperty | |||
| ) |
| SMESH_ScalarBarActor.vtkGetObjectMacro | ( | LookupTable | , |
| vtkScalarsToColors | |||
| ) |
| SMESH_ScalarBarActor.vtkGetObjectMacro | ( | LabelTextProperty | , |
| vtkTextProperty | |||
| ) |
| SMESH_ScalarBarActor.vtkGetStringMacro | ( | Title | ) |
| SMESH_ScalarBarActor.vtkGetStringMacro | ( | LabelFormat | ) |
| SMESH_ScalarBarActor.vtkSetClampMacro | ( | Orientation | , |
| int | , | ||
| 0 | , | ||
| 1 | |||
| ) |
| SMESH_ScalarBarActor.vtkSetClampMacro | ( | NumberOfLabels | , |
| int | , | ||
| 0 | , | ||
| 64 | |||
| ) |
| SMESH_ScalarBarActor.vtkSetClampMacro | ( | MaximumNumberOfColors | , |
| int | , | ||
| 2 | , | ||
| VTK_LARGE_INTEGER | |||
| ) |
| SMESH_ScalarBarActor.vtkSetStringMacro | ( | Title | ) |
| SMESH_ScalarBarActor.vtkSetStringMacro | ( | LabelFormat | ) |
| SMESH_ScalarBarActor.vtkTypeMacro | ( | SMESH_ScalarBarActor | , |
| vtkActor2D | |||
| ) |
vtkTimeStamp SMESH_ScalarBarActor.BuildTime [private] |
Definition at line 228 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry().
char* SMESH_ScalarBarActor.LabelFormat [protected] |
Definition at line 210 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkTextProperty* SMESH_ScalarBarActor.LabelTextProperty [protected] |
Definition at line 203 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
int SMESH_ScalarBarActor.LastOrigin[2] [private] |
Definition at line 230 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
int SMESH_ScalarBarActor.LastSize[2] [private] |
Definition at line 229 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
vtkScalarsToColors* SMESH_ScalarBarActor.LookupTable [protected] |
Definition at line 201 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
int SMESH_ScalarBarActor.MaximumNumberOfColors [protected] |
Definition at line 205 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), RenderOpaqueGeometry(), SizeTitle(), and SMESH_ScalarBarActor().
vtkPolyData* SMESH_ScalarBarActor.myDistribution [private] |
Definition at line 235 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
Definition at line 236 of file SMESH_ScalarBarActor.h.
Referenced by GetDistributionColor(), GetDistributionVisibility(), ReleaseGraphicsResources(), RenderOpaqueGeometry(), RenderOverlay(), SetDistributionColor(), SetDistributionVisibility(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
Definition at line 239 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), and SMESH_ScalarBarActor().
vtkPolyDataMapper2D* SMESH_ScalarBarActor.myDistributionMapper [private] |
Definition at line 237 of file SMESH_ScalarBarActor.h.
Referenced by SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
std::vector<int> SMESH_ScalarBarActor.myNbValues [private] |
Definition at line 238 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), RenderOpaqueGeometry(), SetDistribution(), and SizeTitle().
int SMESH_ScalarBarActor.NumberOfLabels [protected] |
Definition at line 206 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), RenderOpaqueGeometry(), RenderOverlay(), and SMESH_ScalarBarActor().
int SMESH_ScalarBarActor.NumberOfLabelsBuilt [protected] |
Definition at line 207 of file SMESH_ScalarBarActor.h.
Referenced by PrintSelf(), ReleaseGraphicsResources(), RenderOpaqueGeometry(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
int SMESH_ScalarBarActor.Orientation [protected] |
Definition at line 208 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), PrintSelf(), RenderOpaqueGeometry(), SizeTitle(), and SMESH_ScalarBarActor().
vtkPolyData* SMESH_ScalarBarActor.ScalarBar [private] |
Definition at line 224 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkActor2D* SMESH_ScalarBarActor.ScalarBarActor [private] |
Definition at line 226 of file SMESH_ScalarBarActor.h.
Referenced by ReleaseGraphicsResources(), RenderOpaqueGeometry(), RenderOverlay(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkPolyDataMapper2D* SMESH_ScalarBarActor.ScalarBarMapper [private] |
Definition at line 225 of file SMESH_ScalarBarActor.h.
Referenced by SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkActor2D** SMESH_ScalarBarActor.TextActors [private] |
Definition at line 222 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), ReleaseGraphicsResources(), RenderOpaqueGeometry(), RenderOverlay(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkTextMapper** SMESH_ScalarBarActor.TextMappers [protected] |
Definition at line 212 of file SMESH_ScalarBarActor.h.
Referenced by AllocateAndSizeLabels(), ReleaseGraphicsResources(), RenderOpaqueGeometry(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
char* SMESH_ScalarBarActor.Title [protected] |
Definition at line 209 of file SMESH_ScalarBarActor.h.
Referenced by PrintSelf(), RenderOpaqueGeometry(), RenderOverlay(), SizeTitle(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkActor2D* SMESH_ScalarBarActor.TitleActor [private] |
Definition at line 220 of file SMESH_ScalarBarActor.h.
Referenced by ReleaseGraphicsResources(), RenderOpaqueGeometry(), RenderOverlay(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkTextMapper* SMESH_ScalarBarActor.TitleMapper [private] |
Definition at line 219 of file SMESH_ScalarBarActor.h.
Referenced by RenderOpaqueGeometry(), SizeTitle(), SMESH_ScalarBarActor(), and ~SMESH_ScalarBarActor().
vtkTextProperty* SMESH_ScalarBarActor.TitleTextProperty [protected] |
Definition at line 202 of file SMESH_ScalarBarActor.h.
Referenced by PrintSelf(), RenderOpaqueGeometry(), and SMESH_ScalarBarActor().