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