client/js/renderer/shapebuilder.js
author cavaliet
Wed, 10 Sep 2014 16:16:54 +0200
changeset 328 3e69a85d73e9
parent 327 239d372644a0
child 435 e529b633c339
permissions -rw-r--r--
jshint corrections
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
326
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     1
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     2
define([], function () {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     3
    'use strict';
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     4
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     5
    /* ShapeBuilder Begin */
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     6
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     7
    var builders = {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     8
        "circle":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
     9
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    10
                return new paper.Path.Circle([0, 0], 1);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    11
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    12
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    13
                return new paper.Path.Circle(center, radius);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    14
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    15
        },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    16
        "rectangle":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    17
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    18
                return new paper.Path.Rectangle([-2, -2], [2, 2]);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    19
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    20
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    21
                return new paper.Path.Rectangle([-radius, -radius], [radius*2, radius*2]);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    22
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    23
        },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    24
        "ellipse":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    25
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    26
                return new paper.Path.Ellipse(new paper.Rectangle([-2, -1], [2, 1]));
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    27
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    28
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    29
                return new paper.Path.Ellipse(new paper.Rectangle([-radius, -radius/2], [radius*2, radius]));
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    30
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    31
        },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    32
        "polygon":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    33
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    34
                return new paper.Path.RegularPolygon([0, 0], 6, 1);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    35
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    36
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    37
                return new paper.Path.RegularPolygon([0, 0], 6, radius);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    38
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    39
        },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    40
        "diamond":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    41
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    42
                var d = new paper.Path.Rectangle([-2, -2], [2, 2]);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    43
                d.rotate(45);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    44
                return d;
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    45
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    46
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    47
                var d = new paper.Path.Rectangle([-radius, -radius], [radius*2, radius*2]);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    48
                d.rotate(45);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    49
                return d;
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    50
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    51
        },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    52
        "star":{
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    53
            getShape: function() {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    54
                return new paper.Path.Star([0, 0], 8, 1, 0.7);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    55
            },
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    56
            getImageShape: function(center, radius) {
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    57
                return new paper.Path.Star([0, 0], 8, radius*1, radius*0.7);
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    58
            }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    59
        },
327
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    60
        "svg": function(path){
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    61
            return {
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    62
                getShape: function() {
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    63
                    return new paper.Path(path);
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    64
                },
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    65
                getImageShape: function(center, radius) {
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    66
                    // No calcul for the moment 
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    67
                    return new paper.Path();
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    68
                }
328
3e69a85d73e9 jshint corrections
cavaliet
parents: 327
diff changeset
    69
            };
327
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    70
        }
326
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    71
    };
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    72
    
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    73
    var ShapeBuilder = function (shape){
327
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    74
        if(typeof shape==="undefined"){
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    75
            shape = "circle";
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    76
        }
328
3e69a85d73e9 jshint corrections
cavaliet
parents: 327
diff changeset
    77
        if(shape.substr(0,4)==="svg:"){
3e69a85d73e9 jshint corrections
cavaliet
parents: 327
diff changeset
    78
            return builders.svg(shape.substr(4));
327
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    79
        }
326
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    80
        if(!(shape in builders)){
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    81
            shape = "circle";
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    82
        }
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    83
        return builders[shape];
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    84
    };
327
239d372644a0 svg path possibilites and update paper
cavaliet
parents: 326
diff changeset
    85
    
326
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    86
    return ShapeBuilder;
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    87
e4afd8643576 shape builder for node
cavaliet
parents:
diff changeset
    88
});