Avoid overloading of a Windows API function making compilation fail under Windows
[scilab.git] / scilab / modules / scicos_blocks / includes / scoWindowScope.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 scoWindowScope.h
23 \author Benoit Bayol
24 \version 1.0
25 \date September 2006 - January 2007
26 \brief Header File of the scoWindowScope.c file
27 */
28
29 #ifndef __SCO_WINDOWSCOPE_H__
30 #define __SCO_WINDOWSCOPE_H__
31
32 #include "dynlib_scicos_blocks.h"
33 #include"scoBase.h"
34
35 /**
36 \brief Initialization of the Window and its apparence
37 \param pScopeMemory a pointer on a ScopeMemory
38 \param dimension the dimension of the axes 2 or 3
39 \param win_id the windows ID
40 \param win_pos a table of 2 numbers which determines the position of the window on the screen
41 \param win_dim a table of 2 numbers which determines the dimension of the window on the screen
42 \param xmin a table of (number_of_subwin) size
43 \param xmax a table of (number_of_subwin) size
44 \param ymin a table of (number_of_subwin) size 
45 \param ymax a table of (number_of_subwin) size
46 \param zmin a table of (number_of_subwin) size
47 \param zmax a table of (number_of_subwin) size
48 */
49 SCICOS_BLOCKS_IMPEXP void scoInitOfWindow(ScopeMemory * pScopeMemory, int dimension, int win_id, int * win_pos, int * win_dim, double * xmin, double * xmax, double * ymin, double * ymax, double * zmin, double * zmax);
50
51 /**
52 \brief Allocate space and set block_number in the user_data of the window associated in the pScopeMemory
53 **/
54 SCICOS_BLOCKS_IMPEXP void scoSetInUserData(ScopeMemory * pScopeMemory,int block_number);
55
56 /**
57 \brief Retrive UserData[0] (i.e. the block_number we have stocked)
58 \param pTemp is a pointer on the figure
59 **/
60 SCICOS_BLOCKS_IMPEXP scoInteger scoGetUserData(scoGraphicalObject pTemp);
61
62 /*--------------------------CREATIONS FUNCTIONS-----------------------------*/
63 /*
64 All these functions create pointer of special objects. We could use directly the sci graphic library function but in Scicos we have some behaviors which doesn't need to be really tuned for our usage. For this reason we have redefined them by putting some default values for some parameters.
65 */
66
67 /**
68 \brief Create a polyline and return a pointer on it
69 \param pAxes A pointer on the designated axe
70 \param polyline_size Size of the polyline for pvx, pvy or pvz
71 \param color The color of the polyline. If <= 0 it will be a mark else it will be a line.
72 \attention There is a polyline_size to allocate the table but dont forget that the n1 value of pPOLYLINE_FEATURE is set to 0
73 */
74 SCICOS_BLOCKS_IMPEXP scoGraphicalObject scoCreatePolyline(scoGraphicalObject pAxes, scoInteger polyline_size,int color);
75
76 /**
77 \brief Create a Filled Circle  by using the constructArc method of sgl and return a pointer on it
78 \param pAxes A pointer on the designated axe
79 \param radius the radius of the filled circle
80 \param color the color of the filled circle
81 */
82 SCICOS_BLOCKS_IMPEXP scoGraphicalObject scoCreateSphere(scoGraphicalObject pAxes, double radius, int color);
83
84 /**
85 \brief Create a Rectangle by using constructRectangle and return a pointer on it
86 \param pAxes a pointer on the designated axe
87 \param x the abscisse of the left bottom corner of the rectangle
88 \param y the ordonate of the left bottom corner of the rectangle
89 \param width width of the rectangle
90 \param height height of the rectangle
91 */
92 SCICOS_BLOCKS_IMPEXP scoGraphicalObject scoCreateRectangle(scoGraphicalObject pAxes, double x, double y, double width, double height);
93
94 /**
95 \brief Create a Grayplot using constructGrayplot and return a pointer on it
96 \param pAxes a pointer on the designated axes
97 \param size_x size of the grayplot for abscisses
98 \param size_y size of the grayplot for ordinates
99 */
100 SCICOS_BLOCKS_IMPEXP scoGraphicalObject scoCreateGrayplot(scoGraphicalObject pAxes, int size_x, int size_y);
101
102 /**
103 \brief Create a Plot3d using constructSurface (a param is for plot3d) and return a pointer on it
104 \param pAxes a pointer on the designated axes
105 \param size_x size of the plot3d for abscisses
106 \param size_y size of the plot3d for ordinates
107 */
108 SCICOS_BLOCKS_IMPEXP scoGraphicalObject scoCreatePlot3d(scoGraphicalObject pAxes, int size_x, int size_y);
109
110 /*---------------------------ADDING FUNCTIONS------------------------------*/
111 /*
112 All these functions take a pointer of a graphical object and place it on axes i at position j. There is one for ShortDraw and one for LongDraw.
113 */
114
115 /**
116 \brief Add a polyline for a shortdraw
117 \param pScopeMemory a pointer on the ScopeMemory
118 \param i the number of the axes
119 \param j the number of the designated shortdraw in the axes i
120 \param color color of the polyline. <=0 is a mark >0 is a line
121 */
122 SCICOS_BLOCKS_IMPEXP void scoAddPolylineForShortDraw(ScopeMemory * pScopeMemory, int i, int j, int color);
123
124 /**
125 \brief Add a polyline for a longdraw
126 \param pScopeMemory  a pointer on the ScopeMemory
127 \param i the number of the axes
128 \param j the number of the designated longdraw in the axes i
129 \param color color of the polyline. <=0 is a mark >0 is a line
130
131 */
132 SCICOS_BLOCKS_IMPEXP void scoAddPolylineForLongDraw(ScopeMemory * pScopeMemory, int i, int j, int color);
133
134 /**
135 \brief Add a sphere to the axis as a shortdraw
136 \param pScopeMemory  a pointer on the ScopeMemory
137 \param i the number of the axes
138 \param j the number of the designated shortdraw in the axes i
139 \param radius the radius of the sphere
140 \param color the color of the filled sphere
141 */
142 SCICOS_BLOCKS_IMPEXP void scoAddSphereForShortDraw(ScopeMemory * pScopeMemory, int i, int j, double radius, int color);
143
144 /**
145 \brief Add a sphere to the axis as a longdraw
146 \param pScopeMemory  a pointer on the ScopeMemory
147 \param i the number of the axes
148 \param j the number of the designated longdraw in the axes i
149 \param radius the radius of the sphere
150 \param color the color of the filled sphere
151 */
152 SCICOS_BLOCKS_IMPEXP void scoAddSphereForLongDraw(ScopeMemory * pScopeMemory, int i, int j, double radius, int color);
153
154 /**
155 \brief Add a rectangle for a longdraw
156 \param pScopeMemory  a pointer on the ScopeMemory
157 \param i the number of the axes
158 \param j the number of the designated longdraw in the axes i
159 \param x the abscisse of the left bottom corner of the rectangle
160 \param y the ordonate of the left bottom corner of the rectangle
161 \param width width of the rectangle
162 \param height height of the rectangle
163
164 */
165 SCICOS_BLOCKS_IMPEXP void scoAddRectangleForLongDraw(ScopeMemory * pScopeMemory, int i, int j, double x, double y, double width, double height);
166
167 /**
168 \brief Add a grayplot for a shortdraw
169 \param pScopeMemory  a pointer on the ScopeMemory
170 \param i the number of the axes
171 \param j the number of the designated shortdraw in the axes i
172 \param size_x size of the grayplot for abscisses
173 \param size_y size of the grayplot for ordinates
174 */
175 SCICOS_BLOCKS_IMPEXP void scoAddGrayplotForShortDraw(ScopeMemory * pScopeMemory, int i, int j, int size_x, int size_y);
176
177 /**
178 \brief Add a plot3d for a ShortDraw
179 \param pScopeMemory  a pointer on the ScopeMemory
180 \param i the number of the axes
181 \param j the number of the designated shortdraw in the axes i
182 \param size_x size of the plot3d for abscisses
183 \param size_y size of the plot3d for ordinates
184 */
185 SCICOS_BLOCKS_IMPEXP void scoAddPlot3dForShortDraw(ScopeMemory * pScopeMemory, int i, int j, int size_x, int size_y);
186
187 /*-------------------------------ADDING COUPLE FUNCTIONS-----------------------------------*/
188
189 /**
190 \brief Add a couple of polylines one for shortdraw and one for longdraw
191 \param pScopeMemory  a pointer on the ScopeMemory
192 \param colors a table of colors of all curves in the ScopeMemory
193 \attention this function use the value of number_of_subwin and number_of_curves_by_subwin to fill all allocated space with shortdraw and longdraw typed with polylines
194 */
195 SCICOS_BLOCKS_IMPEXP void scoAddCoupleOfPolylines(ScopeMemory * pScopeMemory, int * colors);
196
197 /**
198 \brief Add a couple of polyline one for the ShortDraw and one for the LongDraw they are lined
199 \param pScopeMemory a pointer on a ScopeMemory
200 \param color a table of (number_of_curves_by_subwin[0]) size to colorize segments
201 \attention this function use the value of number_of_subwin and number_of_curves_by_subwin to fill all allocated space with shortdraw and longdraw typed with segments
202 */
203 SCICOS_BLOCKS_IMPEXP void scoAddCoupleOfSegments(ScopeMemory * pScopeMemory, int * color);
204
205 /**
206 \brief Add a couple of spheres to the axis
207 \param pScopeMemory a pointer on a ScopeMemory
208 \param radius a table of radii for all spheres
209 \param colors a table of colors
210 \attention this function use the value of number_of_subwin and number_of_curves_by_subwin to fill all allocated space with shortdraw and longdraw typed with segment
211 */
212 SCICOS_BLOCKS_IMPEXP void scoAddCoupleOfSpheres(ScopeMemory * pScopeMemory, double * radius, int * colors);
213
214 /*-------------------------------DELETING FUNCTIONS---------------------------*/
215 /**
216 \brief Del a couple of polyline one for the ShortDraw and one for the LongDraw they are linked
217 \param pScopeMemory a pointer on a ScopeMemory
218 */
219 SCICOS_BLOCKS_IMPEXP void scoDelCoupleOfPolylines(ScopeMemory * pScopeMemory);
220
221 /**
222 \brief Del a couple of polyline one for the ShortDraw and one for the LongDraw they are linked
223 \param pScopeMemory a pointer on a ScopeMemory
224 */
225 SCICOS_BLOCKS_IMPEXP void scoDelCoupleOfSegments(ScopeMemory * pScopeMemory);
226
227 /* ----------------------DRAWING FUNCTIONS --------------------------------*/
228 /*
229 These functions modify the view of the scope. They all have at a moment an instruction to redraw a graphical objet or the whole window.
230 */
231 /**
232 \brief Draw a Scope like CSCOPE : Amplitude + Time Based
233 \param pScopeMemory a pointer on a ScopeMemory
234 \param t the scicos time (get_scicos_time())
235 */
236 SCICOS_BLOCKS_IMPEXP void scoDrawScopeAmplitudeTimeStyle(ScopeMemory * pScopeMemory, double t);
237
238 /**
239 \brief Draw a Scope like CSCOPXY or CSCOPXY3D
240 \param pScopeMemory a pointer on a ScopeMemory
241 */
242 SCICOS_BLOCKS_IMPEXP void scoDrawScopeXYStyle(ScopeMemory * pScopeMemory);
243 /**
244 \brief Add Titles and Backgound on the scope
245 \param pScopeMemory a pointer on a ScopeMemory
246 \param label a string to be printed on the title of the graphic window
247 \param x a string to be printed on x
248 \param y a string to be printed on y
249 \param z a string to be printed on z (can be NULL)
250 */
251 SCICOS_BLOCKS_IMPEXP void scoAddTitlesScope(ScopeMemory * pScopeMemory, char * label, char * x, char * y, char * z);
252
253 /**
254 \brief Draw a Scope libe ANIMXY or ANIMXY3D
255 \param pScopeMemory a pointer on a ScopeMemory
256 \param u1 values on first entry 
257 \param u2 values on second entry
258 \param u3 values on third entry (can be NULL)
259 */
260 SCICOS_BLOCKS_IMPEXP void scoDrawScopeAnimXYStyle(ScopeMemory * pScopeMemory, double * u1, double * u2, double * u3);
261
262 /**
263 \brief Refresh the DataBounds of X if we have touched the end of the x-axes
264 \param pScopeMemory a pointer on a ScopeMemory
265 \param t the scicos time (get_scicos_time())
266 */
267 SCICOS_BLOCKS_IMPEXP void scoRefreshDataBoundsX(ScopeMemory * pScopeMemory,double t);
268
269 #endif