OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 | 8 |
9 #include "SkData.h" | 9 #include "SkData.h" |
| 10 #include "SkFixed.h" |
10 #include "SkGeometry.h" | 11 #include "SkGeometry.h" |
11 #include "SkPDFResourceDict.h" | 12 #include "SkPDFResourceDict.h" |
12 #include "SkPDFUtils.h" | 13 #include "SkPDFUtils.h" |
13 #include "SkStream.h" | 14 #include "SkStream.h" |
14 #include "SkString.h" | 15 #include "SkString.h" |
15 #include "SkPDFTypes.h" | 16 #include "SkPDFTypes.h" |
16 | 17 |
17 #include <cmath> | 18 #include <cmath> |
18 | 19 |
19 sk_sp<SkPDFArray> SkPDFUtils::RectToArray(const SkRect& rect) { | 20 sk_sp<SkPDFArray> SkPDFUtils::RectToArray(const SkRect& rect) { |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 SkString resourceName = SkPDFResourceDict::getResourceName( | 245 SkString resourceName = SkPDFResourceDict::getResourceName( |
245 SkPDFResourceDict::kPattern_ResourceType, | 246 SkPDFResourceDict::kPattern_ResourceType, |
246 objectIndex); | 247 objectIndex); |
247 content->writeText("/Pattern CS/Pattern cs/"); | 248 content->writeText("/Pattern CS/Pattern cs/"); |
248 content->writeText(resourceName.c_str()); | 249 content->writeText(resourceName.c_str()); |
249 content->writeText(" SCN/"); | 250 content->writeText(" SCN/"); |
250 content->writeText(resourceName.c_str()); | 251 content->writeText(resourceName.c_str()); |
251 content->writeText(" scn\n"); | 252 content->writeText(" scn\n"); |
252 } | 253 } |
253 | 254 |
| 255 size_t SkPDFUtils::ColorToDecimal(uint8_t value, char result[5]) { |
| 256 if (value == 255 || value == 0) { |
| 257 result[0] = value ? '1' : '0'; |
| 258 result[1] = '\0'; |
| 259 return 1; |
| 260 } |
| 261 // int x = 0.5 + (1000.0 / 255.0) * value; |
| 262 int x = SkFixedRoundToInt((SK_Fixed1 * 1000 / 255) * value); |
| 263 result[0] = '.'; |
| 264 for (int i = 3; i > 0; --i) { |
| 265 result[i] = '0' + x % 10; |
| 266 x /= 10; |
| 267 } |
| 268 int j; |
| 269 for (j = 3; j > 1; --j) { |
| 270 if (result[j] != '0') { |
| 271 break; |
| 272 } |
| 273 } |
| 274 result[j + 1] = '\0'; |
| 275 return j + 1; |
| 276 } |
| 277 |
254 void SkPDFUtils::AppendScalar(SkScalar value, SkWStream* stream) { | 278 void SkPDFUtils::AppendScalar(SkScalar value, SkWStream* stream) { |
255 char result[kMaximumFloatDecimalLength]; | 279 char result[kMaximumFloatDecimalLength]; |
256 size_t len = SkPDFUtils::FloatToDecimal(SkScalarToFloat(value), result); | 280 size_t len = SkPDFUtils::FloatToDecimal(SkScalarToFloat(value), result); |
257 SkASSERT(len < kMaximumFloatDecimalLength); | 281 SkASSERT(len < kMaximumFloatDecimalLength); |
258 stream->write(result, len); | 282 stream->write(result, len); |
259 } | 283 } |
260 | 284 |
261 /** Write a string into result, includeing a terminating '\0' (for | 285 /** Write a string into result, includeing a terminating '\0' (for |
262 unit testing). Return strlen(result) (for SkWStream::write) The | 286 unit testing). Return strlen(result) (for SkWStream::write) The |
263 resulting string will be in the form /[-]?([0-9]*.)?[0-9]+/ and | 287 resulting string will be in the form /[-]?([0-9]*.)?[0-9]+/ and |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 uint8_t c = static_cast<uint8_t>(cin[i]); | 430 uint8_t c = static_cast<uint8_t>(cin[i]); |
407 static const char gHex[] = "0123456789ABCDEF"; | 431 static const char gHex[] = "0123456789ABCDEF"; |
408 char hexValue[2]; | 432 char hexValue[2]; |
409 hexValue[0] = gHex[(c >> 4) & 0xF]; | 433 hexValue[0] = gHex[(c >> 4) & 0xF]; |
410 hexValue[1] = gHex[ c & 0xF]; | 434 hexValue[1] = gHex[ c & 0xF]; |
411 wStream->write(hexValue, 2); | 435 wStream->write(hexValue, 2); |
412 } | 436 } |
413 wStream->writeText(">"); | 437 wStream->writeText(">"); |
414 } | 438 } |
415 } | 439 } |
OLD | NEW |