0022819: Redesign of OpenGl driver
[occt.git] / src / OpenGl / OpenGl_textcol.cxx
1 /***********************************************************************
2
3 FONCTION :
4 ----------
5 File OpenGl_textcol :
6
7
8 REMARQUES:
9 ---------- 
10
11
12 HISTORIQUE DES MODIFICATIONS   :
13 --------------------------------
14 xx-xx-xx : xxx ; Creation.
15 20-02-96 : FMN ; Suppression code inutile:
16 01-04-96 : CAL ; Integration MINSK portage WNT
17
18 ************************************************************************/
19
20 /*----------------------------------------------------------------------*/
21 /*
22 * Includes
23 */
24
25
26 #include <OpenGl_tgl_all.hxx>
27
28 #include <stddef.h>
29 #include <stdio.h>
30
31 #include <OpenGl_cmn_varargs.hxx>
32 #include <OpenGl_telem_attri.hxx>
33 #include <OpenGl_tsm.hxx>
34 #include <OpenGl_telem.hxx>
35 #include <OpenGl_telem_inquire.hxx>
36 #include <OpenGl_Memory.hxx>
37
38 /*----------------------------------------------------------------------*/
39 /*
40 * Fonctions statiques
41 */
42
43 static  TStatus  TextColourDisplay( TSM_ELEM_DATA, Tint, cmn_key* );
44 static  TStatus  TextColourAdd( TSM_ELEM_DATA, Tint, cmn_key* );
45 static  TStatus  TextColourDelete( TSM_ELEM_DATA, Tint, cmn_key* );
46 static  TStatus  TextColourPrint( TSM_ELEM_DATA, Tint, cmn_key* );
47 static  TStatus  TextColourInquire( TSM_ELEM_DATA, Tint, cmn_key* );
48
49 /*----------------------------------------------------------------------*/
50
51 static  TStatus  (*MtdTbl[])( TSM_ELEM_DATA, Tint, cmn_key* ) =
52 {
53   0,             /* PickTraverse */
54   TextColourDisplay,
55   TextColourAdd,
56   TextColourDelete,
57   TextColourPrint,
58   TextColourInquire
59 };
60
61
62 /*----------------------------------------------------------------------*/
63
64 MtblPtr
65 TelTextColourInitClass( TelType *el )
66 {
67   *el = TelTextColour;
68   return MtdTbl;
69 }
70
71 /*----------------------------------------------------------------------*/
72
73 static  TStatus
74 TextColourAdd( TSM_ELEM_DATA d, Tint n, cmn_key *k )
75 {
76   tel_colour data = new TEL_COLOUR();
77   //cmn_memreserve( data, 1, 0 );
78
79   if( !data )
80     return TFailure;
81
82   *data = *(tel_colour)(k[0]->data.pdata);
83
84   ((tsm_elem_data)(d.pdata))->pdata = data;
85
86   return TSuccess;
87 }
88
89
90 /*----------------------------------------------------------------------*/
91
92 static  TStatus
93 TextColourDisplay( TSM_ELEM_DATA data, Tint n, cmn_key *k )
94 {
95   tel_colour      d;
96   CMN_KEY         key;
97
98   d = (tel_colour)data.pdata;
99
100   key.id = TelTextColour;
101   key.data.pdata = d;
102   TsmSetAttri( 1, &key );
103
104   return TSuccess;
105 }
106
107
108 /*----------------------------------------------------------------------*/
109
110 static  TStatus
111 TextColourDelete( TSM_ELEM_DATA data, Tint n, cmn_key *k )
112 {
113   //cmn_freemem( data.pdata );
114   if (data.pdata)
115     delete data.pdata;
116   return TSuccess;
117 }
118
119 /*----------------------------------------------------------------------*/
120
121 static  TStatus
122 TextColourPrint( TSM_ELEM_DATA data, Tint n, cmn_key *k )
123 {
124   tel_colour p;
125
126   p = (tel_colour)data.pdata;
127
128   fprintf( stdout, "TelTextColour. R = %g, G = %g, B = %g\n",
129     p->rgb[0], p->rgb[1], p->rgb[2] );
130   fprintf( stdout, "\n" );
131
132   return TSuccess;
133 }
134
135 /*----------------------------------------------------------------------*/
136
137 static TStatus
138 TextColourInquire( TSM_ELEM_DATA data, Tint n, cmn_key *k )
139 {
140   Tint       i;
141   tel_colour col;
142
143   col = (tel_colour)data.pdata;
144
145   for( i = 0; i < n; i++ )
146   {
147     switch( k[i]->id )
148     {
149     case INQ_GET_SIZE_ID:
150       {
151         k[i]->data.ldata = sizeof( Tint );
152         break;
153       }
154     case INQ_GET_CONTENT_ID:
155       {
156         TEL_INQ_CONTENT *c;
157         Teldata         *w;
158
159         c = (tel_inq_content)k[i]->data.pdata;
160         w = c->data;
161         c->act_size = 0;
162
163         w->gnl_colour.rgb[0] = col->rgb[0];
164         w->gnl_colour.rgb[1] = col->rgb[1];
165         w->gnl_colour.rgb[2] = col->rgb[2];
166         break;
167       }
168     }
169   }
170
171   return TSuccess;
172 }
173
174 /*----------------------------------------------------------------------*/