Merging OCC22105, OCC22354, OCC22150 , OCC22199 , OCC22391 and OCC22108
[occt.git] / src / OpenGl / OpenGl_edgecol.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  EdgeColourDisplay( TSM_ELEM_DATA, Tint, cmn_key* );
14 static  TStatus  EdgeColourAdd( TSM_ELEM_DATA, Tint, cmn_key* );
15 static  TStatus  EdgeColourDelete( TSM_ELEM_DATA, Tint, cmn_key* );
16 static  TStatus  EdgeColourPrint( TSM_ELEM_DATA, Tint, cmn_key* );
17 static  TStatus  EdgeColourInquire( TSM_ELEM_DATA, Tint, cmn_key* );
18
19 static  TStatus  (*MtdTbl[])( TSM_ELEM_DATA, Tint, cmn_key* ) =
20 {
21   0,             /* PickTraverse */
22   EdgeColourDisplay,
23   EdgeColourAdd,
24   EdgeColourDelete,
25   EdgeColourPrint,
26   EdgeColourInquire
27 };
28
29
30 MtblPtr
31 TelEdgeColourInitClass( TelType *el )
32 {
33   *el = TelEdgeColour;
34   return MtdTbl;
35 }
36
37 static  TStatus
38 EdgeColourAdd( TSM_ELEM_DATA d, Tint n, cmn_key *k )
39 {
40   tel_colour data = new TEL_COLOUR();
41
42   //cmn_memreserve( data, 1, 0 );
43   if( !data )
44     return TFailure;
45
46   *data = *(tel_colour)(k[0]->data.pdata);
47
48   ((tsm_elem_data)(d.pdata))->pdata = data;
49
50   return TSuccess;
51 }
52
53
54 static  TStatus
55 EdgeColourDisplay( TSM_ELEM_DATA data, Tint n, cmn_key *k )
56 {
57   tel_colour      d;
58   CMN_KEY         key;
59
60   d = (tel_colour)data.pdata;
61
62   key.id = TelEdgeColour;
63   key.data.pdata = d;
64   TsmSetAttri( 1, &key );
65
66   return TSuccess;
67 }
68
69
70 static  TStatus
71 EdgeColourDelete( TSM_ELEM_DATA data, Tint n, cmn_key *k )
72 {
73   if (data.pdata)
74     delete data.pdata;
75   return TSuccess;
76 }
77
78
79
80
81 static  TStatus
82 EdgeColourPrint( TSM_ELEM_DATA data, Tint n, cmn_key *k )
83 {
84   tel_colour p;
85
86   p = (tel_colour)data.pdata;
87
88   fprintf( stdout, "TelEdgeColour. R = %g, G = %g, B = %g\n",
89     p->rgb[0], p->rgb[1], p->rgb[2] );
90   fprintf( stdout, "\n" );
91
92   return TSuccess;
93 }
94
95
96 static TStatus
97 EdgeColourInquire( TSM_ELEM_DATA data, Tint n, cmn_key *k )
98 {
99   Tint i;
100   tel_colour col = (tel_colour)data.pdata;
101
102   for( i = 0; i < n; i++ )
103   {
104     switch( k[i]->id )
105     {
106     case INQ_GET_SIZE_ID:
107       {
108         k[i]->data.ldata = sizeof( Tint );
109         break;
110       }
111     case INQ_GET_CONTENT_ID:
112       {
113         TEL_INQ_CONTENT *c;
114         Teldata         *w;
115
116         c = (tel_inq_content)k[i]->data.pdata;
117         w = c->data;
118         c->act_size = 0;
119         w->gnl_colour = *col;
120         break;
121       }
122     }
123   }
124
125   return TSuccess;
126 }