| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "Resources.h" | 8 #include "Resources.h" |
| 9 #include "SkAnnotationKeys.h" | 9 #include "SkAnnotationKeys.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 | 97 |
| 98 template<> struct SerializationUtils<SkColor> { | 98 template<> struct SerializationUtils<SkColor> { |
| 99 static void Write(SkWriteBuffer& writer, SkColor* data, uint32_t arraySize)
{ | 99 static void Write(SkWriteBuffer& writer, SkColor* data, uint32_t arraySize)
{ |
| 100 writer.writeColorArray(data, arraySize); | 100 writer.writeColorArray(data, arraySize); |
| 101 } | 101 } |
| 102 static bool Read(SkValidatingReadBuffer& reader, SkColor* data, uint32_t arr
aySize) { | 102 static bool Read(SkValidatingReadBuffer& reader, SkColor* data, uint32_t arr
aySize) { |
| 103 return reader.readColorArray(data, arraySize); | 103 return reader.readColorArray(data, arraySize); |
| 104 } | 104 } |
| 105 }; | 105 }; |
| 106 | 106 |
| 107 template<> struct SerializationUtils<SkColor4f> { |
| 108 static void Write(SkWriteBuffer& writer, SkColor4f* data, uint32_t arraySize
) { |
| 109 writer.writeColor4fArray(data, arraySize); |
| 110 } |
| 111 static bool Read(SkValidatingReadBuffer& reader, SkColor4f* data, uint32_t a
rraySize) { |
| 112 return reader.readColor4fArray(data, arraySize); |
| 113 } |
| 114 }; |
| 115 |
| 107 template<> struct SerializationUtils<int32_t> { | 116 template<> struct SerializationUtils<int32_t> { |
| 108 static void Write(SkWriteBuffer& writer, int32_t* data, uint32_t arraySize)
{ | 117 static void Write(SkWriteBuffer& writer, int32_t* data, uint32_t arraySize)
{ |
| 109 writer.writeIntArray(data, arraySize); | 118 writer.writeIntArray(data, arraySize); |
| 110 } | 119 } |
| 111 static bool Read(SkValidatingReadBuffer& reader, int32_t* data, uint32_t arr
aySize) { | 120 static bool Read(SkValidatingReadBuffer& reader, int32_t* data, uint32_t arr
aySize) { |
| 112 return reader.readIntArray(data, arraySize); | 121 return reader.readIntArray(data, arraySize); |
| 113 } | 122 } |
| 114 }; | 123 }; |
| 115 | 124 |
| 116 template<> struct SerializationUtils<SkPoint> { | 125 template<> struct SerializationUtils<SkPoint> { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 } | 227 } |
| 219 | 228 |
| 220 template<typename T> | 229 template<typename T> |
| 221 static void TestArraySerialization(T* data, skiatest::Reporter* reporter) { | 230 static void TestArraySerialization(T* data, skiatest::Reporter* reporter) { |
| 222 SkBinaryWriteBuffer writer; | 231 SkBinaryWriteBuffer writer; |
| 223 SerializationUtils<T>::Write(writer, data, kArraySize); | 232 SerializationUtils<T>::Write(writer, data, kArraySize); |
| 224 size_t bytesWritten = writer.bytesWritten(); | 233 size_t bytesWritten = writer.bytesWritten(); |
| 225 // This should write the length (in 4 bytes) and the array | 234 // This should write the length (in 4 bytes) and the array |
| 226 REPORTER_ASSERT(reporter, (4 + kArraySize * sizeof(T)) == bytesWritten); | 235 REPORTER_ASSERT(reporter, (4 + kArraySize * sizeof(T)) == bytesWritten); |
| 227 | 236 |
| 228 unsigned char dataWritten[1024]; | 237 unsigned char dataWritten[2048]; |
| 229 writer.writeToMemory(dataWritten); | 238 writer.writeToMemory(dataWritten); |
| 230 | 239 |
| 231 // Make sure this fails when it should | 240 // Make sure this fails when it should |
| 232 SkValidatingReadBuffer buffer(dataWritten, bytesWritten); | 241 SkValidatingReadBuffer buffer(dataWritten, bytesWritten); |
| 233 T dataRead[kArraySize]; | 242 T dataRead[kArraySize]; |
| 234 bool success = SerializationUtils<T>::Read(buffer, dataRead, kArraySize / 2)
; | 243 bool success = SerializationUtils<T>::Read(buffer, dataRead, kArraySize / 2)
; |
| 235 // This should have failed, since the provided size was too small | 244 // This should have failed, since the provided size was too small |
| 236 REPORTER_ASSERT(reporter, !success); | 245 REPORTER_ASSERT(reporter, !success); |
| 237 | 246 |
| 238 // Make sure this succeeds when it should | 247 // Make sure this succeeds when it should |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 unsigned char data[kArraySize] = { 1, 2, 3 }; | 496 unsigned char data[kArraySize] = { 1, 2, 3 }; |
| 488 TestArraySerialization(data, reporter); | 497 TestArraySerialization(data, reporter); |
| 489 } | 498 } |
| 490 | 499 |
| 491 // Test readColorArray | 500 // Test readColorArray |
| 492 { | 501 { |
| 493 SkColor data[kArraySize] = { SK_ColorBLACK, SK_ColorWHITE, SK_ColorRED }
; | 502 SkColor data[kArraySize] = { SK_ColorBLACK, SK_ColorWHITE, SK_ColorRED }
; |
| 494 TestArraySerialization(data, reporter); | 503 TestArraySerialization(data, reporter); |
| 495 } | 504 } |
| 496 | 505 |
| 506 // Test readColor4fArray |
| 507 { |
| 508 SkColor4f data[kArraySize] = { |
| 509 SkColor4f::FromColor(SK_ColorBLACK), |
| 510 SkColor4f::FromColor(SK_ColorWHITE), |
| 511 SkColor4f::FromColor(SK_ColorRED), |
| 512 { 1.f, 2.f, 4.f, 8.f } |
| 513 }; |
| 514 TestArraySerialization(data, reporter); |
| 515 } |
| 516 |
| 497 // Test readIntArray | 517 // Test readIntArray |
| 498 { | 518 { |
| 499 int32_t data[kArraySize] = { 1, 2, 4, 8 }; | 519 int32_t data[kArraySize] = { 1, 2, 4, 8 }; |
| 500 TestArraySerialization(data, reporter); | 520 TestArraySerialization(data, reporter); |
| 501 } | 521 } |
| 502 | 522 |
| 503 // Test readPointArray | 523 // Test readPointArray |
| 504 { | 524 { |
| 505 SkPoint data[kArraySize] = { {6, 7}, {42, 128} }; | 525 SkPoint data[kArraySize] = { {6, 7}, {42, 128} }; |
| 506 TestArraySerialization(data, reporter); | 526 TestArraySerialization(data, reporter); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), std::move(d1) }, | 714 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), std::move(d1) }, |
| 695 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), std::move(d2) }, | 715 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), std::move(d2) }, |
| 696 }; | 716 }; |
| 697 | 717 |
| 698 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); | 718 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); |
| 699 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); | 719 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); |
| 700 | 720 |
| 701 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); | 721 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); |
| 702 canvas.drawPicture(pict1); | 722 canvas.drawPicture(pict1); |
| 703 } | 723 } |
| OLD | NEW |