Remove graphics.h file.
[scilab.git] / scilab / modules / graphics / includes / clipping.h
1 /*----------------------------------------------------------------------------------------*/
2 /* FILE      : clipping.h                                                                 */
3 /* COPYRIGHT : INRIA 2006                                                                 */
4 /* AUTHORS   : Jean-Baptiste Silvy, Jean-Philipe Chancelier                               */
5 /* DESC.     : Management of clipping when drawing                                        */
6 /*----------------------------------------------------------------------------------------*/
7
8 #ifndef __SCI_CLIPPING__
9 #define __SCI_CLIPPING__
10
11 #include "ObjectStructure.h"
12 #include "PloEch.h"
13
14 /*----------------------------------------------------------------------------------------*/
15 /*
16  * @memo a structure to defined a clipping rectangle in pixels
17  */
18 typedef struct
19 {
20   int leftX   ; /* abscissa of the left edge of the region */
21   int rightX  ; /* abscissa of the rigth edge */
22   int bottomY ; /* ordinate of the bottom edge */
23   int topY    ; /* ordinate of the upper edge */
24 }
25 SClipRegion ;
26
27 /*----------------------------------------------------------------------------------------*/
28 /**
29  * To retrieve the current clipping region
30  */
31 SClipRegion getClipRegion( struct BCG * scilabXGC ) ;
32 /*----------------------------------------------------------------------------------------*/
33 /* 
34  * use for drawing precomputing clipping when drawing polygons
35  * Test a single point to be within the xleft,xright,ybot,ytop bbox.
36  * Sets the returned integers 4 l.s.b. as follows:
37  * bit 0 if to the left of xleft.
38  * bit 1 if to the right of xright.
39  * bit 2 if below of ybot.
40  * bit 3 if above of ytop.
41  * 0 is returned if inside.
42  */
43 int sciClipPoint(integer x, integer y, SClipRegion * clipping ) ;
44
45 void sciClipLine( integer       x1      ,
46                   integer       yy1     ,
47                   integer       x2      ,
48                   integer       y2      ,
49                   integer     * x1n     ,
50                   integer     * yy1n    ,
51                   integer     * x2n     ,
52                   integer     * y2n     ,
53                   integer     * flag    ,
54                   SClipRegion * clipping  ) ;
55
56 void sciDrawInsideSegments( integer       iib, 
57                             integer       iif, 
58                             integer     * vx , 
59                             integer     * vy ,
60                             SClipRegion * clipping ) ;
61
62 /* @memo draw the segement defined by (vx[index-1],vy[index-1]) (vx[index],vy[index]) */
63 void sciDrawOutsideSegment( integer index, 
64                             integer *vx  ,
65                             integer *vy  , 
66                             SClipRegion * clipping ) ;
67 /* 
68  * @memo returns the first (vx[.],vy[.]) point inside 
69  *  xleft,xright,ybot,ytop bbox. begining at index ideb
70  *  or zero if the whole polyline is out 
71  */
72 integer sciFirstInClipRegion( integer       n   ,
73                               integer       ideb,
74                               integer     * vx  ,
75                               integer     * vy  ,
76                               SClipRegion * clipping ) ;
77 /* 
78  *  @memo returns the first (vx[.],vy[.]) point outside
79  *  xleft,xright,ybot,ytop bbox.
80  *  or zero if the whole polyline is out 
81  */
82 integer sciFirstOutClipRegion( integer       n   ,
83                                integer       ideb,
84                                integer     * vx  ,
85                                integer     * vy  ,
86                                SClipRegion * clipping ) ;
87
88 /* 
89  * @memo check every segment of the polyline and draw only the part which is in the
90  * clip region
91  */
92 void C2F(clipPolyLine)( integer       n     , 
93                         integer     * vx    , 
94                         integer     * vy    , 
95                         integer       closed,
96                         SClipRegion * clipping ) ;
97
98 /*----------------------------------------------------------------------------------------*/
99 /*
100  * @memo get the real clipping (the set one the axe or the window borders) 
101  * in pixels of a graphic object
102  */
103 void getPixelClipping( sciPointObj * pObj, SClipRegion * clipping ) ;
104 /*----------------------------------------------------------------------------------------*/
105 /**
106  * Set the clipping rectangl.
107  * Note that clipping is not supported at all in 3D mode for now :
108  * This assertion includes axes (in 3D), surfaces and parametric curves objects.
109  * @author Djalel ABDEMOUCHE
110  * 29/11/2002
111  */
112 void sciClip ( sciPointObj * pobj ) ;
113
114 /**
115  * Clear the clipping rectangle 
116  * @author Djalel ABDEMOUCHE
117  * 29/11/2002
118  */
119 void sciUnClip ( sciPointObj * pobj ) ;
120 /*----------------------------------------------------------------------------------------*/
121 /**
122  * use current scale to set the clipping rectangle 
123  */
124 void frame_clip_on(  void ) ;
125
126 /**
127  * disable clipping (to be called after frame_clip_on
128  */
129 void frame_clip_off( void ) ;
130 /*----------------------------------------------------------------------------------------*/
131
132 #endif // __SCI_CLIPPING__