GoogleChart.
Dependents: GoogleChart_TestProgram
GoogleChart.cpp@0:ded8a44ff71f, 2010-08-17 (annotated)
- Committer:
- shintamainjp
- Date:
- Tue Aug 17 09:21:55 2010 +0000
- Revision:
- 0:ded8a44ff71f
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:ded8a44ff71f | 1 | /** |
shintamainjp | 0:ded8a44ff71f | 2 | * GoogleChart API interface driver. (Version 0.0.1) |
shintamainjp | 0:ded8a44ff71f | 3 | * |
shintamainjp | 0:ded8a44ff71f | 4 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:ded8a44ff71f | 5 | * http://shinta.main.jp/ |
shintamainjp | 0:ded8a44ff71f | 6 | */ |
shintamainjp | 0:ded8a44ff71f | 7 | |
shintamainjp | 0:ded8a44ff71f | 8 | #include "GoogleChart.h" |
shintamainjp | 0:ded8a44ff71f | 9 | |
shintamainjp | 0:ded8a44ff71f | 10 | const std::string GoogleChart::baseURL = "http://chart.apis.google.com/chart"; |
shintamainjp | 0:ded8a44ff71f | 11 | |
shintamainjp | 0:ded8a44ff71f | 12 | GoogleChart::GoogleChart() : title(""), width(300), height(225) { |
shintamainjp | 0:ded8a44ff71f | 13 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 14 | axislist[i] = 0; |
shintamainjp | 0:ded8a44ff71f | 15 | } |
shintamainjp | 0:ded8a44ff71f | 16 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 17 | datalist[i] = 0; |
shintamainjp | 0:ded8a44ff71f | 18 | } |
shintamainjp | 0:ded8a44ff71f | 19 | } |
shintamainjp | 0:ded8a44ff71f | 20 | |
shintamainjp | 0:ded8a44ff71f | 21 | GoogleChart::~GoogleChart() {} |
shintamainjp | 0:ded8a44ff71f | 22 | |
shintamainjp | 0:ded8a44ff71f | 23 | int GoogleChart::addNewAxis(Axis::Type type) { |
shintamainjp | 0:ded8a44ff71f | 24 | /* |
shintamainjp | 0:ded8a44ff71f | 25 | * Search maximum number of axis. |
shintamainjp | 0:ded8a44ff71f | 26 | */ |
shintamainjp | 0:ded8a44ff71f | 27 | int max = 0; |
shintamainjp | 0:ded8a44ff71f | 28 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 29 | if (0 != axislist[i]) { |
shintamainjp | 0:ded8a44ff71f | 30 | if (axislist[i]->getNumber() > max) { |
shintamainjp | 0:ded8a44ff71f | 31 | max = axislist[i]->getNumber(); |
shintamainjp | 0:ded8a44ff71f | 32 | } |
shintamainjp | 0:ded8a44ff71f | 33 | } |
shintamainjp | 0:ded8a44ff71f | 34 | } |
shintamainjp | 0:ded8a44ff71f | 35 | |
shintamainjp | 0:ded8a44ff71f | 36 | /* |
shintamainjp | 0:ded8a44ff71f | 37 | * Create a new axis. |
shintamainjp | 0:ded8a44ff71f | 38 | */ |
shintamainjp | 0:ded8a44ff71f | 39 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 40 | if (0 == axislist[i]) { |
shintamainjp | 0:ded8a44ff71f | 41 | axislist[i] = new Axis(max + 1, type); |
shintamainjp | 0:ded8a44ff71f | 42 | return max + 1; |
shintamainjp | 0:ded8a44ff71f | 43 | } |
shintamainjp | 0:ded8a44ff71f | 44 | } |
shintamainjp | 0:ded8a44ff71f | 45 | return -1; |
shintamainjp | 0:ded8a44ff71f | 46 | } |
shintamainjp | 0:ded8a44ff71f | 47 | |
shintamainjp | 0:ded8a44ff71f | 48 | int GoogleChart::setAxisType(const int number, Axis::Type type) { |
shintamainjp | 0:ded8a44ff71f | 49 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 50 | if (0 != axislist[i]) { |
shintamainjp | 0:ded8a44ff71f | 51 | if (axislist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 52 | axislist[i]->setType(type); |
shintamainjp | 0:ded8a44ff71f | 53 | return number; |
shintamainjp | 0:ded8a44ff71f | 54 | } |
shintamainjp | 0:ded8a44ff71f | 55 | } |
shintamainjp | 0:ded8a44ff71f | 56 | } |
shintamainjp | 0:ded8a44ff71f | 57 | return -1; |
shintamainjp | 0:ded8a44ff71f | 58 | } |
shintamainjp | 0:ded8a44ff71f | 59 | |
shintamainjp | 0:ded8a44ff71f | 60 | int GoogleChart::setAxisRange(const int number, int rangeStart, int rangeEnd) { |
shintamainjp | 0:ded8a44ff71f | 61 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 62 | if (0 != axislist[i]) { |
shintamainjp | 0:ded8a44ff71f | 63 | if (axislist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 64 | axislist[i]->setRangeStart(rangeStart); |
shintamainjp | 0:ded8a44ff71f | 65 | axislist[i]->setRangeEnd(rangeEnd); |
shintamainjp | 0:ded8a44ff71f | 66 | return number; |
shintamainjp | 0:ded8a44ff71f | 67 | } |
shintamainjp | 0:ded8a44ff71f | 68 | } |
shintamainjp | 0:ded8a44ff71f | 69 | } |
shintamainjp | 0:ded8a44ff71f | 70 | return -1; |
shintamainjp | 0:ded8a44ff71f | 71 | } |
shintamainjp | 0:ded8a44ff71f | 72 | |
shintamainjp | 0:ded8a44ff71f | 73 | int GoogleChart::removeAxis(const int number) { |
shintamainjp | 0:ded8a44ff71f | 74 | for (int i = 0; i < MAX_AXIS; i++) { |
shintamainjp | 0:ded8a44ff71f | 75 | if (0 != axislist[i]) { |
shintamainjp | 0:ded8a44ff71f | 76 | if (axislist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 77 | delete axislist[i]; |
shintamainjp | 0:ded8a44ff71f | 78 | axislist[i] = 0; |
shintamainjp | 0:ded8a44ff71f | 79 | return number; |
shintamainjp | 0:ded8a44ff71f | 80 | } |
shintamainjp | 0:ded8a44ff71f | 81 | } |
shintamainjp | 0:ded8a44ff71f | 82 | } |
shintamainjp | 0:ded8a44ff71f | 83 | return -1; |
shintamainjp | 0:ded8a44ff71f | 84 | } |
shintamainjp | 0:ded8a44ff71f | 85 | |
shintamainjp | 0:ded8a44ff71f | 86 | int GoogleChart::addNewDataSet(std::string label, const int size) { |
shintamainjp | 0:ded8a44ff71f | 87 | /* |
shintamainjp | 0:ded8a44ff71f | 88 | * Search maximum number of data set. |
shintamainjp | 0:ded8a44ff71f | 89 | */ |
shintamainjp | 0:ded8a44ff71f | 90 | int max = 0; |
shintamainjp | 0:ded8a44ff71f | 91 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 92 | if (0 != datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 93 | if (datalist[i]->getNumber() > max) { |
shintamainjp | 0:ded8a44ff71f | 94 | max = datalist[i]->getNumber(); |
shintamainjp | 0:ded8a44ff71f | 95 | } |
shintamainjp | 0:ded8a44ff71f | 96 | } |
shintamainjp | 0:ded8a44ff71f | 97 | } |
shintamainjp | 0:ded8a44ff71f | 98 | |
shintamainjp | 0:ded8a44ff71f | 99 | /* |
shintamainjp | 0:ded8a44ff71f | 100 | * Create a new data set. |
shintamainjp | 0:ded8a44ff71f | 101 | */ |
shintamainjp | 0:ded8a44ff71f | 102 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 103 | if (0 == datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 104 | datalist[i] = new DataSet(label, max + 1, size); |
shintamainjp | 0:ded8a44ff71f | 105 | return max + 1; |
shintamainjp | 0:ded8a44ff71f | 106 | } |
shintamainjp | 0:ded8a44ff71f | 107 | } |
shintamainjp | 0:ded8a44ff71f | 108 | return -1; |
shintamainjp | 0:ded8a44ff71f | 109 | } |
shintamainjp | 0:ded8a44ff71f | 110 | |
shintamainjp | 0:ded8a44ff71f | 111 | int GoogleChart::removeDataSet(const int number) { |
shintamainjp | 0:ded8a44ff71f | 112 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 113 | if (0 != datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 114 | if (datalist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 115 | delete datalist[i]; |
shintamainjp | 0:ded8a44ff71f | 116 | datalist[i] = 0; |
shintamainjp | 0:ded8a44ff71f | 117 | return number; |
shintamainjp | 0:ded8a44ff71f | 118 | } |
shintamainjp | 0:ded8a44ff71f | 119 | } |
shintamainjp | 0:ded8a44ff71f | 120 | } |
shintamainjp | 0:ded8a44ff71f | 121 | return -1; |
shintamainjp | 0:ded8a44ff71f | 122 | } |
shintamainjp | 0:ded8a44ff71f | 123 | |
shintamainjp | 0:ded8a44ff71f | 124 | int GoogleChart::addData(const int number, double data) { |
shintamainjp | 0:ded8a44ff71f | 125 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 126 | if (0 != datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 127 | if (datalist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 128 | datalist[i]->addData(data); |
shintamainjp | 0:ded8a44ff71f | 129 | return i; |
shintamainjp | 0:ded8a44ff71f | 130 | } |
shintamainjp | 0:ded8a44ff71f | 131 | } |
shintamainjp | 0:ded8a44ff71f | 132 | } |
shintamainjp | 0:ded8a44ff71f | 133 | return -1; |
shintamainjp | 0:ded8a44ff71f | 134 | } |
shintamainjp | 0:ded8a44ff71f | 135 | |
shintamainjp | 0:ded8a44ff71f | 136 | int GoogleChart::clearAllData(const int number) { |
shintamainjp | 0:ded8a44ff71f | 137 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 138 | if (0 != datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 139 | if (datalist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 140 | datalist[i]->clearAllData(); |
shintamainjp | 0:ded8a44ff71f | 141 | return i; |
shintamainjp | 0:ded8a44ff71f | 142 | } |
shintamainjp | 0:ded8a44ff71f | 143 | } |
shintamainjp | 0:ded8a44ff71f | 144 | } |
shintamainjp | 0:ded8a44ff71f | 145 | return -1; |
shintamainjp | 0:ded8a44ff71f | 146 | } |
shintamainjp | 0:ded8a44ff71f | 147 | |
shintamainjp | 0:ded8a44ff71f | 148 | int GoogleChart::setDataScale(const int number, int min, int max) { |
shintamainjp | 0:ded8a44ff71f | 149 | for (int i = 0; i < MAX_DATA; i++) { |
shintamainjp | 0:ded8a44ff71f | 150 | if (0 != datalist[i]) { |
shintamainjp | 0:ded8a44ff71f | 151 | if (datalist[i]->getNumber() == number) { |
shintamainjp | 0:ded8a44ff71f | 152 | datalist[i]->setScale(min, max); |
shintamainjp | 0:ded8a44ff71f | 153 | return i; |
shintamainjp | 0:ded8a44ff71f | 154 | } |
shintamainjp | 0:ded8a44ff71f | 155 | } |
shintamainjp | 0:ded8a44ff71f | 156 | } |
shintamainjp | 0:ded8a44ff71f | 157 | return -1; |
shintamainjp | 0:ded8a44ff71f | 158 | } |
shintamainjp | 0:ded8a44ff71f | 159 | |
shintamainjp | 0:ded8a44ff71f | 160 | void GoogleChart::setTitle(std::string title) { |
shintamainjp | 0:ded8a44ff71f | 161 | GoogleChart::title = title; |
shintamainjp | 0:ded8a44ff71f | 162 | } |
shintamainjp | 0:ded8a44ff71f | 163 | |
shintamainjp | 0:ded8a44ff71f | 164 | std::string GoogleChart::getTitle() const { |
shintamainjp | 0:ded8a44ff71f | 165 | return title; |
shintamainjp | 0:ded8a44ff71f | 166 | } |
shintamainjp | 0:ded8a44ff71f | 167 | |
shintamainjp | 0:ded8a44ff71f | 168 | void GoogleChart::setWidth(int width) { |
shintamainjp | 0:ded8a44ff71f | 169 | GoogleChart::width = width; |
shintamainjp | 0:ded8a44ff71f | 170 | } |
shintamainjp | 0:ded8a44ff71f | 171 | |
shintamainjp | 0:ded8a44ff71f | 172 | int GoogleChart::getWidth() const { |
shintamainjp | 0:ded8a44ff71f | 173 | return width; |
shintamainjp | 0:ded8a44ff71f | 174 | } |
shintamainjp | 0:ded8a44ff71f | 175 | |
shintamainjp | 0:ded8a44ff71f | 176 | void GoogleChart::setHeight(int height) { |
shintamainjp | 0:ded8a44ff71f | 177 | GoogleChart::height = height; |
shintamainjp | 0:ded8a44ff71f | 178 | } |
shintamainjp | 0:ded8a44ff71f | 179 | |
shintamainjp | 0:ded8a44ff71f | 180 | int GoogleChart::getHeight() const { |
shintamainjp | 0:ded8a44ff71f | 181 | return height; |
shintamainjp | 0:ded8a44ff71f | 182 | } |
shintamainjp | 0:ded8a44ff71f | 183 | |
shintamainjp | 0:ded8a44ff71f | 184 | std::string GoogleChart::toURL(std::string text) { |
shintamainjp | 0:ded8a44ff71f | 185 | static const char *unsafe_characters = " \"<>#%{}|\\^~[]`"; |
shintamainjp | 0:ded8a44ff71f | 186 | std::string s = ""; |
shintamainjp | 0:ded8a44ff71f | 187 | for (int i = 0; i < text.length(); i++) { |
shintamainjp | 0:ded8a44ff71f | 188 | char c = text.at(i); |
shintamainjp | 0:ded8a44ff71f | 189 | if (strchr(unsafe_characters, c) == NULL) { |
shintamainjp | 0:ded8a44ff71f | 190 | s = s + c; |
shintamainjp | 0:ded8a44ff71f | 191 | } else { |
shintamainjp | 0:ded8a44ff71f | 192 | char buf[8]; |
shintamainjp | 0:ded8a44ff71f | 193 | snprintf(buf, sizeof(buf), "%%%02X", c & 0xff); |
shintamainjp | 0:ded8a44ff71f | 194 | s = s + std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 195 | } |
shintamainjp | 0:ded8a44ff71f | 196 | } |
shintamainjp | 0:ded8a44ff71f | 197 | return s; |
shintamainjp | 0:ded8a44ff71f | 198 | } |
shintamainjp | 0:ded8a44ff71f | 199 | |
shintamainjp | 0:ded8a44ff71f | 200 | std::string GoogleChart::paramChartType(ChartType chartType) { |
shintamainjp | 0:ded8a44ff71f | 201 | /* |
shintamainjp | 0:ded8a44ff71f | 202 | * Chart Type. |
shintamainjp | 0:ded8a44ff71f | 203 | */ |
shintamainjp | 0:ded8a44ff71f | 204 | std::string s = "cht="; |
shintamainjp | 0:ded8a44ff71f | 205 | switch (chartType) { |
shintamainjp | 0:ded8a44ff71f | 206 | case LineChart: |
shintamainjp | 0:ded8a44ff71f | 207 | s = s + "lc"; |
shintamainjp | 0:ded8a44ff71f | 208 | break; |
shintamainjp | 0:ded8a44ff71f | 209 | default: |
shintamainjp | 0:ded8a44ff71f | 210 | s = s + "unknown"; |
shintamainjp | 0:ded8a44ff71f | 211 | break; |
shintamainjp | 0:ded8a44ff71f | 212 | } |
shintamainjp | 0:ded8a44ff71f | 213 | return s; |
shintamainjp | 0:ded8a44ff71f | 214 | } |
shintamainjp | 0:ded8a44ff71f | 215 | |
shintamainjp | 0:ded8a44ff71f | 216 | std::string GoogleChart::paramAxis(Axis **list, int size) { |
shintamainjp | 0:ded8a44ff71f | 217 | |
shintamainjp | 0:ded8a44ff71f | 218 | char buf[64]; |
shintamainjp | 0:ded8a44ff71f | 219 | /* |
shintamainjp | 0:ded8a44ff71f | 220 | * Axis type and range. |
shintamainjp | 0:ded8a44ff71f | 221 | */ |
shintamainjp | 0:ded8a44ff71f | 222 | int cnt = 0; |
shintamainjp | 0:ded8a44ff71f | 223 | std::string sType = "chxt="; |
shintamainjp | 0:ded8a44ff71f | 224 | std::string sRange = "chxr="; |
shintamainjp | 0:ded8a44ff71f | 225 | for (int i = 0; i < size; i++) { |
shintamainjp | 0:ded8a44ff71f | 226 | Axis *p = list[i]; |
shintamainjp | 0:ded8a44ff71f | 227 | if (0 != p) { |
shintamainjp | 0:ded8a44ff71f | 228 | /* |
shintamainjp | 0:ded8a44ff71f | 229 | * Type. |
shintamainjp | 0:ded8a44ff71f | 230 | */ |
shintamainjp | 0:ded8a44ff71f | 231 | if (0 < cnt) { |
shintamainjp | 0:ded8a44ff71f | 232 | sType = sType + ","; |
shintamainjp | 0:ded8a44ff71f | 233 | } |
shintamainjp | 0:ded8a44ff71f | 234 | switch (p->getType()) { |
shintamainjp | 0:ded8a44ff71f | 235 | case Axis::Bottom: |
shintamainjp | 0:ded8a44ff71f | 236 | sType = sType + "x"; |
shintamainjp | 0:ded8a44ff71f | 237 | break; |
shintamainjp | 0:ded8a44ff71f | 238 | case Axis::Left: |
shintamainjp | 0:ded8a44ff71f | 239 | sType = sType + "y"; |
shintamainjp | 0:ded8a44ff71f | 240 | break; |
shintamainjp | 0:ded8a44ff71f | 241 | case Axis::Right: |
shintamainjp | 0:ded8a44ff71f | 242 | sType = sType + "r"; |
shintamainjp | 0:ded8a44ff71f | 243 | break; |
shintamainjp | 0:ded8a44ff71f | 244 | case Axis::Top: |
shintamainjp | 0:ded8a44ff71f | 245 | sType = sType + "t"; |
shintamainjp | 0:ded8a44ff71f | 246 | break; |
shintamainjp | 0:ded8a44ff71f | 247 | default: |
shintamainjp | 0:ded8a44ff71f | 248 | sType = sType + "?"; |
shintamainjp | 0:ded8a44ff71f | 249 | break; |
shintamainjp | 0:ded8a44ff71f | 250 | } |
shintamainjp | 0:ded8a44ff71f | 251 | /* |
shintamainjp | 0:ded8a44ff71f | 252 | * Range. |
shintamainjp | 0:ded8a44ff71f | 253 | */ |
shintamainjp | 0:ded8a44ff71f | 254 | if (0 < cnt) { |
shintamainjp | 0:ded8a44ff71f | 255 | sRange = sRange + "|"; |
shintamainjp | 0:ded8a44ff71f | 256 | } |
shintamainjp | 0:ded8a44ff71f | 257 | snprintf(buf, sizeof(buf), "%d,%d,%d", cnt, p->getRangeStart(), p->getRangeEnd()); |
shintamainjp | 0:ded8a44ff71f | 258 | sRange = sRange + std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 259 | /* |
shintamainjp | 0:ded8a44ff71f | 260 | * Next. |
shintamainjp | 0:ded8a44ff71f | 261 | */ |
shintamainjp | 0:ded8a44ff71f | 262 | cnt++; |
shintamainjp | 0:ded8a44ff71f | 263 | } |
shintamainjp | 0:ded8a44ff71f | 264 | } |
shintamainjp | 0:ded8a44ff71f | 265 | |
shintamainjp | 0:ded8a44ff71f | 266 | return sRange + "&" + sType; |
shintamainjp | 0:ded8a44ff71f | 267 | } |
shintamainjp | 0:ded8a44ff71f | 268 | |
shintamainjp | 0:ded8a44ff71f | 269 | std::string GoogleChart::paramDataSet(DataSet **list, int size) { |
shintamainjp | 0:ded8a44ff71f | 270 | char buf[64]; |
shintamainjp | 0:ded8a44ff71f | 271 | int cnt = 0; |
shintamainjp | 0:ded8a44ff71f | 272 | std::string sData = "chd=t:"; |
shintamainjp | 0:ded8a44ff71f | 273 | std::string sScale = "chds="; |
shintamainjp | 0:ded8a44ff71f | 274 | std::string sLabel = "chdl="; |
shintamainjp | 0:ded8a44ff71f | 275 | for (int i = 0; i < size; i++) { |
shintamainjp | 0:ded8a44ff71f | 276 | DataSet *p = list[i]; |
shintamainjp | 0:ded8a44ff71f | 277 | if (0 != p) { |
shintamainjp | 0:ded8a44ff71f | 278 | /* |
shintamainjp | 0:ded8a44ff71f | 279 | * Data. |
shintamainjp | 0:ded8a44ff71f | 280 | */ |
shintamainjp | 0:ded8a44ff71f | 281 | if (0 < cnt) { |
shintamainjp | 0:ded8a44ff71f | 282 | sData = sData + "|"; |
shintamainjp | 0:ded8a44ff71f | 283 | } |
shintamainjp | 0:ded8a44ff71f | 284 | for (int i = 0; i < p->getDataCount(); i++) { |
shintamainjp | 0:ded8a44ff71f | 285 | double d = p->getData(i); |
shintamainjp | 0:ded8a44ff71f | 286 | snprintf(buf, sizeof(buf), "%.3f", d); |
shintamainjp | 0:ded8a44ff71f | 287 | if (0 < i) { |
shintamainjp | 0:ded8a44ff71f | 288 | sData = sData + ","; |
shintamainjp | 0:ded8a44ff71f | 289 | } |
shintamainjp | 0:ded8a44ff71f | 290 | sData = sData + std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 291 | } |
shintamainjp | 0:ded8a44ff71f | 292 | /* |
shintamainjp | 0:ded8a44ff71f | 293 | * Range. |
shintamainjp | 0:ded8a44ff71f | 294 | */ |
shintamainjp | 0:ded8a44ff71f | 295 | if (0 < cnt) { |
shintamainjp | 0:ded8a44ff71f | 296 | sScale = sScale + ","; |
shintamainjp | 0:ded8a44ff71f | 297 | } |
shintamainjp | 0:ded8a44ff71f | 298 | snprintf(buf, sizeof(buf), "%.3f,%.3f", p->getMin(), p->getMax()); |
shintamainjp | 0:ded8a44ff71f | 299 | sScale = sScale + std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 300 | /* |
shintamainjp | 0:ded8a44ff71f | 301 | * Label. |
shintamainjp | 0:ded8a44ff71f | 302 | */ |
shintamainjp | 0:ded8a44ff71f | 303 | if (0 < cnt) { |
shintamainjp | 0:ded8a44ff71f | 304 | sLabel = sLabel + "|"; |
shintamainjp | 0:ded8a44ff71f | 305 | } |
shintamainjp | 0:ded8a44ff71f | 306 | sLabel = sLabel + p->getLabel(); |
shintamainjp | 0:ded8a44ff71f | 307 | /* |
shintamainjp | 0:ded8a44ff71f | 308 | * Next. |
shintamainjp | 0:ded8a44ff71f | 309 | */ |
shintamainjp | 0:ded8a44ff71f | 310 | cnt++; |
shintamainjp | 0:ded8a44ff71f | 311 | } |
shintamainjp | 0:ded8a44ff71f | 312 | } |
shintamainjp | 0:ded8a44ff71f | 313 | |
shintamainjp | 0:ded8a44ff71f | 314 | return sScale + "&" + sData + "&" + sLabel; |
shintamainjp | 0:ded8a44ff71f | 315 | } |
shintamainjp | 0:ded8a44ff71f | 316 | |
shintamainjp | 0:ded8a44ff71f | 317 | std::string GoogleChart::paramTitle(std::string title, int color, double fontSize) { |
shintamainjp | 0:ded8a44ff71f | 318 | char buf[64]; |
shintamainjp | 0:ded8a44ff71f | 319 | std::string s = ""; |
shintamainjp | 0:ded8a44ff71f | 320 | /* |
shintamainjp | 0:ded8a44ff71f | 321 | * Chart Title Text. |
shintamainjp | 0:ded8a44ff71f | 322 | */ |
shintamainjp | 0:ded8a44ff71f | 323 | s = s + "chtt=" + title; |
shintamainjp | 0:ded8a44ff71f | 324 | /* |
shintamainjp | 0:ded8a44ff71f | 325 | * Chart Title Specification. |
shintamainjp | 0:ded8a44ff71f | 326 | */ |
shintamainjp | 0:ded8a44ff71f | 327 | snprintf(buf, sizeof(buf), "&chts=%06X,%.1f", color, fontSize); |
shintamainjp | 0:ded8a44ff71f | 328 | s = s + std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 329 | return s; |
shintamainjp | 0:ded8a44ff71f | 330 | } |
shintamainjp | 0:ded8a44ff71f | 331 | |
shintamainjp | 0:ded8a44ff71f | 332 | std::string GoogleChart::paramSize(int width, int height) { |
shintamainjp | 0:ded8a44ff71f | 333 | char buf[64]; |
shintamainjp | 0:ded8a44ff71f | 334 | /* |
shintamainjp | 0:ded8a44ff71f | 335 | * Chart Size. |
shintamainjp | 0:ded8a44ff71f | 336 | */ |
shintamainjp | 0:ded8a44ff71f | 337 | snprintf(buf, sizeof(buf), "chs=%dx%d", width, height); |
shintamainjp | 0:ded8a44ff71f | 338 | return std::string(buf); |
shintamainjp | 0:ded8a44ff71f | 339 | } |