ruby-treemap-fork 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,115 @@
1
+ #
2
+ # svg_output.rb - RubyTreemap
3
+ #
4
+ # Copyright (c) 2006 by Andrew Bruno <aeb@qnot.org>
5
+ #
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ #
12
+
13
+ require 'cgi'
14
+
15
+ require File.dirname(__FILE__) + "/output_base"
16
+
17
+ class Treemap::SvgOutput < Treemap::OutputBase
18
+
19
+ def initialize
20
+ super
21
+
22
+ yield self if block_given?
23
+ end
24
+
25
+ def node_label(node)
26
+ CGI.escapeHTML(node.label)
27
+ end
28
+
29
+ def draw_node_body(node)
30
+ draw_label(node)
31
+ end
32
+
33
+ def draw_label(node)
34
+ # center label in box
35
+ label = ""
36
+ label += "<text style=\"text-anchor: middle\" font-size=\"15\""
37
+ label += " x=\"" + (node.bounds.x1 + node.bounds.width / 2).to_s + "\""
38
+ label += " y=\"" + (node.bounds.y1 + node.bounds.height / 2).to_s + "\">"
39
+ label += node_label(node)
40
+ label += "</text>\n"
41
+
42
+ label
43
+ end
44
+
45
+ def node_color(node)
46
+ color = "#CCCCCC"
47
+
48
+ if(!node.color.nil?)
49
+ if(not Numeric === node.color)
50
+ color = node.color
51
+ else
52
+ color = "#" + @color.get_hex_color(node.color)
53
+ end
54
+ end
55
+
56
+ color
57
+ end
58
+
59
+ def to_png(node, filename="treemap.png")
60
+ require 'RMagick'
61
+
62
+ svg = to_svg(node)
63
+ img = Magick::Image.from_blob(svg) { self.format = "SVG" }
64
+ img[0].write(filename)
65
+ end
66
+
67
+ def to_svg(node)
68
+ bounds = self.bounds
69
+
70
+ @layout.process(node, bounds)
71
+
72
+ draw_map(node)
73
+ end
74
+
75
+ def draw_map(node)
76
+ svg = "<svg"
77
+ svg += " xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\""
78
+ svg += " xmlns:ev=\"http://www.w3.org/2001/xml-events\""
79
+ svg += " width=\"" + (node.bounds.width).to_s + "\" height=\"" + (node.bounds.height).to_s + "\">"
80
+
81
+ svg += draw_node(node)
82
+ svg += "</svg>"
83
+ svg
84
+ end
85
+
86
+ def draw_node(node)
87
+ return "" if node.bounds.nil?
88
+
89
+ svg = ""
90
+ svg += "<rect"
91
+ svg += " id=\"rect-" + node.id.to_s + "\""
92
+ svg += " x=\"" + node.bounds.x1.to_s + "\""
93
+ svg += " y=\"" + node.bounds.y1.to_s + "\""
94
+ svg += " width=\"" + node.bounds.width.to_s + "\""
95
+ svg += " height=\"" + node.bounds.height.to_s + "\""
96
+ #svg += " style=\""
97
+ #svg += " fill: " + node_color(node) + ";"
98
+ #svg += " stroke: #000000;"
99
+ #svg += " stroke-width: 1px;"
100
+ svg += " fill=\"" + node_color(node) + "\""
101
+ svg += " stroke=\"#000000\""
102
+ svg += " stroke-width=\"1px\""
103
+ svg += " />\n"
104
+
105
+ svg += draw_node_body(node)
106
+
107
+ if(!node.children.nil? and node.children.size > 0)
108
+ node.children.each do |c|
109
+ svg += draw_node(c)
110
+ end
111
+ end
112
+
113
+ svg
114
+ end
115
+ end
@@ -0,0 +1 @@
1
+ <div><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EC6F70;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB6F71;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7071;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7072;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7172;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7173;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7273;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7274;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7374;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7375;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7475;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7476;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EB7576;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7577;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7678;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7678;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7779;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7879;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA787A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA797A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA797B;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7A7B;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7A7C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7B7C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #EA7B7D;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97C7E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97C7E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97D7F;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97D7F;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97E80;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97E80;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E97F81;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E98081;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E98082;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E98182;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E98183;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E98283;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88284;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88385;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88385;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88486;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88486;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88587;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88587;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88688;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88688;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88789;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E88889;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E8888A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E7898A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E7898B;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78A8C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78A8C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78B8D;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78B8D;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78C8E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78C8E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78D8F;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78D8F;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78E90;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E78E90;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E68F91;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69091;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69092;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69193;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69193;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69294;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69294;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69395;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69395;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69496;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69496;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E69597;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59597;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59698;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59699;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59799;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E5989A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E5989A;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E5999B;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E5999B;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59A9C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59A9C;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59B9D;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E59B9D;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49C9E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49C9E;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49D9F;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49DA0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49EA0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49EA1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49FA1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E49FA2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E4A0A2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E4A1A3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E4A1A3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E4A2A4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A2A4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A3A5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A3A5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A4A6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A4A7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A5A7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A5A8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A6A8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A6A9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A7A9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A7AA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A8AA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E3A9AB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2A9AB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2AAAC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2AAAC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ABAD;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ABAE;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ACAE;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ACAF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ADAF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2ADB0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2AEB0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2AEB1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E2AFB1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1AFB2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B0B2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B1B3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B1B4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B2B4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B2B5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B3B5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B3B6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B4B6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B4B7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B5B7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E1B5B8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B6B8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B6B9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B7B9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B7BA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B8BB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B9BB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0B9BC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0BABC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0BABD;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0BBBD;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0BBBE;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #E0BCBE;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBCBF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBDBF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBDC0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBEC0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBEC1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBFC2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFBFC2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFC0C3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFC1C3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFC1C4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFC2C4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DFC2C5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC3C5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC3C6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC4C6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC4C7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC5C7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC5C8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC6C9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC6C9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC7CA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC7CA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC8CB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DEC8CB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDC9CC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCACC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCACD;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCBCD;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCBCE;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCCCF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCCCF;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCDD0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCDD0;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCED1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCED1;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DDCFD2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCCFD2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD0D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD0D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD1D4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD2D4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD2D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD4D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD4D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD5D8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DCD5D8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD6D9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD6D9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD7DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD7DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD8DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD8DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DBD9DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DAD9DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #DAD9DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D9D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D9D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D8D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D8D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D7D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D7D8DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D6D7DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D6D7DC;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D5D7DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D4D7DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D4D7DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D3D7DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D3D6DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D2D6DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D2D6DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D1D6DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D1D6DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D0D5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #D0D5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CFD5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CED5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CED5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CDD5DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CDD4DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CCD4DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CCD4DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CBD4DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CBD4DB;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #CAD3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C9D3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C9D3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C8D3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C8D3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C7D3DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C7D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C6D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C6D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C5D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C5D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C4D2DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C3D1DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C3D1DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C2D1DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C2D1DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C1D1DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C1D0DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C0D0DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #C0D0DA;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BFD0D9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BFD0D9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BED0D9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BDCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BDCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BCCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BCCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BBCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BBCFD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BACED9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #BACED9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B9CED9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B9CED9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B8CED9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B7CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B7CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B6CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B6CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B5CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B5CDD9;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B4CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B4CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B3CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B2CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B2CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B1CCD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B1CBD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B0CBD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #B0CBD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AFCBD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AFCBD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AECAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AECAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #ADCAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #ACCAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #ACCAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #ABCAD8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #ABC9D8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AAC9D8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #AAC9D8;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A9C9D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A9C9D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A8C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A8C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A7C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A6C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A6C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A5C8D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A5C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A4C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A4C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A3C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A3C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A2C7D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A2C6D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A1C6D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A0C6D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #A0C6D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9FC6D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9FC5D7;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9EC5D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9EC5D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9DC5D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9DC5D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9CC5D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9BC4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9BC4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9AC4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #9AC4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #99C4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #99C4D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #98C3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #98C3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #97C3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #97C3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #96C3D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #95C2D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #95C2D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #94C2D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #94C2D6;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #93C2D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #93C2D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #92C1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #92C1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #91C1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #91C1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #90C1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8FC1D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8FC0D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8EC0D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8EC0D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8DC0D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8DC0D5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8CBFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8CBFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8BBFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8BBFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #8ABFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #89BFD5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #89BED5;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #88BED4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #88BED4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #87BED4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #87BED4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #86BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #86BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #85BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #84BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #84BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #83BDD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #83BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #82BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #82BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #81BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #81BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #80BCD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #80BBD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7FBBD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7EBBD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7EBBD4;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7DBBD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7DBAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7CBAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7CBAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7BBAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7BBAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7ABAD3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #7AB9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #79B9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #78B9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #78B9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #77B9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #77B9D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #76B8D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #76B8D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #75B8D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #75B8D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #74B8D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #74B7D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #73B7D3;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #72B7D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #72B7D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #71B7D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #71B7D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #70B6D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #70B6D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #6FB6D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #6FB6D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #6EB6D2;"><img width="1" height="1" /></span><span style="display: block; float: left;width: 1px;height: 20px;background-color: #6EB6D2;"><img width="1" height="1" /></span></div>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><title>Treemap - all</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">.node {
2
+ border: 1px solid black;
3
+ }
4
+ .label {
5
+ color: #FFFFFF;
6
+ font-size: 11px;
7
+ }
8
+ .label-heading {
9
+ color: #FFFFFF;
10
+ font-size: 14pt;
11
+ font-weight: bold;
12
+ text-decoration: underline;
13
+ }
14
+ </style></head><body><div id="node-1" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 0px;width: 800px; height: 600px;background-color: #CCCCCC;" class="node treemap-root"><span class="label" style="font-size:77px">all</span><div id="node-10" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 0px;width: 560px; height: 600px;background-color: #CCCCCC;border: 1px solid black;" class="node"><span style="overflow: hidden; position: absolute;margin-top: 268px;left: 0px; top: 0px; width: 100%; height: 100%; line-height: 100%; text-align: center;z-index: 100;font-size:64px;" class="label-heading">Child4</span><div id="node-12" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 0px;width: 345px; height: 557px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:49px">Child4-40</span></div><div id="node-13" style="overflow: hidden; position: absolute; display: inline;left: 345px; top: 0px;width: 215px; height: 557px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:38px">Child5</span><div id="node-16" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 0px;width: 215px; height: 245px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:25px">Child5-11</span></div><div id="node-15" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 245px;width: 215px; height: 178px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:21px">Child5-8</span></div><div id="node-14" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 423px;width: 215px; height: 134px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:19px">Child5-6</span></div></div><div id="node-11" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 557px;width: 560px; height: 43px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:17px">Child4-5</span></div></div><div id="node-2" style="overflow: hidden; position: absolute; display: inline;left: 560px; top: 0px;width: 240px; height: 240px;background-color: #CCCCCC;border: 1px solid black;" class="node"><span style="overflow: hidden; position: absolute;margin-top: 107px;left: 0px; top: 0px; width: 100%; height: 100%; line-height: 100%; text-align: center;z-index: 100;font-size:26px;" class="label-heading">Child1</span></div><div id="node-4" style="overflow: hidden; position: absolute; display: inline;left: 560px; top: 240px;width: 240px; height: 200px;background-color: #CCCCCC;border: 1px solid black;" class="node"><span style="overflow: hidden; position: absolute;margin-top: 88px;left: 0px; top: 0px; width: 100%; height: 100%; line-height: 100%; text-align: center;z-index: 100;font-size:24px;" class="label-heading">Child3</span><div id="node-8" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 0px;width: 103px; height: 140px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:13px">Child3-3</span></div><div id="node-6" style="overflow: hidden; position: absolute; display: inline;left: 103px; top: 0px;width: 69px; height: 140px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:11px">Child3-2</span></div><div id="node-5" style="overflow: hidden; position: absolute; display: inline;left: 172px; top: 0px;width: 68px; height: 140px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:10px">Child3-2</span></div><div id="node-7" style="overflow: hidden; position: absolute; display: inline;left: 0px; top: 140px;width: 160px; height: 60px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:10px">Child3-2</span></div><div id="node-9" style="overflow: hidden; position: absolute; display: inline;left: 160px; top: 140px;width: 80px; height: 60px;background-color: #CCCCCC;" class="node"><span class="label" style="font-size:7px">Child3-1</span></div></div><div id="node-3" style="overflow: hidden; position: absolute; display: inline;left: 560px; top: 440px;width: 240px; height: 160px;background-color: #CCCCCC;border: 1px solid black;" class="node"><span style="overflow: hidden; position: absolute;margin-top: 70px;left: 0px; top: 0px; width: 100%; height: 100%; line-height: 100%; text-align: center;z-index: 100;font-size:21px;" class="label-heading">Child2</span></div></div></body></html>
@@ -0,0 +1,17 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestColor < Test::Unit::TestCase
5
+ def test_color
6
+ g = Treemap::GradientColor.new do |g|
7
+ g.min_color = "FC0404"
8
+ g.mean_color = "DBD9DC"
9
+ g.max_color = "0092C8"
10
+ g.increment = 0.5
11
+ end
12
+
13
+ File.open(File.dirname(__FILE__) + '/color_test.html', "w") do |f|
14
+ f.puts g.to_html
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestHTMLOutput < Test::Unit::TestCase
5
+ include TestTreemapBase
6
+
7
+ def setup
8
+ @root = setup_root
9
+ end
10
+
11
+ def test_html_output
12
+ output = Treemap::HtmlOutput.new do |o|
13
+ o.width = 800
14
+ o.height = 600
15
+ o.center_labels_at_depth = 1
16
+ end
17
+
18
+ File.open(File.dirname(__FILE__) + '/html_test.html', "w") do |f|
19
+ f.puts output.to_html(@root)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestSimple < Test::Unit::TestCase
5
+ def setup
6
+ @root = Treemap::Node.new
7
+ @root.new_child(:size => 6)
8
+ @root.new_child(:size => 6)
9
+ @root.new_child(:size => 4)
10
+ @root.new_child(:size => 3)
11
+ @root.new_child(:size => 2)
12
+ @root.new_child(:size => 2)
13
+ @root.new_child(:size => 1)
14
+ end
15
+
16
+ def test_simple
17
+ output = Treemap::ImageOutput.new do |o|
18
+ o.width = 600
19
+ o.height = 400
20
+ o.layout = Treemap::SquarifiedLayout.new
21
+ end
22
+
23
+ bounds = Treemap::Rectangle.new(0, 0, 600, 400)
24
+ output.layout.process(@root, bounds)
25
+
26
+ Treemap::dump_tree(@root)
27
+
28
+ output.to_png(@root, File.dirname(__FILE__) + '/simple_test.png')
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestSlice < Test::Unit::TestCase
5
+ include TestTreemapBase
6
+
7
+ def setup
8
+ @root = setup_root
9
+ end
10
+
11
+ def test_slice
12
+ output = Treemap::ImageOutput.new do |o|
13
+ o.width = 800
14
+ o.height = 600
15
+ o.layout = Treemap::SliceLayout.new
16
+ end
17
+
18
+ output.to_png(@root, File.dirname(__FILE__) + '/slice_test.png')
19
+
20
+ bounds = Treemap::Rectangle.new(0, 0, 800, 600)
21
+ output.layout.process(@root, bounds)
22
+
23
+ Treemap::dump_tree(@root)
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestSquarified < Test::Unit::TestCase
5
+ include TestTreemapBase
6
+
7
+ def setup
8
+ @root = setup_root
9
+ end
10
+
11
+ def test_squarified
12
+ output = Treemap::ImageOutput.new do |o|
13
+ o.width = 800
14
+ o.height = 600
15
+ o.layout = Treemap::SquarifiedLayout.new
16
+ end
17
+
18
+ output.to_png(@root, File.dirname(__FILE__) + '/squarified_test.png')
19
+
20
+ bounds = Treemap::Rectangle.new(0, 0, 800, 600)
21
+ output.layout.process(@root, bounds)
22
+
23
+ Treemap::dump_tree(@root)
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+
2
+ require "test_base"
3
+
4
+ class TestSvgOutput < Test::Unit::TestCase
5
+ include TestTreemapBase
6
+
7
+ def setup
8
+ @root = setup_root
9
+ end
10
+
11
+ def test_svg_output
12
+ output = Treemap::SvgOutput.new do |o|
13
+ o.width = 800
14
+ o.height = 600
15
+ end
16
+
17
+ File.open(File.dirname(__FILE__) + '/svg_test.svg', "w") do |f|
18
+ f.puts output.to_svg(@root)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,39 @@
1
+
2
+ require "test/unit"
3
+ require "treemap"
4
+ begin
5
+ require "RMagick"
6
+ require "treemap/image_output"
7
+ require "treemap/svg_output"
8
+ rescue LoadError
9
+ end
10
+
11
+ module TestTreemapBase
12
+ def setup_root
13
+ root = Treemap::Node.new(:size => 100, :label => "all")
14
+
15
+ root.new_child(:size => 12, :label => "Child1")
16
+ root.new_child(:size => 8, :label => "Child2")
17
+
18
+ child3 = Treemap::Node.new(:size => 10, :label => "Child3")
19
+ [2,2,2,3,1].each do |n|
20
+ child3.new_child(:size => n, :label => "Child3-"+n.to_s)
21
+ end
22
+ root.add_child(child3)
23
+
24
+ child4 = Treemap::Node.new(:size => 70, :label => "Child4")
25
+ [5, 40].each do |n|
26
+ child4.new_child(:size => n, :label => "Child4-"+n.to_s)
27
+ end
28
+
29
+ child5 = Treemap::Node.new(:size => 25, :label => "Child5")
30
+ [6,8,11].each do |n|
31
+ child5.new_child(:size => n, :label => "Child5-"+n.to_s)
32
+ end
33
+
34
+ child4.add_child(child5)
35
+ root.add_child(child4)
36
+
37
+ root
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-treemap-fork
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Bruno
8
+ autorequire: treemap
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Treemap visualization in ruby
14
+ email: aeb@qnot.org
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files:
18
+ - README
19
+ - EXAMPLES
20
+ files:
21
+ - Rakefile
22
+ - TODO
23
+ - EXAMPLES
24
+ - README
25
+ - ChangeLog
26
+ - COPYING
27
+ - lib/treemap/color_base.rb
28
+ - lib/treemap/gradient_color.rb
29
+ - lib/treemap/html_output.rb
30
+ - lib/treemap/image_output.rb
31
+ - lib/treemap/layout_base.rb
32
+ - lib/treemap/node.rb
33
+ - lib/treemap/output_base.rb
34
+ - lib/treemap/rectangle.rb
35
+ - lib/treemap/slice_layout.rb
36
+ - lib/treemap/squarified_layout.rb
37
+ - lib/treemap/svg_output.rb
38
+ - lib/treemap.rb
39
+ - test/color_test.html
40
+ - test/html_test.html
41
+ - test/tc_color.rb
42
+ - test/tc_html.rb
43
+ - test/tc_simple.rb
44
+ - test/tc_slice.rb
45
+ - test/tc_squarified.rb
46
+ - test/tc_svg.rb
47
+ - test/test_base.rb
48
+ homepage: http://rubytreemap.rubyforge.org/
49
+ licenses: []
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options:
53
+ - --main
54
+ - README
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements:
68
+ - none
69
+ rubyforge_project:
70
+ rubygems_version: 2.0.5
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Treemap visualization in ruby
74
+ test_files: []