cutout/prototype/cutout.js
author veltr
Tue, 24 Jul 2012 19:06:31 +0200
changeset 1 5b7616434ecd
permissions -rw-r--r--
Added Cutout Prototype
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     1
DRAW_MODE_RECT = 1;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     2
DRAW_MODE_POLY = 2;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     3
DRAW_MODE_FREE = 3;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     4
DRAW_MODE_EDIT = 4;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     5
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     6
paper.install(window);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     7
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     8
var draw_mode,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
     9
    currentpath,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    10
    raster,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    11
    group,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    12
    ghostRaster,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    13
    polygonClosed,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    14
    polygonClosingTimeout,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    15
    clipPolygon,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    16
    isSelecting,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    17
    dragMode,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    18
    segmentIndex,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    19
    imageRatio,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    20
    placeHolder;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    21
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    22
$(function() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    23
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    24
    var hitOptions = {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    25
        segments: true,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    26
        stroke: true,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    27
        fill: true,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    28
        tolerance: 5
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    29
    };
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    30
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    31
    tool = new Tool();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    32
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    33
    function setDrawMode(mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    34
        draw_mode = mode;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    35
        $(".modeselector li").each(function() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    36
            if (+$(this).attr("drawmode") == mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    37
                $(this).addClass("selected");
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    38
            } else {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    39
                $(this).removeClass("selected");
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    40
            }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    41
        })
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    42
        if (draw_mode != DRAW_MODE_EDIT) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    43
            polygonClosed = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    44
            initDraw();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    45
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    46
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    47
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    48
    function delPath() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    49
        if (typeof currentpath !== "undefined") {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    50
            currentpath.remove();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    51
            currentpath = undefined;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    52
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    53
        if (typeof clipPolygon !== "undefined") {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    54
            clipPolygon.remove();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    55
            clipPolygon = undefined;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    56
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    57
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    58
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    59
    function startPath() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    60
        currentpath = new Path();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    61
        currentpath.strokeWidth = 3;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    62
        currentpath.strokeColor = '#ff0000';
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    63
        clipPolygon = new Path();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    64
        ghostRaster.opacity = .7;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    65
        if (typeof group !== "undefined") {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    66
            group.remove();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    67
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    68
        group = new Group(clipPolygon, raster);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    69
        group.clipped = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    70
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    71
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    72
    function finishEdit() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    73
        polygonClosed = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    74
        currentpath.strokeColor = '#ff0000';
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    75
        currentpath.strokeWidth = 1;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    76
        currentpath.fillColor = '#000000';
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    77
        currentpath.closed = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    78
        ghostRaster.opacity = .3;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    79
        setDrawMode(DRAW_MODE_EDIT);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    80
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    81
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    82
    function initDraw() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    83
        delPath();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    84
        if (typeof ghostRaster !== "undefined") {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    85
            ghostRaster.opacity = 1;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    86
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    87
        view.draw();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    88
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    89
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    90
    function setPolygonTimeout() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    91
        window.clearTimeout(polygonClosingTimeout);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    92
        polygonClosingTimeout = setTimeout(function() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    93
            switch (draw_mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    94
                case DRAW_MODE_FREE:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    95
                    currentpath.simplify();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    96
                    currentpath.flatten(10);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    97
                    clipPolygon.remove();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    98
                    group.remove();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
    99
                    clipPolygon = currentpath.clone();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   100
                    group = new Group(clipPolygon, raster);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   101
                    group.clipped = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   102
                break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   103
            }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   104
            finishEdit();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   105
            view.draw();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   106
        }, 3000);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   107
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   108
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   109
    function calcPreview() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   110
        if (typeof currentpath !== "undefined") {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   111
            var _b = currentpath.bounds,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   112
                _w = _b.width + 20,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   113
                _h = _b.height + 20,
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   114
                _data = view.canvas.getContext('2d').getImageData(_b.x - 10, _b.y - 10, _w , _h ),
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   115
                _c = document.createElement('canvas');
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   116
            _c.width = Math.floor(Math.max(160,_w,_h*4/3));
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   117
            _c.height = Math.floor(Math.max(120,_h,_w*3/4));
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   118
            _c.getContext('2d').putImageData(_data, Math.floor((_c.width - _w) / 2), Math.floor((_c.height - _h) / 2));
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   119
            $("#preview").attr("src", _c.toDataURL());
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   120
        } else {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   121
            $("#preview").attr("src", "placeholder.png");
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   122
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   123
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   124
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   125
    tool.onMouseDown = function(event) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   126
        switch (draw_mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   127
            case DRAW_MODE_FREE:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   128
            case DRAW_MODE_POLY:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   129
                if (polygonClosed) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   130
                    delPath();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   131
                    startPath();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   132
                    polygonClosed = false;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   133
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   134
                if (currentpath.segments.length == 0) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   135
                    currentpath.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   136
                    clipPolygon.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   137
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   138
                currentpath.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   139
                clipPolygon.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   140
                setPolygonTimeout();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   141
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   142
            case DRAW_MODE_RECT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   143
                delPath();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   144
                startPath();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   145
                for (var _i = 0; _i < 4; _i++) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   146
                    currentpath.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   147
                    clipPolygon.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   148
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   149
                currentpath.closed = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   150
                clipPolygon.closed = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   151
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   152
            case DRAW_MODE_EDIT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   153
                var hitResult = project.hitTest(event.point, hitOptions);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   154
                if (hitResult && hitResult.item) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   155
                    dragMode = hitResult.type;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   156
                } else {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   157
                    dragMode = undefined;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   158
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   159
                switch(dragMode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   160
                    case "segment":
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   161
                        segmentIndex = hitResult.segment.index;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   162
                    break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   163
                    case "stroke":
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   164
                        segmentIndex = hitResult.location.index + 1;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   165
                        currentpath.insert(segmentIndex, event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   166
                        clipPolygon.insert(segmentIndex, event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   167
                    break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   168
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   169
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   170
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   171
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   172
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   173
    tool.onMouseMove = function(event) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   174
        switch (draw_mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   175
            case DRAW_MODE_EDIT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   176
                var hitResult = project.hitTest(event.point, hitOptions);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   177
                if (hitResult && hitResult.item) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   178
                    currentpath.strokeColor = '#0080ff';
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   179
                    currentpath.selected = true;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   180
                    document.body.style.cursor = "pointer";
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   181
                } else {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   182
                    currentpath.strokeColor = '#ff0000';
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   183
                    currentpath.selected = false;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   184
                    document.body.style.cursor = "";
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   185
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   186
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   187
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   188
        
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   189
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   190
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   191
    tool.onMouseDrag = function(event) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   192
        switch (draw_mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   193
            case DRAW_MODE_POLY:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   194
                currentpath.lastSegment.point = event.point;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   195
                clipPolygon.lastSegment.point = event.point;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   196
                setPolygonTimeout();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   197
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   198
            case DRAW_MODE_FREE:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   199
                currentpath.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   200
                clipPolygon.add(event.point);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   201
                setPolygonTimeout();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   202
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   203
            case DRAW_MODE_RECT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   204
                clipPolygon.segments[1].point.x = clipPolygon.segments[2].point.x = currentpath.segments[1].point.x = currentpath.segments[2].point.x = event.point.x;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   205
                clipPolygon.segments[3].point.y = clipPolygon.segments[2].point.y = currentpath.segments[3].point.y = currentpath.segments[2].point.y = event.point.y;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   206
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   207
            case DRAW_MODE_EDIT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   208
                switch (dragMode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   209
                    case "fill":
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   210
                        currentpath.translate(event.delta);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   211
                        clipPolygon.translate(event.delta);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   212
                    break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   213
                    case "segment":
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   214
                    case "stroke":
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   215
                        currentpath.segments[segmentIndex].point = event.point;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   216
                        clipPolygon.segments[segmentIndex].point = event.point;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   217
                    break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   218
                }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   219
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   220
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   221
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   222
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   223
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   224
    tool.onMouseUp = function(event) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   225
        switch (draw_mode) {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   226
            case DRAW_MODE_RECT:
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   227
                finishEdit();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   228
            break;
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   229
        }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   230
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   231
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   232
    var canvas = document.getElementById('playground');
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   233
    paper.setup(canvas);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   234
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   235
    $(".modeselector li").click(function() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   236
        setDrawMode(+$(this).attr("drawmode"));
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   237
    })
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   238
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   239
    var img = new Image();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   240
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   241
    setDrawMode(DRAW_MODE_RECT);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   242
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   243
    img.onload = function() {
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   244
        imageRatio = Math.min(1, view.bounds.width / img.width, view.bounds.height / img.height);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   245
        ghostRaster = new Raster(this);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   246
        ghostRaster.scale(imageRatio);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   247
        ghostRaster.position = new Point(ghostRaster.bounds.width / 2, ghostRaster.bounds.height / 2);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   248
        raster = ghostRaster.clone();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   249
        initDraw();
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   250
    }
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   251
//    img.src ="http://www.photo.rmn.fr/LowRes2/TR1/Q83I0G/03-015341.jpg"
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   252
    img.src = "04-500790.jpg";
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   253
    
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   254
    window.setInterval(calcPreview,500);
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   255
        
5b7616434ecd Added Cutout Prototype
veltr
parents:
diff changeset
   256
});