Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IGESCAFControl / IGESCAFControl.cxx
1 // File:        IGESCAFControl.cxx
2 // Created:     Wed Aug 16 18:46:01 2000
3 // Author:      Andrey BETENEV
4 //              <abv@doomox.nnov.matra-dtv.fr>
5
6 #include <IGESCAFControl.ixx>
7
8 //=======================================================================
9 //function : DecodeColor
10 //purpose  : 
11 //=======================================================================
12
13 Quantity_Color IGESCAFControl::DecodeColor (const Standard_Integer color)
14 {
15   switch ( color ) {
16   case 1: return Quantity_Color ( Quantity_NOC_BLACK );
17   case 2: return Quantity_Color ( Quantity_NOC_RED );
18   case 3: return Quantity_Color ( Quantity_NOC_GREEN );
19   case 4: return Quantity_Color ( Quantity_NOC_BLUE1 );
20   case 5: return Quantity_Color ( Quantity_NOC_YELLOW );
21   case 6: return Quantity_Color ( Quantity_NOC_MAGENTA1 );
22   case 7: return Quantity_Color ( Quantity_NOC_CYAN1 );
23   case 8: 
24   default:return Quantity_Color ( Quantity_NOC_WHITE );
25   }
26 }
27
28 //=======================================================================
29 //function : DecodeColor
30 //purpose  : 
31 //=======================================================================
32
33 Standard_Integer IGESCAFControl::EncodeColor (const Quantity_Color &col)
34 {
35   Standard_Integer code = 0;
36   if ( Abs ( col.Red() - 1. ) <= col.Epsilon() ) code |= 0x001;
37   else if ( Abs ( col.Red() ) > col.Epsilon() ) return 0;
38   if ( Abs ( col.Green() - 1. ) <= col.Epsilon() ) code |= 0x010;
39   else if ( Abs ( col.Green() ) > col.Epsilon() ) return 0;
40   if ( Abs ( col.Blue() - 1. ) <= col.Epsilon() ) code |= 0x100;
41   else if ( Abs ( col.Blue() ) > col.Epsilon() ) return 0;
42
43   switch ( code ) {
44   case 0x000: return 1;
45   case 0x001: return 2;
46   case 0x010: return 3;
47   case 0x100: return 4;
48   case 0x011: return 5;
49   case 0x101: return 6;
50   case 0x110: return 7;
51   case 0x111:  
52   default   : return 8;
53   }
54 }