summaryrefslogtreecommitdiffstats
path: root/tkmacosx/macosxlib.M
diff options
context:
space:
mode:
Diffstat (limited to 'tkmacosx/macosxlib.M')
-rw-r--r--tkmacosx/macosxlib.M180
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]);
+ }
+}