magic/graphics/grTCairoInt.h

130 lines
3.1 KiB
C

/*
* grTCairoInt.h --
*
* Internal definitions for grTCairo[1..5].c.
*
* NOTE: In order for the these defs to work correctly, this file
* (grTCairoInt.h) must be included after all the Magic .h files and before
* the X11, OpenGL, and Tk/Tcl .h files.
*
* Copyright 2003 Open Circuit Design, Inc., for MultiGiG Ltd.
*/
#ifndef _MAGIC__GRAPHICS__GRTCAIROINT_H
#define _MAGIC__GRAPHICS__GRTCAIROINT_H
#include "utils/magic.h"
/* Constants
*/
#define M_WIDTH 1023
#define M_HEIGHT 750
#define TCAIRO_BATCH_SIZE 10000
/* Inverted Y axis definition */
#define grTransYs(n) (DisplayHeight(grXdpy, grXscrn)-(n))
/* Current settings for X function parameters */
typedef struct {
Tk_Font font;
Tk_Cursor cursor;
int fontSize;
int depth;
int maskmod;
Tk_Window window;
Window windowid;
MagWindow *mw;
} TCAIRO_CURRENT;
/* Per-window data held in MagWindow w->w_grdata2 */
typedef struct {
/* Window surface and context */
cairo_t *context;
cairo_surface_t *surface;
/* Backing store surface and context */
cairo_t *backing_context;
cairo_surface_t *backing_surface;
} TCairoData;
/* Used for vertex arrays */
typedef struct {
Point r_ll, r_ul, r_ur, r_lr;
} TCairoRect;
extern TCAIRO_CURRENT tcairoCurrent;
extern bool grtcairoGetCursorPos();
extern bool grtcairoGetCursorRootPos();
extern bool grtcairoDrawGrid();
extern void GrTCairoEnableTablet();
extern void GrTCairoDisableTablet();
extern void GrTCairoSetCMap();
extern void grtcairoPutText();
#ifdef VECTOR_FONTS
extern void grtcairoFontText();
#endif
extern void GrTCairoSetCursor();
extern int GrTCairoTextSize();
extern void GrTCairoDrawGlyph();
extern void GrTCairoBitBlt();
extern void NullBitBlt();
extern int GrTCairoReadPixel();
extern void grtcairoSetLineStyle();
extern void grtcairoSetCharSize();
extern void grtcairoSetWMandC();
extern void grtcairoRectConvert();
extern void grtcairoFillPolygon();
extern void grtcairoFreeBackingStore();
extern void grtcairoCreateBackingStore();
extern bool grtcairoGetBackingStore();
extern bool grtcairoScrollBackingStore();
extern void grtcairoPutBackingStore();
extern void grtcairoDrawLine();
extern void grtcairoDrawLines();
extern void grtcairoFillRect();
extern void grtcairoFillRects();
extern int grtcairoNbLines;
extern int grtcairoNbDiagonal;
extern int grtcairoNbRects;
extern Rect grtcairoLines[];
extern Rect grtcairoDiagonal[];
extern TCairoRect grtcairoRects[];
#define GR_TCAIRO_FLUSH_LINES() { \
if (grtcairoNbLines>0) { \
grtcairoDrawLines(grtcairoLines, grtcairoNbLines); \
grtcairoNbLines=0; \
} \
}
#define GR_TCAIRO_FLUSH_DIAGONAL() { \
if (grtcairoNbDiagonal>0) { \
grtcairoDrawLines(grtcairoDiagonal, grtcairoNbDiagonal); \
grtcairoNbDiagonal = 0; \
} \
}
#define GR_TCAIRO_FLUSH_RECTS() { \
if (grtcairoNbRects>0) { \
grtcairoFillRects(grtcairoRects, grtcairoNbRects); \
grtcairoNbRects=0; \
} \
}
#define GR_TCAIRO_FLUSH_BATCH() { \
GR_TCAIRO_FLUSH_LINES(); \
GR_TCAIRO_FLUSH_DIAGONAL(); \
GR_TCAIRO_FLUSH_RECTS(); \
}
/* Used by the wind3d window */
extern void TCairoEventProc();
#endif /* _MAGIC__GRAPHICS__GRTCAIROINT_H */