| 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 #include "SkPDFDevice.h" | 8 #include "SkPDFDevice.h" |
| 9 | 9 |
| 10 #include "SkAnnotationKeys.h" | 10 #include "SkAnnotationKeys.h" |
| (...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1056 // significant and should be encoded and not | 1056 // significant and should be encoded and not |
| 1057 // discarded. If true, the upper byte is encoded | 1057 // discarded. If true, the upper byte is encoded |
| 1058 // first. Otherwise, we assert the upper byte is | 1058 // first. Otherwise, we assert the upper byte is |
| 1059 // zero. | 1059 // zero. |
| 1060 static void write_wide_string(SkDynamicMemoryWStream* wStream, | 1060 static void write_wide_string(SkDynamicMemoryWStream* wStream, |
| 1061 const uint16_t* input, | 1061 const uint16_t* input, |
| 1062 size_t len, | 1062 size_t len, |
| 1063 bool wideChars) { | 1063 bool wideChars) { |
| 1064 if (wideChars) { | 1064 if (wideChars) { |
| 1065 SkASSERT(2 * len < 65535); | 1065 SkASSERT(2 * len < 65535); |
| 1066 static const char gHex[] = "0123456789ABCDEF"; | |
| 1067 wStream->writeText("<"); | 1066 wStream->writeText("<"); |
| 1068 for (size_t i = 0; i < len; i++) { | 1067 for (size_t i = 0; i < len; i++) { |
| 1069 char result[4]; // Big-endian | 1068 SkPDFUtils::WriteUInt16BE(wStream, input[i]); |
| 1070 result[0] = gHex[(input[i] >> 12) & 0xF]; | |
| 1071 result[1] = gHex[(input[i] >> 8) & 0xF]; | |
| 1072 result[2] = gHex[(input[i] >> 4) & 0xF]; | |
| 1073 result[3] = gHex[(input[i]) & 0xF]; | |
| 1074 wStream->write(result, 4); | |
| 1075 } | 1069 } |
| 1076 wStream->writeText(">"); | 1070 wStream->writeText(">"); |
| 1077 } else { | 1071 } else { |
| 1078 SkASSERT(len <= 65535); | 1072 SkASSERT(len <= 65535); |
| 1079 SkAutoMalloc buffer(len); // Remove every other byte. | 1073 SkAutoMalloc buffer(len); // Remove every other byte. |
| 1080 uint8_t* ptr = (uint8_t*)buffer.get(); | 1074 uint8_t* ptr = (uint8_t*)buffer.get(); |
| 1081 for (size_t i = 0; i < len; i++) { | 1075 for (size_t i = 0; i < len; i++) { |
| 1082 SkASSERT(0 == input[i] >> 8); | 1076 SkASSERT(0 == input[i] >> 8); |
| 1083 ptr[i] = static_cast<uint8_t>(input[i]); | 1077 ptr[i] = static_cast<uint8_t>(input[i]); |
| 1084 } | 1078 } |
| (...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2128 if (!pdfimage) { | 2122 if (!pdfimage) { |
| 2129 return; | 2123 return; |
| 2130 } | 2124 } |
| 2131 fDocument->serialize(pdfimage); // serialize images early. | 2125 fDocument->serialize(pdfimage); // serialize images early. |
| 2132 fDocument->canon()->addPDFBitmap(key, pdfimage); | 2126 fDocument->canon()->addPDFBitmap(key, pdfimage); |
| 2133 } | 2127 } |
| 2134 // TODO(halcanary): addXObjectResource() should take a sk_sp<SkPDFObject> | 2128 // TODO(halcanary): addXObjectResource() should take a sk_sp<SkPDFObject> |
| 2135 SkPDFUtils::DrawFormXObject(this->addXObjectResource(pdfimage.get()), | 2129 SkPDFUtils::DrawFormXObject(this->addXObjectResource(pdfimage.get()), |
| 2136 &content.entry()->fContent); | 2130 &content.entry()->fContent); |
| 2137 } | 2131 } |
| OLD | NEW |