summaryrefslogtreecommitdiff
path: root/inc/OpenGl_telem_view.hxx
blob: 421bac152b104fc42e38c6abed52ee63c7b7dfb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/***********************************************************************

FONCTION :
----------
File OpenGl_telem_view.h :


REMARQUES:
---------- 


HISTORIQUE DES MODIFICATIONS   :
--------------------------------
xx-xx-xx : xxx ; Creation.
02-07-96 : FMN ; Suppression WSWSHeight et WSWSWidth
Suppression de TelSetWSWindow
03-07-96 : FMN ; A une workstation correspond une vue.
Suppression de TelGetViewportAtLocation()
Suppression de TelPrintAllViews()
03-03-98 : FMN ; Suppression variable externe TglWhetherPerspective 

************************************************************************/

#ifndef  OPENGL_TELEM_VIEW_H
#define  OPENGL_TELEM_VIEW_H

#include <OpenGl_telem.hxx>
#include <OpenGl_tgl.hxx>
#include <NCollection_List.hxx>

typedef  struct
{
  Tfloat    xmin;
  Tfloat    xmax;
  Tfloat    ymin;
  Tfloat    ymax;
} Tlimit;

typedef  struct
{
  Tfloat    xmin;
  Tfloat    xmax;
  Tfloat    ymin;
  Tfloat    ymax;
  Tfloat    zmin;
  Tfloat    zmax;
} Tlimit3;



typedef  enum
{
  TelParallel, TelPerspective
} TelProjType;

typedef  struct
{
  Tlimit      window;
  Tlimit3     viewport;
  TelProjType proj;
  Tfloat      prp[3];
  Tfloat      vpd;
  Tfloat      fpd;
  Tfloat      bpd;
} TEL_VIEW_MAPPING, *tel_view_mapping;


typedef  struct
{
  Tmatrix3    orientation_matrix;
  Tmatrix3    mapping_matrix;
  Tlimit3     clip_limit;
  Tint        clip_xy;
  Tint        clip_back;
  Tint        clip_front;
  Tint        shield_indicator;
  TEL_COLOUR  shield_colour;
  Tint        border_indicator;
  TEL_COLOUR  border_colour;
  Tint        active_status;
  NCollection_List<CALL_DEF_PLANE> clipping_planes;
  struct
  {
    Tfloat  vrp[3];
    Tfloat  vpn[3];
    Tfloat  vup[3];
    TEL_VIEW_MAPPING  map;
    Tfloat  scaleFactors[3];
  } extra;
} TEL_VIEW_REP, *tel_view_rep;


typedef  enum
{
  UVN2XYZ, XYZ2UVN
} TelCoordType;

extern  Tint  TglUpdateView0; /* defined in telem/view */

extern  void              /* vrp,     vpn,     vup,     error_ind, mat */
TelEvalViewOrientationMatrix(Tfloat*, Tfloat*, Tfloat*, Tfloat*, Tint*, Tmatrix3);

extern  void            /*         mapping, error_ind,  mat */
TelEvalViewMappingMatrix( tel_view_mapping, Tint*, Tmatrix3 );

extern  void            /*         mapping, error_ind,  mat,    cx,     cy */
TelEvalViewMappingMatrixPick(tel_view_mapping, Tint*, Tmatrix3, Tfloat, Tfloat);

extern  TStatus         /* ws,  view_id, view_representation */
TelSetViewRepresentation( Tint, Tint, tel_view_rep );

extern  TStatus /* ws, view_id,      type,     uvn,     xyz */
TelConvertCoord( Tint, Tint, TelCoordType, Tfloat*, Tfloat* );

extern  TStatus TelSetViewIndex( Tint, Tint );  /* ws, view_id */
extern  TStatus TelSetViewProjection( Tint, Tint );  /* ws, view_id */
extern  TStatus         /* ws,  view_id, view_representation */
TelGetViewRepresentation( Tint, Tint, tel_view_rep );
extern TStatus TelDeleteViewsForWS( Tint wsid );


extern  void    TelClearViews( Tint ); /* ws */
extern  void    TelClearBackground( Tint ); /* ws */

extern TStatus TelPrintViewRepresentation( Tint, Tint ); /* ws, view */
extern TStatus Tel2Dto3D( Tint ws, Tint vid, Tint x, Tint y,
                         Tfloat *x1, Tfloat *y1, Tfloat *z1,
                         Tfloat *x2, Tfloat *y2, Tfloat *z2 );
/* x is from bottom */
/* y is from top */

#endif