13 #include <Xw_Cextern.hxx>
16 #include <X11/Xutil.h>
17 #include <X11/Xatom.h>
18 #include <X11/keysym.h>
19 #include <X11/XWDFile.h>
22 #define min(a,b) (a>b ? b : a)
29 #ifdef HAVE_X11_EXTENSIONS_TRANSOLV_H
30 #include <X11/extensions/transovl.h>
34 #define max(a,b) (a<b ? b : a)
37 #define DRAD (M_PI/180.)
41 #define MAXPOINTS 1024
42 #define MAXSEGMENTS 1024
48 #define MAXLMARKERS 256
49 #define MAXPMARKERS 256
62 #define MAXEVENT XW_ALLEVENT+1
64 #define MAXANGLE 23040
67 #define _ATTRIBUTES pwindow->attributes
68 #define _WINDOW pwindow->window
69 #define _PIXMAP pwindow->pixmap
70 #define _NWBUFFER pwindow->nwbuffer
71 #define _FWBUFFER pwindow->wbuffers[0]
72 #define _BWBUFFER pwindow->wbuffers[1]
73 #define _DRAWABLE pwindow->drawable
74 #define _COLORMAP (pwindow->pcolormap)
75 #define _WIDTHMAP (pwindow->pwidthmap)
76 #define _TYPEMAP (pwindow->ptypemap)
77 #define _FONTMAP (pwindow->pfontmap)
78 #define _TILEMAP (pwindow->ptilemap)
79 #define _MARKMAP (pwindow->pmarkmap)
80 #define _ROOT (_ATTRIBUTES.root)
81 #define _SCREEN (_ATTRIBUTES.screen)
82 #define _VISUAL (_ATTRIBUTES.visual)
83 #if defined(__cplusplus) || defined(c_plusplus)
84 #define _CLASS (_VISUAL->c_class)
86 #define _CLASS (_VISUAL->class)
91 #define _X (_ATTRIBUTES.x)
95 #define _Y (_ATTRIBUTES.y)
96 #define _WIDTH (_ATTRIBUTES.width)
97 #define _HEIGHT (_ATTRIBUTES.height)
98 #define _STATE (_ATTRIBUTES.map_state)
99 #define _DEPTH (_ATTRIBUTES.depth)
100 #define _EVENT_MASK (_ATTRIBUTES.your_event_mask)
102 #define QGCODE(color,type,width,mode) ((color<<20)|(type<<12)|(width<<4)|mode)
103 #define QGCOLOR(code) ((code>>20)&0xFFF)
104 #define QGSETCOLOR(code,color) ((code&0x000FFFFF)|(color<<20))
105 #define QGTYPE(code) ((code>>12)&0xFF)
106 #define QGSETTYPE(code,type) ((code&0xFFF00FFF)|(type<<12))
107 #define QGWIDTH(code) ((code>> 4)&0xFF)
108 #define QGSETWIDTH(code,width) ((code&0xFFFFF00F)|(width<<4))
109 #define QGTILE(code) ((code>> 4)&0xFF)
110 #define QGSETTILE(code,mark) ((code&0xFFFFF00F)|(mark<<4))
111 #define QGFONT(code) ((code>> 4)&0xFF)
112 #define QGSETFONT(code,font) ((code&0xFFFFF00F)|(font<<4))
113 #define QGMODE(code) (code&0xF)
114 #define QGSETMODE(code,mode) ((code&0xFFFFFFF0)|mode)
116 #define ROUND(v) ( ((v) > 0.) ? ((v) < (float)(INT_MAX-1)) ? \
117 (int)((v)+.5) : INT_MAX : ((v) > (float)(INT_MIN+1)) ? \
118 (int)((v)-.5) : INT_MIN )
119 #ifdef OLD /*S3593 OPTIMISATION*/
120 #define PXPOINT(x) (ROUND((x) / pwindow->xratio))
121 #define PYPOINT(y) (ROUND(_HEIGHT - ((y) / pwindow->yratio)))
122 #define PVALUE(v) (ROUND((v) / ((pwindow->xratio+pwindow->yratio)/2.)))
123 #define UVALUE(v) ((float)(v) * (pwindow->xratio+pwindow->yratio)/2.)
125 #define PXPOINT(x) ((int)((x) / pwindow->xratio))
126 #define PYPOINT(y) ((int)(_HEIGHT - ((y) / pwindow->yratio)))
127 #define PVALUE(v) ((int)((v) / ((pwindow->xratio+pwindow->yratio)/2.)))
128 #define UVALUE(v) ((float)(v) * (pwindow->xratio+pwindow->yratio)/2.)
137 #define UXPOINT(x) ((float)(x) * pwindow->xratio)
138 #define UYPOINT(y) ((float)(_HEIGHT - (y)) * pwindow->yratio)
142 #define DISPLAY_TYPE 0
143 #ifdef XW_EXT_DISPLAY
144 #undef XW_EXT_DISPLAY
146 #define _DDISPLAY pdisplay->display
147 #define _DSCREEN (pdisplay->screen)
148 #define _DVISUAL (pdisplay->visual)
150 #if defined(__cplusplus) || defined(c_plusplus)
151 #define _DCLASS (pdisplay->visual->c_class)
153 #define _DCLASS (pdisplay->visual->class)
155 #define _DCOLORMAP pdisplay->colormap
156 #define _DGC pdisplay->gc
157 #define _DROOT pdisplay->rootwindow
158 #define _DGRAB pdisplay->grabwindow
159 #define _DWIDTH pdisplay->width
160 #define _DHEIGHT pdisplay->height
161 #define MMPXVALUE(v) ((float)((v)*WidthMMOfScreen(_DSCREEN))/(float)_DWIDTH)
162 #define MMPYVALUE(v) ((float)((v)*HeightMMOfScreen(_DSCREEN))/(float)_DHEIGHT)
163 #define PMMXVALUE(v) ((int)((v)*_DWIDTH/(float)WidthMMOfScreen(_DSCREEN)))
164 #define PMMYVALUE(v) ((int)((v)*_DHEIGHT/(float)HeightMMOfScreen(_DSCREEN)))
166 XW_SERVER_IS_UNKNOWN,XW_SERVER_IS_DEC,XW_SERVER_IS_SUN,
167 XW_SERVER_IS_SGI,XW_SERVER_IS_NEC,XW_SERVER_IS_HP
171 /* Avoid 64-bit portability problems by being careful to use
172 longs due to the way XGetWindowProperty is specified. Note
173 that these parameters are passed as CARD32s over X
177 long transparent_type;
180 } XOverlayVisualInfo ;
184 int type ; /* DISPLAY_TYPE */
185 XW_SERVER_TYPE server ;
200 #ifdef XW_EXT_COLORMAP
201 #undef XW_EXT_COLORMAP
204 #define COLORMAP_TYPE 2
205 #define _CDISPLAY (pcolormap->connexion->display)
206 #define _CSCREEN (pcolormap->connexion->screen)
207 #define _CCOLORMAP (pcolormap->connexion->colormap)
208 #define _CROOT (pcolormap->connexion->rootwindow)
209 #define _CVISUAL (pcolormap->visual)
210 #if defined(__cplusplus) || defined(c_plusplus)
211 #define _CCLASS (pcolormap->visual->c_class)
213 #define _CCLASS (pcolormap->visual->class)
215 #define _CINFO (pcolormap->info)
216 #define _CGINFO (pcolormap->ginfo)
217 #define FREECOLOR 0 /* Free color Index if define[] = 0 */
218 #define USERCOLOR 1 /* User color Index if define[] = 1 */
219 #define IMAGECOLOR 2 /* Image color Index if define[] = 2 */
220 #define HIGHCOLOR 3 /* HighLight color Index if define[] = 3 */
221 #define BACKCOLOR 4 /* Background color Index if define[] = 4 */
222 #define SYSTEMCOLOR 5 /* System color Index if define[] = 5 */
226 int type ; /* COLORMAP_TYPE */
227 XW_EXT_DISPLAY* connexion ;
229 XStandardColormap info,ginfo ;
230 int maxhcolor ; /* Colormap Hard Length */
231 int maxucolor ; /* Colormap User Length */
232 int maxcolor ; /* Colormap Length */
233 int maxwindow ; /* Number of reference Window*/
234 Xw_TypeOfMapping mapping ; /* Colormap mapping */
235 unsigned char define[MAXCOLOR] ; /* 0 if FREE color */
236 unsigned long highpixel ; /* HighLightPixel Value */
237 unsigned long backpixel ; /* TransparentPixel Value */
238 unsigned long pixels[MAXCOLOR] ;
243 #define WIDTHMAP_TYPE 3
244 #ifdef XW_EXT_WIDTHMAP
245 #undef XW_EXT_WIDTHMAP
248 #define _WDISPLAY (pwidthmap->connexion->display)
252 int type ; /* WIDTHMAP_TYPE */
253 XW_EXT_DISPLAY* connexion ;
254 int maxwidth ; /* Widthmap Length */
255 int maxwindow ; /* Number of reference Window */
256 unsigned char widths[MAXWIDTH] ; /* Pixel width > 0 if defined*/
261 #define TYPEMAP_TYPE 4
262 #ifdef XW_EXT_TYPEMAP
263 #undef XW_EXT_TYPEMAP
266 #define _TDISPLAY (ptypemap->connexion->display)
270 int type ; /* TYPEMAP_TYPE */
271 XW_EXT_DISPLAY* connexion ;
272 int maxtype ; /* Typemap Length */
273 int maxwindow ; /* Number of reference Window */
274 unsigned char *types[MAXTYPE] ; /* Line Type Pixel lengths */
275 /* NULL if type is not defined*/
280 #define FONTMAP_TYPE 5
281 #ifdef XW_EXT_FONTMAP
282 #undef XW_EXT_FONTMAP
285 #define _FDISPLAY (pfontmap->connexion->display)
289 int type ; /* FONTMAP_TYPE */
290 XW_EXT_DISPLAY* connexion ;
291 int maxfont ; /* Fontmap Length */
292 int maxwindow ; /* Number of reference Window */
293 float gsizes[MAXFONT] ; /* Generic Font size in MM */
294 float fsizes[MAXFONT] ; /* Font size in MM */
295 float fratios[MAXFONT] ; /* Font baseline ratio */
296 float ssizex[MAXFONT] ; /* Selected X Font size in MM */
297 float ssizey[MAXFONT] ; /* Selected Y Font size in MM */
298 float gslants[MAXFONT] ; /* Generic Font slant in RAD */
299 float sslants[MAXFONT] ; /* Selected Font slant in RAD */
300 char* gnames[MAXFONT] ; /* Generic font name */
301 char* snames[MAXFONT] ; /* Selected font name */
302 XFontStruct* fonts[MAXFONT] ;/* Selected Font structure */
303 /* NULL if font is not defined*/
308 #define TILEMAP_TYPE 6
309 #ifdef XW_EXT_TILEMAP
310 #undef XW_EXT_TILEMAP
313 #define _PDISPLAY (ptilemap->connexion->display)
317 int type ; /* TILEMAP_TYPE */
318 XW_EXT_DISPLAY* connexion ;
319 int maxtile ; /* Tilemap Length */
320 int maxwindow ; /* Number of reference Window */
321 Pixmap tiles[MAXTILE] ; /* Tile pixmap */
322 /* 0 if tile is not defined */
327 #define MARKMAP_TYPE 7
328 #ifdef XW_EXT_MARKMAP
329 #undef XW_EXT_MARKMAP
332 #define _MDISPLAY (pmarkmap->connexion->display)
336 int type ; /* MARKMAP_TYPE */
337 XW_EXT_DISPLAY* connexion ;
338 int maxmarker ; /* Markmap Length */
339 int maxwindow ; /* Number of reference Window */
340 unsigned int width[MAXMARKER] ; /* Pmarker Size in pixels */
341 unsigned int height[MAXMARKER] ; /* Pmarker Size in pixels */
342 Pixmap marks[MAXMARKER] ; /* Pmarker pixmap */
343 int npoint[MAXMARKER] ; /* Lmarker length */
344 int* spoint[MAXMARKER] ; /* Lmarker status */
345 float* xpoint[MAXMARKER] ; /* Lmarker x coords */
346 float* ypoint[MAXMARKER] ; /* Lmarker y coords */
352 #ifdef XW_EXT_IMAGEDATA
353 #undef XW_EXT_IMAGEDATA
356 #define _ICOLORMAP (pimage->pcolormap)
357 #define _IVISUAL (_ICOLORMAP->visual)
358 #define _IIMAGE (pimage->pximage)
359 #define _ZIMAGE (pimage->zximage)
360 #define _IINFO (pimage->pimageinfo)
364 int type ; /* IMAGE_TYPE */
365 XW_EXT_COLORMAP *pcolormap ;
366 int maxwindow ; /* Number of reference Window*/
367 float zoom; /* Zoom factor */
368 XImage *pximage ; /* Ref image */
369 XImage *zximage ; /* Zoomed image */
370 XW_USERDATA *pimageinfo ; /* external IMAGE Infos*/
377 XPoint rpoints[MAXPOINTS] ;
378 XPoint upoints[MAXPOINTS] ;
384 char chars[MAXCHARS] ;
391 XSegment rsegments[MAXSEGMENTS] ;
392 XSegment usegments[MAXSEGMENTS] ;
400 int marks[MAXLMARKERS] ; /* seg numbers */
401 XPoint rcenters[MAXLMARKERS] ; /* marker center */
402 XPoint ucenters[MAXLMARKERS] ; /* marker center */
403 XSegment rsegments[MAXSEGMENTS] ;
404 XSegment usegments[MAXSEGMENTS] ;
412 int marks[MAXPMARKERS] ; /* point numbers */
413 XPoint rcenters[MAXPMARKERS] ; /* marker center */
414 XPoint ucenters[MAXPMARKERS] ; /* marker center */
415 XPoint rpoints[MAXPOINTS] ;
416 XPoint upoints[MAXPOINTS] ;
423 int lines[MAXLINES] ; /* line point numbers */
424 XPoint *plines[MAXLINES] ; /* LINE descriptor */
431 int polys[MAXPOLYS] ; /* poly point numbers */
432 int paths[MAXPOLYS] ; /* path point numbers */
433 XPoint *ppolys[MAXPOLYS] ; /* POLY descriptor */
440 XArc rarcs[MAXARCS] ;
441 XArc uarcs[MAXARCS] ;
448 int modes[MAXLTEXTS] ; /* TEXT draw mode */
449 int texts[MAXLTEXTS] ;
450 char *ptexts[MAXLTEXTS] ; /* TEXT descriptor */
451 XPoint rpoints[MAXLTEXTS] ;
452 XPoint upoints[MAXLTEXTS] ;
453 float rangles[MAXLTEXTS] ; /* rotated string angle */
454 float uangles[MAXLTEXTS] ;
455 float rscalex[MAXLTEXTS] ; /* rotated string scale */
456 float uscalex[MAXLTEXTS] ;
457 float rscaley[MAXLTEXTS] ; /* rotated string scale */
458 float uscaley[MAXLTEXTS] ;
459 float slants[MAXLTEXTS] ; /* TEXT slant */
466 int modes[MAXLTEXTS] ; /* TEXT draw mode */
467 int texts[MAXPTEXTS] ;
468 char *ptexts[MAXPTEXTS] ; /* TEXT descriptor */
469 XPoint rpoints[MAXPTEXTS] ;
470 XPoint upoints[MAXPTEXTS] ;
471 float rangles[MAXPTEXTS] ; /* rotated string angle */
472 float uangles[MAXPTEXTS] ;
473 float marges[MAXPTEXTS] ; /* polygon margins */
474 float rscalex[MAXLTEXTS] ; /* rotated string scale */
475 float uscalex[MAXLTEXTS] ;
476 float rscaley[MAXLTEXTS] ; /* rotated string scale */
477 float uscaley[MAXLTEXTS] ;
478 float slants[MAXLTEXTS] ; /* TEXT slant */
484 int nimage ; /* Image number to drawn */
485 XPoint rpoints[MAXIMAGES] ;
486 XPoint upoints[MAXIMAGES] ;
487 XW_EXT_IMAGEDATA *pimagdata[MAXIMAGES] ;
491 int bufferid ; /* Identification */
492 GC gcf,gcb ; /* Graphic context */
493 XW_ATTRIB code ; /* QG code as C,T,F,M*/
494 int isdrawn; /* True if visible at screen */
495 int isempty; /* True if empty */
496 int isretain; /* True if retain drawing*/
497 int isupdated; /* True if has been updated*/
498 int rxmin,rymin,rxmax,rymax; /* Min Max ref. buffer */
499 int uxmin,uymin,uxmax,uymax; /* Min Max upt. buffer */
500 int xpivot,ypivot ; /* Buffer ref. pivot point */
501 int dxpivot,dypivot ; /* Current Buffer transl. vector */
502 float xscale,yscale; /* Buffer ref. drawing scale */
503 float dxscale,dyscale; /* Current Buffer drawing scale */
504 float angle; /* Buffer ref. drawing angle */
505 float dangle; /* Current Buffer drawing angle */
506 XW_EXT_CHAR *ptextdesc ; /* Retain desc. texts list */
507 XW_EXT_POINT *plinedesc ; /* Retain desc. lines list */
508 XW_EXT_POINT *ppntlist ; /* Retain Points list */
509 XW_EXT_SEGMENT *pseglist ; /* Retain Segments list */
510 XW_EXT_LINE *plinelist ; /* Retain Polylines list */
511 XW_EXT_POLY *ppolylist ; /* Retain Polygones list */
512 XW_EXT_ARC *plarclist ; /* Retain Arcs list */
513 XW_EXT_ARC *pparclist ; /* Retain poly Arcs list */
514 XW_EXT_LTEXT *pltextlist ; /* Retain Texts list */
515 XW_EXT_PTEXT *pptextlist ; /* Retain poly Texts list */
516 XW_EXT_LMARKER *plmarklist ; /* Retain Markers list */
517 XW_EXT_PMARKER *ppmarklist ; /* Retain poly Markers list */
518 XW_EXT_IMAGE *pimaglist ; /* Retain Image list */
521 typedef struct { /* Line GC */
522 GC gc ; /* Graphic context */
523 unsigned int count ; /* Used count info */
524 XW_ATTRIB code ; /* QG code as C,T,W,M*/
527 typedef struct { /* Polygon GC */
528 GC gc ; /* Graphic context */
529 unsigned int count ; /* Used count info */
530 XW_ATTRIB code ; /* QG code as C,T,T,M*/
533 typedef struct { /* Text GC */
534 GC gc ; /* Graphic context */
535 unsigned int count ; /* Used count info */
536 XW_ATTRIB code ; /* QG code as C,T,F,M*/
539 typedef struct { /* Marker GC */
540 GC gc ; /* Graphic context */
541 unsigned int count ; /* Used count info */
542 XW_ATTRIB code ; /* QG code as C,T,T,M*/
545 #define _BIMAGE pwindow->qgwind.pimage
546 #define _BMETHOD pwindow->qgwind.method
547 #define _BPIXMAP pwindow->qgwind.pixmap
548 #define _BINDEX pwindow->qgwind.cbufindex
549 #define _BUFFER(index) pwindow->qgwind.pbuflist[index]
551 typedef struct { /* Window GC */
552 GC gc ; /* Graphic context */
553 GC gcclear ; /* Graphic context */
554 GC gccopy ; /* Graphic context */
555 GC gchigh ; /* Graphic context */
556 XW_ATTRIB code ; /* QG code as C,T,T,M*/
557 XW_EXT_IMAGEDATA *pimage ; /* Back image data's */
558 Aspect_FillMethod method ; /* Back fill method */
559 Pixmap pixmap ; /* Back Pixmap or 0 */
560 int cbufindex ; /* Current buffer index */
561 XW_EXT_BUFFER pbuflist[MAXBUFFERS]; /* Retain primitives list*/
567 XW_CALLBACK function ; /* CallBack Address */
568 void *userdata ; /* CallBack UserData*/
572 typedef XW_STATUS (*XW_ICALLBACK)(XW_EVENT* anyevent) ;
574 typedef XW_STATUS (*XW_ICALLBACK)() ;
575 #endif /*XW_PROTOTYPE*/
578 XW_ICALLBACK function ; /* CallBack Address */
583 #define WINDOW_TYPE 1
587 #define _DISPLAY (pwindow->connexion->display)
590 int type ; /* WINDOW_TYPE */
591 XWindowAttributes attributes ; /* Window Attributes */
592 int axleft ; /* Actual Window position */
593 int aytop ; /* Actual Window position */
594 int axright ; /* Actual Window position */
595 int aybottom ; /* Actual Window position */
596 int rwidth ; /* Requested Window width*/
597 int rheight ; /* Requested Window height*/
598 float xratio ; /* Window User/Pixel Ratio*/
599 float yratio ; /* Window User/Pixel Ratio*/
600 XW_EXT_DISPLAY* connexion ;
601 Window window ; /* Window ID */
602 Pixmap pixmap ; /* Associated Window Pixmap*/
603 int nwbuffer ; /* MultiBuffers number if any */
604 XID wbuffers[2] ; /* Associated Window Buffers*/
605 Drawable drawable ; /* Can be Window or Pixmap */
606 int backindex ; /* Colormap background Index */
607 int clipflag ; /* Unable internal clipping*/
608 XW_EXT_COLORMAP *pcolormap ; /* Colormap Extension */
609 XW_EXT_WIDTHMAP *pwidthmap ; /* Widthmap Extension */
610 XW_EXT_TYPEMAP *ptypemap ; /* Widthmap Extension */
611 XW_EXT_FONTMAP *pfontmap ; /* Fontmap Extension */
612 XW_EXT_TILEMAP *ptilemap ; /* Tilemap Extension */
613 XW_EXT_MARKMAP *pmarkmap ; /* Markmap Extension */
614 int lineindex ; /* Current QG line index used */
615 XW_QGL qgline[MAXQG] ; /* QG Line Bundle indexs */
616 int polyindex ; /* Current QG poly index used */
617 XW_QGP qgpoly[MAXQG] ; /* QG poly Bundle indexs */
618 int textindex ; /* Current QG text index used */
619 XW_QGT qgtext[MAXQG] ; /* QG text Bundle indexs */
620 int markindex ; /* Current QG markerindex used*/
621 XW_QGM qgmark[MAXQG] ; /* QG marker Bundle indexs */
622 XW_QGW qgwind ; /* QG Window Bundle */
623 XW_ECBK ecbk[MAXEVENT] ; /* External CallBack EventList*/
624 XW_ICBK icbk[MAXEVENT] ; /* Internal CallBack EventList*/
625 void *other ; /* Other data extension */
634 int type ; /* ICON_TYPE */
637 XW_EXT_IMAGEDATA *pimage ; /* Associated Image data's */
638 Pixmap pixmap ; /* Associated Pixmap if any */
646 #define Xw_malloc malloc
647 #define Xw_calloc calloc
654 void _XInitImageFuncPtrs(XImage* pximage);
658 XVisualInfo* Xw_get_visual_info(XW_EXT_DISPLAY* display,Xw_TypeOfVisual tclass);
659 XVisualInfo* Xw_get_overlay_visual_info(XW_EXT_DISPLAY* display,Xw_TypeOfVisual tclass,unsigned long* backpixel) ;
661 XW_EXT_DISPLAY* Xw_get_display_structure(Display* display) ;
662 XW_EXT_DISPLAY* Xw_add_display_structure(int size) ;
663 XW_STATUS Xw_del_display_structure(XW_EXT_DISPLAY* adisplay) ;
665 XW_EXT_WINDOW* Xw_get_window_structure(Window window) ;
666 XW_EXT_WINDOW* Xw_add_window_structure(int size) ;
667 XW_STATUS Xw_del_window_structure(XW_EXT_WINDOW* awindow) ;
668 XW_STATUS Xw_reset_attrib(XW_EXT_WINDOW* awindow) ;
670 XW_STATUS Xw_redraw_buffer(XW_EXT_WINDOW *pwindow,XW_EXT_BUFFER *pbuffer) ;
671 XW_STATUS Xw_update_buffer(XW_EXT_WINDOW *pwindow,XW_EXT_BUFFER *pbuffer) ;
672 XW_EXT_BUFFER* Xw_get_buffer_structure(XW_EXT_WINDOW *pwindow,int bufferid) ;
674 XW_EXT_CHAR* Xw_add_text_desc_structure(XW_EXT_BUFFER *pbuflist) ;
675 XW_STATUS Xw_del_text_desc_structure(XW_EXT_BUFFER *pbuflist) ;
677 XW_EXT_POINT* Xw_add_line_desc_structure(XW_EXT_BUFFER *pbuflist) ;
678 XW_STATUS Xw_del_line_desc_structure(XW_EXT_BUFFER *pbuflist) ;
680 XW_EXT_POINT* Xw_add_point_structure(XW_EXT_BUFFER *pbuflist) ;
681 XW_STATUS Xw_del_point_structure(XW_EXT_BUFFER *pbuflist) ;
682 void Xw_draw_pixel_points(XW_EXT_WINDOW* pwindow,XW_EXT_POINT* ppntlist,GC gc) ;
684 XW_EXT_SEGMENT* Xw_add_segment_structure(XW_EXT_BUFFER *pbuflist) ;
685 XW_STATUS Xw_del_segment_structure(XW_EXT_BUFFER *pbuflist) ;
686 void Xw_draw_pixel_segments(XW_EXT_WINDOW* pwindow,XW_EXT_SEGMENT* pseglist,GC gc) ;
688 XW_EXT_LINE* Xw_add_polyline_structure(XW_EXT_BUFFER *pbuflist) ;
689 XW_STATUS Xw_del_polyline_structure(XW_EXT_BUFFER *pbuflist) ;
690 void Xw_draw_pixel_lines(XW_EXT_WINDOW* pwindow,XW_EXT_LINE* plinelist,GC gc) ;
692 XW_EXT_ARC* Xw_add_arc_structure(XW_EXT_BUFFER *pbuflist) ;
693 XW_STATUS Xw_del_arc_structure(XW_EXT_BUFFER *pbuflist) ;
694 void Xw_draw_pixel_arcs(XW_EXT_WINDOW* pwindow,XW_EXT_ARC* parclist,GC gc) ;
696 XW_EXT_ARC* Xw_add_polyarc_structure(XW_EXT_BUFFER *pbuflist) ;
697 XW_STATUS Xw_del_polyarc_structure(XW_EXT_BUFFER *pbuflist) ;
698 void Xw_draw_pixel_polyarcs(XW_EXT_WINDOW* pwindow,XW_EXT_ARC* parclist,
699 GC gcpoly,GC gcline) ;
701 XW_EXT_POLY* Xw_add_polygone_structure(XW_EXT_BUFFER *pbuflist) ;
702 XW_STATUS Xw_del_polygone_structure(XW_EXT_BUFFER *pbuflist) ;
703 void Xw_draw_pixel_polys(XW_EXT_WINDOW* pwindow,XW_EXT_POLY* ppolylist,
704 GC gcpoly,GC gcline) ;
706 XW_EXT_LTEXT* Xw_add_text_structure(XW_EXT_BUFFER *pbuflist) ;
707 XW_STATUS Xw_del_text_structure(XW_EXT_BUFFER *pbuflist) ;
708 void Xw_draw_pixel_texts(XW_EXT_WINDOW* pwindow,XW_EXT_LTEXT* ptextlist,
709 GC gc,XW_ATTRIB code) ;
711 XW_EXT_PTEXT* Xw_add_polytext_structure(XW_EXT_BUFFER *pbuflist) ;
712 XW_STATUS Xw_del_polytext_structure(XW_EXT_BUFFER *pbuflist) ;
713 void Xw_draw_pixel_polytexts(XW_EXT_WINDOW* pwindow,XW_EXT_PTEXT* ptextlist,
714 GC gctext,GC gcpoly,GC gcline,XW_ATTRIB code) ;
716 XW_STATUS Xw_isdefine_markerindex(XW_EXT_MARKMAP* amarkmap,int index) ;
717 XW_EXT_LMARKER* Xw_add_lmarker_structure(XW_EXT_BUFFER *pbuflist) ;
718 XW_STATUS Xw_del_lmarker_structure(XW_EXT_BUFFER *pbuflist) ;
719 void Xw_draw_pixel_lmarkers(XW_EXT_WINDOW* pwindow,XW_EXT_LMARKER* pmarklist,GC gc) ;
720 XW_EXT_PMARKER* Xw_add_pmarker_structure(XW_EXT_BUFFER *pbuflist) ;
721 XW_STATUS Xw_del_pmarker_structure(XW_EXT_BUFFER *pbuflist) ;
722 void Xw_draw_pixel_pmarkers(XW_EXT_WINDOW* pwindow,XW_EXT_PMARKER* pmarklist,GC gc) ;
723 Colormap Xw_create_colormap(XW_EXT_COLORMAP *pcolormap) ;
724 XW_EXT_COLORMAP* Xw_add_colormap_structure(int size) ;
725 XW_EXT_COLORMAP* Xw_get_colormap_structure(XW_EXT_COLORMAP* acolormap) ;
726 XW_STATUS Xw_del_colormap_structure(XW_EXT_COLORMAP* acolormap) ;
727 XW_STATUS Xw_get_color_attrib(XW_EXT_WINDOW* awindow,
728 XW_DRAWMODE mode,int color,unsigned long* hcolor,
729 int* function,unsigned long* planemask) ;
730 XW_STATUS Xw_isdefine_colorindex(XW_EXT_COLORMAP* acolormap,int index) ;
731 XW_STATUS Xw_ifsystem_colorindex(XW_EXT_COLORMAP* acolormap,int index) ;
732 XW_STATUS Xw_ifimage_colorindex(XW_EXT_COLORMAP* acolormap,int index) ;
733 XW_STATUS Xw_ifbackground_colorindex(XW_EXT_COLORMAP* acolormap,int index) ;
734 XW_STATUS Xw_ifhighlight_colorindex(XW_EXT_COLORMAP* acolormap,int index) ;
735 char* Xw_get_filename(char* filename,const char *extension) ;
737 XW_EXT_WIDTHMAP* Xw_add_widthmap_structure(int size) ;
738 XW_STATUS Xw_del_widthmap_structure(XW_EXT_WIDTHMAP* awidthmap) ;
739 XW_STATUS Xw_isdefine_widthindex(XW_EXT_WIDTHMAP* awidthmap,int index) ;
741 XW_EXT_TYPEMAP* Xw_add_typemap_structure(int size) ;
742 XW_STATUS Xw_del_typemap_structure(XW_EXT_TYPEMAP* atypemap) ;
743 XW_STATUS Xw_isdefine_typeindex(XW_EXT_TYPEMAP* atypemap,int index) ;
745 XW_EXT_FONTMAP* Xw_add_fontmap_structure(int size) ;
746 XW_STATUS Xw_del_fontmap_structure(XW_EXT_FONTMAP* afontmap) ;
747 XW_STATUS Xw_isdefine_fontindex(XW_EXT_FONTMAP* afontmap,int index) ;
749 XW_EXT_TILEMAP* Xw_add_tilemap_structure(int size) ;
750 XW_STATUS Xw_del_tilemap_structure(XW_EXT_TILEMAP* atilemap) ;
751 XW_STATUS Xw_isdefine_tileindex(XW_EXT_TILEMAP* atilemap,int index) ;
753 XW_EXT_MARKMAP* Xw_add_markmap_structure(int size) ;
754 XW_STATUS Xw_del_markmap_structure(XW_EXT_MARKMAP* amarkmap) ;
756 XW_EXT_IMAGEDATA* Xw_add_imagedata_structure(int size) ;
757 XW_STATUS Xw_del_imagedata_structure(XW_EXT_IMAGEDATA* aimagedata) ;
759 XW_EXT_IMAGE* Xw_add_image_structure(XW_EXT_BUFFER* pbuflist) ;
760 XW_STATUS Xw_del_image_structure(XW_EXT_BUFFER* pbuflist) ;
761 void Xw_draw_pixel_images(XW_EXT_WINDOW* pwindow,XW_EXT_IMAGE *pimaglist,
762 GC gcimag,GC gcline) ;
764 XW_STATUS Xw_set_internal_event(XW_EXT_WINDOW* awindow,
765 XW_EVENTTYPE type,XW_ICALLBACK call_back) ;
767 XW_STATUS Xw_alloc_color(XW_EXT_COLORMAP* acolormap,float r,float g,float b,unsigned long *pixel,int *isapproximate);
769 int Xw_clip_segment(XW_EXT_WINDOW* pwindow,int x1,int y1,int x2,int y2,
772 int Xw_test(unsigned long mask) ;
773 void Xw_set_error(int code,const char* message,void* pvalue) ;
774 int Xw_error_handler(Display* display,XErrorEvent* event) ;
775 void Xw_set_synchronize(Display* display,int state) ;
776 void Xw_longcopy(register long* from,register long* to,register unsigned n) ;
777 void Xw_shortcopy(register short* from,register short* to,register unsigned n) ;
778 void Xw_bytecopy(register char* from,register char* to,register unsigned n) ;
781 void* Xw_malloc(int size) ;
785 void* Xw_calloc(int length,int size) ;
789 void Xw_free(void* address) ;
793 int PXPOINT( double x, double ratio );
794 int PYPOINT( double y, double height, double ratio );
795 int PVALUE( double v, double xratio, double yratio );
798 #else /*XW_PROTOTYPE*/
801 void _XInitImageFuncPtrs();
803 XVisualInfo* Xw_get_visual_info() ;
804 XVisualInfo* Xw_get_overlay_visual_info() ;
806 XW_EXT_DISPLAY* Xw_get_display_structure() ;
807 XW_EXT_DISPLAY* Xw_add_display_structure() ;
808 XW_STATUS Xw_del_display_structure() ;
810 XW_EXT_WINDOW* Xw_get_window_structure() ;
811 XW_EXT_WINDOW* Xw_add_window_structure() ;
812 XW_STATUS Xw_del_window_structure() ;
813 XW_STATUS Xw_reset_attrib() ;
815 XW_STATUS Xw_redraw_buffer() ;
816 XW_STATUS Xw_update_buffer() ;
817 XW_EXT_BUFFER* Xw_get_buffer_structure() ;
819 XW_EXT_CHAR* Xw_add_text_desc_structure() ;
820 XW_STATUS Xw_del_text_desc_structure() ;
822 XW_EXT_POINT* Xw_add_line_desc_structure() ;
823 XW_STATUS Xw_del_line_desc_structure() ;
825 XW_EXT_POINT* Xw_add_point_structure() ;
826 XW_STATUS Xw_del_point_structure() ;
827 void Xw_draw_pixel_points() ;
829 XW_EXT_SEGMENT* Xw_add_segment_structure() ;
830 XW_STATUS Xw_del_segment_structure() ;
831 void Xw_draw_pixel_segments() ;
833 XW_EXT_LINE* Xw_add_polyline_structure() ;
834 XW_STATUS Xw_del_polyline_structure() ;
835 void Xw_draw_pixel_lines() ;
837 XW_EXT_ARC* Xw_add_arc_structure() ;
838 XW_STATUS Xw_del_arc_structure() ;
839 void Xw_draw_pixel_arcs() ;
841 XW_EXT_ARC* Xw_add_polyarc_structure() ;
842 XW_STATUS Xw_del_polyarc_structure() ;
843 void Xw_draw_pixel_polyarcs() ;
845 XW_EXT_POLY* Xw_add_polygone_structure() ;
846 XW_STATUS Xw_del_polygone_structure() ;
847 void Xw_draw_pixel_polys() ;
849 XW_EXT_LTEXT* Xw_add_text_structure() ;
850 XW_STATUS Xw_del_text_structure() ;
851 void Xw_draw_pixel_texts() ;
853 XW_EXT_PTEXT* Xw_add_polytext_structure() ;
854 XW_STATUS Xw_del_polytext_structure() ;
855 void Xw_draw_pixel_polytexts() ;
857 XW_STATUS Xw_isdefine_markerindex() ;
858 XW_EXT_LMARKER* Xw_add_lmarker_structure() ;
859 XW_STATUS Xw_del_lmarker_structure() ;
860 void Xw_draw_pixel_lmarkers() ;
861 XW_EXT_PMARKER* Xw_add_pmarker_structure() ;
862 XW_STATUS Xw_del_pmarker_structure() ;
863 void Xw_draw_pixel_pmarkers() ;
865 Colormap Xw_create_colormap() ;
866 XW_EXT_COLORMAP* Xw_add_colormap_structure() ;
867 XW_EXT_COLORMAP* Xw_get_colormap_structure() ;
868 XW_STATUS Xw_del_colormap_structure() ;
869 XW_STATUS Xw_get_color_attrib() ;
870 XW_STATUS Xw_isdefine_colorindex() ;
871 XW_STATUS Xw_ifsystem_colorindex() ;
872 XW_STATUS Xw_ifimage_colorindex() ;
873 XW_STATUS Xw_ifbackground_colorindex() ;
874 XW_STATUS Xw_ifhighlight_colorindex() ;
875 char* Xw_get_filename() ;
877 XW_EXT_WIDTHMAP* Xw_add_widthmap_structure() ;
878 XW_STATUS Xw_del_widthmap_structure() ;
879 XW_STATUS Xw_isdefine_widthindex() ;
881 XW_EXT_TYPEMAP* Xw_add_typemap_structure() ;
882 XW_STATUS Xw_del_typemap_structure() ;
883 XW_STATUS Xw_isdefine_typeindex() ;
885 XW_EXT_FONTMAP* Xw_add_fontmap_structure() ;
886 XW_STATUS Xw_del_fontmap_structure() ;
887 XW_STATUS Xw_isdefine_fontindex() ;
889 XW_EXT_TILEMAP* Xw_add_tilemap_structure() ;
890 XW_STATUS Xw_del_tilemap_structure() ;
891 XW_STATUS Xw_isdefine_tileindex() ;
893 XW_EXT_MARKMAP* Xw_add_markmap_structure() ;
894 XW_STATUS Xw_del_markmap_structure() ;
896 XW_EXT_IMAGEDATA* Xw_add_imagedata_structure() ;
897 XW_STATUS Xw_del_imagedata_structure() ;
899 XW_EXT_IMAGE* Xw_add_image_structure() ;
900 XW_STATUS Xw_del_image_structure() ;
901 void Xw_draw_pixel_images() ;
903 XW_STATUS Xw_set_internal_event() ;
905 XW_STATUS Xw_alloc_color();
907 int Xw_clip_segment();
910 void Xw_set_error() ;
911 int Xw_error_handler() ;
912 void Xw_set_synchronize() ;
914 void Xw_shortcopy() ;
935 #endif /*XW_PROTOTYPE*/