0024624: Lost word in license statement in source files
[occt.git] / src / Aspect / Aspect_ColorRampColorMap.cxx
CommitLineData
b311480e 1// Copyright (c) 1995-1999 Matra Datavision
973c2be1 2// Copyright (c) 1999-2014 OPEN CASCADE SAS
7fd59977 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
b311480e 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
7fd59977 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
b311480e 14
15// Modified : GG ; 14/09/01 Implements the new AddEntry method
7fd59977 16
17#define IMP140901 // GG Compute correctly the color ramp
18// accordingly to the requested color.
19
20#include <Aspect_ColorRampColorMap.ixx>
21#include <Aspect_ColorMapEntry.hxx>
22#include <Quantity_NameOfColor.hxx>
23
24
25Aspect_ColorRampColorMap::Aspect_ColorRampColorMap(
26 const Standard_Integer basepixel ,
27 const Standard_Integer dimension ,
28 const Quantity_NameOfColor color )
29 :Aspect_ColorMap(Aspect_TOC_ColorRamp )
30
31{ ComputeEntry( basepixel, dimension,
32 Quantity_Color( color ) ) ; }
33
34Aspect_ColorRampColorMap::Aspect_ColorRampColorMap(
35 const Standard_Integer basepixel ,
36 const Standard_Integer dimension ,
37 const Quantity_Color& color )
38 :Aspect_ColorMap(Aspect_TOC_ColorRamp )
39
40{ ComputeEntry( basepixel, dimension, color ) ; }
41
42void Aspect_ColorRampColorMap::ComputeEntry(
43 const Standard_Integer basepixel ,
44 const Standard_Integer dimension ,
45 const Quantity_Color& color )
46
47{ Standard_Integer i ;
48 Aspect_ColorMapEntry value ;
49 Quantity_Color rgb ;
50 Standard_Real v ;
51#ifdef IMP140901
52 Standard_Real r,g,b;
53#endif
54
55 mycolor = color ;
56 mybasepixel = basepixel ;
57 mydimension = dimension ;
58#ifdef IMP140901
59 mycolor.Values(r,g,b,Quantity_TOC_RGB);
60#endif
61
62 for( i = 0 ; i < dimension ; i++ ) {
63 v = ( Standard_Real ) i /
64 ( Standard_Real )(dimension-1) ;
65
66#ifdef IMP140901
67 rgb.SetValues( r*v, g*v, b*v, Quantity_TOC_RGB ) ;
68#else
69 rgb.SetValues( v, v, v, Quantity_TOC_RGB ) ;
70#endif
71
72 value.SetValue( basepixel+i, rgb ) ;
73
74 mydata.Append( value ) ;
75 }
76}
77
78const Aspect_ColorMapEntry& Aspect_ColorRampColorMap::NearestEntry(
79 const Quantity_Color& color ) const
80
81{
82 return( Entry( NearestColorMapIndex( color ) ) ) ;
83}
84
85Standard_Integer Aspect_ColorRampColorMap::NearestColorMapIndex(
86 const Quantity_Color& color ) const
87
88{
89return( (Standard_Integer ) ( ( color.Light() * (mydimension-1) ) + 1 )) ;
90}
91
92
93const Aspect_ColorMapEntry& Aspect_ColorRampColorMap::FindEntry(
94 const Standard_Integer index ) const
95
96{
97 return( Entry( FindColorMapIndex( index ) ) ) ;
98}
99
100Standard_Integer Aspect_ColorRampColorMap::FindColorMapIndex(
101 const Standard_Integer index ) const
102{
103
104 if ( index < mybasepixel ||
105 index >= ( mybasepixel+mydimension ) ){
106 Aspect_BadAccess::Raise ("FindEntryIndex() index not found.");
107 }
108
109 return( index - mybasepixel + 1 ) ;
110}
111
112void Aspect_ColorRampColorMap::ColorRampDefinition(
113 Standard_Integer& basepixel,
114 Standard_Integer& size,
115 Quantity_Color& color ) const
116
117{ basepixel = mybasepixel ;
118 size = mydimension ;
119 color = mycolor ;
120}
121
122Standard_Integer Aspect_ColorRampColorMap::AddEntry (const Quantity_Color &aColor) {
123
124 return mybasepixel + NearestColorMapIndex(aColor) - 1;
125}
126