0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating...
[occt.git] / src / IVtkTools / IVtkTools.cxx
CommitLineData
913a4c4a 1// Created on: 2011-12-20
2// Created by: Roman KOZLOV
3// Copyright (c) 2011-2014 OPEN CASCADE SAS
4//
5//This file is part of Open CASCADE Technology software library.
6//
7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
12//
13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
15
16#include <IVtkTools.hxx>
17#include <IVtkVTK_ShapeData.hxx>
a9660929 18
19// prevent disabling some MSVC warning messages by VTK headers
20#ifdef _MSC_VER
21#pragma warning(push)
22#endif
913a4c4a 23#include <vtkLookupTable.h>
24#include <vtkMapper.h>
a9660929 25#ifdef _MSC_VER
26#pragma warning(pop)
27#endif
913a4c4a 28
29namespace IVtkTools
30{
31//============================================================================
32// Method: InitLookupTable
33// Purpose: Returns vtkLookupTable instance initialized by standrad OCCT colors.
34//============================================================================
a2f76b15 35vtkSmartPointer<vtkLookupTable> InitLookupTable()
913a4c4a 36{
a2f76b15 37 vtkSmartPointer<vtkLookupTable> aColorTable =
38 vtkSmartPointer<vtkLookupTable>::New();
913a4c4a 39 // Set colors table for 3D shapes
40 double aRange[2];
41 aRange[0] = MT_Undefined;
42 aRange[1] = MT_ShadedFace;
43 aColorTable->Allocate (9);
44 aColorTable->SetNumberOfTableValues (9);
45 aColorTable->SetTableRange (aRange);
46 aColorTable->SetValueRange (0, 1);
47/*
48 MT_Undefined = -1 Undefined
49 MT_IsoLine = 0 IsoLine
50 MT_FreeVertex = 1 Free vertex
51 MT_SharedVertex = 2 Shared vertex
52 MT_FreeEdge = 3 Free edge
53 MT_BoundaryEdge = 4 Boundary edge (related to a single face)
54 MT_SharedEdge = 5 Shared edge (related to several faces)
55 MT_WireFrameFace = 6 Wireframe face
56 MT_ShadedFace = 7 Shaded face
57*/
58 aColorTable->SetTableValue (0, 0, 0, 0); // Undefined
59 aColorTable->SetTableValue (1, 0.5, 0.5, 0.5); // gray for IsoLine
60 aColorTable->SetTableValue (2, 1, 0, 0); // red for Free vertex
61 aColorTable->SetTableValue (3, 1, 1, 0); // yellow for Shared vertex
62 aColorTable->SetTableValue (4, 1, 0, 0); // red for Free edge
63 aColorTable->SetTableValue (5, 0, 1, 0); // green for Boundary edge (related to a single face)
64 aColorTable->SetTableValue (6, 1, 1, 0); // yellow for Shared edge (related to several faces)
65 aColorTable->SetTableValue (7, 1, 1, 0); // yellow for Wireframe face
66 aColorTable->SetTableValue (8, 1, 1, 0); // yellow for Shaded face
67 return aColorTable;
68}
69
70//============================================================================
71// Method: SetLookupTableColor
72// Purpose: Set a color for given type of sub-shapes.
73//============================================================================
74void SetLookupTableColor (vtkLookupTable* theColorTable,
75 const IVtk_MeshType theColorRole,
76 const double theR, const double theG, const double theB,
77 const double /*theA*/)
78{
79 theColorTable->SetTableValue (theColorRole + 1, theR, theG, theB);
80}
81
82//============================================================================
83// Method: GetLookupTableColor
84// Purpose: Get a color for given type of sub-shapes.
85//============================================================================
86void GetLookupTableColor (vtkLookupTable* theColorTable,
87 const IVtk_MeshType theColorRole,
88 double &theR, double &theG, double &theB)
89{
90 double aRgb[3];
91 theColorTable->GetColor (theColorRole + 1, aRgb);
92 theR = aRgb[0];
93 theG = aRgb[1];
94 theB = aRgb[2];
95}
96
97//============================================================================
98// Method: GetLookupTableColor
99// Purpose: Get a color for given type of sub-shapes.
100//============================================================================
101void GetLookupTableColor (vtkLookupTable* theColorTable,
102 const IVtk_MeshType theColorRole,
103 double &theR, double &theG, double &theB,
104 double &theA)
105{
106 theA = theColorTable->GetOpacity (theColorRole + 1);
107 GetLookupTableColor (theColorTable, theColorRole, theR, theG, theB);
108}
109
110//============================================================================
111// Method: InitShapeMapper
112// Purpose: Set up the initial shape mapper parameters with default OCC colors.
113//============================================================================
114void InitShapeMapper (vtkMapper* theMapper)
115{
116 InitShapeMapper (theMapper, InitLookupTable());
117}
118
119//============================================================================
120// Method: InitShapeMapper
121// Purpose: Set up the initial shape mapper parameters with user colors.
122//============================================================================
123void InitShapeMapper (vtkMapper* theMapper, vtkLookupTable* theColorTable)
124{
125 theMapper->ScalarVisibilityOn();
126 theMapper->SetScalarModeToUseCellFieldData();
68df8478 127 theMapper->SelectColorArray (IVtkVTK_ShapeData::ARRNAME_MESH_TYPES());
913a4c4a 128 theMapper->SetColorModeToMapScalars();
129 theMapper->SetScalarRange (theColorTable->GetRange());
130 theMapper->SetLookupTable (theColorTable);
131 theMapper->Update();
132}
68858c7d 133
134} // namespace IVtkTools