diff options
Diffstat (limited to 'includes/js/dojox/gfx/utils.js')
-rw-r--r-- | includes/js/dojox/gfx/utils.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/includes/js/dojox/gfx/utils.js b/includes/js/dojox/gfx/utils.js new file mode 100644 index 0000000..7ee4d9d --- /dev/null +++ b/includes/js/dojox/gfx/utils.js @@ -0,0 +1,87 @@ +if(!dojo._hasResource["dojox.gfx.utils"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dojox.gfx.utils"] = true; +dojo.provide("dojox.gfx.utils"); + +dojo.require("dojox.gfx"); + +dojox.gfx.utils.serialize = function( + /* dojox.gfx.Surface || dojox.gfx.Shape */ object +){ + var t = {}, v, isSurface = object instanceof dojox.gfx.Surface; + if(isSurface || object instanceof dojox.gfx.Group){ + t.children = []; + for(var i = 0; i < object.children.length; ++i){ + t.children.push(dojox.gfx.utils.serialize(object.children[i])); + } + if(isSurface){ + return t.children; // Array + } + }else{ + t.shape = object.getShape(); + } + if(object.getTransform){ + v = object.getTransform(); + if(v){ t.transform = v; } + } + if(object.getStroke){ + v = object.getStroke(); + if(v){ t.stroke = v; } + } + if(object.getFill){ + v = object.getFill(); + if(v){ t.fill = v; } + } + if(object.getFont){ + v = object.getFont(); + if(v){ t.font = v; } + } + return t; // Object +}; + +dojox.gfx.utils.toJson = function( + /* dojox.gfx.Surface || dojox.gfx.Shape */ object, + /* Boolean? */ prettyPrint +){ + return dojo.toJson(dojox.gfx.utils.serialize(object), prettyPrint); // String +}; + +dojox.gfx.utils.deserialize = function( + /* dojox.gfx.Surface || dojox.gfx.Shape */ parent, + /* dojox.gfx.Shape || Array */ object +){ + if(object instanceof Array){ + var t = []; + for(var i = 0; i < object.length; ++i){ + t.push(dojox.gfx.utils.deserialize(parent, object[i])); + } + return t; // Array + } + var shape = ("shape" in object) ? parent.createShape(object.shape) : parent.createGroup(); + if("transform" in object){ + shape.setTransform(object.transform); + } + if("stroke" in object){ + shape.setStroke(object.stroke); + } + if("fill" in object){ + shape.setFill(object.fill); + } + if("font" in object){ + shape.setFont(object.font); + } + if("children" in object){ + for(var i = 0; i < object.children.length; ++i){ + dojox.gfx.utils.deserialize(shape, object.children[i]); + } + } + return shape; // dojox.gfx.Shape +}; + +dojox.gfx.utils.fromJson = function( + /* dojox.gfx.Surface || dojox.gfx.Shape */ parent, + /* String */ json +){ + return dojox.gfx.utils.deserialize(parent, dojo.fromJson(json)); // Array || dojox.gfx.Shape +}; + +} |