Avoid overloading of a Windows API function making compilation fail under Windows
[scilab.git] / scilab / modules / scicos_blocks / includes / scoBase.h
1 /*  Scicos
2 *
3 *  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *
19 * See the file ./license.txt
20 */
21 /**
22 \file scoBase.h
23 \author Benoit Bayol
24 \version 1.0
25 \date September 2006 - January 2007
26 \brief Base file of the SCO Library
27 */
28
29
30 #ifndef __SCO_BASE_H__
31 #define __SCO_BASE_H__
32
33 /*----------------------------------INCLUDES-----------------------*/
34
35 #include "machine.h"
36
37 #include "dynlib_scicos_blocks.h"
38
39 /*Graphic Library*/
40 #include "SetProperty.h"
41 #include "GetProperty.h"
42 #include "InitObjects.h"
43 #include "DrawObjects.h"
44 #include "BuildObjects.h"
45 #include "ObjectStructure.h"
46 #include "DestroyObjects.h"
47 #include "ObjectStructure.h"
48
49 #include "MALLOC.h"
50
51 /*--------------------------------TYPEDEF---------------------*/
52
53 /**
54 \brief scoGraphicalObject is an equivalent of sciPointObj * 
55 */
56 typedef sciPointObj * scoGraphicalObject;
57
58 /**
59 \brief scoLineOfGraphicalObjects is a table of scoGraphicalObject
60 \attention No plural here for GraphicalObject 
61 */
62 typedef scoGraphicalObject * scoLineOfGraphicalObject;
63
64 /**
65 \brief scoMatrixOfGraphicalObjects is a table of scoLineOfGraphicalObjects or a matrix of scoGraphicalObject
66 \attention No plural here for GraphicalObject
67 */
68 typedef scoLineOfGraphicalObject * scoMatrixOfGraphicalObject;
69
70 /**
71 \brief scoInteger is an equivalent of int 
72 */
73 typedef int scoInteger;
74
75 /**
76 \brief scoLineOfInteger is a table of scoInteger 
77 */
78 typedef scoInteger * scoLineOfInteger;
79
80 /**
81 \brief scoLongInteger is an equivalent of long
82 */
83 typedef long scoLongInteger;
84
85 /**
86 \brief scoLineOfLongInteger is a table of scoLongInteger
87 */
88 typedef scoLongInteger * scoLineOfLongInteger;
89
90 /**
91 \brief scoMatrixOfLongInteger is a table of scoLineOfLongInteger or a matrix of scoLongInteger 
92 */
93 typedef scoLineOfLongInteger * scoMatrixOfLongInteger;
94
95 /**
96 \brief scoDouble is an equivalent of double 
97 */
98 typedef double scoDouble;
99
100 /**
101 \brief scoLineOfDouble is a table of scoDouble 
102 */
103 typedef scoDouble * scoLineOfDouble;
104
105 /** \brief ScopeMemory is useful to stock in the block->work the whole information we need to proceed the draw of the scope. Attention we are using the block->work because we cannot use a static structure (without a huge modification of the behavior) because there will be problems if we have two blocks of the same nature in the diagram
106 \param number_of_subwin Number of Subwin (Axes) in the whole Window
107 \param win_id Windows ID
108 \param shortdraw_size Size of the Buffer of an axes i i.e. shortdraw_size[i]
109 \param new_draw Determines if we have to do a new draw of an axes i i.e. new_draw[i]
110 \param period_counter When we are using a timed scope it allows to calculate the X scale
111 \param longdraw_size When we have a non direct scope we have to know the length of the trace to be stocked
112 \param number_of_curves_by_subwin The number of curve by subwin (axes) i i.e. number_of_curves_by_subwin[i]
113 \param hScopeWindow the Handle on the Scope Window
114 \param hAxes the Handles of an axes i i.e. hAxes[i]
115 \param hShortDraw the Handle of a ShortDraw j on an axes i i.e. hShortDraw[i][j]
116 \param hLongDraw the Handle of a LongDraw j on an axes i i.e. hLongDraw[i][j]
117 \param period the period of the axes i i.e. period[i]
118 */
119 typedef struct
120 {
121         scoInteger number_of_subwin;
122         scoInteger win_id;
123
124         scoLineOfInteger   shortdraw_size;
125         scoLineOfInteger   new_draw;
126         scoLineOfInteger   period_counter;
127         scoLineOfInteger   longdraw_size;
128         scoLineOfInteger   number_of_curves_by_subwin;
129
130         scoLongInteger hScopeWindow;
131
132         scoLineOfLongInteger   hAxes;
133
134         scoMatrixOfLongInteger hShortDraw;
135         scoMatrixOfLongInteger hLongDraw;
136
137         scoLineOfDouble   period;
138
139         scoInteger activated;
140
141         double     d_last_scope_update_time ; 
142
143 } ScopeMemory;
144
145 /*External function of malloc/free - Don't forget to use these and not malloc or MALLOC*/
146
147 #endif
148