diff options
Diffstat (limited to 'tkmacosx/macosxlib.M')
-rw-r--r-- | tkmacosx/macosxlib.M | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/tkmacosx/macosxlib.M b/tkmacosx/macosxlib.M new file mode 100644 index 0000000..65e51a8 --- /dev/null +++ b/tkmacosx/macosxlib.M @@ -0,0 +1,180 @@ +// Copyright (C) 1999-2016 +// Smithsonian Astrophysical Observatory, Cambridge, MA, USA +// For conditions of distribution and use, see copyright notice in "copyright" + +#include "tkmacosx.h" +#include "macosxlib.h" + +void macosxBegin() +{ + if (tkmacosx) + tkmacosx->begin(); +} + +void macosxEnd() +{ + if (tkmacosx) + tkmacosx->end(); +} + +void macosxColor(XColor* clr) +{ + if (clr) { + float red = clr->red/float(USHRT_MAX); + float green = clr->green/float(USHRT_MAX); + float blue = clr->blue/float(USHRT_MAX); + + if (tkmacosx) + tkmacosx->color(red,green,blue); + } +} + +void macosxWidth(float ww) +{ + if (tkmacosx) + tkmacosx->width(ww); +} + +void macosxDash(float* d, int n) +{ + if (tkmacosx) + tkmacosx->dash(d,n); +} + +void macosxFont(const char* f, float s) +{ + if (tkmacosx) + tkmacosx->font(f,s); +} + +void macosxClip(Vector v, Vector s) +{ + if (tkmacosx) { + Vector vv1 = v*tkmacosx->getCanvasToPage(); + Vector vv2 = (v+s)*tkmacosx->getCanvasToPage(); + Vector ss = vv2-vv1; + tkmacosx->clip(vv1[0],vv1[1],ss[0],ss[1]); + } +} + +void macosxNewPath() +{ + if (tkmacosx) { + tkmacosx->newpath(); + } +} + +void macosxStroke() +{ + if (tkmacosx) { + tkmacosx->stroke(); + } +} + +void macosxFill() +{ + if (tkmacosx) { + tkmacosx->fill(); + } +} + +void macosxArc(Vector v, float rad, float ang1, float ang2) +{ + if (tkmacosx) { + Vector vv = v*tkmacosx->getCanvasToPage(); + tkmacosx->arc(vv[0], vv[1], rad, ang1, ang2); + } +} + +void macosxCurve(Vector v0, Vector t0, Vector t1, Vector v1) +{ + if (tkmacosx) { + Vector vv0 = v0*tkmacosx->getCanvasToPage(); + Vector tt0 = t0*tkmacosx->getCanvasToPage(); + Vector tt1 = t1*tkmacosx->getCanvasToPage(); + Vector vv1 = v1*tkmacosx->getCanvasToPage(); + + tkmacosx->curve(vv0[0], vv0[1], tt0[0], tt0[1], + tt1[0], tt1[1], vv1[0], vv1[1]); + } +} + +void macosxDrawText(Vector v, float ang, const char* text) +{ + if (tkmacosx) { + Vector vv = v*tkmacosx->getCanvasToPage(); + tkmacosx->drawText(vv[0], vv[1], ang, text); + } +} + +void macosxDrawLine(Vector v0, Vector v1) +{ + if (tkmacosx) { + Vector vv0 = v0*tkmacosx->getCanvasToPage(); + Vector vv1 = v1*tkmacosx->getCanvasToPage(); + + int n = 2; + float x[2]; + float y[2]; + + x[0] = vv0[0]; + y[0] = vv0[1]; + x[1] = vv1[0]; + y[1] = vv1[1]; + + tkmacosx->drawLines(x,y,n); + } +} + +void macosxDrawLines(Vector* v, int n) +{ + if (tkmacosx) { + float xx[n]; + float yy[n]; + + for(int ii=0; ii<n; ii++) { + Vector vv = v[ii]*tkmacosx->getCanvasToPage(); + + xx[ii] = vv[0]; + yy[ii] = vv[1]; + } + + tkmacosx->drawLines(xx,yy,n); + } +} + +void macosxFillPolygon(Vector* v, int n) +{ + if (tkmacosx) { + float xx[n]; + float yy[n]; + + for(int ii=0; ii<n; ii++) { + Vector vv = v[ii]*tkmacosx->getCanvasToPage(); + + xx[ii] = vv[0]; + yy[ii] = vv[1]; + } + + tkmacosx->fillPolygon(xx,yy,n); + } +} + +void macosxDrawArc(Vector v, float rad, float ang1, float ang2) +{ + if (tkmacosx) { + Vector vv = v*tkmacosx->getCanvasToPage(); + tkmacosx->drawArc(vv[0], vv[1], rad, ang1, ang2); + } +} + +void macosxBitmapCreate(void* img, int width, int height, + const Vector& v, const Vector& s) +{ + if (tkmacosx) { + Vector vv1 = v*tkmacosx->getCanvasToPage(); + Vector vv2 = (v+s)*tkmacosx->getCanvasToPage(); + Vector ss = vv2-vv1; + tkmacosx->bitmapCreate(img, width, height, vv1[0], vv1[1], ss[0], ss[1]); + } +} |