diff options
Diffstat (limited to 'includes/js/dojox/gfx/silverlight.js')
-rw-r--r-- | includes/js/dojox/gfx/silverlight.js | 693 |
1 files changed, 0 insertions, 693 deletions
diff --git a/includes/js/dojox/gfx/silverlight.js b/includes/js/dojox/gfx/silverlight.js deleted file mode 100644 index 7a4becc..0000000 --- a/includes/js/dojox/gfx/silverlight.js +++ /dev/null @@ -1,693 +0,0 @@ -if(!dojo._hasResource["dojox.gfx.silverlight"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.gfx.silverlight"] = true; -dojo.provide("dojox.gfx.silverlight"); - -dojo.require("dojox.gfx._base"); -dojo.require("dojox.gfx.shape"); -dojo.require("dojox.gfx.path"); - -dojo.experimental("dojox.gfx.silverlight"); - -dojox.gfx.silverlight.dasharray = { - solid: "none", - shortdash: [4, 1], - shortdot: [1, 1], - shortdashdot: [4, 1, 1, 1], - shortdashdotdot: [4, 1, 1, 1, 1, 1], - dot: [1, 3], - dash: [4, 3], - longdash: [8, 3], - dashdot: [4, 3, 1, 3], - longdashdot: [8, 3, 1, 3], - longdashdotdot: [8, 3, 1, 3, 1, 3] -}; - -dojox.gfx.silverlight.fontweight = { - normal: 400, - bold: 700 -}; - -dojox.gfx.silverlight.caps = {butt: "Flat", round: "Round", square: "Square"}; -dojox.gfx.silverlight.joins = {bevel: "Bevel", round: "Round"}; - -dojox.gfx.silverlight.fonts = { - serif: "Times New Roman", - times: "Times New Roman", - "sans-serif": "Arial", - helvetica: "Arial", - monotone: "Courier New", - courier: "Courier New" -}; - -dojox.gfx.silverlight.hexColor = function(/*String|Array|dojo.Color*/ color){ - // summary: converts a color object to a Silverlight hex color string (#aarrggbb) - var c = dojox.gfx.normalizeColor(color), - t = c.toHex(), a = Math.round(c.a * 255); - a = (a < 0 ? 0 : a > 255 ? 255 : a).toString(16); - return "#" + (a.length < 2 ? "0" + a : a) + t.slice(1); // String -}; - -dojo.extend(dojox.gfx.Shape, { - // summary: Silverlight-specific implementation of dojox.gfx.Shape methods - - setFill: function(fill){ - // summary: sets a fill object (Silverlight) - // fill: Object: a fill object - // (see dojox.gfx.defaultLinearGradient, - // dojox.gfx.defaultRadialGradient, - // dojox.gfx.defaultPattern, - // or dojo.Color) - - var p = this.rawNode.getHost().content, r = this.rawNode, f; - if(!fill){ - // don't fill - this.fillStyle = null; - this._setFillAttr(null); - return this; // self - } - if(typeof(fill) == "object" && "type" in fill){ - // gradient - switch(fill.type){ - case "linear": - this.fillStyle = f = dojox.gfx.makeParameters(dojox.gfx.defaultLinearGradient, fill); - var lgb = p.createFromXaml("<LinearGradientBrush/>"); - lgb.mappingMode = "Absolute"; - lgb.startPoint = f.x1 + "," + f.y1; - lgb.endPoint = f.x2 + "," + f.y2; - dojo.forEach(f.colors, function(c){ - var t = p.createFromXaml("<GradientStop/>"); - t.offset = c.offset; - t.color = dojox.gfx.silverlight.hexColor(c.color); - lgb.gradientStops.add(t); - }); - this._setFillAttr(lgb); - break; - case "radial": - this.fillStyle = f = dojox.gfx.makeParameters(dojox.gfx.defaultRadialGradient, fill); - var rgb = p.createFromXaml("<RadialGradientBrush/>"), w = r.width, h = r.height, - l = this.rawNode["Canvas.Left"], t = this.rawNode["Canvas.Top"]; - rgb.center = (f.cx - l) / w + "," + (f.cy - t) / h; - rgb.radiusX = f.r / w; - rgb.radiusY = f.r / h; - dojo.forEach(f.colors, function(c){ - var t = p.createFromXaml("<GradientStop/>"); - t.offset = c.offset; - t.color = dojox.gfx.silverlight.hexColor(c.color); - rgb.gradientStops.add(t); - }); - this._setFillAttr(rgb); - break; - case "pattern": - // don't fill: Silverlight doesn't define TileBrush for some reason - this.fillStyle = null; - this._setFillAttr(null); - break; - } - return this; // self - } - // color object - this.fillStyle = f = dojox.gfx.normalizeColor(fill); - var scb = p.createFromXaml("<SolidColorBrush/>"); - scb.color = f.toHex(); - scb.opacity = f.a; - this._setFillAttr(scb); - return this; // self - }, - _setFillAttr: function(f){ - this.rawNode.fill = f; - }, - - setStroke: function(stroke){ - // summary: sets a stroke object (Silverlight) - // stroke: Object: a stroke object - // (see dojox.gfx.defaultStroke) - - var p = this.rawNode.getHost().content, r = this.rawNode; - if(!stroke){ - // don't stroke - this.strokeStyle = null; - r.stroke = null; - return this; - } - // normalize the stroke - if(typeof stroke == "string"){ - stroke = {color: stroke}; - } - var s = this.strokeStyle = dojox.gfx.makeParameters(dojox.gfx.defaultStroke, stroke); - s.color = dojox.gfx.normalizeColor(s.color); - // generate attributes - if(s){ - var scb = p.createFromXaml("<SolidColorBrush/>"); - scb.color = s.color.toHex(); - scb.opacity = s.color.a; - r.stroke = scb; - r.strokeThickness = s.width; - r.strokeStartLineCap = r.strokeEndLineCap = r.strokeDashCap = - dojox.gfx.silverlight.caps[s.cap]; - if(typeof s.join == "number"){ - r.strokeLineJoin = "Miter"; - r.strokeMiterLimit = s.join; - }else{ - r.strokeLineJoin = dojox.gfx.silverlight.joins[s.join]; - } - var da = s.style.toLowerCase(); - if(da in dojox.gfx.silverlight.dasharray){ da = dojox.gfx.silverlight.dasharray[da]; } - if(da instanceof Array){ - da = dojo.clone(da); - /* - for(var i = 0; i < da.length; ++i){ - da[i] *= s.width; - } - */ - if(s.cap != "butt"){ - for(var i = 0; i < da.length; i += 2){ - //da[i] -= s.width; - --da[i] - if(da[i] < 1){ da[i] = 1; } - } - for(var i = 1; i < da.length; i += 2){ - //da[i] += s.width; - ++da[i]; - } - } - r.strokeDashArray = da.join(","); - }else{ - r.strokeDashArray = null; - } - } - return this; // self - }, - - _getParentSurface: function(){ - var surface = this.parent; - for(; surface && !(surface instanceof dojox.gfx.Surface); surface = surface.parent); - return surface; - }, - - _applyTransform: function() { - var tm = this.matrix, r = this.rawNode; - if(tm){ - var p = this.rawNode.getHost().content, - m = p.createFromXaml("<MatrixTransform/>"), - mm = p.createFromXaml("<Matrix/>"); - mm.m11 = tm.xx; - mm.m21 = tm.xy; - mm.m12 = tm.yx; - mm.m22 = tm.yy; - mm.offsetX = tm.dx; - mm.offsetY = tm.dy; - m.matrix = mm; - r.renderTransform = m; - }else{ - r.renderTransform = null; - } - return this; - }, - - setRawNode: function(rawNode){ - // summary: - // assigns and clears the underlying node that will represent this - // shape. Once set, transforms, gradients, etc, can be applied. - // (no fill & stroke by default) - rawNode.fill = null; - rawNode.stroke = null; - this.rawNode = rawNode; - }, - - // move family - - _moveToFront: function(){ - // summary: moves a shape to front of its parent's list of shapes (Silverlight) - var c = this.parent.rawNode.children, r = this.rawNode; - c.remove(r); - c.add(r); - return this; // self - }, - _moveToBack: function(){ - // summary: moves a shape to back of its parent's list of shapes (Silverlight) - var c = this.parent.rawNode.children, r = this.rawNode; - c.remove(r); - c.insert(0, r); - return this; // self - } -}); - -dojo.declare("dojox.gfx.Group", dojox.gfx.Shape, { - // summary: a group shape (Silverlight), which can be used - // to logically group shapes (e.g, to propagate matricies) - constructor: function(){ - dojox.gfx.silverlight.Container._init.call(this); - }, - setRawNode: function(rawNode){ - // summary: sets a raw Silverlight node to be used by this shape - // rawNode: Node: an Silverlight node - this.rawNode = rawNode; - } -}); -dojox.gfx.Group.nodeType = "Canvas"; - -dojo.declare("dojox.gfx.Rect", dojox.gfx.shape.Rect, { - // summary: a rectangle shape (Silverlight) - setShape: function(newShape){ - // summary: sets a rectangle shape object (Silverlight) - // newShape: Object: a rectangle shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, n = this.shape; - r["Canvas.Left"] = n.x; - r["Canvas.Top"] = n.y; - r.width = n.width; - r.height = n.height; - r.radiusX = r.radiusY = n.r; - return this; // self - } -}); -dojox.gfx.Rect.nodeType = "Rectangle"; - -dojo.declare("dojox.gfx.Ellipse", dojox.gfx.shape.Ellipse, { - // summary: an ellipse shape (Silverlight) - setShape: function(newShape){ - // summary: sets an ellipse shape object (Silverlight) - // newShape: Object: an ellipse shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, n = this.shape; - r["Canvas.Left"] = n.cx - n.rx; - r["Canvas.Top"] = n.cy - n.ry; - r.width = 2 * n.rx; - r.height = 2 * n.ry; - return this; // self - } -}); -dojox.gfx.Ellipse.nodeType = "Ellipse"; - -dojo.declare("dojox.gfx.Circle", dojox.gfx.shape.Circle, { - // summary: a circle shape (Silverlight) - setShape: function(newShape){ - // summary: sets a circle shape object (Silverlight) - // newShape: Object: a circle shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, n = this.shape; - r["Canvas.Left"] = n.cx - n.r; - r["Canvas.Top"] = n.cy - n.r; - r.width = r.height = 2 * n.r; - return this; // self - } -}); -dojox.gfx.Circle.nodeType = "Ellipse"; - -dojo.declare("dojox.gfx.Line", dojox.gfx.shape.Line, { - // summary: a line shape (Silverlight) - setShape: function(newShape){ - // summary: sets a line shape object (Silverlight) - // newShape: Object: a line shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, n = this.shape; - r.x1 = n.x1; r.y1 = n.y1; r.x2 = n.x2; r.y2 = n.y2; - return this; // self - } -}); -dojox.gfx.Line.nodeType = "Line"; - -dojo.declare("dojox.gfx.Polyline", dojox.gfx.shape.Polyline, { - // summary: a polyline/polygon shape (Silverlight) - setShape: function(points, closed){ - // summary: sets a polyline/polygon shape object (Silverlight) - // points: Object: a polyline/polygon shape object - if(points && points instanceof Array){ - // branch - // points: Array: an array of points - this.shape = dojox.gfx.makeParameters(this.shape, {points: points}); - if(closed && this.shape.points.length){ - this.shape.points.push(this.shape.points[0]); - } - }else{ - this.shape = dojox.gfx.makeParameters(this.shape, points); - } - this.box = null; - var p = this.shape.points, rp = []; - for(var i = 0; i < p.length; ++i){ - if(typeof p[i] == "number"){ - rp.push(p[i], p[++i]); - }else{ - rp.push(p[i].x, p[i].y); - } - } - this.rawNode.points = rp.join(","); - return this; // self - } -}); -dojox.gfx.Polyline.nodeType = "Polyline"; - -dojo.declare("dojox.gfx.Image", dojox.gfx.shape.Image, { - // summary: an image (Silverlight) - setShape: function(newShape){ - // summary: sets an image shape object (Silverlight) - // newShape: Object: an image shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, n = this.shape; - r["Canvas.Left"] = n.x; - r["Canvas.Top"] = n.y; - r.width = n.width; - r.height = n.height; - r.source = n.src; - return this; // self - }, - setRawNode: function(rawNode){ - // summary: - // assigns and clears the underlying node that will represent this - // shape. Once set, transforms, gradients, etc, can be applied. - // (no fill & stroke by default) - this.rawNode = rawNode; - } -}); -dojox.gfx.Image.nodeType = "Image"; - -dojo.declare("dojox.gfx.Text", dojox.gfx.shape.Text, { - // summary: an anchored text (Silverlight) - setShape: function(newShape){ - // summary: sets a text shape object (Silverlight) - // newShape: Object: a text shape object - this.shape = dojox.gfx.makeParameters(this.shape, newShape); - this.bbox = null; - var r = this.rawNode, s = this.shape; - r.text = s.text; - r.textDecorations = s.decoration == "underline" ? "Underline" : "None"; - r["Canvas.Left"] = -10000; - r["Canvas.Top"] = -10000; - window.setTimeout(dojo.hitch(this, "_delayAlignment"), 0); - return this; // self - }, - _delayAlignment: function(){ - // handle alignment - var r = this.rawNode, s = this.shape, - w = r.actualWidth, h = r.actualHeight, x = s.x, y = s.y - h * 0.75; - switch(s.align){ - case "middle": - x -= w / 2; - break; - case "end": - x -= w; - break; - } - var a = this.matrix ? dojox.gfx.matrix.multiplyPoint(this.matrix, x, y) : {x: x, y: y}; - r["Canvas.Left"] = a.x; - r["Canvas.Top"] = a.y; - }, - setStroke: function(){ - // summary: ignore setting a stroke style - return this; // self - }, - _setFillAttr: function(f){ - this.rawNode.foreground = f; - }, - setRawNode: function(rawNode){ - // summary: - // assigns and clears the underlying node that will represent this - // shape. Once set, transforms, gradients, etc, can be applied. - // (no fill & stroke by default) - this.rawNode = rawNode; - }, - _applyTransform: function() { - var tm = this.matrix, r = this.rawNode; - if(tm){ - // the next line is pure magic :-( - tm = dojox.gfx.matrix.normalize([1/100, tm, 100]); - var p = this.rawNode.getHost().content, - m = p.createFromXaml("<MatrixTransform/>"), - mm = p.createFromXaml("<Matrix/>"); - mm.m11 = tm.xx; - mm.m21 = tm.xy; - mm.m12 = tm.yx; - mm.m22 = tm.yy; - mm.offsetX = tm.dx; - mm.offsetY = tm.dy; - m.matrix = mm; - r.renderTransform = m; - }else{ - r.renderTransform = null; - } - return this; - }, - getTextWidth: function(){ - // summary: get the text width in pixels - return this.rawNode.actualWidth; - } -}); -dojox.gfx.Text.nodeType = "TextBlock"; - -dojo.declare("dojox.gfx.Path", dojox.gfx.path.Path, { - // summary: a path shape (Silverlight) - _updateWithSegment: function(segment){ - // summary: updates the bounding box of path with new segment - // segment: Object: a segment - dojox.gfx.Path.superclass._updateWithSegment.apply(this, arguments); - var p = this.shape.path; - if(typeof(p) == "string"){ - this.rawNode.data = p ? p : null; - } - }, - setShape: function(newShape){ - // summary: forms a path using a shape (Silverlight) - // newShape: Object: an SVG path string or a path object (see dojox.gfx.defaultPath) - dojox.gfx.Path.superclass.setShape.apply(this, arguments); - var p = this.shape.path; - this.rawNode.data = p ? p : null; - return this; // self - } -}); -dojox.gfx.Path.nodeType = "Path"; - -dojo.declare("dojox.gfx.TextPath", dojox.gfx.path.TextPath, { - // summary: a textpath shape (Silverlight) - _updateWithSegment: function(segment){ - // summary: updates the bounding box of path with new segment - // segment: Object: a segment - }, - setShape: function(newShape){ - // summary: forms a path using a shape (Silverlight) - // newShape: Object: an SVG path string or a path object (see dojox.gfx.defaultPath) - }, - _setText: function(){ - } -}); -dojox.gfx.TextPath.nodeType = "text"; - -dojo.declare("dojox.gfx.Surface", dojox.gfx.shape.Surface, { - // summary: a surface object to be used for drawings (Silverlight) - constructor: function(){ - dojox.gfx.silverlight.Container._init.call(this); - }, - setDimensions: function(width, height){ - // summary: sets the width and height of the rawNode - // width: String: width of surface, e.g., "100px" - // height: String: height of surface, e.g., "100px" - this.width = dojox.gfx.normalizedLength(width); // in pixels - this.height = dojox.gfx.normalizedLength(height); // in pixels - var p = this.rawNode && this.rawNode.getHost(); - if(p){ - p.width = width; - p.height = height; - } - return this; // self - }, - getDimensions: function(){ - // summary: returns an object with properties "width" and "height" - var p = this.rawNode && this.rawNode.getHost(); - var t = p ? {width: p.content.actualWidth, height: p.content.actualHeight} : null; - if(t.width <= 0){ t.width = this.width; } - if(t.height <= 0){ t.height = this.height; } - return t; // Object - } -}); - -dojox.gfx.silverlight.surfaces = {}; - -dojox.gfx.createSurface = function(parentNode, width, height){ - // summary: creates a surface (Silverlight) - // parentNode: Node: a parent node - // width: String: width of surface, e.g., "100px" - // height: String: height of surface, e.g., "100px" - - var s = new dojox.gfx.Surface(); - parentNode = dojo.byId(parentNode); - // create an empty canvas - var t = parentNode.ownerDocument.createElement("script"); - t.type = "text/xaml"; - t.id = dojox.gfx._base._getUniqueId(); - t.text = "<Canvas xmlns='http://schemas.microsoft.com/client/2007' Name='" + dojox.gfx._base._getUniqueId() + "'/>"; - document.body.appendChild(t); - // create a plugin - var pluginName = dojox.gfx._base._getUniqueId(); - Silverlight.createObject( - "#" + t.id, // none - parentNode, - pluginName, - { // Plugin properties. - width: String(width), // Width of rectangular region of plugin in pixels. - height: String(height), // Height of rectangular region of plugin in pixels. - inplaceInstallPrompt: "false", // Determines whether to display in-place install prompt if invalid version detected. - //background: "white", // Background color of plugin. - //isWindowless: "false", // Determines whether to display plugin in Windowless mode. - background: "transparent", // Background color of plugin. - isWindowless: "true", // Determines whether to display plugin in Windowless mode. - framerate: "24", // MaxFrameRate property value. - version: "1.0" // Silverlight version. - }, - {}, - null, - null - ); - s.rawNode = dojo.byId(pluginName).content.root; - // register the plugin with its parent node - dojox.gfx.silverlight.surfaces[s.rawNode.name] = parentNode; - s.width = dojox.gfx.normalizedLength(width); // in pixels - s.height = dojox.gfx.normalizedLength(height); // in pixels - return s; // dojox.gfx.Surface -}; - -// Extenders - -dojox.gfx.silverlight.Font = { - _setFont: function(){ - // summary: sets a font object (Silverlight) - var f = this.fontStyle, r = this.rawNode, - fw = dojox.gfx.silverlight.fontweight, - fo = dojox.gfx.silverlight.fonts, t = f.family.toLowerCase(); - r.fontStyle = f.style == "italic" ? "Italic" : "Normal"; - r.fontWeight = f.weight in fw ? fw[f.weight] : f.weight; - r.fontSize = dojox.gfx.normalizedLength(f.size); - r.fontFamily = t in fo ? fo[t] : f.family; - } -}; - -dojox.gfx.silverlight.Container = { - _init: function(){ - dojox.gfx.shape.Container._init.call(this); - }, - add: function(shape){ - // summary: adds a shape to a group/surface - // shape: dojox.gfx.Shape: an VML shape object - if(this != shape.getParent()){ - //dojox.gfx.Group.superclass.add.apply(this, arguments); - //this.inherited(arguments); - dojox.gfx.shape.Container.add.apply(this, arguments); - this.rawNode.children.add(shape.rawNode); - } - return this; // self - }, - remove: function(shape, silently){ - // summary: remove a shape from a group/surface - // shape: dojox.gfx.Shape: an VML shape object - // silently: Boolean?: if true, regenerate a picture - if(this == shape.getParent()){ - var parent = shape.rawNode.getParent(); - if(parent){ - parent.children.remove(shape.rawNode); - } - //dojox.gfx.Group.superclass.remove.apply(this, arguments); - //this.inherited(arguments); - dojox.gfx.shape.Container.remove.apply(this, arguments); - } - return this; // self - }, - clear: function(){ - // summary: removes all shapes from a group/surface - this.rawNode.children.clear(); - //return this.inherited(arguments); // self - return dojox.gfx.shape.Container.clear.apply(this, arguments); - }, - _moveChildToFront: dojox.gfx.shape.Container._moveChildToFront, - _moveChildToBack: dojox.gfx.shape.Container._moveChildToBack -}; - -dojo.mixin(dojox.gfx.shape.Creator, { - createObject: function(shapeType, rawShape){ - // summary: creates an instance of the passed shapeType class - // shapeType: Function: a class constructor to create an instance of - // rawShape: Object: properties to be passed in to the classes "setShape" method - if(!this.rawNode){ return null; } - var shape = new shapeType(); - var node = this.rawNode.getHost().content.createFromXaml("<" + shapeType.nodeType + "/>"); - shape.setRawNode(node); - shape.setShape(rawShape); - this.add(shape); - return shape; // dojox.gfx.Shape - } -}); - -dojo.extend(dojox.gfx.Text, dojox.gfx.silverlight.Font); -//dojo.extend(dojox.gfx.TextPath, dojox.gfx.silverlight.Font); - -dojo.extend(dojox.gfx.Group, dojox.gfx.silverlight.Container); -dojo.extend(dojox.gfx.Group, dojox.gfx.shape.Creator); - -dojo.extend(dojox.gfx.Surface, dojox.gfx.silverlight.Container); -dojo.extend(dojox.gfx.Surface, dojox.gfx.shape.Creator); - -(function(){ - var surfaces = dojox.gfx.silverlight.surfaces; - var mouseFix = function(s, a){ - var ev = {target: s, currentTarget: s, - preventDefault: function(){}, stopPropagation: function(){}}; - if(a){ - ev.ctrlKey = a.ctrl; - ev.shiftKey = a.shift; - var p = a.getPosition(null); - ev.x = ev.offsetX = ev.layerX = p.x; - ev.y = ev.offsetY = ev.layerY = p.y; - // calculate clientX and clientY - var parent = surfaces[s.getHost().content.root.name]; - var t = dojo._abs(parent); - ev.clientX = t.x + p.x; - ev.clientY = t.y + p.y; - } - return ev; - }; - var keyFix = function(s, a){ - var ev = { - keyCode: a.platformKeyCode, - ctrlKey: a.ctrl, - shiftKey: a.shift - }; - return ev; - }; - var eventNames = { - onclick: {name: "MouseLeftButtonUp", fix: mouseFix}, - onmouseenter: {name: "MouseEnter", fix: mouseFix}, - onmouseleave: {name: "MouseLeave", fix: mouseFix}, - onmousedown: {name: "MouseLeftButtonDown", fix: mouseFix}, - onmouseup: {name: "MouseLeftButtonUp", fix: mouseFix}, - onmousemove: {name: "MouseMove", fix: mouseFix}, - onkeydown: {name: "KeyDown", fix: keyFix}, - onkeyup: {name: "KeyUp", fix: keyFix} - }; - var eventsProcessing = { - connect: function(name, object, method){ - var token, n = name in eventNames ? eventNames[name] : - {name: name, fix: function(){ return {}; }}; - if(arguments.length > 2){ - token = this.getEventSource().addEventListener(n.name, - function(s, a){ dojo.hitch(object, method)(n.fix(s, a)); }); - }else{ - token = this.getEventSource().addEventListener(n.name, - function(s, a){ object(n.fix(s, a)); }); - } - return {name: n.name, token: token}; - }, - disconnect: function(token){ - this.getEventSource().removeEventListener(token.name, token.token); - } - }; - dojo.extend(dojox.gfx.Shape, eventsProcessing); - dojo.extend(dojox.gfx.Surface, eventsProcessing); - dojox.gfx.equalSources = function(a, b){ - return a && b && a.equals(b); - } - -})(); - -} |