| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| dojo.provide("dojo.gfx.common"); |
| |
| dojo.require("dojo.gfx.color"); |
| dojo.require("dojo.lang.declare"); |
| dojo.require("dojo.lang.extras"); |
| dojo.require("dojo.dom"); |
| |
| dojo.lang.mixin(dojo.gfx, { |
| // summary: defines constants, prototypes, and utility functions |
| |
| // default shapes, which is used to fill in missing parameters |
| defaultPath: {type: "path", path: ""}, |
| defaultPolyline: {type: "polyline", points: []}, |
| defaultRect: {type: "rect", x: 0, y: 0, width: 100, height: 100, r: 0}, |
| defaultEllipse: {type: "ellipse", cx: 0, cy: 0, rx: 200, ry: 100}, |
| defaultCircle: {type: "circle", cx: 0, cy: 0, r: 100}, |
| defaultLine: {type: "line", x1: 0, y1: 0, x2: 100, y2: 100}, |
| defaultImage: {type: "image", width: 0, height: 0, src: ""}, |
| |
| // default geometric attributes (a stroke, and fills) |
| defaultStroke: {color: "black", width: 1, cap: "butt", join: 4}, |
| defaultLinearGradient: {type: "linear", x1: 0, y1: 0, x2: 100, y2: 100, |
| colors: [{offset: 0, color: "black"}, {offset: 1, color: "white"}]}, |
| defaultRadialGradient: {type: "radial", cx: 0, cy: 0, r: 100, |
| colors: [{offset: 0, color: "black"}, {offset: 1, color: "white"}]}, |
| defaultPattern: {type: "pattern", x: 0, y: 0, width: 0, height: 0, src: ""}, |
| |
| normalizeColor: function(/*Color*/ color){ |
| // summary: converts any legal color representation to normalized dojo.gfx.color.Color object |
| return (color instanceof dojo.gfx.color.Color) ? color : new dojo.gfx.color.Color(color); // dojo.gfx.color.Color |
| }, |
| normalizeParameters: function(existed, update){ |
| // summary: updates an existing object with properties from an "update" object |
| // existed: Object: the "target" object to be updated |
| // update: Object: the "update" object, whose properties will be used to update the existed object |
| if(update){ |
| var empty = {}; |
| for(var x in existed){ |
| if(x in update && !(x in empty)){ |
| existed[x] = update[x]; |
| } |
| } |
| } |
| return existed; // Object |
| }, |
| makeParameters: function(defaults, update){ |
| // summary: copies the original object, and all copied properties from the "update" object |
| // defaults: Object: the object to be cloned before updating |
| // update: Object: the object, which properties are to be cloned during updating |
| if(!update) return dojo.lang.shallowCopy(defaults, true); |
| var result = {}; |
| for(var i in defaults){ |
| if(!(i in result)){ |
| result[i] = dojo.lang.shallowCopy((i in update) ? update[i] : defaults[i], true); |
| } |
| } |
| return result; // Object |
| }, |
| formatNumber: function(x, addSpace){ |
| // summary: converts a number to a string using a fixed notation |
| // x: Number: number to be converted |
| // addSpace: Boolean?: if it is true, add a space before a positive number |
| var val = x.toString(); |
| if(val.indexOf("e") >= 0){ |
| val = x.toFixed(4); |
| }else{ |
| var point = val.indexOf("."); |
| if(point >= 0 && val.length - point > 5){ |
| val = x.toFixed(4); |
| } |
| } |
| if(x < 0){ |
| return val; // String |
| } |
| return addSpace ? " " + val : val; // String |
| }, |
| |
| // a constant used to split a SVG/VML path into primitive components |
| pathRegExp: /([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g |
| }); |
| |
| dojo.declare("dojo.gfx.Surface", null, { |
| // summary: a surface object to be used for drawings |
| |
| initializer: function(){ |
| // summary: a constructor |
| |
| // underlying node |
| this.rawNode = null; |
| }, |
| getEventSource: function(){ |
| // summary: returns a node, which can be used to attach event listeners |
| |
| return this.rawNode; // Node |
| } |
| }); |
| |
| dojo.declare("dojo.gfx.Point", null, { |
| // summary: a hypothetical 2D point to be used for drawings - {x, y} |
| // description: This object is defined for documentation purposes. |
| // You should use a naked object instead: {x: 1, y: 2}. |
| }); |
| |
| dojo.declare("dojo.gfx.Rectangle", null, { |
| // summary: a hypothetical rectangle - {x, y, width, height} |
| // description: This object is defined for documentation purposes. |
| // You should use a naked object instead: {x: 1, y: 2, width: 100, height: 200}. |
| }); |