1 // Created on: 2011-12-20
2 // Created by: Roman KOZLOV
3 // Copyright (c) 2011-2014 OPEN CASCADE SAS
5 //This file is part of Open CASCADE Technology software library.
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.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #include <IVtkTools.hxx>
17 #include <IVtkVTK_ShapeData.hxx>
19 // prevent disabling some MSVC warning messages by VTK headers
23 #include <vtkLookupTable.h>
24 #include <vtkMapper.h>
31 //============================================================================
32 // Method: InitLookupTable
33 // Purpose: Returns vtkLookupTable instance initialized by standrad OCCT colors.
34 //============================================================================
35 vtkSmartPointer<vtkLookupTable> InitLookupTable()
37 vtkSmartPointer<vtkLookupTable> aColorTable =
38 vtkSmartPointer<vtkLookupTable>::New();
39 // Set colors table for 3D shapes
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);
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
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
70 //============================================================================
71 // Method: SetLookupTableColor
72 // Purpose: Set a color for given type of sub-shapes.
73 //============================================================================
74 void SetLookupTableColor (vtkLookupTable* theColorTable,
75 const IVtk_MeshType theColorRole,
76 const double theR, const double theG, const double theB,
77 const double /*theA*/)
79 theColorTable->SetTableValue (theColorRole + 1, theR, theG, theB);
82 //============================================================================
83 // Method: GetLookupTableColor
84 // Purpose: Get a color for given type of sub-shapes.
85 //============================================================================
86 void GetLookupTableColor (vtkLookupTable* theColorTable,
87 const IVtk_MeshType theColorRole,
88 double &theR, double &theG, double &theB)
91 theColorTable->GetColor (theColorRole + 1, aRgb);
97 //============================================================================
98 // Method: GetLookupTableColor
99 // Purpose: Get a color for given type of sub-shapes.
100 //============================================================================
101 void GetLookupTableColor (vtkLookupTable* theColorTable,
102 const IVtk_MeshType theColorRole,
103 double &theR, double &theG, double &theB,
106 theA = theColorTable->GetOpacity (theColorRole + 1);
107 GetLookupTableColor (theColorTable, theColorRole, theR, theG, theB);
110 //============================================================================
111 // Method: InitShapeMapper
112 // Purpose: Set up the initial shape mapper parameters with default OCC colors.
113 //============================================================================
114 void InitShapeMapper (vtkMapper* theMapper)
116 InitShapeMapper (theMapper, InitLookupTable());
119 //============================================================================
120 // Method: InitShapeMapper
121 // Purpose: Set up the initial shape mapper parameters with user colors.
122 //============================================================================
123 void InitShapeMapper (vtkMapper* theMapper, vtkLookupTable* theColorTable)
125 theMapper->ScalarVisibilityOn();
126 theMapper->SetScalarModeToUseCellFieldData();
127 theMapper->SelectColorArray (IVtkVTK_ShapeData::ARRNAME_MESH_TYPES());
128 theMapper->SetColorModeToMapScalars();
129 theMapper->SetScalarRange (theColorTable->GetRange());
130 theMapper->SetLookupTable (theColorTable);
134 } // namespace IVtkTools