File: mydraw_HTML5_canvas2d.js

package info (click to toggle)
ats2-lang 0.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 40,064 kB
  • sloc: ansic: 389,637; makefile: 7,123; lisp: 812; sh: 657; php: 573; python: 387; perl: 365
file content (127 lines) | stat: -rw-r--r-- 3,264 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
HTML5 Canvas functions for ATS2
*/
/* ****** ****** */

/**
  Author: Will Blair
  Start Time: September 2013
  Authoremail: wdblairATcsDOTbuDOTedu
 */

/**
  Author: Hongwei Xi
  Start Time: October 2013
  Authoremail: hwxi AT cs DOT bu DOT edu
 */

/* ****** ****** */

var mydraw_html5_canvas2d =
{
    $MyCanvas: {
        PI: Math.PI,
        /*
          The C string pointers identify contexts.
        */
        contexts: {}
    },
    atscntrb_libatshwxi_canvas2d_make:
    function (ptr) {
	var id = Pointer_stringify(ptr);
        var canvas = document.getElementById(id);
        if (canvas.getContext) {
            MyCanvas.contexts[ptr] = canvas.getContext("2d");
        } else {
            throw "mydraw_html5_canvas2d: 2D-canvas is not supported";
        }
        return ptr; 
    },
    atscntrb_libatshwxi_canvas2d_free:
    function (ptr) {
        MyCanvas.contexts[ptr] = null;
    },

    atscntrb_libatshwxi_canvas2d_beginPath:
    function (ptr) {
        MyCanvas.contexts[ptr].beginPath();
    },
    atscntrb_libatshwxi_canvas2d_closePath:
    function (ptr) {
        MyCanvas.contexts[ptr].closePath();
    },

    atscntrb_libatshwxi_canvas2d_moveTo:
    function (ptr, x, y) {
        MyCanvas.contexts[ptr].moveTo(x, y);
    },
    atscntrb_libatshwxi_canvas2d_lineTo:
    function (ptr, x, y) {
        MyCanvas.contexts[ptr].lineTo(x, y);
    },

    atscntrb_libatshwxi_canvas2d_translate:
    function (ptr, x, y) {
        MyCanvas.contexts[ptr].translate(x, y);
    },
    atscntrb_libatshwxi_canvas2d_scale:
    function (ptr, sx, sy) {
        MyCanvas.contexts[ptr].scale(sx, sy);
    },
    atscntrb_libatshwxi_canvas2d_rotate:
    function (ptr, angle) {
        MyCanvas.contexts[ptr].rotate(angle);
    },

    atscntrb_libatshwxi_canvas2d_rect:
    function (ptr, xul, yul, width, height) {
        MyCanvas.contexts[ptr].rect(xul, yul, width, height);
    },
    atscntrb_libatshwxi_canvas2d_arc:
    function (ptr, xc, yc, rad, angle_beg, angle_end, CCW) {
        MyCanvas.contexts[ptr].arc(xc, yc, rad, angle_beg, angle_end, CCW);
    },

    atscntrb_libatshwxi_canvas2d_fill:
    function (ptr) {
        MyCanvas.contexts[ptr].fill();
    },
    atscntrb_libatshwxi_canvas2d_fillStyle_string:
    function (ptr, string) {
        var style = Pointer_stringify(string);
        MyCanvas.contexts[ptr].fillStyle = style;
    },

    atscntrb_libatshwxi_canvas2d_stroke:
    function (ptr) {
        MyCanvas.contexts[ptr].stroke();
    },
    atscntrb_libatshwxi_canvas2d_strokeStyle_string:
    function (ptr, string) {
        var style = Pointer_stringify(string);
        MyCanvas.contexts[ptr].strokeStyle = style;
    },

    atscntrb_libatshwxi_canvas2d_clearRect:
    function (ptr, xul, yul, width, height) {
        MyCanvas.contexts[ptr].clearRect(xul, yul, width, height);
    },

    atscntrb_libatshwxi_canvas2d_save:
    function (ptr) {
        MyCanvas.contexts[ptr].save();
    },
    atscntrb_libatshwxi_canvas2d_restore:
    function (ptr) {
        MyCanvas.contexts[ptr].restore();
    },
}

/* ****** ****** */

autoAddDeps(mydraw_html5_canvas2d, '$MyCanvas');
mergeInto(LibraryManager.library, mydraw_html5_canvas2d);

/* ****** ****** */

/* end of [mydraw_html5_canvas2d.js] */