cairo/xrint.h

788 lines
16 KiB
C
Raw Normal View History

2002-06-11 04:02:23 +00:00
/*
* $XFree86: $
*
* Copyright <EFBFBD> 2002 Carl D. Worth
2002-06-11 04:02:23 +00:00
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without
* fee, provided that the above copyright notice appear in all copies
* and that both that copyright notice and this permission notice
* appear in supporting documentation, and that the name of Carl
* D. Worth not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Carl D. Worth makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
2002-06-11 04:02:23 +00:00
*
* CARL D. WORTH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL CARL D. WORTH BE LIABLE FOR ANY SPECIAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
2002-06-11 04:02:23 +00:00
/*
* These definitions are solely for use by the implementation of Xr
* and constitute no kind of standard. If you need any of these
* functions, please drop me a note. Either the library needs new
* functionality, or there's a way to do what you need using the
* existing published interfaces. cworth@isi.edu
*/
#ifndef _XRINT_H_
#define _XRINT_H_
#include <math.h>
2002-07-23 07:22:23 +00:00
#include <X11/Xlibint.h>
#include <X11/Xft/Xft.h>
2002-06-11 04:02:23 +00:00
#include "Xr.h"
#ifndef __GCC__
#define __attribute__(x)
#endif
/* Sure wish C had a real enum type so that this would be distinct
from XrStatus. Oh well, without that, I'll use this bogus 1000
offset */
typedef enum _XrIntStatus {
XrIntStatusDegenerate = 1000
} XrIntStatus;
typedef enum _XrPathOp {
XrPathOpMoveTo = 0,
XrPathOpLineTo = 1,
XrPathOpCurveTo = 2,
XrPathOpClosePath = 3
} __attribute__ ((packed)) XrPathOp; /* Don't want 32 bits if we can avoid it. */
typedef enum _XrPathDirection {
XrPathDirectionForward,
XrPathDirectionReverse
} XrPathDirection;
2002-08-14 18:32:42 +00:00
typedef enum _XrSubPathDone {
XrSubPathDoneCap,
XrSubPathDoneJoin
} XrSubPathDone;
typedef struct _XrPathCallbacks {
XrStatus (*AddEdge)(void *closure, XPointFixed *p1, XPointFixed *p2);
XrStatus (*AddSpline)(void *closure, XPointFixed *a, XPointFixed *b, XPointFixed *c, XPointFixed *d);
XrStatus (*DoneSubPath) (void *closure, XrSubPathDone done);
XrStatus (*DonePath) (void *closure);
} XrPathCallbacks;
#define XR_PATH_BUF_SZ 64
typedef struct _XrPathOpBuf {
int num_ops;
XrPathOp op[XR_PATH_BUF_SZ];
struct _XrPathOpBuf *next, *prev;
} XrPathOpBuf;
typedef struct _XrPathArgBuf {
2002-06-11 04:02:23 +00:00
int num_pts;
XPointFixed pt[XR_PATH_BUF_SZ];
2002-06-11 04:02:23 +00:00
struct _XrPathArgBuf *next, *prev;
} XrPathArgBuf;
2002-06-11 04:02:23 +00:00
typedef struct _XrPath {
XrPathOpBuf *op_head;
XrPathOpBuf *op_tail;
XrPathArgBuf *arg_head;
XrPathArgBuf *arg_tail;
2002-06-11 04:02:23 +00:00
} XrPath;
typedef struct _XrEdge {
XLineFixed edge;
Bool clockWise;
XFixed current_x;
struct _XrEdge *next, *prev;
} XrEdge;
typedef struct _XrPolygon {
int num_edges;
int edges_size;
XrEdge *edges;
XPointFixed first_pt;
int first_pt_defined;
XPointFixed last_pt;
int last_pt_defined;
int closed;
} XrPolygon;
typedef struct _XrSlopeFixed
{
XFixed dx;
XFixed dy;
} XrSlopeFixed;
typedef struct _XrSpline {
XPointFixed a, b, c, d;
XrSlopeFixed initial_slope;
XrSlopeFixed final_slope;
int num_pts;
int pts_size;
XPointFixed *pts;
} XrSpline;
typedef enum _XrPenVertexFlag {
XrPenVertexFlagNone = 0,
XrPenVertexFlagForward = 1,
XrPenVertexFlagReverse = 2
} XrPenVertexFlag;
typedef struct _XrPenFlaggedPoint {
XPointFixed pt;
XrPenVertexFlag flag;
} XrPenFlaggedPoint;
typedef struct _XrPenVertex {
XPointFixed pt;
XrPenVertexFlag flag;
double theta;
XrSlopeFixed slope_ccw;
XrSlopeFixed slope_cw;
} XrPenVertex;
typedef struct _XrPen {
double radius;
double tolerance;
int num_vertices;
XrPenVertex *vertex;
} XrPen;
2002-07-23 07:22:23 +00:00
typedef struct _XrSurface {
2002-06-11 04:02:23 +00:00
Display *dpy;
Drawable drawable;
2002-11-01 19:45:30 +00:00
GC gc;
2002-06-11 04:02:23 +00:00
2002-11-04 00:24:44 +00:00
unsigned int width;
unsigned int height;
2002-06-11 04:02:23 +00:00
unsigned int depth;
unsigned long xc_sa_mask;
XcSurfaceAttributes xc_sa;
2002-11-04 00:24:44 +00:00
XrFormat format;
XcFormat *xc_format;
2002-06-11 04:02:23 +00:00
XcSurface *xc_surface;
2002-11-01 19:45:30 +00:00
int needs_new_xc_surface;
unsigned int ref_count;
2002-07-23 07:22:23 +00:00
} XrSurface;
2002-06-11 04:02:23 +00:00
typedef struct _XrColor {
double red;
double green;
double blue;
double alpha;
XcColor xc_color;
2002-06-11 04:02:23 +00:00
} XrColor;
typedef struct _XrTransform {
double m[3][2];
2002-06-11 04:02:23 +00:00
} XrTransform;
2002-07-23 07:22:23 +00:00
typedef struct _XrTraps {
int num_xtraps;
int xtraps_size;
XTrapezoid *xtraps;
} XrTraps;
2002-10-29 17:27:01 +00:00
/* XXX: What should this really be? */
#define XR_FONT_KEY_DEFAULT "mono"
typedef struct _XrFont {
unsigned char *key;
double scale;
int has_transform;
XrTransform transform;
Display *dpy;
XftFont *xft_font;
2002-10-29 17:27:01 +00:00
} XrFont;
2002-07-23 07:22:23 +00:00
#define XR_GSTATE_OPERATOR_DEFAULT XrOperatorOver
#define XR_GSTATE_TOLERANCE_DEFAULT 0.1
2002-10-24 11:27:29 +00:00
#define XR_GSTATE_FILL_RULE_DEFAULT XrFillRuleWinding
#define XR_GSTATE_LINE_WIDTH_DEFAULT 2.0
2002-07-23 07:22:23 +00:00
#define XR_GSTATE_LINE_CAP_DEFAULT XrLineCapButt
#define XR_GSTATE_LINE_JOIN_DEFAULT XrLineJoinMiter
#define XR_GSTATE_MITER_LIMIT_DEFAULT 10.0
2002-06-11 04:02:23 +00:00
typedef struct _XrGState {
Display *dpy;
2002-11-01 19:45:30 +00:00
XrOperator operator;
double tolerance;
/* stroke style */
2002-06-11 04:02:23 +00:00
double line_width;
XrLineCap line_cap;
2002-07-23 07:22:23 +00:00
XrLineJoin line_join;
double miter_limit;
2002-10-24 11:27:29 +00:00
XrFillRule fill_rule;
2002-11-01 19:45:30 +00:00
double *dashes;
int ndashes;
double dash_offset;
2002-07-23 07:22:23 +00:00
XcFormat *alphaFormat;
2002-06-11 04:02:23 +00:00
2002-10-29 17:27:01 +00:00
XrFont font;
2002-11-04 00:24:44 +00:00
XrSurface *parent_surface;
XrSurface *surface;
XrSurface *src;
2002-11-01 19:45:30 +00:00
XrSurface *mask;
2002-11-04 00:24:44 +00:00
double alpha;
2002-11-01 19:45:30 +00:00
XrColor color;
XrTransform ctm;
XrTransform ctm_inverse;
2002-06-11 04:02:23 +00:00
XrPath path;
XPointDouble last_move_pt;
XPointDouble current_pt;
2002-11-01 19:45:30 +00:00
int has_current_pt;
XrPen pen_regular;
2002-06-11 04:02:23 +00:00
struct _XrGState *next;
} XrGState;
struct _XrState {
Display *dpy;
XrGState *stack;
XrStatus status;
2002-06-11 04:02:23 +00:00
};
2002-08-14 18:32:42 +00:00
typedef struct _XrStrokeFace {
XPointFixed ccw;
XPointFixed pt;
XPointFixed cw;
XPointDouble vector;
2002-08-14 18:32:42 +00:00
} XrStrokeFace;
typedef struct _XrStroker {
XrGState *gstate;
XrTraps *traps;
2002-08-14 18:32:42 +00:00
int have_prev;
int have_first;
int is_first;
2002-08-14 18:32:42 +00:00
XrStrokeFace prev;
XrStrokeFace first;
int dash_index;
int dash_on;
double dash_remain;
} XrStroker;
typedef struct _XrFiller {
XrGState *gstate;
XrTraps *traps;
XrPolygon polygon;
} XrFiller;
2002-06-11 04:02:23 +00:00
/* xrstate.c */
XrState *
_XrStateCreate(Display *dpy);
2002-06-11 04:02:23 +00:00
XrStatus
_XrStateInit(XrState *state, Display *dpy);
2002-06-11 04:02:23 +00:00
void
_XrStateDeinit(XrState *xrs);
2002-06-11 04:02:23 +00:00
void
_XrStateDestroy(XrState *state);
2002-06-11 04:02:23 +00:00
XrStatus
_XrStatePush(XrState *xrs);
2002-06-11 04:02:23 +00:00
XrStatus
_XrStatePop(XrState *xrs);
2002-06-11 04:02:23 +00:00
/* xrgstate.c */
XrGState *
_XrGStateCreate(Display *dpy);
2002-06-11 04:02:23 +00:00
void
_XrGStateInit(XrGState *gstate, Display *dpy);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateInitCopy(XrGState *gstate, XrGState *other);
2002-06-11 04:02:23 +00:00
void
_XrGStateDeinit(XrGState *gstate);
2002-06-11 04:02:23 +00:00
void
_XrGStateDestroy(XrGState *gstate);
2002-06-11 04:02:23 +00:00
XrGState *
_XrGStateClone(XrGState *gstate);
2002-06-11 04:02:23 +00:00
2002-11-04 00:24:44 +00:00
XrStatus
_XrGStateBeginGroup(XrGState *gstate);
XrStatus
_XrGStateEndGroup(XrGState *gstate);
XrStatus
_XrGStateSetDrawable(XrGState *gstate, Drawable drawable);
XrStatus
_XrGStateSetVisual(XrGState *gstate, Visual *visual);
XrStatus
_XrGStateSetFormat(XrGState *gstate, XrFormat format);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateSetOperator(XrGState *gstate, XrOperator operator);
2002-07-23 07:22:23 +00:00
XrStatus
_XrGStateSetRGBColor(XrGState *gstate, double red, double green, double blue);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateSetTolerance(XrGState *gstate, double tolerance);
XrStatus
_XrGStateSetAlpha(XrGState *gstate, double alpha);
2002-06-11 04:02:23 +00:00
XrStatus
2002-10-24 11:27:29 +00:00
_XrGStateSetFillRule(XrGState *gstate, XrFillRule fill_rule);
XrStatus
_XrGStateSetLineWidth(XrGState *gstate, double width);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateSetLineCap(XrGState *gstate, XrLineCap line_cap);
2002-07-23 07:22:23 +00:00
XrStatus
_XrGStateSetLineJoin(XrGState *gstate, XrLineJoin line_join);
2002-07-23 07:22:23 +00:00
XrStatus
_XrGStateSetDash(XrGState *gstate, double *dashes, int ndash, double offset);
XrStatus
_XrGStateSetMiterLimit(XrGState *gstate, double limit);
2002-07-23 07:22:23 +00:00
XrStatus
_XrGStateTranslate(XrGState *gstate, double tx, double ty);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateScale(XrGState *gstate, double sx, double sy);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateRotate(XrGState *gstate, double angle);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateConcatMatrix(XrGState *gstate,
double a, double b,
double c, double d,
double tx, double ty);
2002-11-11 12:46:17 +00:00
XrStatus
_XrGStateSetMatrix(XrGState *gstate,
double a, double b,
double c, double d,
double tx, double ty);
XrStatus
_XrGStateIdentityMatrix(XrGState *xrs);
XrStatus
_XrGStateNewPath(XrGState *gstate);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateMoveTo(XrGState *gstate, double x, double y);
XrStatus
_XrGStateLineTo(XrGState *gstate, double x, double y);
XrStatus
_XrGStateCurveTo(XrGState *gstate,
double x1, double y1,
double x2, double y2,
double x3, double y3);
XrStatus
_XrGStateRelMoveTo(XrGState *gstate, double dx, double dy);
XrStatus
_XrGStateRelLineTo(XrGState *gstate, double dx, double dy);
XrStatus
_XrGStateRelCurveTo(XrGState *gstate,
double dx1, double dy1,
double dx2, double dy2,
double dx3, double dy3);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateClosePath(XrGState *gstate);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateStroke(XrGState *gstate);
2002-06-11 04:02:23 +00:00
XrStatus
_XrGStateFill(XrGState *fill);
2002-06-11 04:02:23 +00:00
XrStatus
2002-10-29 17:27:01 +00:00
_XrGStateSelectFont(XrGState *gstate, const char *key);
XrStatus
_XrGStateScaleFont(XrGState *gstate, double scale);
XrStatus
_XrGStateTransformFont(XrGState *gstate,
double a, double b,
double c, double d);
XrStatus
_XrGStateTextExtents(XrGState *gstate,
const unsigned char *utf8,
double *x, double *y,
double *width, double *height,
double *dx, double *dy);
2002-10-29 17:27:01 +00:00
XrStatus
_XrGStateShowText(XrGState *gstate, const unsigned char *utf8);
2002-11-01 19:45:30 +00:00
XrStatus
_XrGStateShowImage(XrGState *gstate,
char *data,
XrFormat format,
unsigned int width,
unsigned int height,
unsigned int stride);
XrStatus
_XrGStateShowImageTransform(XrGState *gstate,
char *data,
XrFormat format,
unsigned int width,
unsigned int height,
unsigned int stride,
double a, double b,
double c, double d,
double tx, double ty);
2002-06-11 04:02:23 +00:00
/* xrcolor.c */
void
_XrColorInit(XrColor *color);
2002-06-11 04:02:23 +00:00
void
_XrColorDeinit(XrColor *color);
2002-06-11 04:02:23 +00:00
void
_XrColorSetRGB(XrColor *color, double red, double green, double blue);
2002-06-11 04:02:23 +00:00
void
_XrColorSetAlpha(XrColor *color, double alpha);
2002-06-11 04:02:23 +00:00
2002-10-29 17:27:01 +00:00
/* xrfont.c */
void
2002-11-04 00:24:44 +00:00
_XrFontInit(XrFont *font);
2002-10-29 17:27:01 +00:00
XrStatus
_XrFontInitCopy(XrFont *font, XrFont *other);
void
_XrFontDeinit(XrFont *font);
XrStatus
_XrFontSelect(XrFont *font, const char *key);
XrStatus
_XrFontScale(XrFont *font, double scale);
XrStatus
_XrFontTransform(XrFont *font,
double a, double b,
double c, double d);
XrStatus
_XrFontResolveXftFont(XrFont *font, XrGState *gstate, XftFont **xft_font);
2002-10-29 17:27:01 +00:00
2002-06-11 04:02:23 +00:00
/* xrpath.c */
void
_XrPathInit(XrPath *path);
2002-06-11 04:02:23 +00:00
XrStatus
_XrPathInitCopy(XrPath *path, XrPath *other);
2002-06-11 04:02:23 +00:00
void
_XrPathDeinit(XrPath *path);
2002-06-11 04:02:23 +00:00
XrStatus
_XrPathMoveTo(XrPath *path, double x, double y);
XrStatus
_XrPathLineTo(XrPath *path, double x, double y);
XrStatus
_XrPathCurveTo(XrPath *path,
double x1, double y1,
double x2, double y2,
double x3, double y3);
XrStatus
_XrPathClosePath(XrPath *path);
2002-06-11 04:02:23 +00:00
XrStatus
_XrPathInterpret(XrPath *path, XrPathDirection dir, XrPathCallbacks *cb, void *closure);
2002-06-11 04:02:23 +00:00
/* xrsurface.c */
2002-11-04 00:24:44 +00:00
XrSurface *
_XrSurfaceCreate(Display *dpy);
2002-06-11 04:02:23 +00:00
void
_XrSurfaceInit(XrSurface *surface, Display *dpy);
2002-06-11 04:02:23 +00:00
2002-11-04 00:24:44 +00:00
void
_XrSurfaceDeinit(XrSurface *surface);
void
_XrSurfaceDestroy(XrSurface *surface);
void
_XrSurfaceReference(XrSurface *surface);
void
_XrSurfaceDereference(XrSurface *surface);
2002-11-01 19:45:30 +00:00
void
_XrSurfaceDereferenceDestroy(XrSurface *surface);
2002-06-11 04:02:23 +00:00
void
2002-11-01 19:45:30 +00:00
_XrSurfaceSetSolidColor(XrSurface *surface, XrColor *color);
XrStatus
_XrSurfaceSetImage(XrSurface *surface,
char *data,
unsigned int width,
unsigned int height,
unsigned int stride);
XrStatus
_XrSurfaceSetTransform(XrSurface *surface, XrTransform *transform);
2002-06-11 04:02:23 +00:00
void
_XrSurfaceSetDrawable(XrSurface *surface, Drawable drawable);
2002-06-11 04:02:23 +00:00
2002-11-04 00:24:44 +00:00
void
_XrSurfaceSetDrawableWH(XrSurface *surface,
Drawable drawable,
unsigned int width,
unsigned int height);
2002-06-11 04:02:23 +00:00
void
_XrSurfaceSetVisual(XrSurface *surface, Visual *visual);
2002-06-11 04:02:23 +00:00
void
_XrSurfaceSetFormat(XrSurface *surface, XrFormat format);
2002-06-11 04:02:23 +00:00
2002-11-01 19:45:30 +00:00
XcSurface *
_XrSurfaceGetXcSurface(XrSurface *surface);
Picture
_XrSurfaceGetPicture(XrSurface *surface);
2002-11-04 00:24:44 +00:00
Drawable
_XrSurfaceGetDrawable(XrSurface *surface);
unsigned int
_XrSurfaceGetWidth(XrSurface *surface);
unsigned int
_XrSurfaceGetHeight(XrSurface *surface);
unsigned int
_XrSurfaceGetDepth(XrSurface *surface);
/* xrpen.c */
XrStatus
_XrPenInit(XrPen *pen, double radius, XrGState *gstate);
XrStatus
_XrPenInitEmpty(XrPen *pen);
XrStatus
_XrPenInitCopy(XrPen *pen, XrPen *other);
void
_XrPenDeinit(XrPen *pen);
XrStatus
_XrPenAddPoints(XrPen *pen, XrPenFlaggedPoint *pt, int num_pts);
XrStatus
_XrPenAddPointsForSlopes(XrPen *pen, XPointFixed *a, XPointFixed *b, XPointFixed *c, XPointFixed *d);
XrStatus
_XrPenStrokeSpline(XrPen *pen, XrSpline *spline, double tolerance, XrTraps *traps);
/* xrpolygon.c */
2002-06-11 04:02:23 +00:00
void
_XrPolygonInit(XrPolygon *polygon);
2002-06-11 04:02:23 +00:00
void
_XrPolygonDeinit(XrPolygon *polygon);
2002-06-11 04:02:23 +00:00
XrStatus
_XrPolygonAddEdge(XrPolygon *polygon, XPointFixed *p1, XPointFixed *p2);
XrStatus
_XrPolygonAddPoint(XrPolygon *polygon, XPointFixed *pt);
XrStatus
_XrPolygonClose(XrPolygon *polygon);
/* xrspline.c */
XrIntStatus
_XrSplineInit(XrSpline *spline, XPointFixed *a, XPointFixed *b, XPointFixed *c, XPointFixed *d);
2002-06-11 04:02:23 +00:00
XrStatus
_XrSplineDecompose(XrSpline *spline, double tolerance);
void
_XrSplineDeinit(XrSpline *spline);
/* xrstroker.c */
2002-06-11 04:02:23 +00:00
void
_XrStrokerInit(XrStroker *stroker, XrGState *gstate, XrTraps *traps);
void
_XrStrokerDeinit(XrStroker *stroker);
XrStatus
_XrStrokerAddEdge(void *closure, XPointFixed *p1, XPointFixed *p2);
2002-06-11 04:02:23 +00:00
XrStatus
_XrStrokerAddEdgeDashed(void *closure, XPointFixed *p1, XPointFixed *p2);
XrStatus
_XrStrokerAddSpline (void *closure, XPointFixed *a, XPointFixed *b, XPointFixed *c, XPointFixed *d);
XrStatus
_XrStrokerDoneSubPath (void *closure, XrSubPathDone done);
2002-08-14 18:32:42 +00:00
XrStatus
_XrStrokerDonePath (void *closure);
/* xrfiller.c */
void
_XrFillerInit(XrFiller *filler, XrGState *gstate, XrTraps *traps);
void
_XrFillerDeinit(XrFiller *filler);
XrStatus
_XrFillerAddEdge(void *closure, XPointFixed *p1, XPointFixed *p2);
XrStatus
_XrFillerAddSpline (void *closure, XPointFixed *a, XPointFixed *b, XPointFixed *c, XPointFixed *d);
XrStatus
_XrFillerDoneSubPath (void *closure, XrSubPathDone done);
XrStatus
_XrFillerDonePath (void *closure);
2002-06-11 04:02:23 +00:00
/* xrtransform.c */
void
2002-11-11 12:46:17 +00:00
_XrTransformInitIdentity(XrTransform *transform);
2002-06-11 04:02:23 +00:00
void
_XrTransformDeinit(XrTransform *transform);
2002-06-11 04:02:23 +00:00
void
_XrTransformInitMatrix(XrTransform *transform,
double a, double b,
double c, double d,
double tx, double ty);
2002-06-11 04:02:23 +00:00
void
_XrTransformInitTranslate(XrTransform *transform,
double tx, double ty);
2002-06-11 04:02:23 +00:00
void
_XrTransformInitScale(XrTransform *transform,
double sx, double sy);
2002-06-11 04:02:23 +00:00
void
_XrTransformInitRotate(XrTransform *transform,
double angle);
2002-06-11 04:02:23 +00:00
void
_XrTransformMultiplyIntoLeft(XrTransform *t1, const XrTransform *t2);
void
_XrTransformMultiplyIntoRight(const XrTransform *t1, XrTransform *t2);
void
_XrTransformMultiply(const XrTransform *t1, const XrTransform *t2, XrTransform *new);
2002-06-11 04:02:23 +00:00
void
_XrTransformDistance(XrTransform *transform, double *dx, double *dy);
2002-06-11 04:02:23 +00:00
void
_XrTransformPoint(XrTransform *transform, double *x, double *y);
2002-06-11 04:02:23 +00:00
void
2002-11-11 12:46:17 +00:00
_XrTransformBoundingBox(XrTransform *transform,
double *x, double *y,
double *width, double *height);
XrStatus
_XrTransformComputeInverse(XrTransform *transform);
2002-06-11 04:02:23 +00:00
void
_XrTransformEigenValues(XrTransform *transform, double *lambda1, double *lambda2);
2002-07-23 07:22:23 +00:00
/* xrtraps.c */
void
_XrTrapsInit(XrTraps *traps);
2002-07-23 07:22:23 +00:00
void
_XrTrapsDeinit(XrTraps *traps);
2002-07-23 07:22:23 +00:00
XrStatus
_XrTrapsTessellateRectangle (XrTraps *traps, XPointFixed q[4]);
2002-07-23 07:22:23 +00:00
XrStatus
2002-10-24 11:27:29 +00:00
_XrTrapsTessellatePolygon (XrTraps *traps, XrPolygon *poly, XrFillRule fill_rule);
2002-07-23 07:22:23 +00:00
/* xrmisc.c */
void
_ComputeSlope(XPointFixed *a, XPointFixed *b, XrSlopeFixed *slope);
2002-06-11 04:02:23 +00:00
#endif