0012121: Optimization of existing selection classes
[occt.git] / src / OpenGl / OpenGl_bintcol.cxx
1
2 #include <OpenGl_tgl_all.hxx>
3
4 #include <stddef.h>
5 #include <stdio.h>
6
7 #include <OpenGl_cmn_varargs.hxx>
8 #include <OpenGl_telem_attri.hxx>
9 #include <OpenGl_tsm.hxx>
10 #include <OpenGl_telem.hxx>
11 #include <OpenGl_telem_inquire.hxx>
12
13 static  TStatus  BackInteriorColourDisplay( TSM_ELEM_DATA, Tint, cmn_key* );
14 static  TStatus  BackInteriorColourAdd( TSM_ELEM_DATA, Tint, cmn_key* );
15 static  TStatus  BackInteriorColourDelete( TSM_ELEM_DATA, Tint, cmn_key* );
16 static  TStatus  BackInteriorColourPrint( TSM_ELEM_DATA, Tint, cmn_key* );
17 static  TStatus  BackInteriorColourInquire( TSM_ELEM_DATA, Tint, cmn_key* );
18
19 static  TStatus  (*MtdTbl[])( TSM_ELEM_DATA, Tint, cmn_key* ) =
20 {
21   0,             /* PickTraverse */
22   BackInteriorColourDisplay,
23   BackInteriorColourAdd,
24   BackInteriorColourDelete,
25   BackInteriorColourPrint,
26   BackInteriorColourInquire
27 };
28
29
30 MtblPtr
31 TelBackInteriorColourInitClass( TelType *el )
32 {
33   *el = TelBackInteriorColour;
34   return MtdTbl;
35 }
36
37 static  TStatus
38 BackInteriorColourAdd( TSM_ELEM_DATA d, Tint n, cmn_key *k )
39 {
40   tel_colour data = new TEL_COLOUR();
41
42   if( !data )
43     return TFailure;
44
45   *data = *(tel_colour)(k[0]->data.pdata);
46
47   ((tsm_elem_data)(d.pdata))->pdata = data;
48
49   return TSuccess;
50 }
51
52
53 static  TStatus
54 BackInteriorColourDisplay( TSM_ELEM_DATA data, Tint n, cmn_key *k )
55 {
56   tel_colour      d;
57   CMN_KEY         key;
58
59   d = (tel_colour)data.pdata;
60
61   key.id = TelBackInteriorColour;
62   key.data.pdata = d;
63   TsmSetAttri( 1, &key );
64
65   return TSuccess;
66 }
67
68
69 static  TStatus
70 BackInteriorColourDelete( TSM_ELEM_DATA data, Tint n, cmn_key *k )
71 {
72   if (data.pdata)
73     delete data.pdata;
74   return TSuccess;
75 }
76
77
78
79
80 static  TStatus
81 BackInteriorColourPrint( TSM_ELEM_DATA data, Tint n, cmn_key *k )
82 {
83   tel_colour p;
84
85   p = (tel_colour)data.pdata;
86
87   fprintf( stdout, "TelBackInteriorColour. R = %g, G = %g, B = %g\n",
88     p->rgb[0], p->rgb[1], p->rgb[2] );
89   fprintf( stdout, "\n" );
90
91   return TSuccess;
92 }
93
94
95 static TStatus
96 BackInteriorColourInquire( TSM_ELEM_DATA data, Tint n, cmn_key *k )
97 {
98   Tint       i;
99   tel_colour col = (tel_colour)data.pdata;
100
101   for( i = 0; i < n; i++ )
102   {
103     switch( k[i]->id )
104     {
105     case INQ_GET_SIZE_ID:
106       {
107         k[i]->data.ldata = sizeof( Tint );
108         break;
109       }
110     case INQ_GET_CONTENT_ID:
111       {
112         TEL_INQ_CONTENT *c;
113         Teldata         *w;
114
115         c = (tel_inq_content)k[i]->data.pdata;
116         w = c->data;
117         c->act_size = 0;
118
119         w->gnl_colour.rgb[0] = col->rgb[0];
120         w->gnl_colour.rgb[1] = col->rgb[1];
121         w->gnl_colour.rgb[2] = col->rgb[2];
122         break;
123       }
124     }
125   }
126
127   return TSuccess;
128 }