1 /***********************************************************************
12 HISTORIQUE DES MODIFICATIONS :
13 --------------------------------
14 xx-xx-xx : xxx ; Creation.
15 30-06-97 : FMN ; Appel de la toolkit OpenGl_LightBox.
17 ************************************************************************/
19 /*----------------------------------------------------------------------*/
25 #include <OpenGl_tgl_all.hxx>
32 #include <OpenGl_cmn_varargs.hxx>
33 #include <OpenGl_telem_attri.hxx>
34 #include <OpenGl_tsm.hxx>
35 #include <OpenGl_telem.hxx>
36 #include <OpenGl_LightBox.hxx>
37 #include <OpenGl_telem_inquire.hxx>
39 static TStatus LightSrcStateDisplay( TSM_ELEM_DATA, Tint, cmn_key* );
40 static TStatus LightSrcStateAdd( TSM_ELEM_DATA, Tint, cmn_key* );
41 static TStatus LightSrcStateDelete( TSM_ELEM_DATA, Tint, cmn_key* );
42 static TStatus LightSrcStatePrint( TSM_ELEM_DATA, Tint, cmn_key* );
43 static TStatus LightSrcStateInquire( TSM_ELEM_DATA, Tint, cmn_key* );
45 static TStatus (*MtdTbl[])( TSM_ELEM_DATA, Tint, cmn_key* ) =
55 #define NO_TRACE_LIGHT
58 TelLightSrcStateInitClass( TelType* el )
60 *el = TelLightSrcState;
65 LightSrcStateAdd( TSM_ELEM_DATA d, Tint n, cmn_key *k )
71 data = new TEL_TINT_DATA();
74 data->data = new int[num];
78 for( i=0, ptr=(Tint*)(k[0]->data.pdata); i<num; i++ )
80 data->data[i] = ptr[i];
84 ((tsm_elem_data)(d.pdata))->pdata = data;
91 LightSrcStateDisplay( TSM_ELEM_DATA data, Tint n, cmn_key *k )
93 tel_tint_data d = (tel_tint_data)data.pdata;
96 printf("OpenGl_lightstate::LightSrcStateDisplay:UpdateLight(%d)\n", TglActiveWs);
98 UpdateLight( TglActiveWs);
103 LightSrcStateDelete( TSM_ELEM_DATA data, Tint n, cmn_key *k )
105 delete [] data.pdata;
113 LightSrcStatePrint( TSM_ELEM_DATA data, Tint n, cmn_key *k )
118 p = (tel_tint_data)data.pdata;
120 fprintf( stdout, "TelLightSrcState. Number: %d\n", p->num );
121 for( i = 0; i < p->num; i++ )
123 fprintf( stdout, "\n\t\t v[%d] = %d", i, p->data[i] );
125 fprintf( stdout, "\n" );
132 LightSrcStateInquire( TSM_ELEM_DATA data, Tint n, cmn_key *k )
137 TStatus status = TSuccess;
139 d = (tel_tint_data)data.pdata;
141 size_reqd = d->num * sizeof( Tint );
143 for( i = 0; i < n; i++ )
147 case INQ_GET_SIZE_ID:
149 k[i]->data.ldata = size_reqd;
153 case INQ_GET_CONTENT_ID:
158 c = (tel_inq_content)k[i]->data.pdata;
159 c->act_size = size_reqd;
162 if( c->size >= size_reqd )
164 w->light_source_state.on.number = d->num;
165 w->light_source_state.off.number = 0;
166 w->light_source_state.on.integers = (Tint *)(c->buf);
167 w->light_source_state.off.integers = 0;
169 memcpy( w->light_source_state.on.integers, d->data, d->num*sizeof(Tint) );