File: DrawObjects.h

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (177 lines) | stat: -rw-r--r-- 11,194 bytes parent folder | download
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*------------------------------------------------------------------------
 *    Graphic library 
 *    Copyright INRIA
 *    newGraph Library header
 *    Matthieu PHILIPPE, INRIA 2001-2002
 *    Djalel ABDEMOUCHE, INRIA 2002-2004
 *    Fabrice Leray,     INRIA 2004-xxxx
 *    Comment:
 *    This file contains all functions used to Draw the content of a window.
 *    The main functions is sciDrawObj that draws the objects recursively.
 --------------------------------------------------------------------------*/

#include "ObjectStructure.h"
#include "HandleManagement.h"


#ifndef __SCI_DRAWINGS__
#define __SCI_DRAWINGS__

#define spINSIDE_SPARSE /* F.Leray to have LARGEST_REAL*/
#if defined(THINK_C) || defined (__MWERKS__)
#include "::sparse:spConfig.h" 
#else
#include "../sparse/spConfig.h"
#endif

#include "bcg.h"
#include "PloEch.h" 

void wininfo  __PARAMS((char *fmt,...));

extern void GPopupResize();
/* static struct BCG *tmpScilabXgc; */

extern void newfec __PARAMS((integer *xm,integer *ym,double *triangles,double *func,integer *Nnode,
			     integer *Ntr,double *zminmax, integer *colminmax, integer *colout, BOOL with_mesh));
extern void GraySquare1(integer *x, integer *y, double *z, integer n1, integer n2);
extern void GraySquare1_NGreverse(integer *x, integer *y, double *z, integer n1, integer n2, sciPointObj * psubwin);

extern void GraySquare(integer *x, integer *y, double *z, integer n1, integer n2);
extern void GraySquareDirect(integer *x, integer *y, double *z, integer n1, integer n2); /* for NG, grayplot direct mode */
extern void GraySquareScaled(integer *x, integer *y, double *z, integer n1, integer n2); /* for NG, grayplot direct mode */
extern void Plo2d1RealToPixel(integer *n1, integer *n2, double *x, double *y, integer *xm, integer *ym, char *xf);
extern void Plo2d2RealToPixel __PARAMS((integer *n1, integer *n2, double *x, double *y, integer *xm, integer *ym, char *xf));
extern void Plo2d3RealToPixel __PARAMS((integer *n1, integer *n2, double *x, double *y, integer *xm, integer *ym, char *xf));
extern void Plo2d4RealToPixel __PARAMS((integer *n1, integer *n2, double *x, double *y, integer *xm, integer *ym, char *xf));
extern void sciChamp2DRealToPixel __PARAMS((integer *xm,integer *ym,integer *zm,integer *na,
					 integer *arsize,double *x,double *y,
                                         double  *fx,double *fy,integer *n1,integer *n2,double *arfact, int * typeofchamp));

char ** FreeUserLabels(char ** u_xlabels, int *u_nxgrads);
double * AllocUserGrads(double * u_xgrads, int nb);
int CopyUserGrads(double *u_xgrad_SRC, double *u_xgrad_DEST, int dim);
char ** AllocAndSetUserLabelsFromMdl(char ** u_xlabels, char ** u_xlabels_MDL, int u_nxgrads);

extern int cf_type; /* used by gcf to determine if current figure is a graphic (1) or a tksci (0) one */


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

#ifdef WIN32
extern HFONT sciCreateFont (HDC hdc, char *szFaceName, int iDeciPtHeight, int iDeciPtWidth, int iAttributes, BOOL fLogRes);  /* DRAWINGS */
extern HDC sciGetDC (sciPointObj * pobj);     /* DRAWINGS */
/* extern HDC sciGetHDC (sciPointObj * pobj);    /\* DRAWINGS *\/ */ /* inexistant in Entities.c */
#endif


extern void sciRedrawFigure(); /* DRAWINGS */
extern void sciRedrawF(int *num); /* DRAWINGS */
extern void sciXbasc();  /* DRAWINGS */
extern void sciXClearFigure(); /* DRAWINGS */
extern void sciXclear(); /* DRAWINGS */
extern void sciXdraw();  /* DRAWINGS */
 
/* 3 next are in plo3d.c*/
extern void SetEch3d1(double *xbox, double *ybox, double *zbox, double *bbox, double *teta, double *alpha, integer flag); /* DRAWINGS */
extern void Convex_Box(double *xbox, double *ybox, integer *InsideU, integer *InsideD, char *legend, integer *flag, double *bbox); /* DRAWINGS */
extern void DrawAxis(double *xbox, double *ybox, integer *Indices, integer style); /* DRAWINGS */

extern void axis_3ddraw(sciPointObj *pobj, double *xbox, double *ybox, double *zbox, integer *InsideU, integer *InsideD); /* DRAWINGS */
extern void triedre(sciPointObj *pobj, double *xbox, double *ybox, double *zbox, integer *InsideU, integer *InsideD); /* DRAWINGS */
extern void Nextind(integer ind1, integer *ind2, integer *ind3); /* DRAWINGS */
extern int trans3d(sciPointObj *pobj,integer n,integer *xm,integer *ym,double *x, double *y,double *z); /* DRAWINGS */
extern int GradLog(double _min, double _max, double *_grads, int * n_grads);
extern BOOL Ishidden(sciPointObj *pobj); /* DRAWINGS */
extern BOOL IsDownAxes(sciPointObj *pobj); /* DRAWINGS */
extern void Plo2dTo3d(integer type, integer *n1, integer *n2, double *x, double *y, double *z, double *x1, double *y1, double *z1); /* DRAWINGS */
extern BOOL sci_update_frame_bounds_3d(sciPointObj *pobj);  /* DRAWINGS */
extern BOOL sci_update_frame_bounds_2d(sciPointObj *pobj);  /* DRAWINGS */

extern void rebuild_strflag( sciPointObj * psubwin, char * STRFLAG); /* DRAWINGS */
extern int labels2D_draw(sciPointObj * psubwin); /* DRAWINGS */

extern int ComputeC_format(sciPointObj * pobj, char * c_format); /* DRAWINGS */ /* inside matdes.c */
extern int ComputeNbSubTics(sciPointObj * pobj, int nbtics, char logflag, double * grads, int nbsubtics_input); /* DRAWINGS */
extern int ComputeNbSubTicsFor3dUse(sciPointObj * pobj, int nbtics, char logflag, double * grads, int nbsubtics_input);
extern int  ComputeCorrectXindAndInsideUD(double Teta,double Alpha, double * dbox, integer *xind, integer *InsideU, integer *InsideD); /* DRAWINGS */
extern int Axes3dStrings2(integer *ixbox, integer *iybox, integer *xind); /* DRAWINGS */
extern int AdaptGraduationsOnZ(int x, int y, int size, integer *Ticsdir, int *fontid, sciPointObj * psubwin, double zminval, double zmaxval, double fx, double fy, double fz);
extern int AdaptGraduationsOnXBottomRight(int iof, int x, int y, int size, integer *Ticsdir, int *fontid, sciPointObj * psubwin, double xminval, double xmaxval, double fx, double fy, double fz);
extern int AdaptGraduationsOnYBottomRight(int iof, int x, int y, int size, integer *Ticsdir, int *fontid, sciPointObj * psubwin, double yminval, double ymaxval, double fx, double fy, double fz);
extern int AdaptGraduationsOnXBottomLeft(int iof, int x, int y, int size, integer *Ticsdir, int *fontid, sciPointObj * psubwin, double xminval, double xmaxval, double fx, double fy, double fz);
extern int AdaptGraduationsOnYBottomLeft(int iof, int x, int y, int size, integer *Ticsdir, int *fontid, sciPointObj * psubwin, double yminval, double ymaxval, double fx, double fy, double fz);

extern int CheckDisplay(double fact_h, double fact_w, char logflag, char *foo,int *posi,int *fontid,int *old_rect);

extern int IsInsideRectangle(int * rect, int *point);

extern int CheckIfiisNan(int j, int dim, int * tab); /* DRAWINGS */
extern int  BuildXYZvectForClipping_IfNanOrLogON(sciPointObj *ppolyline, sciPointObj * psubwin, int * nb_curves, 
						 double *** xvect, double *** yvect, double *** zvect, int ** curves_size); /* DRAWINGS */
extern int ComputeGoodTrans3d( sciPointObj * psubwin, int n, int *xm, int *ym, double * fx, double *fy, double *fz); /* DRAWINGS */
extern double InvAxis(double min, double max, double u); /* DRAWINGS */
extern int ReverseDataFor3D(sciPointObj * psubwin, double * xvect, double * yvect, double * zvect, int n1); /* DRAWINGS */
extern int ReverseDataFor3DXonly(sciPointObj * psubwin, double * xvect, int n1); /* DRAWINGS */
extern int ReverseDataFor3DYonly(sciPointObj * psubwin, double * yvect, int n1); /* DRAWINGS */
extern int ReverseDataFor3DZonly(sciPointObj * psubwin, double * zvect, int n1); /* DRAWINGS */
extern void DrawAxesIfRequired(sciPointObj*); /* DRAWINGS */
extern void DrawAxes(sciPointObj*); /* DRAWINGS */

extern void UpdateSubwinScale(sciPointObj * pobj); /* DRAWINGS */

extern void sciClip (sciPointObj *pobj); /* DRAWINGS */
extern void sciUnClip (sciPointObj *pobj); /* DRAWINGS */

extern int sciDrawObj (sciPointObj * pobj); /* DRAWINGS */
extern int sciDrawObjIfRequired (sciPointObj * pobj); /* DRAWINGS */
extern int sciRefreshObj( sciPointObj * pobj ) ; /* DRAWINGS */


extern int ComputeXIntervals(sciPointObj *pobj, char xy_type, double **vector, int * N, int checkdim); /* DRAWINGS */ /* inside matdes.c */

/* Other functions coming from Entities.c (old file) */


/*F.Leray : Format pour imprimer un nombre de la forme k10^a ; cf. Axes.c*/
extern void NumberFormat __PARAMS((char *str,integer k,integer a));
extern void C2F(plot3dn)(sciPointObj *pobj, 
			 double *x, double *y, double *z, 
			 integer *p, integer *q, int *DPI);

extern void C2F(fac3dn)(sciPointObj *pobj, 
			double *x, double *y, double *z, 
			double *cvect, integer *p, integer *q, int *DPI);
/**DJ.Abdemouche 2003**/

extern int Gen3DPoints (integer type,integer *polyx,integer *polyy,integer *fill,integer whiteid,double zmin,double zmax,double *,double *,double *,integer i,integer j,integer jj1,integer *p,integer dc,integer fg, sciPointObj *psurface); /* DRAWINGS */
extern void Merge3d(sciPointObj *psubwin);/*DJ.A merge*/   /* DRAWINGS */
extern void Merge3dBuildTable(sciPointObj *pparent, int *index_in_entity, long *from_entity, int *pos);
extern int Merge3dDimension(sciPointObj *pparent);
extern void DrawMerge3d(sciPointObj *psubwin, sciPointObj *pmerge, int *DPI);  /* DRAWINGS */

extern int DrawNewMarks(sciPointObj * pobj, int n1, int *xm, int *ym, int *DPI);
extern void DrawMarks3D(sciPointObj *pobj, int n1, int *xm, int *ym, int *DPI);
extern int CheckPixelStatus(void);

extern int DrawMark_FullDot(int x1, int yy1, double size, int foreground, int background, int pixel_offset);
extern int DrawMark_Plus(int xmi, int ymi, int size, int foreground, int pixel_offset);
extern int DrawMark_Cross(int xmi, int ymi, int size, int foreground, int pixel_offset);
extern int DrawMark_FullDiamond(int xmi, int ymi, int size, int foreground, int background);
extern int DrawMark_FullTriangleUp(int xmi, int ymi, int size, int foreground, int background);
extern int DrawMark_FullTriangleDown(int xmi, int ymi, int size, int foreground, int background);
extern int DrawMark_Asterisk(int xmi, int ymi, int size, int foreground, int pixel_offset);
extern int DrawMark_FullSquare(int xmi, int ymi, int size, int foreground, int background, int pixel_offset);
extern int DrawMark_FullTriangleRight(int xmi, int ymi, int size, int foreground, int background);
extern int DrawMark_FullTriangleLeft(int xmi, int ymi, int size, int foreground, int background);
extern int DrawMark_FullPentagram(int xmi, int ymi, int size, int foreground, int background);
extern int GetDPIFromDriver(int * DPI);
extern int ChooseFormatForOneGrad(char *c_format, double *grad);
extern int SetMinMaxVertices(Vertices *vertices_list, double *xmin, double *ymin, double *zmin, double *xmax, double *ymax, double *zmax);
extern int GetVerticesAt(Vertices *vertices_list, int *xm, int *ym, double *x, double *y, double *z);
extern int RemoveNext(Vertices *pCurrent);
extern int FreeVertices(sciPointObj * psubwin);
extern int ChildrenCounter(sciPointObj *pparent);
extern int GetBarNumber(sciPointObj * pobj);
extern double FindWidth(sciPointObj * pobj, int n1, int bar_number, double *x);
#endif /* __SCI_DRAWINGS__ */