integration/v1/js/cutout.js
author ymh <ymh.work@gmail.com>
Tue, 01 Apr 2014 14:39:26 +0200
changeset 283 d6bc9a2cc131
parent 113 26d288400bea
permissions -rw-r--r--
upgrade libs + virtualenv creation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     1
$(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     2
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     3
    var startPath = $(".fragment-path").val();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     4
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     5
    var PATHCOLOR = "#ff00ff",
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     6
        SELECTEDCOLOR = "#ffff00",
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     7
        HANDLESIZE = 6;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     8
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
     9
    var jqs = $(".cutout-canvas"),
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    10
        offset = jqs.offset(),
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    11
        paper = new Raphael(jqs[0]),
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    12
        closed = false,
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    13
        rectangleMode = false,
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    14
        closeTimeout,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    15
        points = [];
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    16
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    17
    paper.rect(0, 0, paper.width, paper.height)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    18
        .attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    19
            stroke: "none",
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    20
            fill: "#fff",
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    21
            "fill-opacity": .01
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    22
        })
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    23
        .click(clickAddPoint)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    24
        .drag(
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    25
            function(dx, dy, mx, my) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    26
                
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    27
                if (dx*dx+dy*dy < 4) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    28
                    return;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    29
                }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    30
                
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    31
                if (!pathDragging) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    32
                    clearTimeout(closeTimeout);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    33
                    closed = true;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    34
                    resetPoints();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    35
                    for (var i = 0; i < 4; i++) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    36
                        addPoint(mx - offset.left, my - offset.top)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    37
                    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    38
                    redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    39
                    pathDragging = true;
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    40
                    rectangleMode = true;
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    41
                }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    42
                
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    43
                var x = mx - offset.left,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    44
                    y = my - offset.top;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    45
                points[1].x = points[2].x = x;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    46
                points[2].y = points[3].y = y;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    47
                redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    48
            },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    49
            function(mx, my) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    50
                pathDragging = false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    51
            },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    52
            function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    53
                setTimeout(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    54
                    pointDragging = false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    55
                },0);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    56
            }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    57
        );
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    58
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    59
    function resetPoints() {
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    60
    	rectangleMode = false;
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    61
        points.forEach(function(p) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    62
           p.handle.remove(); 
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    63
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    64
        points = [];
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    65
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    66
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    67
    function addPoint(x, y) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    68
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    69
        var dragdeltax, dragdeltay, pointDragging,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    70
            point = {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    71
                x: Math.floor(x),
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    72
                y: Math.floor(y)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    73
            }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    74
        
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    75
        var pointsWithSameX = [], pointsWithSameY = [];
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    76
        
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    77
        var pointrect = paper.rect(0, 0, HANDLESIZE, HANDLESIZE)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    78
            .attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    79
                stroke: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    80
                fill: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    81
                "fill-opacity": .3
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    82
            })
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    83
            .hover(shapeMouseOver, shapeMouseOut)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    84
            .drag(
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    85
                function(dx, dy) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    86
                    pointDragging = true;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    87
                    point.x = dx + dragdeltax;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    88
                    point.y = dy + dragdeltay;
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    89
                    if (rectangleMode) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    90
                    	pointsWithSameX.forEach(function(p) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    91
                    		p.x = point.x;
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    92
                    	});
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    93
                    	pointsWithSameY.forEach(function(p) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    94
                    		p.y = point.y;
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    95
                    	});
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
    96
                    }
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    97
                    redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    98
                },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
    99
                function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   100
                    dragdeltax = point.x;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   101
                    dragdeltay = point.y;
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   102
                    if (rectangleMode) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   103
                    	pointsWithSameX = points.filter(function(p) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   104
                    		return p !== point && p.x === point.x;
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   105
                    	});
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   106
                    	pointsWithSameY = points.filter(function(p) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   107
                    		return p !== point && p.y === point.y;
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   108
                    	});
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   109
                    }
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   110
                },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   111
                function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   112
                    setTimeout(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   113
                        pointDragging = false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   114
                        shapeMouseOut(pointrect);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   115
                    },0);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   116
                }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   117
            )
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   118
            .click(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   119
                if (pointDragging) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   120
                    return;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   121
                }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   122
                this.remove();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   123
                points = points.filter(function(p) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   124
                    return p != point;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   125
                });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   126
                redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   127
            });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   128
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   129
        point.handle = pointrect;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   130
            
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   131
        points.push(point);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   132
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   133
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   134
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   135
    function clickAddPoint(e, mx, my) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   136
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   137
        if (pathDragging) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   138
            return;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   139
        }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   140
        
94
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   141
        if (rectangleMode) {
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   142
        	resetPoints();
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   143
        }
1e837b3a4b00 Changed the behaviour of rectangle dragging
veltr
parents: 8
diff changeset
   144
        
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   145
        clearTimeout(closeTimeout);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   146
        closed = false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   147
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   148
        addPoint(mx - offset.left, my - offset.top);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   149
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   150
        redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   151
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   152
        closeTimeout = setTimeout(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   153
            closed = true;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   154
            redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   155
        }, 1000)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   156
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   157
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   158
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   159
    function shapeMouseOver() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   160
        points.forEach(function(point) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   161
            if (point.handle !== this) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   162
                point.handle.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   163
                    stroke: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   164
                    fill: PATHCOLOR
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   165
                });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   166
            }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   167
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   168
        if (this !== path) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   169
            path.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   170
                stroke: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   171
                fill: PATHCOLOR
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   172
            });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   173
        }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   174
        this.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   175
            stroke: SELECTEDCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   176
            fill: SELECTEDCOLOR
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   177
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   178
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   179
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   180
    function shapeMouseOut() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   181
        if (pathDragging || !this || !this.attr) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   182
            return;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   183
        }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   184
        this.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   185
            stroke: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   186
            fill: PATHCOLOR
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   187
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   188
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   189
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   190
    function redrawPath() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   191
        var d = "M"
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   192
            + points.map(function(p) { return p.x + " " + p.y }).join("L")
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   193
            + (closed ? "Z" : "");
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   194
        path.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   195
            path: d
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   196
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   197
        points.forEach(function(point) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   198
            point.handle.attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   199
                x: point.x - HANDLESIZE / 2,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   200
                y: point.y - HANDLESIZE / 2
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   201
            });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   202
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   203
        var transd = "M"
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   204
            + points.map(function(p) { return (p.x / paper.width).toString().replace(/(\.\d{4})\d*/,"$1") + " " + (p.y / paper.height).toString().replace(/(\.\d{4})\d*/,"$1") }).join("L")
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   205
            + "Z";
100
73bd74109313 put again change in cutout.js
cavaliet
parents: 96
diff changeset
   206
        $(".fragment-path").val(transd).change();
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   207
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   208
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   209
    var dragdeltax, dragdeltay, pathDragging;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   210
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   211
    var path = paper.path()
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   212
        .attr({
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   213
            stroke: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   214
            fill: PATHCOLOR,
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   215
            "fill-opacity": .1
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   216
        })
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   217
        .click(clickAddPoint)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   218
        .hover(shapeMouseOver, shapeMouseOut)
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   219
        .drag(
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   220
            function(dx, dy) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   221
                pathDragging = true;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   222
                points.forEach(function(point) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   223
                    point.x += dx - dragdeltax;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   224
                    point.y += dy - dragdeltay;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   225
                });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   226
                dragdeltax = dx;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   227
                dragdeltay = dy;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   228
                redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   229
            },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   230
            function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   231
                dragdeltax = 0;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   232
                dragdeltay = 0;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   233
            },
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   234
            function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   235
                setTimeout(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   236
                    pathDragging = false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   237
                    shapeMouseOut(path);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   238
                },0);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   239
            }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   240
        );
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   241
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   242
    $(".clear-fragment").click(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   243
        resetPoints();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   244
        redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   245
        return false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   246
    });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   247
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   248
    function revertPath() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   249
        startPath.split(/\s*[A-Z]\s*/).forEach(function(coords) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   250
            xy = coords.split(/[\s,]/);
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   251
            if (xy.length === 2) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   252
                addPoint(paper.width * parseFloat(xy[0]), paper.height * parseFloat(xy[1]));
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   253
            }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   254
        });
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   255
        
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   256
        if (points.length) {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   257
            closed = true;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   258
        }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   259
        
96
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   260
        if (
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   261
        	points.length === 4
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   262
        	&& points[0].x === points[3].x
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   263
        	&& points[0].y === points[1].y
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   264
    		&& points[1].x === points[2].x
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   265
            && points[2].y === points[3].y
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   266
  		) {
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   267
          	rectangleMode = true;
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   268
		}
de07c00bfa7e Added rectangle handling at load time
veltr
parents: 94
diff changeset
   269
        
8
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   270
        redrawPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   271
    }
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   272
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   273
    revertPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   274
    
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   275
    $(".reset-fragment").click(function() {
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   276
        resetPoints();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   277
        revertPath();
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   278
        return false;
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   279
    })
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   280
c64d503ebba7 Added Fragment views
veltr
parents:
diff changeset
   281
});