/** \file * \brief Canvas Class * * See Copyright Notice in cd.h */ #ifndef __CD_CANVAS_HPP #define __CD_CANVAS_HPP #include "cd.h" #include "wd.h" class cdCanvasC { cdCanvas* canvas; cdCanvasC() {}; public: /* canvas init */ cdCanvasC(cdCanvas* _canvas) { this->canvas = _canvas; } ~cdCanvasC() { cdKillCanvas(this->canvas); } cdContext* GetContext() { return cdCanvasGetContext(canvas); } int Activate() { return cdCanvasActivate(canvas); } void Deactivate() { cdCanvasDeactivate(canvas); } /* control */ int Simulate(int mode) { return cdCanvasSimulate(canvas, mode); } void Flush() { cdCanvasFlush(canvas); } void Clear() { cdCanvasClear(canvas); } cdState* SaveState() { return cdCanvasSaveState(canvas); } void RestoreState(cdState* state) { cdCanvasRestoreState(canvas, state); } void SetAttribute(const char* name, char* data) { cdCanvasSetAttribute(canvas, name, data); } char* GetAttribute(const char* name) { return cdCanvasGetAttribute(canvas, name); } /* interpretation */ int Play(cdContext *context, int xmin, int xmax, int ymin, int ymax, void *data) { return cdCanvasPlay(canvas, context, xmin, xmax, ymin, ymax, data); } /* coordinate transformation */ void GetSize(int *width, int *height, double *width_mm, double *height_mm) { cdCanvasGetSize(canvas, width, height, width_mm, height_mm); } int UpdateYAxis(int* y) { return cdCanvasUpdateYAxis(canvas, y); } void MM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy) { cdCanvasMM2Pixel(canvas, mm_dx, mm_dy, dx, dy); } void Pixel2MM(int dx, int dy, double *mm_dx, double *mm_dy) { cdCanvasPixel2MM(canvas, dx, dy, mm_dx, mm_dy); } void MM2Pixel(double mm_dx, double mm_dy, double *dx, double *dy) { cdfCanvasMM2Pixel(canvas, mm_dx, mm_dy, dx, dy); } void Pixel2MM(double dx, double dy, double *mm_dx, double *mm_dy) { cdfCanvasPixel2MM(canvas, dx, dy, mm_dx, mm_dy); } void Origin(int x, int y) { cdCanvasOrigin(canvas, x, y); } void Origin(double x, double y) { cdfCanvasOrigin(canvas, x, y); } void GetOrigin(int *x, int *y) { cdCanvasGetOrigin(canvas, x, y); } void GetOrigin(double *x, double *y) { cdfCanvasGetOrigin(canvas, x, y); } /* clipping */ int Clip(int mode) { return cdCanvasClip(canvas, mode); } void ClipArea(int xmin, int xmax, int ymin, int ymax) { cdCanvasClipArea(canvas, xmin, xmax, ymin, ymax); } int GetClipArea(int *xmin, int *xmax, int *ymin, int *ymax) { return cdCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); } void ClipArea(double xmin, double xmax, double ymin, double ymax) { cdfCanvasClipArea(canvas, xmin, xmax, ymin, ymax); } int GetClipArea(double *xmin, double *xmax, double *ymin, double *ymax) { return cdfCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); } /* clipping region */ int IsPointInRegion(int x, int y) { return cdCanvasIsPointInRegion(canvas, x, y); } void OffsetRegion(int x, int y) { cdCanvasOffsetRegion(canvas, x, y); } void GetRegionBox(int *xmin, int *xmax, int *ymin, int *ymax) { cdCanvasGetRegionBox(canvas, xmin, xmax, ymin, ymax); } int RegionCombineMode(int mode) { return cdCanvasRegionCombineMode(canvas, mode); } /* primitives */ void Pixel(int x, int y, long color) { cdCanvasPixel(canvas, x, y, color); } void Mark(int x, int y) { cdCanvasMark(canvas, x, y); } void Line(int x1, int y1, int x2, int y2) { cdCanvasLine(canvas, x1, y1, x2, y2); } void Begin(int mode) { cdCanvasBegin(canvas, mode); } void Vertex(int x, int y) { cdCanvasVertex(canvas, x, y); } void End() { cdCanvasEnd(canvas); } void Rect(int xmin, int xmax, int ymin, int ymax) { cdCanvasRect(canvas, xmin, xmax, ymin, ymax); } void Box(int xmin, int xmax, int ymin, int ymax) { cdCanvasBox(canvas, xmin, xmax, ymin, ymax); } void Arc(int xc, int yc, int w, int h, double angle1, double angle2) { cdCanvasArc(canvas, xc, yc, w, h, angle1, angle2); } void Sector(int xc, int yc, int w, int h, double angle1, double angle2) { cdCanvasSector(canvas, xc, yc, w, h, angle1, angle2); } void Chord(int xc, int yc, int w, int h, double angle1, double angle2) { cdCanvasChord(canvas, xc, yc, w, h, angle1, angle2); } void Text(int x, int y, const char* s) { cdCanvasText(canvas, x, y, s); } void Line(double x1, double y1, double x2, double y2) { cdfCanvasLine(canvas, x1, y1, x2, y2); } void Vertex(double x, double y) { cdfCanvasVertex(canvas, x, y); } void Rect(double xmin, double xmax, double ymin, double ymax) { cdfCanvasRect(canvas, xmin, xmax, ymin, ymax); } void Box(double xmin, double xmax, double ymin, double ymax) { cdfCanvasBox(canvas, xmin, xmax, ymin, ymax); } void Arc(double xc, double yc, double w, double h, double angle1, double angle2) { cdfCanvasArc(canvas, xc, yc, w, h, angle1, angle2); } void Sector(double xc, double yc, double w, double h, double angle1, double angle2) { cdfCanvasSector(canvas, xc, yc, w, h, angle1, angle2); } void Chord(double xc, double yc, double w, double h, double angle1, double angle2) { cdfCanvasChord(canvas, xc, yc, w, h, angle1, angle2); } void Text(double x, double y, const char* s) { cdfCanvasText(canvas, x, y, s); } /* attributes */ long Background(long color) { return cdCanvasBackground(canvas, color); } long Foreground(long color) { return cdCanvasForeground(canvas, color); } int BackOpacity(int opacity) { return cdCanvasBackOpacity(canvas, opacity); } int WriteMode(int mode) { return cdCanvasWriteMode(canvas, mode); } int LineStyle(int style) { return cdCanvasLineStyle(canvas, style); } void LineStyleDashes(const int* dashes, int count) { cdCanvasLineStyleDashes(canvas, dashes, count); } int LineWidth(int width) { return cdCanvasLineWidth(canvas, width); } int LineJoin(int join) { return cdCanvasLineJoin(canvas, join); } int LineCap(int cap) { return cdCanvasLineCap(canvas, cap); } int InteriorStyle(int style) { return cdCanvasInteriorStyle(canvas, style); } int Hatch(int style) { return cdCanvasHatch(canvas, style); } void Stipple(int w, int h, const unsigned char* stipple) { cdCanvasStipple(canvas, w, h, stipple); } unsigned char* GetStipple(int *n, int *m) { return cdCanvasGetStipple(canvas, n, m); } void Pattern(int w, int h, long const int *pattern) { cdCanvasPattern(canvas, w, h, pattern); } long* GetPattern(int* n, int* m) { return cdCanvasGetPattern(canvas, n, m); } int FillMode(int mode) { return cdCanvasFillMode(canvas, mode); } int Font(const char* type_face, int style, int size) { return cdCanvasFont(canvas, type_face, style, size); } void GetFont(char *type_face, int *style, int *size) { cdCanvasGetFont(canvas, type_face, style, size); } char* NativeFont(const char* font) { return cdCanvasNativeFont(canvas, font); } int TextAlignment(int alignment) { return cdCanvasTextAlignment(canvas, alignment); } double TextOrientation(double angle) { return cdCanvasTextOrientation(canvas, angle); } int MarkType(int type) { return cdCanvasMarkType(canvas, type); } int MarkSize(int size) { return cdCanvasMarkSize(canvas, size); } /* vector text */ void VectorText(int x, int y, const char* s) { cdCanvasVectorText(canvas, x, y, s); } void MultiLineVectorText(int x, int y, const char* s) { cdCanvasMultiLineVectorText(canvas, x, y, s); } /* vector text attributes */ char *VectorFont(const char *filename) { return cdCanvasVectorFont(canvas, filename); } void VectorTextDirection(int x1, int y1, int x2, int y2) { cdCanvasVectorTextDirection(canvas, x1, y1, x2, y2); } double* VectorTextTransform(const double* matrix) { return cdCanvasVectorTextTransform(canvas, matrix); } void VectorTextSize(int size_x, int size_y, const char* s) { cdCanvasVectorTextSize(canvas, size_x, size_y, s); } int VectorCharSize(int size) { return cdCanvasVectorCharSize(canvas, size); } /* vector text properties */ void GetVectorTextSize(const char* s, int *x, int *y) { cdCanvasGetVectorTextSize(canvas, s, x, y); } void GetVectorTextBounds(const char* s, int x, int y, int *rect) { cdCanvasGetVectorTextBounds(canvas, s, x, y, rect); } /* properties */ void GetFontDim(int *max_width, int *height, int *ascent, int *descent) { cdCanvasGetFontDim(canvas, max_width, height, ascent, descent); } void GetTextSize(const char* s, int *width, int *height) { cdCanvasGetTextSize(canvas, s, width, height); } void GetTextBox(int x, int y, const char* s, int *xmin, int *xmax, int *ymin, int *ymax) { cdCanvasGetTextBox(canvas, x, y, s, xmin, xmax, ymin, ymax); } void GetTextBounds(int x, int y, const char* s, int *rect) { cdCanvasGetTextBounds(canvas, x, y, s, rect); } int GetColorPlanes() { return cdCanvasGetColorPlanes(canvas); } /* color */ void Palette(int n, const long *palette, int mode) { cdCanvasPalette(canvas, n, palette, mode); } /* client images */ void GetImageRGB(unsigned char* r, unsigned char* g, unsigned char* b, int x, int y, int w, int h) { cdCanvasGetImageRGB(canvas, r, g, b, x, y, w, h); } void PutImageRectRGB(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax) { cdCanvasPutImageRectRGB(canvas, iw, ih, r, g, b, x, y, w, h, xmin, xmax, ymin, ymax); } void PutImageRectRGBA(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax) { cdCanvasPutImageRectRGBA(canvas, iw, ih, r, g, b, a, x, y, w, h, xmin, xmax, ymin, ymax); } void PutImageRectMap(int iw, int ih, const unsigned char* index, const long* colors, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax) { cdCanvasPutImageRectMap(canvas, iw, ih, index, colors, x, y, w, h, xmin, xmax, ymin, ymax); } /* server images */ cdImage* CreateImage(int w, int h) { return cdCanvasCreateImage(canvas, w, h); } void GetImage(cdImage* image, int x, int y) { cdCanvasGetImage(canvas, image, x, y); } void PutImageRect(cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax) { cdCanvasPutImageRect(canvas, image, x, y, xmin, xmax, ymin, ymax); } void ScrollArea(int xmin, int xmax, int ymin, int ymax, int dx, int dy) { cdCanvasScrollArea(canvas, xmin, xmax, ymin, ymax, dx, dy); } void PutBitmap(cdBitmap* bitmap, int x, int y, int w, int h) { cdCanvasPutBitmap(canvas, bitmap, x, y, w, h); } void GetBitmap(cdBitmap* bitmap, int x, int y) { cdCanvasGetBitmap(canvas, bitmap, x, y); } /* coordinate transformation */ void wWindow(double xmin, double xmax, double ymin, double ymax) { wdCanvasWindow(canvas, xmin, xmax, ymin, ymax); } void wGetWindow(double *xmin, double *xmax, double *ymin, double *ymax) { wdCanvasGetWindow(canvas, xmin, xmax, ymin, ymax); } void wViewport(int xmin, int xmax, int ymin, int ymax) { wdCanvasViewport(canvas, xmin, xmax, ymin, ymax); } void wGetViewport(int *xmin, int *xmax, int *ymin, int *ymax) { wdCanvasGetViewport(canvas, xmin, xmax, ymin, ymax); } void wWorld2Canvas(double xw, double yw, int *xv, int *yv) { wdCanvasWorld2Canvas(canvas, xw, yw, xv, yv); } void wWorld2CanvasSize(double hw, double vw, int *hv, int *vv) { wdCanvasWorld2CanvasSize(canvas, hw, vw, hv, vv); } void wCanvas2World(int xv, int yv, double *xw, double *yw) { wdCanvasCanvas2World(canvas, xv, yv, xw, yw); } void wClipArea(double xmin, double xmax, double ymin, double ymax) { wdCanvasClipArea(canvas, xmin, xmax, ymin, ymax); } int wGetClipArea(double *xmin, double *xmax, double *ymin, double *ymax) { return wdCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); } int wIsPointInRegion(double x, double y) { return wdCanvasIsPointInRegion(canvas, x, y); } void wOffsetRegion(double x, double y) { wdCanvasOffsetRegion(canvas, x, y); } void wGetRegionBox(double *xmin, double *xmax, double *ymin, double *ymax) { wdCanvasGetRegionBox(canvas, xmin, xmax, ymin, ymax); } /* primitives */ void wPixel(double x, double y, long color) { wdCanvasPixel(canvas, x, y, color); } void wMark(double x, double y) { wdCanvasMark(canvas, x, y); } void wLine(double x1, double y1, double x2, double y2) { wdCanvasLine(canvas, x1, y1, x2, y2); } void wVertex(double x, double y) { wdCanvasVertex(canvas, x, y); } void wRect(double xmin, double xmax, double ymin, double ymax) { wdCanvasRect(canvas, xmin, xmax, ymin, ymax); } void wBox(double xmin, double xmax, double ymin, double ymax) { wdCanvasBox(canvas, xmin, xmax, ymin, ymax); } void wArc(double xc, double yc, double w, double h, double angle1, double angle2) { wdCanvasArc(canvas, xc, yc, w, h, angle1, angle2); } void wSector(double xc, double yc, double w, double h, double angle1, double angle2) { wdCanvasSector(canvas, xc, yc, w, h, angle1, angle2); } void wChord(double xc, double yc, double w, double h, double angle1, double angle2) { wdCanvasChord(canvas, xc, yc, w, h, angle1, angle2); } void wText(double x, double y, const char* s) { wdCanvasText(canvas, x, y, s); } void wPutImageRect(cdImage* image, double x, double y, int xmin, int xmax, int ymin, int ymax) { wdCanvasPutImageRect(canvas, image, x, y, xmin, xmax, ymin, ymax); } void wPutImageRectRGB(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax) { wdCanvasPutImageRectRGB(canvas, iw, ih, r, g, b, x, y, w, h, xmin, xmax, ymin, ymax); } void wPutImageRectRGBA(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax) { wdCanvasPutImageRectRGBA(canvas, iw, ih, r, g, b, a, x, y, w, h, xmin, xmax, ymin, ymax); } void wPutImageRectMap(int iw, int ih, const unsigned char* index, const long* colors, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax) { wdCanvasPutImageRectMap(canvas, iw, ih, index, colors, x, y, w, h, xmin, xmax, ymin, ymax); } void wPutBitmap(cdBitmap* bitmap, double x, double y, double w, double h) { wdCanvasPutBitmap(canvas, bitmap, x, y, w, h); } /* attributes */ double wLineWidth(double width) { return wdCanvasLineWidth(canvas, width); } int wFont(const char* type_face, int style, double size) { return wdCanvasFont(canvas, type_face, style, size); } void wGetFont(char *type_face, int *style, double *size) { wdCanvasGetFont(canvas, type_face, style, size); } double wMarkSize(double size) { return wdCanvasMarkSize(canvas, size); } void wGetFontDim(double *max_width, double *height, double *ascent, double *descent) { wdCanvasGetFontDim(canvas, max_width, height, ascent, descent); } void wGetTextSize(const char* s, double *width, double *height) { wdCanvasGetTextSize(canvas, s, width, height); } void wGetTextBox(double x, double y, const char* s, double *xmin, double *xmax, double *ymin, double *ymax) { wdCanvasGetTextBox(canvas, x, y, s, xmin, xmax, ymin, ymax); } void wGetTextBounds(double x, double y, const char* s, double *rect) { wdCanvasGetTextBounds(canvas, x, y, s, rect); } void wStipple(int w, int h, const unsigned char*fgbg, double w_mm, double h_mm) { wdCanvasStipple(canvas, w, h, fgbg, w_mm, h_mm); } void wPattern(int w, int h, const long *color, double w_mm, double h_mm) { wdCanvasPattern(canvas, w, h, color, w_mm, h_mm); } /* vector text */ void wVectorTextDirection(double x1, double y1, double x2, double y2) { wdCanvasVectorTextDirection(canvas, x1, y1, x2, y2); } void wVectorTextSize(double size_x, double size_y, const char* s) { wdCanvasVectorTextSize(canvas, size_x, size_y, s); } void wGetVectorTextSize(const char* s, double *x, double *y) { wdCanvasGetVectorTextSize(canvas, s, x, y); } double wVectorCharSize(double size) { return wdCanvasVectorCharSize(canvas, size); } void wVectorText(double x, double y, const char* s) { wdCanvasVectorText(canvas, x, y, s); } void wMultiLineVectorText(double x, double y, const char* s) { wdCanvasMultiLineVectorText(canvas, x, y, s); } void wGetVectorTextBounds(const char* s, double x, double y, double *rect) { wdCanvasGetVectorTextBounds(canvas, s, x, y, rect); } }; #endif