aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/charting/Theme.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/charting/Theme.js')
-rw-r--r--includes/js/dojox/charting/Theme.js256
1 files changed, 0 insertions, 256 deletions
diff --git a/includes/js/dojox/charting/Theme.js b/includes/js/dojox/charting/Theme.js
deleted file mode 100644
index c7e3a6a..0000000
--- a/includes/js/dojox/charting/Theme.js
+++ /dev/null
@@ -1,256 +0,0 @@
-if(!dojo._hasResource["dojox.charting.Theme"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.charting.Theme"] = true;
-dojo.provide("dojox.charting.Theme");
-dojo.require("dojox.charting._color");
-
-(function(){
- var dxc=dojox.charting;
- // TODO: Legend information
-
- dxc.Theme = function(/*Object?*/ kwArgs){
- kwArgs=kwArgs||{};
- var def = dxc.Theme._def;
- dojo.forEach(["chart", "plotarea", "axis", "series", "marker"], function(n){
- this[n] = dojo.mixin(dojo.clone(def[n]), kwArgs[n]||{});
- }, this);
- this.markers = dojo.mixin(dojo.clone(dxc.Theme.Markers), kwArgs.markers||{});
- this.colors = [];
- this.antiAlias = ("antiAlias" in kwArgs)?kwArgs.antiAlias:true;
- this.assignColors = ("assignColors" in kwArgs)?kwArgs.assignColors:true;
- this.assignMarkers = ("assignMarkers" in kwArgs)?kwArgs.assignMarkers:true;
- this._colorCache = null;
-
- // push the colors, use _def colors if none passed.
- kwArgs.colors = kwArgs.colors||def.colors;
- dojo.forEach(kwArgs.colors, function(item){
- this.colors.push(item);
- }, this);
-
- // private variables for color and marker indexing
- this._current = { color:0, marker: 0 };
- this._markers = [];
- this._buildMarkerArray();
- };
-
- // "static" fields
- // default markers.
- // A marker is defined by an SVG path segment; it should be defined as
- // relative motion, and with the assumption that the path segment
- // will be moved to the value point (i.e prepend Mx,y)
- dxc.Theme.Markers={
- CIRCLE: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0",
- SQUARE: "m-3,-3 l0,6 6,0 0,-6 z",
- DIAMOND: "m0,-3 l3,3 -3,3 -3,-3 z",
- CROSS: "m0,-3 l0,6 m-3,-3 l6,0",
- X: "m-3,-3 l6,6 m0,-6 l-6,6",
- TRIANGLE: "m-3,3 l3,-6 3,6 z",
- TRIANGLE_INVERTED:"m-3,-3 l3,6 3,-6 z"
- };
- dxc.Theme._def={
- // all objects are structs used directly in dojox.gfx
- chart:{
- stroke:null,
- fill: "white"
- },
- plotarea:{
- stroke:null,
- fill: "white"
- },
- // TODO: label rotation on axis
- axis:{
- stroke: { // the axis itself
- color:"#333",
- width:1
- },
- line: { // gridlines
- color:"#ccc",
- width:1,
- style:"Dot",
- cap:"round"
- },
- majorTick: { // major ticks on axis
- color:"#666",
- width:1,
- length:6,
- position:"center"
- },
- minorTick: { // minor ticks on axis
- color:"#666",
- width:0.8,
- length:3,
- position:"center"
- },
- font: "normal normal normal 7pt Tahoma", // labels on axis
- fontColor:"#333" // color of labels
- },
- series:{
- outline: {width: 0.1, color: "#ccc"}, // line or outline
- stroke: {width: 1.5, color: "#333"}, // line or outline
- fill: "#ccc", // fill, if appropriate
- font: "normal normal normal 7pt Tahoma", // if there's a label
- fontColor: "#000" // color of labels
- },
- marker:{ // any markers on a series.
- stroke: {width:1}, // stroke or outline
- fill: "#333", // fill if needed
- font: "normal normal normal 7pt Tahoma", // label
- fontColor: "#000"
- },
- colors:[
- "#000","#111","#222","#333",
- "#444","#555","#666","#777",
- "#888","#999","#aaa","#bbb",
- "#ccc"
- ]
- };
-
- // prototype methods
- dojo.extend(dxc.Theme, {
- defineColors: function(obj){
- // summary:
- // Generate a set of colors for the theme based on keyword
- // arguments
- var kwArgs=obj||{};
-
- // deal with caching
- var cache = false;
- if(kwArgs.cache === undefined){ cache = true; }
- if(kwArgs.cache == true){ cache = true; }
-
- if(cache){
- this._colorCache=kwArgs;
- } else {
- var mix=this._colorCache||{};
- kwArgs=dojo.mixin(dojo.clone(mix), kwArgs);
- }
-
- var c=[], n=kwArgs.num||32; // the number of colors to generate
- if(kwArgs.colors){
- // we have an array of colors predefined, so fix for the number of series.
- var l=kwArgs.colors.length;
- for(var i=0; i<n; i++){
- c.push(kwArgs.colors[i%l]);
- }
- this.colors=c;
- }else if(kwArgs.hue){
- // single hue, generate a set based on brightness
- var s=kwArgs.saturation||100; // saturation
- var st=kwArgs.low||30;
- var end=kwArgs.high||90;
- var step=(end-st)/n; // brightness steps
- for(var i=0; i<n; i++){
- c.push(dxc._color.fromHsb(kwArgs.hue, s, st+(step*i)).toHex());
- }
- this.colors=c;
- }else if(kwArgs.stops){
- // create color ranges that are either equally distributed, or
- // (optionally) based on a passed "offset" property. If you
- // pass an array of Colors, it will equally distribute, if
- // you pass an array of structs { color, offset }, it will
- // use the offset (0.0 - 1.0) to distribute. Note that offset
- // values should be plotted on a line from 0.0 to 1.0--i.e.
- // they should be additive. For example:
- // [ {color, offset:0}, { color, offset:0.2 }, { color, offset:0.5 }, { color, offset:1.0 } ]
- //
- // If you use stops for colors, you MUST have a color at 0.0 and one
- // at 1.0.
-
- // figure out how many stops we have
- var l=kwArgs.stops.length;
- if(l<2){
- throw new Error(
- "dojox.charting.Theme::defineColors: when using stops to "
- + "define a color range, you MUST specify at least 2 colors."
- );
- }
-
- // figure out if the distribution is equal or not. Note that
- // colors may not exactly match the stops you define; because
- // color generation is linear (i.e. evenly divided on a linear
- // axis), it's very possible that a color will land in between
- // two stops and not exactly *at* a stop.
- //
- // The only two colors guaranteed will be the end stops (i.e.
- // the first and last stop), which will *always* be set as
- // the end stops.
- if(typeof(kwArgs.stops[0].offset) == "undefined"){
- // set up equal offsets
- var off=1/(l-1);
- for(var i=0; i<l; i++){
- kwArgs.stops[i]={
- color:kwArgs.stops[i],
- offset:off*i
- };
- }
- }
- // ensure the ends.
- kwArgs.stops[0].offset=0;
- kwArgs.stops[l-1].offset=1;
- kwArgs.stops.sort(function(a,b){ return a.offset-b.offset; });
-
- // create the colors.
- // first stop.
- c.push(kwArgs.stops[0].color.toHex());
-
- // TODO: calculate the blend at n/steps and set the color
-
- // last stop
- c.push(kwArgs.stops[l-1].color.toHex());
- this.colors=c;
- }
- },
-
- _buildMarkerArray: function(){
- this._markers = [];
- for(var p in this.markers){ this._markers.push(this.markers[p]); }
- // reset the position
- this._current.marker=0;
- },
-
- addMarker:function(/*String*/ name, /*String*/ segment){
- // summary:
- // Add a custom marker to this theme.
- // example:
- // | myTheme.addMarker("Ellipse", foo);
- this.markers[name]=segment;
- this._buildMarkerArray();
- },
- setMarkers:function(/*Object*/ obj){
- // summary:
- // Set all the markers of this theme at once. obj should be a
- // dictionary of keys and path segments.
- //
- // example:
- // | myTheme.setMarkers({ "CIRCLE": foo });
- this.markers=obj;
- this._buildMarkerArray();
- },
-
- next: function(/*String?*/ type){
- // summary:
- // get either the next color or the next marker, depending on
- // what was passed. If type is not passed, it assumes color.
- // type:
- // Optional. One of either "color" or "marker". Defaults to
- // "color".
- // example:
- // | var color = myTheme.next();
- // | var color = myTheme.next("color");
- // | var marker = myTheme.next("marker");
- if(type == "marker"){
- return this._markers[ this._current.marker++ % this._markers.length ];
- }else{
- return this.colors[ this._current.color++ % this.colors.length ];
- }
- },
- clear: function(){
- // summary:
- // resets both marker and color counters back to the start.
- // Subsequent calls to `next` will retrievie the first value
- // of each depending on the passed type.
- this._current = {color: 0, marker: 0};
- }
- });
-})();
-
-}