| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkDrawCommand.h" | 10 #include "SkDrawCommand.h" |
| 11 #include "SkBlurMaskFilter.h" | 11 #include "SkBlurMaskFilter.h" |
| 12 #include "SkColorFilter.h" | 12 #include "SkColorFilter.h" |
| 13 #include "SkDashPathEffect.h" | 13 #include "SkDashPathEffect.h" |
| 14 #include "SkImageFilter.h" | 14 #include "SkImageFilter.h" |
| 15 #include "SkMaskFilter.h" | 15 #include "SkMaskFilter.h" |
| 16 #include "SkObjectParser.h" | 16 #include "SkObjectParser.h" |
| 17 #include "SkPaintDefaults.h" | 17 #include "SkPaintDefaults.h" |
| 18 #include "SkPathEffect.h" | 18 #include "SkPathEffect.h" |
| 19 #include "SkPicture.h" | 19 #include "SkPicture.h" |
| 20 #include "SkTextBlob.h" | 20 #include "SkTextBlob.h" |
| 21 #include "SkTextBlobRunIterator.h" | 21 #include "SkTextBlobRunIterator.h" |
| 22 #include "SkTHash.h" | 22 #include "SkTHash.h" |
| 23 #include "SkTypeface.h" | 23 #include "SkTypeface.h" |
| 24 #include "SkValidatingReadBuffer.h" | 24 #include "SkValidatingReadBuffer.h" |
| 25 #include "SkWriteBuffer.h" | 25 #include "SkWriteBuffer.h" |
| 26 | 26 |
| 27 #define SKDEBUGCANVAS_SEND_BINARIES false | |
| 28 | |
| 29 #define SKDEBUGCANVAS_ATTRIBUTE_COMMAND "command" | 27 #define SKDEBUGCANVAS_ATTRIBUTE_COMMAND "command" |
| 30 #define SKDEBUGCANVAS_ATTRIBUTE_MATRIX "matrix" | 28 #define SKDEBUGCANVAS_ATTRIBUTE_MATRIX "matrix" |
| 31 #define SKDEBUGCANVAS_ATTRIBUTE_COORDS "coords" | 29 #define SKDEBUGCANVAS_ATTRIBUTE_COORDS "coords" |
| 32 #define SKDEBUGCANVAS_ATTRIBUTE_BOUNDS "bounds" | 30 #define SKDEBUGCANVAS_ATTRIBUTE_BOUNDS "bounds" |
| 33 #define SKDEBUGCANVAS_ATTRIBUTE_PAINT "paint" | 31 #define SKDEBUGCANVAS_ATTRIBUTE_PAINT "paint" |
| 34 #define SKDEBUGCANVAS_ATTRIBUTE_OUTER "outer" | 32 #define SKDEBUGCANVAS_ATTRIBUTE_OUTER "outer" |
| 35 #define SKDEBUGCANVAS_ATTRIBUTE_INNER "inner" | 33 #define SKDEBUGCANVAS_ATTRIBUTE_INNER "inner" |
| 36 #define SKDEBUGCANVAS_ATTRIBUTE_MODE "mode" | 34 #define SKDEBUGCANVAS_ATTRIBUTE_MODE "mode" |
| 37 #define SKDEBUGCANVAS_ATTRIBUTE_POINTS "points" | 35 #define SKDEBUGCANVAS_ATTRIBUTE_POINTS "points" |
| 38 #define SKDEBUGCANVAS_ATTRIBUTE_PATH "path" | 36 #define SKDEBUGCANVAS_ATTRIBUTE_PATH "path" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 56 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN "textAlign" | 54 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN "textAlign" |
| 57 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSIZE "textSize" | 55 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSIZE "textSize" |
| 58 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX "textScaleX" | 56 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX "textScaleX" |
| 59 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX "textSkewX" | 57 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX "textSkewX" |
| 60 #define SKDEBUGCANVAS_ATTRIBUTE_DASHING "dashing" | 58 #define SKDEBUGCANVAS_ATTRIBUTE_DASHING "dashing" |
| 61 #define SKDEBUGCANVAS_ATTRIBUTE_INTERVALS "intervals" | 59 #define SKDEBUGCANVAS_ATTRIBUTE_INTERVALS "intervals" |
| 62 #define SKDEBUGCANVAS_ATTRIBUTE_PHASE "phase" | 60 #define SKDEBUGCANVAS_ATTRIBUTE_PHASE "phase" |
| 63 #define SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE "fillType" | 61 #define SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE "fillType" |
| 64 #define SKDEBUGCANVAS_ATTRIBUTE_VERBS "verbs" | 62 #define SKDEBUGCANVAS_ATTRIBUTE_VERBS "verbs" |
| 65 #define SKDEBUGCANVAS_ATTRIBUTE_NAME "name" | 63 #define SKDEBUGCANVAS_ATTRIBUTE_NAME "name" |
| 66 #define SKDEBUGCANVAS_ATTRIBUTE_BYTES "bytes" | 64 #define SKDEBUGCANVAS_ATTRIBUTE_DATA "data" |
| 67 #define SKDEBUGCANVAS_ATTRIBUTE_SHADER "shader" | 65 #define SKDEBUGCANVAS_ATTRIBUTE_SHADER "shader" |
| 68 #define SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT "pathEffect" | 66 #define SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT "pathEffect" |
| 69 #define SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER "maskFilter" | 67 #define SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER "maskFilter" |
| 70 #define SKDEBUGCANVAS_ATTRIBUTE_XFERMODE "xfermode" | 68 #define SKDEBUGCANVAS_ATTRIBUTE_XFERMODE "xfermode" |
| 71 #define SKDEBUGCANVAS_ATTRIBUTE_LOOPER "looper" | 69 #define SKDEBUGCANVAS_ATTRIBUTE_LOOPER "looper" |
| 72 #define SKDEBUGCANVAS_ATTRIBUTE_BACKDROP "backdrop" | 70 #define SKDEBUGCANVAS_ATTRIBUTE_BACKDROP "backdrop" |
| 73 #define SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER "colorfilter" | 71 #define SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER "colorfilter" |
| 74 #define SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER "imagefilter" | 72 #define SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER "imagefilter" |
| 75 #define SKDEBUGCANVAS_ATTRIBUTE_IMAGE "image" | 73 #define SKDEBUGCANVAS_ATTRIBUTE_IMAGE "image" |
| 76 #define SKDEBUGCANVAS_ATTRIBUTE_BITMAP "bitmap" | 74 #define SKDEBUGCANVAS_ATTRIBUTE_BITMAP "bitmap" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 | 146 |
| 149 #define SKDEBUGCANVAS_ALPHATYPE_OPAQUE "opaque" | 147 #define SKDEBUGCANVAS_ALPHATYPE_OPAQUE "opaque" |
| 150 #define SKDEBUGCANVAS_ALPHATYPE_PREMUL "premul" | 148 #define SKDEBUGCANVAS_ALPHATYPE_PREMUL "premul" |
| 151 #define SKDEBUGCANVAS_ALPHATYPE_UNPREMUL "unpremul" | 149 #define SKDEBUGCANVAS_ALPHATYPE_UNPREMUL "unpremul" |
| 152 | 150 |
| 153 #define SKDEBUGCANVAS_FILTERQUALITY_NONE "none" | 151 #define SKDEBUGCANVAS_FILTERQUALITY_NONE "none" |
| 154 #define SKDEBUGCANVAS_FILTERQUALITY_LOW "low" | 152 #define SKDEBUGCANVAS_FILTERQUALITY_LOW "low" |
| 155 #define SKDEBUGCANVAS_FILTERQUALITY_MEDIUM "medium" | 153 #define SKDEBUGCANVAS_FILTERQUALITY_MEDIUM "medium" |
| 156 #define SKDEBUGCANVAS_FILTERQUALITY_HIGH "high" | 154 #define SKDEBUGCANVAS_FILTERQUALITY_HIGH "high" |
| 157 | 155 |
| 158 typedef SkDrawCommand* (*FROM_JSON)(Json::Value); | 156 typedef SkDrawCommand* (*FROM_JSON)(Json::Value&, UrlDataManager&); |
| 159 | 157 |
| 160 // TODO(chudy): Refactor into non subclass model. | 158 // TODO(chudy): Refactor into non subclass model. |
| 161 | 159 |
| 162 SkDrawCommand::SkDrawCommand(OpType type) | 160 SkDrawCommand::SkDrawCommand(OpType type) |
| 163 : fOpType(type) | 161 : fOpType(type) |
| 164 , fVisible(true) { | 162 , fVisible(true) { |
| 165 } | 163 } |
| 166 | 164 |
| 167 SkDrawCommand::~SkDrawCommand() { | 165 SkDrawCommand::~SkDrawCommand() { |
| 168 fInfo.deleteAll(); | 166 fInfo.deleteAll(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 break; | 205 break; |
| 208 } | 206 } |
| 209 SkDEBUGFAIL("DrawType UNUSED\n"); | 207 SkDEBUGFAIL("DrawType UNUSED\n"); |
| 210 return nullptr; | 208 return nullptr; |
| 211 } | 209 } |
| 212 | 210 |
| 213 SkString SkDrawCommand::toString() const { | 211 SkString SkDrawCommand::toString() const { |
| 214 return SkString(GetCommandString(fOpType)); | 212 return SkString(GetCommandString(fOpType)); |
| 215 } | 213 } |
| 216 | 214 |
| 217 Json::Value SkDrawCommand::toJSON() const { | 215 Json::Value SkDrawCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 218 Json::Value result; | 216 Json::Value result; |
| 219 result[SKDEBUGCANVAS_ATTRIBUTE_COMMAND] = this->GetCommandString(fOpType); | 217 result[SKDEBUGCANVAS_ATTRIBUTE_COMMAND] = this->GetCommandString(fOpType); |
| 220 return result; | 218 return result; |
| 221 } | 219 } |
| 222 | 220 |
| 223 #define INSTALL_FACTORY(name) factories.set(SkString(GetCommandString(k ## name
##_OpType)), \ | 221 #define INSTALL_FACTORY(name) factories.set(SkString(GetCommandString(k ## name
##_OpType)), \ |
| 224 (FROM_JSON) Sk ## name ## Command::f
romJSON) | 222 (FROM_JSON) Sk ## name ## Command::f
romJSON) |
| 225 SkDrawCommand* SkDrawCommand::fromJSON(Json::Value& command) { | 223 SkDrawCommand* SkDrawCommand::fromJSON(Json::Value& command, UrlDataManager& url
DataManager) { |
| 226 static SkTHashMap<SkString, FROM_JSON> factories; | 224 static SkTHashMap<SkString, FROM_JSON> factories; |
| 227 static bool initialized = false; | 225 static bool initialized = false; |
| 228 if (!initialized) { | 226 if (!initialized) { |
| 229 initialized = true; | 227 initialized = true; |
| 230 INSTALL_FACTORY(Restore); | 228 INSTALL_FACTORY(Restore); |
| 231 INSTALL_FACTORY(ClipPath); | 229 INSTALL_FACTORY(ClipPath); |
| 232 INSTALL_FACTORY(ClipRegion); | 230 INSTALL_FACTORY(ClipRegion); |
| 233 INSTALL_FACTORY(ClipRect); | 231 INSTALL_FACTORY(ClipRect); |
| 234 INSTALL_FACTORY(ClipRRect); | 232 INSTALL_FACTORY(ClipRRect); |
| 235 INSTALL_FACTORY(Concat); | 233 INSTALL_FACTORY(Concat); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 254 INSTALL_FACTORY(Save); | 252 INSTALL_FACTORY(Save); |
| 255 INSTALL_FACTORY(SaveLayer); | 253 INSTALL_FACTORY(SaveLayer); |
| 256 INSTALL_FACTORY(SetMatrix); | 254 INSTALL_FACTORY(SetMatrix); |
| 257 } | 255 } |
| 258 SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString(
)); | 256 SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString(
)); |
| 259 FROM_JSON* factory = factories.find(name); | 257 FROM_JSON* factory = factories.find(name); |
| 260 if (factory == nullptr) { | 258 if (factory == nullptr) { |
| 261 SkDebugf("no JSON factory for '%s'\n", name.c_str()); | 259 SkDebugf("no JSON factory for '%s'\n", name.c_str()); |
| 262 return nullptr; | 260 return nullptr; |
| 263 } | 261 } |
| 264 return (*factory)(command); | 262 return (*factory)(command, urlDataManager); |
| 265 } | 263 } |
| 266 | 264 |
| 267 namespace { | 265 namespace { |
| 268 | 266 |
| 269 void xlate_and_scale_to_bounds(SkCanvas* canvas, const SkRect& bounds) { | 267 void xlate_and_scale_to_bounds(SkCanvas* canvas, const SkRect& bounds) { |
| 270 const SkISize& size = canvas->getDeviceSize(); | 268 const SkISize& size = canvas->getDeviceSize(); |
| 271 | 269 |
| 272 static const SkScalar kInsetFrac = 0.9f; // Leave a border around object | 270 static const SkScalar kInsetFrac = 0.9f; // Leave a border around object |
| 273 | 271 |
| 274 canvas->translate(size.fWidth/2.0f, size.fHeight/2.0f); | 272 canvas->translate(size.fWidth/2.0f, size.fHeight/2.0f); |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 (*target)[key] = Json::Value(value); | 573 (*target)[key] = Json::Value(value); |
| 576 } | 574 } |
| 577 } | 575 } |
| 578 | 576 |
| 579 static void store_bool(Json::Value* target, const char* key, bool value, bool de
faultValue) { | 577 static void store_bool(Json::Value* target, const char* key, bool value, bool de
faultValue) { |
| 580 if (value != defaultValue) { | 578 if (value != defaultValue) { |
| 581 (*target)[key] = Json::Value(value); | 579 (*target)[key] = Json::Value(value); |
| 582 } | 580 } |
| 583 } | 581 } |
| 584 | 582 |
| 585 static void encode_data(const void* data, size_t count, Json::Value* target) { | 583 static void encode_data(const void* bytes, size_t count, const char* contentType
, |
| 586 // just use a brain-dead JSON array for now, switch to base64 or something e
lse smarter down the | 584 UrlDataManager& urlDataManager, Json::Value* target) { |
| 587 // road | 585 SkAutoTUnref<SkData> data(SkData::NewWithCopy(bytes, count)); |
| 588 for (size_t i = 0; i < count; i++) { | 586 SkString url = urlDataManager.addData(data, contentType); |
| 589 target->append(((const uint8_t*)data)[i]); | 587 *target = Json::Value(url.c_str()); |
| 590 } | |
| 591 } | 588 } |
| 592 | 589 |
| 593 static void flatten(const SkFlattenable* flattenable, Json::Value* target, bool
sendBinaries) { | 590 static void flatten(const SkFlattenable* flattenable, Json::Value* target, |
| 594 if (sendBinaries) { | 591 UrlDataManager& urlDataManager) { |
| 595 SkWriteBuffer buffer; | 592 SkWriteBuffer buffer; |
| 596 flattenable->flatten(buffer); | 593 flattenable->flatten(buffer); |
| 597 void* data = sk_malloc_throw(buffer.bytesWritten()); | 594 void* data = sk_malloc_throw(buffer.bytesWritten()); |
| 598 buffer.writeToMemory(data); | 595 buffer.writeToMemory(data); |
| 599 Json::Value bytes; | 596 Json::Value jsonData; |
| 600 encode_data(data, buffer.bytesWritten(), &bytes); | 597 encode_data(data, buffer.bytesWritten(), "application/octet-stream", urlData
Manager, &jsonData); |
| 601 Json::Value jsonFlattenable; | 598 Json::Value jsonFlattenable; |
| 602 jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_NAME] = Json::Value(flattenable-
>getTypeName()); | 599 jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_NAME] = Json::Value(flattenable->get
TypeName()); |
| 603 jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_BYTES] = bytes; | 600 jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_DATA] = jsonData; |
| 604 (*target) = jsonFlattenable; | 601 (*target) = jsonFlattenable; |
| 605 sk_free(data); | 602 sk_free(data); |
| 606 } else { | |
| 607 (*target)[SKDEBUGCANVAS_ATTRIBUTE_DESCRIPTION] = Json::Value(flattenable
->getTypeName()); | |
| 608 } | |
| 609 } | 603 } |
| 610 | 604 |
| 611 static bool SK_WARN_UNUSED_RESULT flatten(const SkImage& image, Json::Value* tar
get, | 605 static bool SK_WARN_UNUSED_RESULT flatten(const SkImage& image, Json::Value* tar
get, |
| 612 bool sendBinaries) { | 606 UrlDataManager& urlDataManager) { |
| 613 if (sendBinaries) { | 607 SkData* encoded = image.encode(SkImageEncoder::kPNG_Type, 100); |
| 614 SkData* encoded = image.encode(SkImageEncoder::kPNG_Type, 100); | 608 if (encoded == nullptr) { |
| 609 // PNG encode doesn't necessarily support all color formats, convert to
a different |
| 610 // format |
| 611 size_t rowBytes = 4 * image.width(); |
| 612 void* buffer = sk_malloc_throw(rowBytes * image.height()); |
| 613 SkImageInfo dstInfo = SkImageInfo::Make(image.width(), image.height(), |
| 614 kN32_SkColorType, kPremul_SkAlph
aType); |
| 615 if (!image.readPixels(dstInfo, buffer, rowBytes, 0, 0)) { |
| 616 SkDebugf("readPixels failed\n"); |
| 617 return false; |
| 618 } |
| 619 SkImage* converted = SkImage::NewRasterCopy(dstInfo, buffer, rowBytes); |
| 620 encoded = converted->encode(SkImageEncoder::kPNG_Type, 100); |
| 615 if (encoded == nullptr) { | 621 if (encoded == nullptr) { |
| 616 // PNG encode doesn't necessarily support all color formats, convert
to a different | 622 SkDebugf("image encode failed\n"); |
| 617 // format | 623 return false; |
| 618 size_t rowBytes = 4 * image.width(); | |
| 619 void* buffer = sk_malloc_throw(rowBytes * image.height()); | |
| 620 SkImageInfo dstInfo = SkImageInfo::Make(image.width(), image.height(
), | |
| 621 kN32_SkColorType, kPremul_Sk
AlphaType); | |
| 622 if (!image.readPixels(dstInfo, buffer, rowBytes, 0, 0)) { | |
| 623 SkDebugf("readPixels failed\n"); | |
| 624 return false; | |
| 625 } | |
| 626 SkImage* converted = SkImage::NewRasterCopy(dstInfo, buffer, rowByte
s); | |
| 627 encoded = converted->encode(SkImageEncoder::kPNG_Type, 100); | |
| 628 if (encoded == nullptr) { | |
| 629 SkDebugf("image encode failed\n"); | |
| 630 return false; | |
| 631 } | |
| 632 sk_free(converted); | |
| 633 sk_free(buffer); | |
| 634 } | 624 } |
| 635 Json::Value bytes; | 625 sk_free(converted); |
| 636 encode_data(encoded->data(), encoded->size(), &bytes); | 626 sk_free(buffer); |
| 637 (*target)[SKDEBUGCANVAS_ATTRIBUTE_BYTES] = bytes; | |
| 638 encoded->unref(); | |
| 639 } else { | |
| 640 SkString description = SkStringPrintf("%dx%d pixel image", image.width()
, image.height()); | |
| 641 (*target)[SKDEBUGCANVAS_ATTRIBUTE_DESCRIPTION] = Json::Value(description
.c_str()); | |
| 642 } | 627 } |
| 628 Json::Value jsonData; |
| 629 encode_data(encoded->data(), encoded->size(), "image/png", urlDataManager, &
jsonData); |
| 630 (*target)[SKDEBUGCANVAS_ATTRIBUTE_DATA] = jsonData; |
| 631 encoded->unref(); |
| 643 return true; | 632 return true; |
| 644 } | 633 } |
| 645 | 634 |
| 646 static const char* color_type_name(SkColorType colorType) { | 635 static const char* color_type_name(SkColorType colorType) { |
| 647 switch (colorType) { | 636 switch (colorType) { |
| 648 case kARGB_4444_SkColorType: | 637 case kARGB_4444_SkColorType: |
| 649 return SKDEBUGCANVAS_COLORTYPE_ARGB4444; | 638 return SKDEBUGCANVAS_COLORTYPE_ARGB4444; |
| 650 case kRGBA_8888_SkColorType: | 639 case kRGBA_8888_SkColorType: |
| 651 return SKDEBUGCANVAS_COLORTYPE_RGBA8888; | 640 return SKDEBUGCANVAS_COLORTYPE_RGBA8888; |
| 652 case kBGRA_8888_SkColorType: | 641 case kBGRA_8888_SkColorType: |
| (...skipping 19 matching lines...) Expand all Loading... |
| 672 case kPremul_SkAlphaType: | 661 case kPremul_SkAlphaType: |
| 673 return SKDEBUGCANVAS_ALPHATYPE_PREMUL; | 662 return SKDEBUGCANVAS_ALPHATYPE_PREMUL; |
| 674 case kUnpremul_SkAlphaType: | 663 case kUnpremul_SkAlphaType: |
| 675 return SKDEBUGCANVAS_ALPHATYPE_UNPREMUL; | 664 return SKDEBUGCANVAS_ALPHATYPE_UNPREMUL; |
| 676 default: | 665 default: |
| 677 SkASSERT(false); | 666 SkASSERT(false); |
| 678 return SKDEBUGCANVAS_ALPHATYPE_OPAQUE; | 667 return SKDEBUGCANVAS_ALPHATYPE_OPAQUE; |
| 679 } | 668 } |
| 680 } | 669 } |
| 681 | 670 |
| 682 // note that the caller is responsible for freeing the pointer | 671 static Json::ArrayIndex decode_data(Json::Value data, UrlDataManager& urlDataMan
ager, |
| 683 static Json::ArrayIndex decode_data(Json::Value bytes, void** target) { | 672 const void** target) { |
| 684 Json::ArrayIndex size = bytes.size(); | 673 UrlDataManager::UrlData* urlData = urlDataManager.getDataFromUrl(SkString(da
ta.asCString())); |
| 685 *target = sk_malloc_throw(size); | 674 if (urlData == nullptr) { |
| 686 for (Json::ArrayIndex i = 0; i < size; i++) { | 675 SkASSERT(false); |
| 687 ((uint8_t*) *target)[i] = bytes[i].asInt(); | 676 *target = nullptr; |
| 677 return 0; |
| 688 } | 678 } |
| 689 return size; | 679 *target = urlData->fData->data(); |
| 680 // cast should be safe for any reasonably-sized object... |
| 681 return (Json::ArrayIndex) urlData->fData->size(); |
| 690 } | 682 } |
| 691 | 683 |
| 692 static SkFlattenable* load_flattenable(Json::Value jsonFlattenable) { | 684 static SkFlattenable* load_flattenable(Json::Value jsonFlattenable, |
| 685 UrlDataManager& urlDataManager) { |
| 693 if (!jsonFlattenable.isMember(SKDEBUGCANVAS_ATTRIBUTE_NAME)) { | 686 if (!jsonFlattenable.isMember(SKDEBUGCANVAS_ATTRIBUTE_NAME)) { |
| 694 return nullptr; | 687 return nullptr; |
| 695 } | 688 } |
| 696 const char* name = jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_NAME].asCString()
; | 689 const char* name = jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_NAME].asCString()
; |
| 697 SkFlattenable::Factory factory = SkFlattenable::NameToFactory(name); | 690 SkFlattenable::Factory factory = SkFlattenable::NameToFactory(name); |
| 698 if (factory == nullptr) { | 691 if (factory == nullptr) { |
| 699 SkDebugf("no factory for loading '%s'\n", name); | 692 SkDebugf("no factory for loading '%s'\n", name); |
| 700 return nullptr; | 693 return nullptr; |
| 701 } | 694 } |
| 702 void* data; | 695 const void* data; |
| 703 int size = decode_data(jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_BYTES], &data
); | 696 int size = decode_data(jsonFlattenable[SKDEBUGCANVAS_ATTRIBUTE_DATA], urlDat
aManager, &data); |
| 704 SkValidatingReadBuffer buffer(data, size); | 697 SkValidatingReadBuffer buffer(data, size); |
| 705 SkFlattenable* result = factory(buffer); | 698 SkFlattenable* result = factory(buffer); |
| 706 sk_free(data); | |
| 707 if (!buffer.isValid()) { | 699 if (!buffer.isValid()) { |
| 708 SkDebugf("invalid buffer loading flattenable\n"); | 700 SkDebugf("invalid buffer loading flattenable\n"); |
| 709 return nullptr; | 701 return nullptr; |
| 710 } | 702 } |
| 711 return result; | 703 return result; |
| 712 } | 704 } |
| 713 | 705 |
| 714 static SkColorType colortype_from_name(const char* name) { | 706 static SkColorType colortype_from_name(const char* name) { |
| 715 if (!strcmp(name, SKDEBUGCANVAS_COLORTYPE_ARGB4444)) { | 707 if (!strcmp(name, SKDEBUGCANVAS_COLORTYPE_ARGB4444)) { |
| 716 return kARGB_4444_SkColorType; | 708 return kARGB_4444_SkColorType; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 745 if (bitmap->copyTo(dst, colorType)) { | 737 if (bitmap->copyTo(dst, colorType)) { |
| 746 delete bitmap; | 738 delete bitmap; |
| 747 return dst; | 739 return dst; |
| 748 } | 740 } |
| 749 SkASSERT(false); | 741 SkASSERT(false); |
| 750 delete dst; | 742 delete dst; |
| 751 return bitmap; | 743 return bitmap; |
| 752 } | 744 } |
| 753 | 745 |
| 754 // caller is responsible for freeing return value | 746 // caller is responsible for freeing return value |
| 755 static SkBitmap* load_bitmap(const Json::Value& jsonBitmap) { | 747 static SkBitmap* load_bitmap(const Json::Value& jsonBitmap, UrlDataManager& urlD
ataManager) { |
| 756 if (!jsonBitmap.isMember(SKDEBUGCANVAS_ATTRIBUTE_BYTES)) { | 748 if (!jsonBitmap.isMember(SKDEBUGCANVAS_ATTRIBUTE_DATA)) { |
| 757 SkDebugf("invalid bitmap\n"); | 749 SkDebugf("invalid bitmap\n"); |
| 758 return nullptr; | 750 return nullptr; |
| 759 } | 751 } |
| 760 void* data; | 752 const void* data; |
| 761 int size = decode_data(jsonBitmap[SKDEBUGCANVAS_ATTRIBUTE_BYTES], &data); | 753 int size = decode_data(jsonBitmap[SKDEBUGCANVAS_ATTRIBUTE_DATA], urlDataMana
ger, &data); |
| 762 SkMemoryStream stream(data, size); | 754 SkMemoryStream stream(data, size); |
| 763 SkImageDecoder* decoder = SkImageDecoder::Factory(&stream); | 755 SkImageDecoder* decoder = SkImageDecoder::Factory(&stream); |
| 764 SkBitmap* bitmap = new SkBitmap(); | 756 SkBitmap* bitmap = new SkBitmap(); |
| 765 SkImageDecoder::Result result = decoder->decode(&stream, bitmap, | 757 SkImageDecoder::Result result = decoder->decode(&stream, bitmap, |
| 766 SkImageDecoder::kDecodePixel
s_Mode); | 758 SkImageDecoder::kDecodePixel
s_Mode); |
| 767 sk_free(decoder); | 759 sk_free(decoder); |
| 768 if (result != SkImageDecoder::kFailure) { | 760 if (result != SkImageDecoder::kFailure) { |
| 769 sk_free(data); | |
| 770 if (jsonBitmap.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLOR)) { | 761 if (jsonBitmap.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLOR)) { |
| 771 const char* ctName = jsonBitmap[SKDEBUGCANVAS_ATTRIBUTE_COLOR].asCSt
ring(); | 762 const char* ctName = jsonBitmap[SKDEBUGCANVAS_ATTRIBUTE_COLOR].asCSt
ring(); |
| 772 SkColorType ct = colortype_from_name(ctName); | 763 SkColorType ct = colortype_from_name(ctName); |
| 773 if (ct != kIndex_8_SkColorType) { | 764 if (ct != kIndex_8_SkColorType) { |
| 774 bitmap = convert_colortype(bitmap, ct); | 765 bitmap = convert_colortype(bitmap, ct); |
| 775 } | 766 } |
| 776 } | 767 } |
| 777 return bitmap; | 768 return bitmap; |
| 778 } | 769 } |
| 779 SkDebugf("image decode failed\n"); | 770 SkDebugf("image decode failed\n"); |
| 780 sk_free(data); | |
| 781 return nullptr; | 771 return nullptr; |
| 782 } | 772 } |
| 783 | 773 |
| 784 static SkImage* load_image(const Json::Value& jsonImage) { | 774 static SkImage* load_image(const Json::Value& jsonImage, UrlDataManager& urlData
Manager) { |
| 785 SkBitmap* bitmap = load_bitmap(jsonImage); | 775 SkBitmap* bitmap = load_bitmap(jsonImage, urlDataManager); |
| 786 if (bitmap == nullptr) { | 776 if (bitmap == nullptr) { |
| 787 return nullptr; | 777 return nullptr; |
| 788 } | 778 } |
| 789 SkImage* result = SkImage::NewFromBitmap(*bitmap); | 779 SkImage* result = SkImage::NewFromBitmap(*bitmap); |
| 790 delete bitmap; | 780 delete bitmap; |
| 791 return result; | 781 return result; |
| 792 } | 782 } |
| 793 | 783 |
| 794 static bool SK_WARN_UNUSED_RESULT flatten(const SkBitmap& bitmap, Json::Value* t
arget, | 784 static bool SK_WARN_UNUSED_RESULT flatten(const SkBitmap& bitmap, Json::Value* t
arget, |
| 795 bool sendBinaries) { | 785 UrlDataManager& urlDataManager) { |
| 796 bitmap.lockPixels(); | 786 bitmap.lockPixels(); |
| 797 SkAutoTUnref<SkImage> image(SkImage::NewFromBitmap(bitmap)); | 787 SkAutoTUnref<SkImage> image(SkImage::NewFromBitmap(bitmap)); |
| 798 bitmap.unlockPixels(); | 788 bitmap.unlockPixels(); |
| 799 (*target)[SKDEBUGCANVAS_ATTRIBUTE_COLOR] = Json::Value(color_type_name(bitma
p.colorType())); | 789 (*target)[SKDEBUGCANVAS_ATTRIBUTE_COLOR] = Json::Value(color_type_name(bitma
p.colorType())); |
| 800 (*target)[SKDEBUGCANVAS_ATTRIBUTE_ALPHA] = Json::Value(alpha_type_name(bitma
p.alphaType())); | 790 (*target)[SKDEBUGCANVAS_ATTRIBUTE_ALPHA] = Json::Value(alpha_type_name(bitma
p.alphaType())); |
| 801 bool success = flatten(*image, target, sendBinaries); | 791 bool success = flatten(*image, target, urlDataManager); |
| 802 return success; | 792 return success; |
| 803 } | 793 } |
| 804 | 794 |
| 805 static void apply_paint_color(const SkPaint& paint, Json::Value* target) { | 795 static void apply_paint_color(const SkPaint& paint, Json::Value* target) { |
| 806 SkColor color = paint.getColor(); | 796 SkColor color = paint.getColor(); |
| 807 if (color != SK_ColorBLACK) { | 797 if (color != SK_ColorBLACK) { |
| 808 Json::Value colorValue(Json::arrayValue); | 798 Json::Value colorValue(Json::arrayValue); |
| 809 colorValue.append(Json::Value(SkColorGetA(color))); | 799 colorValue.append(Json::Value(SkColorGetA(color))); |
| 810 colorValue.append(Json::Value(SkColorGetR(color))); | 800 colorValue.append(Json::Value(SkColorGetR(color))); |
| 811 colorValue.append(Json::Value(SkColorGetG(color))); | 801 colorValue.append(Json::Value(SkColorGetG(color))); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 (*target)[SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY] = Json::Value( | 875 (*target)[SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY] = Json::Value( |
| 886 SKDEBUGCANVAS_FI
LTERQUALITY_MEDIUM); | 876 SKDEBUGCANVAS_FI
LTERQUALITY_MEDIUM); |
| 887 break; | 877 break; |
| 888 case kHigh_SkFilterQuality: | 878 case kHigh_SkFilterQuality: |
| 889 (*target)[SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY] = Json::Value( | 879 (*target)[SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY] = Json::Value( |
| 890 SKDEBUGCANVAS_
FILTERQUALITY_HIGH); | 880 SKDEBUGCANVAS_
FILTERQUALITY_HIGH); |
| 891 break; | 881 break; |
| 892 } | 882 } |
| 893 } | 883 } |
| 894 | 884 |
| 895 static void apply_paint_maskfilter(const SkPaint& paint, Json::Value* target, bo
ol sendBinaries) { | 885 static void apply_paint_maskfilter(const SkPaint& paint, Json::Value* target, |
| 886 UrlDataManager& urlDataManager) { |
| 896 SkMaskFilter* maskFilter = paint.getMaskFilter(); | 887 SkMaskFilter* maskFilter = paint.getMaskFilter(); |
| 897 if (maskFilter != nullptr) { | 888 if (maskFilter != nullptr) { |
| 898 SkMaskFilter::BlurRec blurRec; | 889 SkMaskFilter::BlurRec blurRec; |
| 899 if (maskFilter->asABlur(&blurRec)) { | 890 if (maskFilter->asABlur(&blurRec)) { |
| 900 Json::Value blur(Json::objectValue); | 891 Json::Value blur(Json::objectValue); |
| 901 blur[SKDEBUGCANVAS_ATTRIBUTE_SIGMA] = Json::Value(blurRec.fSigma); | 892 blur[SKDEBUGCANVAS_ATTRIBUTE_SIGMA] = Json::Value(blurRec.fSigma); |
| 902 switch (blurRec.fStyle) { | 893 switch (blurRec.fStyle) { |
| 903 case SkBlurStyle::kNormal_SkBlurStyle: | 894 case SkBlurStyle::kNormal_SkBlurStyle: |
| 904 blur[SKDEBUGCANVAS_ATTRIBUTE_STYLE] = Json::Value( | 895 blur[SKDEBUGCANVAS_ATTRIBUTE_STYLE] = Json::Value( |
| 905 SKDEBUGCANVA
S_BLURSTYLE_NORMAL); | 896 SKDEBUGCANVA
S_BLURSTYLE_NORMAL); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 927 case SkBlurQuality::kHigh_SkBlurQuality: | 918 case SkBlurQuality::kHigh_SkBlurQuality: |
| 928 blur[SKDEBUGCANVAS_ATTRIBUTE_QUALITY] = Json::Value( | 919 blur[SKDEBUGCANVAS_ATTRIBUTE_QUALITY] = Json::Value( |
| 929 SKDEBUGCANVA
S_BLURQUALITY_HIGH); | 920 SKDEBUGCANVA
S_BLURQUALITY_HIGH); |
| 930 break; | 921 break; |
| 931 default: | 922 default: |
| 932 SkASSERT(false); | 923 SkASSERT(false); |
| 933 } | 924 } |
| 934 (*target)[SKDEBUGCANVAS_ATTRIBUTE_BLUR] = blur; | 925 (*target)[SKDEBUGCANVAS_ATTRIBUTE_BLUR] = blur; |
| 935 } else { | 926 } else { |
| 936 Json::Value jsonMaskFilter; | 927 Json::Value jsonMaskFilter; |
| 937 flatten(maskFilter, &jsonMaskFilter, sendBinaries); | 928 flatten(maskFilter, &jsonMaskFilter, urlDataManager); |
| 938 (*target)[SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER] = jsonMaskFilter; | 929 (*target)[SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER] = jsonMaskFilter; |
| 939 } | 930 } |
| 940 } | 931 } |
| 941 } | 932 } |
| 942 | 933 |
| 943 static void apply_paint_patheffect(const SkPaint& paint, Json::Value* target, bo
ol sendBinaries) { | 934 static void apply_paint_patheffect(const SkPaint& paint, Json::Value* target, |
| 935 UrlDataManager& urlDataManager) { |
| 944 SkPathEffect* pathEffect = paint.getPathEffect(); | 936 SkPathEffect* pathEffect = paint.getPathEffect(); |
| 945 if (pathEffect != nullptr) { | 937 if (pathEffect != nullptr) { |
| 946 SkPathEffect::DashInfo dashInfo; | 938 SkPathEffect::DashInfo dashInfo; |
| 947 SkPathEffect::DashType dashType = pathEffect->asADash(&dashInfo); | 939 SkPathEffect::DashType dashType = pathEffect->asADash(&dashInfo); |
| 948 if (dashType == SkPathEffect::kDash_DashType) { | 940 if (dashType == SkPathEffect::kDash_DashType) { |
| 949 dashInfo.fIntervals = (SkScalar*) sk_malloc_throw(dashInfo.fCount *
sizeof(SkScalar)); | 941 dashInfo.fIntervals = (SkScalar*) sk_malloc_throw(dashInfo.fCount *
sizeof(SkScalar)); |
| 950 pathEffect->asADash(&dashInfo); | 942 pathEffect->asADash(&dashInfo); |
| 951 Json::Value dashing(Json::objectValue); | 943 Json::Value dashing(Json::objectValue); |
| 952 Json::Value intervals(Json::arrayValue); | 944 Json::Value intervals(Json::arrayValue); |
| 953 for (int32_t i = 0; i < dashInfo.fCount; i++) { | 945 for (int32_t i = 0; i < dashInfo.fCount; i++) { |
| 954 intervals.append(Json::Value(dashInfo.fIntervals[i])); | 946 intervals.append(Json::Value(dashInfo.fIntervals[i])); |
| 955 } | 947 } |
| 956 sk_free(dashInfo.fIntervals); | 948 sk_free(dashInfo.fIntervals); |
| 957 dashing[SKDEBUGCANVAS_ATTRIBUTE_INTERVALS] = intervals; | 949 dashing[SKDEBUGCANVAS_ATTRIBUTE_INTERVALS] = intervals; |
| 958 dashing[SKDEBUGCANVAS_ATTRIBUTE_PHASE] = dashInfo.fPhase; | 950 dashing[SKDEBUGCANVAS_ATTRIBUTE_PHASE] = dashInfo.fPhase; |
| 959 (*target)[SKDEBUGCANVAS_ATTRIBUTE_DASHING] = dashing; | 951 (*target)[SKDEBUGCANVAS_ATTRIBUTE_DASHING] = dashing; |
| 960 } else { | 952 } else { |
| 961 Json::Value jsonPathEffect; | 953 Json::Value jsonPathEffect; |
| 962 flatten(pathEffect, &jsonPathEffect, sendBinaries); | 954 flatten(pathEffect, &jsonPathEffect, urlDataManager); |
| 963 (*target)[SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT] = jsonPathEffect; | 955 (*target)[SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT] = jsonPathEffect; |
| 964 } | 956 } |
| 965 } | 957 } |
| 966 } | 958 } |
| 967 | 959 |
| 968 static void apply_paint_textalign(const SkPaint& paint, Json::Value* target) { | 960 static void apply_paint_textalign(const SkPaint& paint, Json::Value* target) { |
| 969 SkPaint::Align textAlign = paint.getTextAlign(); | 961 SkPaint::Align textAlign = paint.getTextAlign(); |
| 970 if (textAlign != SkPaint::kLeft_Align) { | 962 if (textAlign != SkPaint::kLeft_Align) { |
| 971 switch (textAlign) { | 963 switch (textAlign) { |
| 972 case SkPaint::kCenter_Align: { | 964 case SkPaint::kCenter_Align: { |
| 973 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN] = SKDEBUGCANVAS_ALI
GN_CENTER; | 965 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN] = SKDEBUGCANVAS_ALI
GN_CENTER; |
| 974 break; | 966 break; |
| 975 } | 967 } |
| 976 case SkPaint::kRight_Align: { | 968 case SkPaint::kRight_Align: { |
| 977 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN] = SKDEBUGCANVAS_ALI
GN_RIGHT; | 969 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TEXTALIGN] = SKDEBUGCANVAS_ALI
GN_RIGHT; |
| 978 break; | 970 break; |
| 979 } | 971 } |
| 980 default: SkASSERT(false); | 972 default: SkASSERT(false); |
| 981 } | 973 } |
| 982 } | 974 } |
| 983 } | 975 } |
| 984 | 976 |
| 985 static void apply_paint_typeface(const SkPaint& paint, Json::Value* target, | 977 static void apply_paint_typeface(const SkPaint& paint, Json::Value* target, |
| 986 bool sendBinaries) { | 978 UrlDataManager& urlDataManager) { |
| 987 SkTypeface* typeface = paint.getTypeface(); | 979 SkTypeface* typeface = paint.getTypeface(); |
| 988 if (typeface != nullptr) { | 980 if (typeface != nullptr) { |
| 989 if (sendBinaries) { | 981 Json::Value jsonTypeface; |
| 990 Json::Value jsonTypeface; | 982 SkDynamicMemoryWStream buffer; |
| 991 SkDynamicMemoryWStream buffer; | 983 typeface->serialize(&buffer); |
| 992 typeface->serialize(&buffer); | 984 void* data = sk_malloc_throw(buffer.bytesWritten()); |
| 993 void* data = sk_malloc_throw(buffer.bytesWritten()); | 985 buffer.copyTo(data); |
| 994 buffer.copyTo(data); | 986 Json::Value jsonData; |
| 995 Json::Value bytes; | 987 encode_data(data, buffer.bytesWritten(), "application/octet-stream", url
DataManager, |
| 996 encode_data(data, buffer.bytesWritten(), &bytes); | 988 &jsonData); |
| 997 jsonTypeface[SKDEBUGCANVAS_ATTRIBUTE_BYTES] = bytes; | 989 jsonTypeface[SKDEBUGCANVAS_ATTRIBUTE_DATA] = jsonData; |
| 998 sk_free(data); | 990 sk_free(data); |
| 999 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE] = jsonTypeface; | 991 (*target)[SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE] = jsonTypeface; |
| 1000 } | |
| 1001 } | 992 } |
| 1002 } | 993 } |
| 1003 | 994 |
| 1004 static void apply_paint_shader(const SkPaint& paint, Json::Value* target, bool s
endBinaries) { | 995 static void apply_paint_shader(const SkPaint& paint, Json::Value* target, |
| 996 UrlDataManager& urlDataManager) { |
| 1005 SkFlattenable* shader = paint.getShader(); | 997 SkFlattenable* shader = paint.getShader(); |
| 1006 if (shader != nullptr) { | 998 if (shader != nullptr) { |
| 1007 Json::Value jsonShader; | 999 Json::Value jsonShader; |
| 1008 flatten(shader, &jsonShader, sendBinaries); | 1000 flatten(shader, &jsonShader, urlDataManager); |
| 1009 (*target)[SKDEBUGCANVAS_ATTRIBUTE_SHADER] = jsonShader; | 1001 (*target)[SKDEBUGCANVAS_ATTRIBUTE_SHADER] = jsonShader; |
| 1010 } | 1002 } |
| 1011 } | 1003 } |
| 1012 | 1004 |
| 1013 static void apply_paint_xfermode(const SkPaint& paint, Json::Value* target, bool
sendBinaries) { | 1005 static void apply_paint_xfermode(const SkPaint& paint, Json::Value* target, |
| 1006 UrlDataManager& urlDataManager) { |
| 1014 SkFlattenable* xfermode = paint.getXfermode(); | 1007 SkFlattenable* xfermode = paint.getXfermode(); |
| 1015 if (xfermode != nullptr) { | 1008 if (xfermode != nullptr) { |
| 1016 Json::Value jsonXfermode; | 1009 Json::Value jsonXfermode; |
| 1017 flatten(xfermode, &jsonXfermode, sendBinaries); | 1010 flatten(xfermode, &jsonXfermode, urlDataManager); |
| 1018 (*target)[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE] = jsonXfermode; | 1011 (*target)[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE] = jsonXfermode; |
| 1019 } | 1012 } |
| 1020 } | 1013 } |
| 1021 | 1014 |
| 1022 static void apply_paint_imagefilter(const SkPaint& paint, Json::Value* target, b
ool sendBinaries) { | 1015 static void apply_paint_imagefilter(const SkPaint& paint, Json::Value* target, |
| 1016 UrlDataManager& urlDataManager) { |
| 1023 SkFlattenable* imageFilter = paint.getImageFilter(); | 1017 SkFlattenable* imageFilter = paint.getImageFilter(); |
| 1024 if (imageFilter != nullptr) { | 1018 if (imageFilter != nullptr) { |
| 1025 Json::Value jsonImageFilter; | 1019 Json::Value jsonImageFilter; |
| 1026 flatten(imageFilter, &jsonImageFilter, sendBinaries); | 1020 flatten(imageFilter, &jsonImageFilter, urlDataManager); |
| 1027 (*target)[SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER] = jsonImageFilter; | 1021 (*target)[SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER] = jsonImageFilter; |
| 1028 } | 1022 } |
| 1029 } | 1023 } |
| 1030 | 1024 |
| 1031 static void apply_paint_colorfilter(const SkPaint& paint, Json::Value* target, b
ool sendBinaries) { | 1025 static void apply_paint_colorfilter(const SkPaint& paint, Json::Value* target, |
| 1026 UrlDataManager& urlDataManager) { |
| 1032 SkFlattenable* colorFilter = paint.getColorFilter(); | 1027 SkFlattenable* colorFilter = paint.getColorFilter(); |
| 1033 if (colorFilter != nullptr) { | 1028 if (colorFilter != nullptr) { |
| 1034 Json::Value jsonColorFilter; | 1029 Json::Value jsonColorFilter; |
| 1035 flatten(colorFilter, &jsonColorFilter, sendBinaries); | 1030 flatten(colorFilter, &jsonColorFilter, urlDataManager); |
| 1036 (*target)[SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER] = jsonColorFilter; | 1031 (*target)[SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER] = jsonColorFilter; |
| 1037 } | 1032 } |
| 1038 } | 1033 } |
| 1039 | 1034 |
| 1040 static void apply_paint_looper(const SkPaint& paint, Json::Value* target, bool s
endBinaries) { | 1035 static void apply_paint_looper(const SkPaint& paint, Json::Value* target, |
| 1036 UrlDataManager& urlDataManager) { |
| 1041 SkFlattenable* looper = paint.getLooper(); | 1037 SkFlattenable* looper = paint.getLooper(); |
| 1042 if (looper != nullptr) { | 1038 if (looper != nullptr) { |
| 1043 Json::Value jsonLooper; | 1039 Json::Value jsonLooper; |
| 1044 flatten(looper, &jsonLooper, sendBinaries); | 1040 flatten(looper, &jsonLooper, urlDataManager); |
| 1045 (*target)[SKDEBUGCANVAS_ATTRIBUTE_LOOPER] = jsonLooper; | 1041 (*target)[SKDEBUGCANVAS_ATTRIBUTE_LOOPER] = jsonLooper; |
| 1046 } | 1042 } |
| 1047 } | 1043 } |
| 1048 | 1044 |
| 1049 Json::Value make_json_paint(const SkPaint& paint, bool sendBinaries) { | 1045 Json::Value make_json_paint(const SkPaint& paint, UrlDataManager& urlDataManager
) { |
| 1050 Json::Value result(Json::objectValue); | 1046 Json::Value result(Json::objectValue); |
| 1051 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_STROKEWIDTH, paint.getStrokeWi
dth(), 0.0f); | 1047 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_STROKEWIDTH, paint.getStrokeWi
dth(), 0.0f); |
| 1052 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_STROKEMITER, paint.getStrokeMi
ter(), | 1048 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_STROKEMITER, paint.getStrokeMi
ter(), |
| 1053 SkPaintDefaults_MiterLimit); | 1049 SkPaintDefaults_MiterLimit); |
| 1054 store_bool(&result, SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS, paint.isAntiAlias(),
false); | 1050 store_bool(&result, SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS, paint.isAntiAlias(),
false); |
| 1055 store_bool(&result, SKDEBUGCANVAS_ATTRIBUTE_DITHER, paint.isDither(), false)
; | 1051 store_bool(&result, SKDEBUGCANVAS_ATTRIBUTE_DITHER, paint.isDither(), false)
; |
| 1056 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSIZE, paint.getTextSize(),
| 1052 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSIZE, paint.getTextSize(),
|
| 1057 SkPaintDefaults_TextSize); | 1053 SkPaintDefaults_TextSize); |
| 1058 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX, paint.getTextScale
X(), SK_Scalar1); | 1054 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX, paint.getTextScale
X(), SK_Scalar1); |
| 1059 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX, paint.getTextSkewX
(), 0.0f); | 1055 store_scalar(&result, SKDEBUGCANVAS_ATTRIBUTE_TEXTSCALEX, paint.getTextSkewX
(), 0.0f); |
| 1060 apply_paint_color(paint, &result); | 1056 apply_paint_color(paint, &result); |
| 1061 apply_paint_style(paint, &result); | 1057 apply_paint_style(paint, &result); |
| 1062 apply_paint_cap(paint, &result); | 1058 apply_paint_cap(paint, &result); |
| 1063 apply_paint_join(paint, &result); | 1059 apply_paint_join(paint, &result); |
| 1064 apply_paint_filterquality(paint, &result); | 1060 apply_paint_filterquality(paint, &result); |
| 1065 apply_paint_textalign(paint, &result); | 1061 apply_paint_textalign(paint, &result); |
| 1066 apply_paint_patheffect(paint, &result, sendBinaries); | 1062 apply_paint_patheffect(paint, &result, urlDataManager); |
| 1067 apply_paint_maskfilter(paint, &result, sendBinaries); | 1063 apply_paint_maskfilter(paint, &result, urlDataManager); |
| 1068 apply_paint_shader(paint, &result, sendBinaries); | 1064 apply_paint_shader(paint, &result, urlDataManager); |
| 1069 apply_paint_xfermode(paint, &result, sendBinaries); | 1065 apply_paint_xfermode(paint, &result, urlDataManager); |
| 1070 apply_paint_looper(paint, &result, sendBinaries); | 1066 apply_paint_looper(paint, &result, urlDataManager); |
| 1071 apply_paint_imagefilter(paint, &result, sendBinaries); | 1067 apply_paint_imagefilter(paint, &result, urlDataManager); |
| 1072 apply_paint_colorfilter(paint, &result, sendBinaries); | 1068 apply_paint_colorfilter(paint, &result, urlDataManager); |
| 1073 apply_paint_typeface(paint, &result, sendBinaries); | 1069 apply_paint_typeface(paint, &result, urlDataManager); |
| 1074 return result; | 1070 return result; |
| 1075 } | 1071 } |
| 1076 | 1072 |
| 1077 static SkPoint get_json_point(Json::Value point) { | 1073 static SkPoint get_json_point(Json::Value point) { |
| 1078 return SkPoint::Make(point[0].asFloat(), point[1].asFloat()); | 1074 return SkPoint::Make(point[0].asFloat(), point[1].asFloat()); |
| 1079 } | 1075 } |
| 1080 | 1076 |
| 1081 static SkColor get_json_color(Json::Value color) { | 1077 static SkColor get_json_color(Json::Value color) { |
| 1082 return SkColorSetARGB(color[0].asInt(), color[1].asInt(), color[2].asInt(),
color[3].asInt()); | 1078 return SkColorSetARGB(color[0].asInt(), color[1].asInt(), color[2].asInt(),
color[3].asInt()); |
| 1083 } | 1079 } |
| 1084 | 1080 |
| 1085 static void extract_json_paint_color(Json::Value& jsonPaint, SkPaint* target) { | 1081 static void extract_json_paint_color(Json::Value& jsonPaint, SkPaint* target) { |
| 1086 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLOR)) { | 1082 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLOR)) { |
| 1087 target->setColor(get_json_color(jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_COLOR]
)); | 1083 target->setColor(get_json_color(jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_COLOR]
)); |
| 1088 } | 1084 } |
| 1089 } | 1085 } |
| 1090 | 1086 |
| 1091 static void extract_json_paint_shader(Json::Value& jsonPaint, SkPaint* target) { | 1087 static void extract_json_paint_shader(Json::Value& jsonPaint, UrlDataManager& ur
lDataManager, |
| 1088 SkPaint* target) { |
| 1092 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_SHADER)) { | 1089 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_SHADER)) { |
| 1093 Json::Value jsonShader = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_SHADER]; | 1090 Json::Value jsonShader = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_SHADER]; |
| 1094 SkShader* shader = (SkShader*) load_flattenable(jsonShader); | 1091 SkShader* shader = (SkShader*) load_flattenable(jsonShader, urlDataManag
er); |
| 1095 if (shader != nullptr) { | 1092 if (shader != nullptr) { |
| 1096 target->setShader(shader); | 1093 target->setShader(shader); |
| 1097 shader->unref(); | 1094 shader->unref(); |
| 1098 } | 1095 } |
| 1099 } | 1096 } |
| 1100 } | 1097 } |
| 1101 | 1098 |
| 1102 static void extract_json_paint_patheffect(Json::Value& jsonPaint, SkPaint* targe
t) { | 1099 static void extract_json_paint_patheffect(Json::Value& jsonPaint, UrlDataManager
& urlDataManager, |
| 1100 SkPaint* target) { |
| 1103 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT)) { | 1101 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_PATHEFFECT)) { |
| 1104 Json::Value jsonPathEffect = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_PATHEFFEC
T]; | 1102 Json::Value jsonPathEffect = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_PATHEFFEC
T]; |
| 1105 SkPathEffect* pathEffect = (SkPathEffect*) load_flattenable(jsonPathEffe
ct); | 1103 SkPathEffect* pathEffect = (SkPathEffect*) load_flattenable(jsonPathEffe
ct, urlDataManager); |
| 1106 if (pathEffect != nullptr) { | 1104 if (pathEffect != nullptr) { |
| 1107 target->setPathEffect(pathEffect); | 1105 target->setPathEffect(pathEffect); |
| 1108 pathEffect->unref(); | 1106 pathEffect->unref(); |
| 1109 } | 1107 } |
| 1110 } | 1108 } |
| 1111 } | 1109 } |
| 1112 | 1110 |
| 1113 static void extract_json_paint_maskfilter(Json::Value& jsonPaint, SkPaint* targe
t) { | 1111 static void extract_json_paint_maskfilter(Json::Value& jsonPaint, UrlDataManager
& urlDataManager, |
| 1112 SkPaint* target) { |
| 1114 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER)) { | 1113 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_MASKFILTER)) { |
| 1115 Json::Value jsonMaskFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_MASKFILTE
R]; | 1114 Json::Value jsonMaskFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_MASKFILTE
R]; |
| 1116 SkMaskFilter* maskFilter = (SkMaskFilter*) load_flattenable(jsonMaskFilt
er); | 1115 SkMaskFilter* maskFilter = (SkMaskFilter*) load_flattenable(jsonMaskFilt
er, urlDataManager); |
| 1117 if (maskFilter != nullptr) { | 1116 if (maskFilter != nullptr) { |
| 1118 target->setMaskFilter(maskFilter); | 1117 target->setMaskFilter(maskFilter); |
| 1119 maskFilter->unref(); | 1118 maskFilter->unref(); |
| 1120 } | 1119 } |
| 1121 } | 1120 } |
| 1122 } | 1121 } |
| 1123 | 1122 |
| 1124 static void extract_json_paint_colorfilter(Json::Value& jsonPaint, SkPaint* targ
et) { | 1123 static void extract_json_paint_colorfilter(Json::Value& jsonPaint, UrlDataManage
r& urlDataManager, |
| 1124 SkPaint* target) { |
| 1125 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER)) { | 1125 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLORFILTER)) { |
| 1126 Json::Value jsonColorFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_COLORFIL
TER]; | 1126 Json::Value jsonColorFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_COLORFIL
TER]; |
| 1127 SkColorFilter* colorFilter = (SkColorFilter*) load_flattenable(jsonColor
Filter); | 1127 SkColorFilter* colorFilter = (SkColorFilter*) load_flattenable(jsonColor
Filter, |
| 1128 urlDataMa
nager); |
| 1128 if (colorFilter != nullptr) { | 1129 if (colorFilter != nullptr) { |
| 1129 target->setColorFilter(colorFilter); | 1130 target->setColorFilter(colorFilter); |
| 1130 colorFilter->unref(); | 1131 colorFilter->unref(); |
| 1131 } | 1132 } |
| 1132 } | 1133 } |
| 1133 } | 1134 } |
| 1134 | 1135 |
| 1135 static void extract_json_paint_xfermode(Json::Value& jsonPaint, SkPaint* target)
{ | 1136 static void extract_json_paint_xfermode(Json::Value& jsonPaint, UrlDataManager&
urlDataManager, |
| 1137 SkPaint* target) { |
| 1136 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_XFERMODE)) { | 1138 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_XFERMODE)) { |
| 1137 Json::Value jsonXfermode = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE]; | 1139 Json::Value jsonXfermode = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE]; |
| 1138 SkXfermode* xfermode = (SkXfermode*) load_flattenable(jsonXfermode); | 1140 SkXfermode* xfermode = (SkXfermode*) load_flattenable(jsonXfermode, urlD
ataManager); |
| 1139 if (xfermode != nullptr) { | 1141 if (xfermode != nullptr) { |
| 1140 target->setXfermode(xfermode); | 1142 target->setXfermode(xfermode); |
| 1141 xfermode->unref(); | 1143 xfermode->unref(); |
| 1142 } | 1144 } |
| 1143 } | 1145 } |
| 1144 } | 1146 } |
| 1145 | 1147 |
| 1146 static void extract_json_paint_looper(Json::Value& jsonPaint, SkPaint* target) { | 1148 static void extract_json_paint_looper(Json::Value& jsonPaint, UrlDataManager& ur
lDataManager, |
| 1149 SkPaint* target) { |
| 1147 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_LOOPER)) { | 1150 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_LOOPER)) { |
| 1148 Json::Value jsonLooper = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_LOOPER]; | 1151 Json::Value jsonLooper = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_LOOPER]; |
| 1149 SkDrawLooper* looper = (SkDrawLooper*) load_flattenable(jsonLooper); | 1152 SkDrawLooper* looper = (SkDrawLooper*) load_flattenable(jsonLooper, urlD
ataManager); |
| 1150 if (looper != nullptr) { | 1153 if (looper != nullptr) { |
| 1151 target->setLooper(looper); | 1154 target->setLooper(looper); |
| 1152 looper->unref(); | 1155 looper->unref(); |
| 1153 } | 1156 } |
| 1154 } | 1157 } |
| 1155 } | 1158 } |
| 1156 | 1159 |
| 1157 static void extract_json_paint_imagefilter(Json::Value& jsonPaint, SkPaint* targ
et) { | 1160 static void extract_json_paint_imagefilter(Json::Value& jsonPaint, UrlDataManage
r& urlDataManager, |
| 1161 SkPaint* target) { |
| 1158 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER)) { | 1162 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_IMAGEFILTER)) { |
| 1159 Json::Value jsonImageFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_IMAGEFIL
TER]; | 1163 Json::Value jsonImageFilter = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_IMAGEFIL
TER]; |
| 1160 SkImageFilter* imageFilter = (SkImageFilter*) load_flattenable(jsonImage
Filter); | 1164 SkImageFilter* imageFilter = (SkImageFilter*) load_flattenable(jsonImage
Filter, |
| 1165 urlDataMa
nager); |
| 1161 if (imageFilter != nullptr) { | 1166 if (imageFilter != nullptr) { |
| 1162 target->setImageFilter(imageFilter); | 1167 target->setImageFilter(imageFilter); |
| 1163 imageFilter->unref(); | 1168 imageFilter->unref(); |
| 1164 } | 1169 } |
| 1165 } | 1170 } |
| 1166 } | 1171 } |
| 1167 | 1172 |
| 1173 static void extract_json_paint_typeface(Json::Value& jsonPaint, UrlDataManager&
urlDataManager, |
| 1174 SkPaint* target) { |
| 1175 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE)) { |
| 1176 Json::Value jsonTypeface = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE]; |
| 1177 Json::Value jsonData = jsonTypeface[SKDEBUGCANVAS_ATTRIBUTE_DATA]; |
| 1178 const void* data; |
| 1179 Json::ArrayIndex length = decode_data(jsonData, urlDataManager, &data); |
| 1180 SkMemoryStream buffer(data, length); |
| 1181 SkTypeface* typeface = SkTypeface::Deserialize(&buffer); |
| 1182 target->setTypeface(typeface); |
| 1183 } |
| 1184 } |
| 1185 |
| 1168 static void extract_json_paint_style(Json::Value& jsonPaint, SkPaint* target) { | 1186 static void extract_json_paint_style(Json::Value& jsonPaint, SkPaint* target) { |
| 1169 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_STYLE)) { | 1187 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_STYLE)) { |
| 1170 const char* style = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_STYLE].asCString()
; | 1188 const char* style = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_STYLE].asCString()
; |
| 1171 if (!strcmp(style, SKDEBUGCANVAS_STYLE_FILL)) { | 1189 if (!strcmp(style, SKDEBUGCANVAS_STYLE_FILL)) { |
| 1172 target->setStyle(SkPaint::kFill_Style); | 1190 target->setStyle(SkPaint::kFill_Style); |
| 1173 } | 1191 } |
| 1174 else if (!strcmp(style, SKDEBUGCANVAS_STYLE_STROKE)) { | 1192 else if (!strcmp(style, SKDEBUGCANVAS_STYLE_STROKE)) { |
| 1175 target->setStyle(SkPaint::kStroke_Style); | 1193 target->setStyle(SkPaint::kStroke_Style); |
| 1176 } | 1194 } |
| 1177 else if (!strcmp(style, SKDEBUGCANVAS_STYLE_STROKEANDFILL)) { | 1195 else if (!strcmp(style, SKDEBUGCANVAS_STYLE_STROKEANDFILL)) { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 } | 1363 } |
| 1346 } | 1364 } |
| 1347 | 1365 |
| 1348 static void extract_json_paint_textskewx(Json::Value& jsonPaint, SkPaint* target
) { | 1366 static void extract_json_paint_textskewx(Json::Value& jsonPaint, SkPaint* target
) { |
| 1349 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX)) { | 1367 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX)) { |
| 1350 float textSkewX = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX].asFloat()
; | 1368 float textSkewX = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_TEXTSKEWX].asFloat()
; |
| 1351 target->setTextSkewX(textSkewX); | 1369 target->setTextSkewX(textSkewX); |
| 1352 } | 1370 } |
| 1353 } | 1371 } |
| 1354 | 1372 |
| 1355 static void extract_json_paint_typeface(Json::Value& jsonPaint, SkPaint* target)
{ | 1373 static void extract_json_paint(Json::Value& paint, UrlDataManager& urlDataManage
r, |
| 1356 if (jsonPaint.isMember(SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE)) { | 1374 SkPaint* result) { |
| 1357 Json::Value jsonTypeface = jsonPaint[SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE]; | |
| 1358 Json::Value bytes = jsonTypeface[SKDEBUGCANVAS_ATTRIBUTE_BYTES]; | |
| 1359 void* data; | |
| 1360 Json::ArrayIndex length = decode_data(bytes, &data); | |
| 1361 SkMemoryStream buffer(data, length); | |
| 1362 SkTypeface* typeface = SkTypeface::Deserialize(&buffer); | |
| 1363 sk_free(data); | |
| 1364 target->setTypeface(typeface); | |
| 1365 } | |
| 1366 } | |
| 1367 | |
| 1368 static void extract_json_paint(Json::Value& paint, SkPaint* result) { | |
| 1369 extract_json_paint_color(paint, result); | 1375 extract_json_paint_color(paint, result); |
| 1370 extract_json_paint_shader(paint, result); | 1376 extract_json_paint_shader(paint, urlDataManager, result); |
| 1371 extract_json_paint_patheffect(paint, result); | 1377 extract_json_paint_patheffect(paint, urlDataManager, result); |
| 1372 extract_json_paint_maskfilter(paint, result); | 1378 extract_json_paint_maskfilter(paint, urlDataManager, result); |
| 1373 extract_json_paint_colorfilter(paint, result); | 1379 extract_json_paint_colorfilter(paint, urlDataManager, result); |
| 1374 extract_json_paint_xfermode(paint, result); | 1380 extract_json_paint_xfermode(paint, urlDataManager, result); |
| 1375 extract_json_paint_looper(paint, result); | 1381 extract_json_paint_looper(paint, urlDataManager, result); |
| 1376 extract_json_paint_imagefilter(paint, result); | 1382 extract_json_paint_imagefilter(paint, urlDataManager, result); |
| 1383 extract_json_paint_typeface(paint, urlDataManager, result); |
| 1377 extract_json_paint_style(paint, result); | 1384 extract_json_paint_style(paint, result); |
| 1378 extract_json_paint_strokewidth(paint, result); | 1385 extract_json_paint_strokewidth(paint, result); |
| 1379 extract_json_paint_strokemiter(paint, result); | 1386 extract_json_paint_strokemiter(paint, result); |
| 1380 extract_json_paint_strokejoin(paint, result); | 1387 extract_json_paint_strokejoin(paint, result); |
| 1381 extract_json_paint_cap(paint, result); | 1388 extract_json_paint_cap(paint, result); |
| 1382 extract_json_paint_filterquality(paint, result); | 1389 extract_json_paint_filterquality(paint, result); |
| 1383 extract_json_paint_antialias(paint, result); | 1390 extract_json_paint_antialias(paint, result); |
| 1384 extract_json_paint_dither(paint, result); | 1391 extract_json_paint_dither(paint, result); |
| 1385 extract_json_paint_blur(paint, result); | 1392 extract_json_paint_blur(paint, result); |
| 1386 extract_json_paint_dashing(paint, result); | 1393 extract_json_paint_dashing(paint, result); |
| 1387 extract_json_paint_textalign(paint, result); | 1394 extract_json_paint_textalign(paint, result); |
| 1388 extract_json_paint_textsize(paint, result); | 1395 extract_json_paint_textsize(paint, result); |
| 1389 extract_json_paint_textscalex(paint, result); | 1396 extract_json_paint_textscalex(paint, result); |
| 1390 extract_json_paint_textskewx(paint, result); | 1397 extract_json_paint_textskewx(paint, result); |
| 1391 extract_json_paint_typeface(paint, result); | |
| 1392 } | 1398 } |
| 1393 | 1399 |
| 1394 static void extract_json_rect(Json::Value& rect, SkRect* result) { | 1400 static void extract_json_rect(Json::Value& rect, SkRect* result) { |
| 1395 result->set(rect[0].asFloat(), rect[1].asFloat(), rect[2].asFloat(), rect[3]
.asFloat()); | 1401 result->set(rect[0].asFloat(), rect[1].asFloat(), rect[2].asFloat(), rect[3]
.asFloat()); |
| 1396 } | 1402 } |
| 1397 | 1403 |
| 1398 static void extract_json_irect(Json::Value& rect, SkIRect* result) { | 1404 static void extract_json_irect(Json::Value& rect, SkIRect* result) { |
| 1399 result->set(rect[0].asInt(), rect[1].asInt(), rect[2].asInt(), rect[3].asInt
()); | 1405 result->set(rect[0].asInt(), rect[1].asInt(), rect[2].asInt(), rect[3].asInt
()); |
| 1400 } | 1406 } |
| 1401 | 1407 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1500 | 1506 |
| 1501 SkClearCommand::SkClearCommand(SkColor color) : INHERITED(kDrawClear_OpType) { | 1507 SkClearCommand::SkClearCommand(SkColor color) : INHERITED(kDrawClear_OpType) { |
| 1502 fColor = color; | 1508 fColor = color; |
| 1503 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 1509 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
| 1504 } | 1510 } |
| 1505 | 1511 |
| 1506 void SkClearCommand::execute(SkCanvas* canvas) const { | 1512 void SkClearCommand::execute(SkCanvas* canvas) const { |
| 1507 canvas->clear(fColor); | 1513 canvas->clear(fColor); |
| 1508 } | 1514 } |
| 1509 | 1515 |
| 1510 Json::Value SkClearCommand::toJSON() const { | 1516 Json::Value SkClearCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1511 Json::Value result = INHERITED::toJSON(); | 1517 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1512 result[SKDEBUGCANVAS_ATTRIBUTE_COLOR] = make_json_color(fColor); | 1518 result[SKDEBUGCANVAS_ATTRIBUTE_COLOR] = make_json_color(fColor); |
| 1513 return result; | 1519 return result; |
| 1514 } | 1520 } |
| 1515 | 1521 |
| 1516 SkClearCommand* SkClearCommand::fromJSON(Json::Value& command) { | 1522 SkClearCommand* SkClearCommand::fromJSON(Json::Value& command, UrlDataManager&
urlDataManager) { |
| 1517 Json::Value color = command[SKDEBUGCANVAS_ATTRIBUTE_COLOR]; | 1523 Json::Value color = command[SKDEBUGCANVAS_ATTRIBUTE_COLOR]; |
| 1518 return new SkClearCommand(get_json_color(color)); | 1524 return new SkClearCommand(get_json_color(color)); |
| 1519 } | 1525 } |
| 1520 | 1526 |
| 1521 SkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool d
oAA) | 1527 SkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool d
oAA) |
| 1522 : INHERITED(kClipPath_OpType) { | 1528 : INHERITED(kClipPath_OpType) { |
| 1523 fPath = path; | 1529 fPath = path; |
| 1524 fOp = op; | 1530 fOp = op; |
| 1525 fDoAA = doAA; | 1531 fDoAA = doAA; |
| 1526 | 1532 |
| 1527 fInfo.push(SkObjectParser::PathToString(path)); | 1533 fInfo.push(SkObjectParser::PathToString(path)); |
| 1528 fInfo.push(SkObjectParser::RegionOpToString(op)); | 1534 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 1529 fInfo.push(SkObjectParser::BoolToString(doAA)); | 1535 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 1530 } | 1536 } |
| 1531 | 1537 |
| 1532 void SkClipPathCommand::execute(SkCanvas* canvas) const { | 1538 void SkClipPathCommand::execute(SkCanvas* canvas) const { |
| 1533 canvas->clipPath(fPath, fOp, fDoAA); | 1539 canvas->clipPath(fPath, fOp, fDoAA); |
| 1534 } | 1540 } |
| 1535 | 1541 |
| 1536 bool SkClipPathCommand::render(SkCanvas* canvas) const { | 1542 bool SkClipPathCommand::render(SkCanvas* canvas) const { |
| 1537 render_path(canvas, fPath); | 1543 render_path(canvas, fPath); |
| 1538 return true; | 1544 return true; |
| 1539 } | 1545 } |
| 1540 | 1546 |
| 1541 Json::Value SkClipPathCommand::toJSON() const { | 1547 Json::Value SkClipPathCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1542 Json::Value result = INHERITED::toJSON(); | 1548 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1543 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); | 1549 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); |
| 1544 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); | 1550 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); |
| 1545 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = fDoAA; | 1551 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = fDoAA; |
| 1546 return result; | 1552 return result; |
| 1547 } | 1553 } |
| 1548 | 1554 |
| 1549 SkClipPathCommand* SkClipPathCommand::fromJSON(Json::Value& command) { | 1555 SkClipPathCommand* SkClipPathCommand::fromJSON(Json::Value& command, |
| 1556 UrlDataManager& urlDataManager) { |
| 1550 SkPath path; | 1557 SkPath path; |
| 1551 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); | 1558 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); |
| 1552 return new SkClipPathCommand(path, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), | 1559 return new SkClipPathCommand(path, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), |
| 1553 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); | 1560 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); |
| 1554 } | 1561 } |
| 1555 | 1562 |
| 1556 SkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op
) | 1563 SkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op
) |
| 1557 : INHERITED(kClipRegion_OpType) { | 1564 : INHERITED(kClipRegion_OpType) { |
| 1558 fRegion = region; | 1565 fRegion = region; |
| 1559 fOp = op; | 1566 fOp = op; |
| 1560 | 1567 |
| 1561 fInfo.push(SkObjectParser::RegionToString(region)); | 1568 fInfo.push(SkObjectParser::RegionToString(region)); |
| 1562 fInfo.push(SkObjectParser::RegionOpToString(op)); | 1569 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 1563 } | 1570 } |
| 1564 | 1571 |
| 1565 void SkClipRegionCommand::execute(SkCanvas* canvas) const { | 1572 void SkClipRegionCommand::execute(SkCanvas* canvas) const { |
| 1566 canvas->clipRegion(fRegion, fOp); | 1573 canvas->clipRegion(fRegion, fOp); |
| 1567 } | 1574 } |
| 1568 | 1575 |
| 1569 Json::Value SkClipRegionCommand::toJSON() const { | 1576 Json::Value SkClipRegionCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1570 Json::Value result = INHERITED::toJSON(); | 1577 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1571 result[SKDEBUGCANVAS_ATTRIBUTE_REGION] = make_json_region(fRegion); | 1578 result[SKDEBUGCANVAS_ATTRIBUTE_REGION] = make_json_region(fRegion); |
| 1572 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); | 1579 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); |
| 1573 return result; | 1580 return result; |
| 1574 } | 1581 } |
| 1575 | 1582 |
| 1576 SkClipRegionCommand* SkClipRegionCommand::fromJSON(Json::Value& command) { | 1583 SkClipRegionCommand* SkClipRegionCommand::fromJSON(Json::Value& command, |
| 1584 UrlDataManager& urlDataManage
r) { |
| 1577 SkASSERT(false); | 1585 SkASSERT(false); |
| 1578 return nullptr; | 1586 return nullptr; |
| 1579 } | 1587 } |
| 1580 | 1588 |
| 1581 SkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool d
oAA) | 1589 SkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool d
oAA) |
| 1582 : INHERITED(kClipRect_OpType) { | 1590 : INHERITED(kClipRect_OpType) { |
| 1583 fRect = rect; | 1591 fRect = rect; |
| 1584 fOp = op; | 1592 fOp = op; |
| 1585 fDoAA = doAA; | 1593 fDoAA = doAA; |
| 1586 | 1594 |
| 1587 fInfo.push(SkObjectParser::RectToString(rect)); | 1595 fInfo.push(SkObjectParser::RectToString(rect)); |
| 1588 fInfo.push(SkObjectParser::RegionOpToString(op)); | 1596 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 1589 fInfo.push(SkObjectParser::BoolToString(doAA)); | 1597 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 1590 } | 1598 } |
| 1591 | 1599 |
| 1592 void SkClipRectCommand::execute(SkCanvas* canvas) const { | 1600 void SkClipRectCommand::execute(SkCanvas* canvas) const { |
| 1593 canvas->clipRect(fRect, fOp, fDoAA); | 1601 canvas->clipRect(fRect, fOp, fDoAA); |
| 1594 } | 1602 } |
| 1595 | 1603 |
| 1596 Json::Value SkClipRectCommand::toJSON() const { | 1604 Json::Value SkClipRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1597 Json::Value result = INHERITED::toJSON(); | 1605 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1598 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fRect); | 1606 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fRect); |
| 1599 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); | 1607 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); |
| 1600 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); | 1608 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); |
| 1601 return result; | 1609 return result; |
| 1602 } | 1610 } |
| 1603 | 1611 |
| 1604 SkClipRectCommand* SkClipRectCommand::fromJSON(Json::Value& command) { | 1612 SkClipRectCommand* SkClipRectCommand::fromJSON(Json::Value& command, |
| 1613 UrlDataManager& urlDataManager) { |
| 1605 SkRect rect; | 1614 SkRect rect; |
| 1606 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); | 1615 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); |
| 1607 return new SkClipRectCommand(rect, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), | 1616 return new SkClipRectCommand(rect, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), |
| 1608 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); | 1617 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); |
| 1609 } | 1618 } |
| 1610 | 1619 |
| 1611 SkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bo
ol doAA) | 1620 SkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bo
ol doAA) |
| 1612 : INHERITED(kClipRRect_OpType) { | 1621 : INHERITED(kClipRRect_OpType) { |
| 1613 fRRect = rrect; | 1622 fRRect = rrect; |
| 1614 fOp = op; | 1623 fOp = op; |
| 1615 fDoAA = doAA; | 1624 fDoAA = doAA; |
| 1616 | 1625 |
| 1617 fInfo.push(SkObjectParser::RRectToString(rrect)); | 1626 fInfo.push(SkObjectParser::RRectToString(rrect)); |
| 1618 fInfo.push(SkObjectParser::RegionOpToString(op)); | 1627 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 1619 fInfo.push(SkObjectParser::BoolToString(doAA)); | 1628 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 1620 } | 1629 } |
| 1621 | 1630 |
| 1622 void SkClipRRectCommand::execute(SkCanvas* canvas) const { | 1631 void SkClipRRectCommand::execute(SkCanvas* canvas) const { |
| 1623 canvas->clipRRect(fRRect, fOp, fDoAA); | 1632 canvas->clipRRect(fRRect, fOp, fDoAA); |
| 1624 } | 1633 } |
| 1625 | 1634 |
| 1626 bool SkClipRRectCommand::render(SkCanvas* canvas) const { | 1635 bool SkClipRRectCommand::render(SkCanvas* canvas) const { |
| 1627 render_rrect(canvas, fRRect); | 1636 render_rrect(canvas, fRRect); |
| 1628 return true; | 1637 return true; |
| 1629 } | 1638 } |
| 1630 | 1639 |
| 1631 Json::Value SkClipRRectCommand::toJSON() const { | 1640 Json::Value SkClipRRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1632 Json::Value result = INHERITED::toJSON(); | 1641 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1633 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rrect(fRRect); | 1642 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rrect(fRRect); |
| 1634 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); | 1643 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); |
| 1635 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); | 1644 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); |
| 1636 return result; | 1645 return result; |
| 1637 } | 1646 } |
| 1638 | 1647 |
| 1639 SkClipRRectCommand* SkClipRRectCommand::fromJSON(Json::Value& command) { | 1648 SkClipRRectCommand* SkClipRRectCommand::fromJSON(Json::Value& command, |
| 1649 UrlDataManager& urlDataManager)
{ |
| 1640 SkRRect rrect; | 1650 SkRRect rrect; |
| 1641 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rrect); | 1651 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rrect); |
| 1642 return new SkClipRRectCommand(rrect, | 1652 return new SkClipRRectCommand(rrect, |
| 1643 get_json_regionop(command[SKDEBUGCANVAS_ATTRIB
UTE_REGIONOP]), | 1653 get_json_regionop(command[SKDEBUGCANVAS_ATTRIB
UTE_REGIONOP]), |
| 1644 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asB
ool()); | 1654 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asB
ool()); |
| 1645 } | 1655 } |
| 1646 | 1656 |
| 1647 SkConcatCommand::SkConcatCommand(const SkMatrix& matrix) | 1657 SkConcatCommand::SkConcatCommand(const SkMatrix& matrix) |
| 1648 : INHERITED(kConcat_OpType) { | 1658 : INHERITED(kConcat_OpType) { |
| 1649 fMatrix = matrix; | 1659 fMatrix = matrix; |
| 1650 | 1660 |
| 1651 fInfo.push(SkObjectParser::MatrixToString(matrix)); | 1661 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 1652 } | 1662 } |
| 1653 | 1663 |
| 1654 void SkConcatCommand::execute(SkCanvas* canvas) const { | 1664 void SkConcatCommand::execute(SkCanvas* canvas) const { |
| 1655 canvas->concat(fMatrix); | 1665 canvas->concat(fMatrix); |
| 1656 } | 1666 } |
| 1657 | 1667 |
| 1658 Json::Value SkConcatCommand::toJSON() const { | 1668 Json::Value SkConcatCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1659 Json::Value result = INHERITED::toJSON(); | 1669 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1660 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); | 1670 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); |
| 1661 return result; | 1671 return result; |
| 1662 } | 1672 } |
| 1663 | 1673 |
| 1664 SkConcatCommand* SkConcatCommand::fromJSON(Json::Value& command) { | 1674 SkConcatCommand* SkConcatCommand::fromJSON(Json::Value& command, UrlDataManager&
urlDataManager) { |
| 1665 SkMatrix matrix; | 1675 SkMatrix matrix; |
| 1666 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); | 1676 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); |
| 1667 return new SkConcatCommand(matrix); | 1677 return new SkConcatCommand(matrix); |
| 1668 } | 1678 } |
| 1669 | 1679 |
| 1670 SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left,
SkScalar top, | 1680 SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left,
SkScalar top, |
| 1671 const SkPaint* paint) | 1681 const SkPaint* paint) |
| 1672 : INHERITED(kDrawBitmap_OpType) { | 1682 : INHERITED(kDrawBitmap_OpType) { |
| 1673 fBitmap = bitmap; | 1683 fBitmap = bitmap; |
| 1674 fLeft = left; | 1684 fLeft = left; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1690 | 1700 |
| 1691 void SkDrawBitmapCommand::execute(SkCanvas* canvas) const { | 1701 void SkDrawBitmapCommand::execute(SkCanvas* canvas) const { |
| 1692 canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); | 1702 canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); |
| 1693 } | 1703 } |
| 1694 | 1704 |
| 1695 bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { | 1705 bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { |
| 1696 render_bitmap(canvas, fBitmap); | 1706 render_bitmap(canvas, fBitmap); |
| 1697 return true; | 1707 return true; |
| 1698 } | 1708 } |
| 1699 | 1709 |
| 1700 Json::Value SkDrawBitmapCommand::toJSON() const { | 1710 Json::Value SkDrawBitmapCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1701 Json::Value result = INHERITED::toJSON(); | 1711 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1702 Json::Value encoded; | 1712 Json::Value encoded; |
| 1703 if (flatten(fBitmap, &encoded, SKDEBUGCANVAS_SEND_BINARIES)) { | 1713 if (flatten(fBitmap, &encoded, urlDataManager)) { |
| 1704 Json::Value command(Json::objectValue); | 1714 Json::Value command(Json::objectValue); |
| 1705 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; | 1715 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; |
| 1706 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fLeft, fTop); | 1716 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fLeft, fTop); |
| 1707 if (fPaintPtr != nullptr) { | 1717 if (fPaintPtr != nullptr) { |
| 1708 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr, | 1718 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr,
urlDataManager); |
| 1709 SKDEBUGCANVA
S_SEND_BINARIES); | |
| 1710 } | 1719 } |
| 1711 } | 1720 } |
| 1712 return result; | 1721 return result; |
| 1713 } | 1722 } |
| 1714 | 1723 |
| 1715 SkDrawBitmapCommand* SkDrawBitmapCommand::fromJSON(Json::Value& command) { | 1724 SkDrawBitmapCommand* SkDrawBitmapCommand::fromJSON(Json::Value& command, |
| 1716 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP]); | 1725 UrlDataManager& urlDataManage
r) { |
| 1726 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP], urlD
ataManager); |
| 1717 if (bitmap == nullptr) { | 1727 if (bitmap == nullptr) { |
| 1718 return nullptr; | 1728 return nullptr; |
| 1719 } | 1729 } |
| 1720 Json::Value point = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; | 1730 Json::Value point = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; |
| 1721 SkPaint* paintPtr; | 1731 SkPaint* paintPtr; |
| 1722 SkPaint paint; | 1732 SkPaint paint; |
| 1723 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 1733 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 1724 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 1734 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 1725 paintPtr = &paint; | 1735 paintPtr = &paint; |
| 1726 } | 1736 } |
| 1727 else { | 1737 else { |
| 1728 paintPtr = nullptr; | 1738 paintPtr = nullptr; |
| 1729 } | 1739 } |
| 1730 SkDrawBitmapCommand* result = new SkDrawBitmapCommand(*bitmap, point[0].asFl
oat(), | 1740 SkDrawBitmapCommand* result = new SkDrawBitmapCommand(*bitmap, point[0].asFl
oat(), |
| 1731 point[1].asFloat(), pa
intPtr); | 1741 point[1].asFloat(), pa
intPtr); |
| 1732 delete bitmap; | 1742 delete bitmap; |
| 1733 return result; | 1743 return result; |
| 1734 } | 1744 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1757 void SkDrawBitmapNineCommand::execute(SkCanvas* canvas) const { | 1767 void SkDrawBitmapNineCommand::execute(SkCanvas* canvas) const { |
| 1758 canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); | 1768 canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); |
| 1759 } | 1769 } |
| 1760 | 1770 |
| 1761 bool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { | 1771 bool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { |
| 1762 SkRect tmp = SkRect::Make(fCenter); | 1772 SkRect tmp = SkRect::Make(fCenter); |
| 1763 render_bitmap(canvas, fBitmap, &tmp); | 1773 render_bitmap(canvas, fBitmap, &tmp); |
| 1764 return true; | 1774 return true; |
| 1765 } | 1775 } |
| 1766 | 1776 |
| 1767 Json::Value SkDrawBitmapNineCommand::toJSON() const { | 1777 Json::Value SkDrawBitmapNineCommand::toJSON(UrlDataManager& urlDataManager) cons
t { |
| 1768 Json::Value result = INHERITED::toJSON(); | 1778 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1769 Json::Value encoded; | 1779 Json::Value encoded; |
| 1770 if (flatten(fBitmap, &encoded, SKDEBUGCANVAS_SEND_BINARIES)) { | 1780 if (flatten(fBitmap, &encoded, urlDataManager)) { |
| 1771 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; | 1781 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; |
| 1772 result[SKDEBUGCANVAS_ATTRIBUTE_CENTER] = make_json_irect(fCenter); | 1782 result[SKDEBUGCANVAS_ATTRIBUTE_CENTER] = make_json_irect(fCenter); |
| 1773 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); | 1783 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); |
| 1774 if (fPaintPtr != nullptr) { | 1784 if (fPaintPtr != nullptr) { |
| 1775 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr, | 1785 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr,
urlDataManager); |
| 1776 SKDEBUGCANVA
S_SEND_BINARIES); | |
| 1777 } | 1786 } |
| 1778 } | 1787 } |
| 1779 return result; | 1788 return result; |
| 1780 } | 1789 } |
| 1781 | 1790 |
| 1782 SkDrawBitmapNineCommand* SkDrawBitmapNineCommand::fromJSON(Json::Value& command)
{ | 1791 SkDrawBitmapNineCommand* SkDrawBitmapNineCommand::fromJSON(Json::Value& command,
|
| 1783 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP]); | 1792 UrlDataManager& urlDa
taManager) { |
| 1793 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP], urlD
ataManager); |
| 1784 if (bitmap == nullptr) { | 1794 if (bitmap == nullptr) { |
| 1785 return nullptr; | 1795 return nullptr; |
| 1786 } | 1796 } |
| 1787 SkIRect center; | 1797 SkIRect center; |
| 1788 extract_json_irect(command[SKDEBUGCANVAS_ATTRIBUTE_CENTER], ¢er); | 1798 extract_json_irect(command[SKDEBUGCANVAS_ATTRIBUTE_CENTER], ¢er); |
| 1789 SkRect dst; | 1799 SkRect dst; |
| 1790 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); | 1800 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); |
| 1791 SkPaint* paintPtr; | 1801 SkPaint* paintPtr; |
| 1792 SkPaint paint; | 1802 SkPaint paint; |
| 1793 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 1803 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 1794 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 1804 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 1795 paintPtr = &paint; | 1805 paintPtr = &paint; |
| 1796 } | 1806 } |
| 1797 else { | 1807 else { |
| 1798 paintPtr = nullptr; | 1808 paintPtr = nullptr; |
| 1799 } | 1809 } |
| 1800 SkDrawBitmapNineCommand* result = new SkDrawBitmapNineCommand(*bitmap, cente
r, dst, paintPtr); | 1810 SkDrawBitmapNineCommand* result = new SkDrawBitmapNineCommand(*bitmap, cente
r, dst, paintPtr); |
| 1801 delete bitmap; | 1811 delete bitmap; |
| 1802 return result; | 1812 return result; |
| 1803 } | 1813 } |
| 1804 | 1814 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1835 | 1845 |
| 1836 void SkDrawBitmapRectCommand::execute(SkCanvas* canvas) const { | 1846 void SkDrawBitmapRectCommand::execute(SkCanvas* canvas) const { |
| 1837 canvas->legacy_drawBitmapRect(fBitmap, this->srcRect(), fDst, fPaintPtr, fCo
nstraint); | 1847 canvas->legacy_drawBitmapRect(fBitmap, this->srcRect(), fDst, fPaintPtr, fCo
nstraint); |
| 1838 } | 1848 } |
| 1839 | 1849 |
| 1840 bool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { | 1850 bool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { |
| 1841 render_bitmap(canvas, fBitmap, this->srcRect()); | 1851 render_bitmap(canvas, fBitmap, this->srcRect()); |
| 1842 return true; | 1852 return true; |
| 1843 } | 1853 } |
| 1844 | 1854 |
| 1845 Json::Value SkDrawBitmapRectCommand::toJSON() const { | 1855 Json::Value SkDrawBitmapRectCommand::toJSON(UrlDataManager& urlDataManager) cons
t { |
| 1846 Json::Value result = INHERITED::toJSON(); | 1856 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1847 Json::Value encoded; | 1857 Json::Value encoded; |
| 1848 if (flatten(fBitmap, &encoded, SKDEBUGCANVAS_SEND_BINARIES)) { | 1858 if (flatten(fBitmap, &encoded, urlDataManager)) { |
| 1849 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; | 1859 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; |
| 1850 if (!fSrc.isEmpty()) { | 1860 if (!fSrc.isEmpty()) { |
| 1851 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = make_json_rect(fSrc); | 1861 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = make_json_rect(fSrc); |
| 1852 } | 1862 } |
| 1853 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); | 1863 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); |
| 1854 if (fPaintPtr != nullptr) { | 1864 if (fPaintPtr != nullptr) { |
| 1855 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr, | 1865 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr,
urlDataManager); |
| 1856 SKDEBUGCANVA
S_SEND_BINARIES); | |
| 1857 } | 1866 } |
| 1858 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { | 1867 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { |
| 1859 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); | 1868 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); |
| 1860 } | 1869 } |
| 1861 } | 1870 } |
| 1862 return result; | 1871 return result; |
| 1863 } | 1872 } |
| 1864 | 1873 |
| 1865 SkDrawBitmapRectCommand* SkDrawBitmapRectCommand::fromJSON(Json::Value& command)
{ | 1874 SkDrawBitmapRectCommand* SkDrawBitmapRectCommand::fromJSON(Json::Value& command,
|
| 1866 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP]); | 1875 UrlDataManager& urlDa
taManager) { |
| 1876 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP], urlD
ataManager); |
| 1867 if (bitmap == nullptr) { | 1877 if (bitmap == nullptr) { |
| 1868 return nullptr; | 1878 return nullptr; |
| 1869 } | 1879 } |
| 1870 SkRect dst; | 1880 SkRect dst; |
| 1871 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); | 1881 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); |
| 1872 SkPaint* paintPtr; | 1882 SkPaint* paintPtr; |
| 1873 SkPaint paint; | 1883 SkPaint paint; |
| 1874 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 1884 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 1875 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 1885 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 1876 paintPtr = &paint; | 1886 paintPtr = &paint; |
| 1877 } | 1887 } |
| 1878 else { | 1888 else { |
| 1879 paintPtr = nullptr; | 1889 paintPtr = nullptr; |
| 1880 } | 1890 } |
| 1881 SkCanvas::SrcRectConstraint constraint; | 1891 SkCanvas::SrcRectConstraint constraint; |
| 1882 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_STRICT) && | 1892 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_STRICT) && |
| 1883 command[SKDEBUGCANVAS_ATTRIBUTE_STRICT].asBool()) { | 1893 command[SKDEBUGCANVAS_ATTRIBUTE_STRICT].asBool()) { |
| 1884 constraint = SkCanvas::kStrict_SrcRectConstraint; | 1894 constraint = SkCanvas::kStrict_SrcRectConstraint; |
| 1885 } | 1895 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1926 SkAutoCanvasRestore acr(canvas, true); | 1936 SkAutoCanvasRestore acr(canvas, true); |
| 1927 canvas->clear(0xFFFFFFFF); | 1937 canvas->clear(0xFFFFFFFF); |
| 1928 | 1938 |
| 1929 xlate_and_scale_to_bounds(canvas, SkRect::MakeXYWH(fLeft, fTop, | 1939 xlate_and_scale_to_bounds(canvas, SkRect::MakeXYWH(fLeft, fTop, |
| 1930 SkIntToScalar(fImage->wid
th()), | 1940 SkIntToScalar(fImage->wid
th()), |
| 1931 SkIntToScalar(fImage->hei
ght()))); | 1941 SkIntToScalar(fImage->hei
ght()))); |
| 1932 this->execute(canvas); | 1942 this->execute(canvas); |
| 1933 return true; | 1943 return true; |
| 1934 } | 1944 } |
| 1935 | 1945 |
| 1936 Json::Value SkDrawImageCommand::toJSON() const { | 1946 Json::Value SkDrawImageCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 1937 Json::Value result = INHERITED::toJSON(); | 1947 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 1938 Json::Value encoded; | 1948 Json::Value encoded; |
| 1939 if (flatten(*fImage, &encoded, SKDEBUGCANVAS_SEND_BINARIES)) { | 1949 if (flatten(*fImage, &encoded, urlDataManager)) { |
| 1940 result[SKDEBUGCANVAS_ATTRIBUTE_IMAGE] = encoded; | 1950 result[SKDEBUGCANVAS_ATTRIBUTE_IMAGE] = encoded; |
| 1941 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fLeft, fTop); | 1951 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fLeft, fTop); |
| 1942 if (fPaint.isValid()) { | 1952 if (fPaint.isValid()) { |
| 1943 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaint.get(
), | 1953 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaint.get(
), urlDataManager); |
| 1944 SKDEBUGCANVA
S_SEND_BINARIES); | |
| 1945 } | 1954 } |
| 1946 } | 1955 } |
| 1947 return result; | 1956 return result; |
| 1948 } | 1957 } |
| 1949 | 1958 |
| 1950 SkDrawImageCommand* SkDrawImageCommand::fromJSON(Json::Value& command) { | 1959 SkDrawImageCommand* SkDrawImageCommand::fromJSON(Json::Value& command, |
| 1951 SkImage* image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE]); | 1960 UrlDataManager& urlDataManager)
{ |
| 1961 SkImage* image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE], urlDataM
anager); |
| 1952 if (image == nullptr) { | 1962 if (image == nullptr) { |
| 1953 return nullptr; | 1963 return nullptr; |
| 1954 } | 1964 } |
| 1955 Json::Value point = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; | 1965 Json::Value point = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; |
| 1956 SkPaint* paintPtr; | 1966 SkPaint* paintPtr; |
| 1957 SkPaint paint; | 1967 SkPaint paint; |
| 1958 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 1968 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 1959 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 1969 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 1960 paintPtr = &paint; | 1970 paintPtr = &paint; |
| 1961 } | 1971 } |
| 1962 else { | 1972 else { |
| 1963 paintPtr = nullptr; | 1973 paintPtr = nullptr; |
| 1964 } | 1974 } |
| 1965 SkDrawImageCommand* result = new SkDrawImageCommand(image, point[0].asFloat(
), | 1975 SkDrawImageCommand* result = new SkDrawImageCommand(image, point[0].asFloat(
), |
| 1966 point[1].asFloat(), pain
tPtr); | 1976 point[1].asFloat(), pain
tPtr); |
| 1967 image->unref(); | 1977 image->unref(); |
| 1968 return result; | 1978 return result; |
| 1969 } | 1979 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2003 bool SkDrawImageRectCommand::render(SkCanvas* canvas) const { | 2013 bool SkDrawImageRectCommand::render(SkCanvas* canvas) const { |
| 2004 SkAutoCanvasRestore acr(canvas, true); | 2014 SkAutoCanvasRestore acr(canvas, true); |
| 2005 canvas->clear(0xFFFFFFFF); | 2015 canvas->clear(0xFFFFFFFF); |
| 2006 | 2016 |
| 2007 xlate_and_scale_to_bounds(canvas, fDst); | 2017 xlate_and_scale_to_bounds(canvas, fDst); |
| 2008 | 2018 |
| 2009 this->execute(canvas); | 2019 this->execute(canvas); |
| 2010 return true; | 2020 return true; |
| 2011 } | 2021 } |
| 2012 | 2022 |
| 2013 Json::Value SkDrawImageRectCommand::toJSON() const { | 2023 Json::Value SkDrawImageRectCommand::toJSON(UrlDataManager& urlDataManager) const
{ |
| 2014 Json::Value result = INHERITED::toJSON(); | 2024 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2015 Json::Value encoded; | 2025 Json::Value encoded; |
| 2016 if (flatten(*fImage.get(), &encoded, SKDEBUGCANVAS_SEND_BINARIES)) { | 2026 if (flatten(*fImage.get(), &encoded, urlDataManager)) { |
| 2017 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; | 2027 result[SKDEBUGCANVAS_ATTRIBUTE_BITMAP] = encoded; |
| 2018 if (fSrc.isValid()) { | 2028 if (fSrc.isValid()) { |
| 2019 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = make_json_rect(*fSrc.get()); | 2029 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = make_json_rect(*fSrc.get()); |
| 2020 } | 2030 } |
| 2021 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); | 2031 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = make_json_rect(fDst); |
| 2022 if (fPaint.isValid()) { | 2032 if (fPaint.isValid()) { |
| 2023 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaint.get(
), | 2033 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaint.get(
), urlDataManager); |
| 2024 SKDEBUGCANVA
S_SEND_BINARIES); | |
| 2025 } | 2034 } |
| 2026 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { | 2035 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { |
| 2027 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); | 2036 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); |
| 2028 } | 2037 } |
| 2029 } | 2038 } |
| 2030 return result; | 2039 return result; |
| 2031 } | 2040 } |
| 2032 | 2041 |
| 2033 SkDrawImageRectCommand* SkDrawImageRectCommand::fromJSON(Json::Value& command) { | 2042 SkDrawImageRectCommand* SkDrawImageRectCommand::fromJSON(Json::Value& command, |
| 2034 SkImage* image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE]); | 2043 UrlDataManager& urlData
Manager) { |
| 2044 SkImage* image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE], urlDataM
anager); |
| 2035 if (image == nullptr) { | 2045 if (image == nullptr) { |
| 2036 return nullptr; | 2046 return nullptr; |
| 2037 } | 2047 } |
| 2038 SkRect dst; | 2048 SkRect dst; |
| 2039 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); | 2049 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_DST], &dst); |
| 2040 SkPaint* paintPtr; | 2050 SkPaint* paintPtr; |
| 2041 SkPaint paint; | 2051 SkPaint paint; |
| 2042 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 2052 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 2043 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2053 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 2044 paintPtr = &paint; | 2054 paintPtr = &paint; |
| 2045 } | 2055 } |
| 2046 else { | 2056 else { |
| 2047 paintPtr = nullptr; | 2057 paintPtr = nullptr; |
| 2048 } | 2058 } |
| 2049 SkCanvas::SrcRectConstraint constraint; | 2059 SkCanvas::SrcRectConstraint constraint; |
| 2050 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_STRICT) && | 2060 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_STRICT) && |
| 2051 command[SKDEBUGCANVAS_ATTRIBUTE_STRICT].asBool()) { | 2061 command[SKDEBUGCANVAS_ATTRIBUTE_STRICT].asBool()) { |
| 2052 constraint = SkCanvas::kStrict_SrcRectConstraint; | 2062 constraint = SkCanvas::kStrict_SrcRectConstraint; |
| 2053 } | 2063 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2091 SkPaint p; | 2101 SkPaint p; |
| 2092 p.setColor(SK_ColorBLACK); | 2102 p.setColor(SK_ColorBLACK); |
| 2093 p.setStyle(SkPaint::kStroke_Style); | 2103 p.setStyle(SkPaint::kStroke_Style); |
| 2094 | 2104 |
| 2095 canvas->drawOval(fOval, p); | 2105 canvas->drawOval(fOval, p); |
| 2096 canvas->restore(); | 2106 canvas->restore(); |
| 2097 | 2107 |
| 2098 return true; | 2108 return true; |
| 2099 } | 2109 } |
| 2100 | 2110 |
| 2101 Json::Value SkDrawOvalCommand::toJSON() const { | 2111 Json::Value SkDrawOvalCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2102 Json::Value result = INHERITED::toJSON(); | 2112 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2103 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fOval); | 2113 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fOval); |
| 2104 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2114 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2105 return result; | 2115 return result; |
| 2106 } | 2116 } |
| 2107 | 2117 |
| 2108 SkDrawOvalCommand* SkDrawOvalCommand::fromJSON(Json::Value& command) { | 2118 SkDrawOvalCommand* SkDrawOvalCommand::fromJSON(Json::Value& command, |
| 2119 UrlDataManager& urlDataManager) { |
| 2109 SkRect coords; | 2120 SkRect coords; |
| 2110 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); | 2121 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); |
| 2111 SkPaint paint; | 2122 SkPaint paint; |
| 2112 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2123 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2113 return new SkDrawOvalCommand(coords, paint); | 2124 return new SkDrawOvalCommand(coords, paint); |
| 2114 } | 2125 } |
| 2115 | 2126 |
| 2116 SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) | 2127 SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) |
| 2117 : INHERITED(kDrawPaint_OpType) { | 2128 : INHERITED(kDrawPaint_OpType) { |
| 2118 fPaint = paint; | 2129 fPaint = paint; |
| 2119 | 2130 |
| 2120 fInfo.push(SkObjectParser::PaintToString(paint)); | 2131 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2121 } | 2132 } |
| 2122 | 2133 |
| 2123 void SkDrawPaintCommand::execute(SkCanvas* canvas) const { | 2134 void SkDrawPaintCommand::execute(SkCanvas* canvas) const { |
| 2124 canvas->drawPaint(fPaint); | 2135 canvas->drawPaint(fPaint); |
| 2125 } | 2136 } |
| 2126 | 2137 |
| 2127 bool SkDrawPaintCommand::render(SkCanvas* canvas) const { | 2138 bool SkDrawPaintCommand::render(SkCanvas* canvas) const { |
| 2128 canvas->clear(0xFFFFFFFF); | 2139 canvas->clear(0xFFFFFFFF); |
| 2129 canvas->drawPaint(fPaint); | 2140 canvas->drawPaint(fPaint); |
| 2130 return true; | 2141 return true; |
| 2131 } | 2142 } |
| 2132 | 2143 |
| 2133 Json::Value SkDrawPaintCommand::toJSON() const { | 2144 Json::Value SkDrawPaintCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2134 Json::Value result = INHERITED::toJSON(); | 2145 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2135 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2146 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2136 return result; | 2147 return result; |
| 2137 } | 2148 } |
| 2138 | 2149 |
| 2139 SkDrawPaintCommand* SkDrawPaintCommand::fromJSON(Json::Value& command) { | 2150 SkDrawPaintCommand* SkDrawPaintCommand::fromJSON(Json::Value& command, |
| 2151 UrlDataManager& urlDataManager)
{ |
| 2140 SkPaint paint; | 2152 SkPaint paint; |
| 2141 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2153 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2142 return new SkDrawPaintCommand(paint); | 2154 return new SkDrawPaintCommand(paint); |
| 2143 } | 2155 } |
| 2144 | 2156 |
| 2145 SkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) | 2157 SkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) |
| 2146 : INHERITED(kDrawPath_OpType) { | 2158 : INHERITED(kDrawPath_OpType) { |
| 2147 fPath = path; | 2159 fPath = path; |
| 2148 fPaint = paint; | 2160 fPaint = paint; |
| 2149 | 2161 |
| 2150 fInfo.push(SkObjectParser::PathToString(path)); | 2162 fInfo.push(SkObjectParser::PathToString(path)); |
| 2151 fInfo.push(SkObjectParser::PaintToString(paint)); | 2163 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2152 } | 2164 } |
| 2153 | 2165 |
| 2154 void SkDrawPathCommand::execute(SkCanvas* canvas) const { | 2166 void SkDrawPathCommand::execute(SkCanvas* canvas) const { |
| 2155 canvas->drawPath(fPath, fPaint); | 2167 canvas->drawPath(fPath, fPaint); |
| 2156 } | 2168 } |
| 2157 | 2169 |
| 2158 bool SkDrawPathCommand::render(SkCanvas* canvas) const { | 2170 bool SkDrawPathCommand::render(SkCanvas* canvas) const { |
| 2159 render_path(canvas, fPath); | 2171 render_path(canvas, fPath); |
| 2160 return true; | 2172 return true; |
| 2161 } | 2173 } |
| 2162 | 2174 |
| 2163 Json::Value SkDrawPathCommand::toJSON() const { | 2175 Json::Value SkDrawPathCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2164 Json::Value result = INHERITED::toJSON(); | 2176 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2165 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); | 2177 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); |
| 2166 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2178 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2167 return result; | 2179 return result; |
| 2168 } | 2180 } |
| 2169 | 2181 |
| 2170 SkDrawPathCommand* SkDrawPathCommand::fromJSON(Json::Value& command) { | 2182 SkDrawPathCommand* SkDrawPathCommand::fromJSON(Json::Value& command, |
| 2183 UrlDataManager& urlDataManager) { |
| 2171 SkPath path; | 2184 SkPath path; |
| 2172 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); | 2185 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); |
| 2173 SkPaint paint; | 2186 SkPaint paint; |
| 2174 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2187 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2175 return new SkDrawPathCommand(path, paint); | 2188 return new SkDrawPathCommand(path, paint); |
| 2176 } | 2189 } |
| 2177 | 2190 |
| 2178 SkBeginDrawPictureCommand::SkBeginDrawPictureCommand(const SkPicture* picture, | 2191 SkBeginDrawPictureCommand::SkBeginDrawPictureCommand(const SkPicture* picture, |
| 2179 const SkMatrix* matrix, | 2192 const SkMatrix* matrix, |
| 2180 const SkPaint* paint) | 2193 const SkPaint* paint) |
| 2181 : INHERITED(kBeginDrawPicture_OpType) | 2194 : INHERITED(kBeginDrawPicture_OpType) |
| 2182 , fPicture(SkRef(picture)) { | 2195 , fPicture(SkRef(picture)) { |
| 2183 | 2196 |
| 2184 SkString* str = new SkString; | 2197 SkString* str = new SkString; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2274 SkPaint p; | 2287 SkPaint p; |
| 2275 p.setColor(SK_ColorBLACK); | 2288 p.setColor(SK_ColorBLACK); |
| 2276 p.setStyle(SkPaint::kStroke_Style); | 2289 p.setStyle(SkPaint::kStroke_Style); |
| 2277 | 2290 |
| 2278 canvas->drawPoints(fMode, fCount, fPts, p); | 2291 canvas->drawPoints(fMode, fCount, fPts, p); |
| 2279 canvas->restore(); | 2292 canvas->restore(); |
| 2280 | 2293 |
| 2281 return true; | 2294 return true; |
| 2282 } | 2295 } |
| 2283 | 2296 |
| 2284 Json::Value SkDrawPointsCommand::toJSON() const { | 2297 Json::Value SkDrawPointsCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2285 Json::Value result = INHERITED::toJSON(); | 2298 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2286 result[SKDEBUGCANVAS_ATTRIBUTE_MODE] = make_json_pointmode(fMode); | 2299 result[SKDEBUGCANVAS_ATTRIBUTE_MODE] = make_json_pointmode(fMode); |
| 2287 Json::Value points(Json::arrayValue); | 2300 Json::Value points(Json::arrayValue); |
| 2288 for (size_t i = 0; i < fCount; i++) { | 2301 for (size_t i = 0; i < fCount; i++) { |
| 2289 points.append(make_json_point(fPts[i])); | 2302 points.append(make_json_point(fPts[i])); |
| 2290 } | 2303 } |
| 2291 result[SKDEBUGCANVAS_ATTRIBUTE_POINTS] = points; | 2304 result[SKDEBUGCANVAS_ATTRIBUTE_POINTS] = points; |
| 2292 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2305 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2293 return result; | 2306 return result; |
| 2294 } | 2307 } |
| 2295 | 2308 |
| 2296 SkDrawPointsCommand* SkDrawPointsCommand::fromJSON(Json::Value& command) { | 2309 SkDrawPointsCommand* SkDrawPointsCommand::fromJSON(Json::Value& command, |
| 2310 UrlDataManager& urlDataManage
r) { |
| 2297 SkCanvas::PointMode mode; | 2311 SkCanvas::PointMode mode; |
| 2298 const char* jsonMode = command[SKDEBUGCANVAS_ATTRIBUTE_MODE].asCString(); | 2312 const char* jsonMode = command[SKDEBUGCANVAS_ATTRIBUTE_MODE].asCString(); |
| 2299 if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_POINTS)) { | 2313 if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_POINTS)) { |
| 2300 mode = SkCanvas::kPoints_PointMode; | 2314 mode = SkCanvas::kPoints_PointMode; |
| 2301 } | 2315 } |
| 2302 else if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_LINES)) { | 2316 else if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_LINES)) { |
| 2303 mode = SkCanvas::kLines_PointMode; | 2317 mode = SkCanvas::kLines_PointMode; |
| 2304 } | 2318 } |
| 2305 else if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_POLYGON)) { | 2319 else if (!strcmp(jsonMode, SKDEBUGCANVAS_POINTMODE_POLYGON)) { |
| 2306 mode = SkCanvas::kPolygon_PointMode; | 2320 mode = SkCanvas::kPolygon_PointMode; |
| 2307 } | 2321 } |
| 2308 else { | 2322 else { |
| 2309 SkASSERT(false); | 2323 SkASSERT(false); |
| 2310 return nullptr; | 2324 return nullptr; |
| 2311 } | 2325 } |
| 2312 Json::Value jsonPoints = command[SKDEBUGCANVAS_ATTRIBUTE_POINTS]; | 2326 Json::Value jsonPoints = command[SKDEBUGCANVAS_ATTRIBUTE_POINTS]; |
| 2313 int count = (int) jsonPoints.size(); | 2327 int count = (int) jsonPoints.size(); |
| 2314 SkPoint* points = (SkPoint*) sk_malloc_throw(count * sizeof(SkPoint)); | 2328 SkPoint* points = (SkPoint*) sk_malloc_throw(count * sizeof(SkPoint)); |
| 2315 for (int i = 0; i < count; i++) { | 2329 for (int i = 0; i < count; i++) { |
| 2316 points[i] = SkPoint::Make(jsonPoints[i][0].asFloat(), jsonPoints[i][1].a
sFloat()); | 2330 points[i] = SkPoint::Make(jsonPoints[i][0].asFloat(), jsonPoints[i][1].a
sFloat()); |
| 2317 } | 2331 } |
| 2318 SkPaint paint; | 2332 SkPaint paint; |
| 2319 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2333 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2320 SkDrawPointsCommand* result = new SkDrawPointsCommand(mode, count, points, p
aint); | 2334 SkDrawPointsCommand* result = new SkDrawPointsCommand(mode, count, points, p
aint); |
| 2321 sk_free(points); | 2335 sk_free(points); |
| 2322 return result; | 2336 return result; |
| 2323 } | 2337 } |
| 2324 | 2338 |
| 2325 SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, | 2339 SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, |
| 2326 const SkPoint pos[], const SkPaint& p
aint) | 2340 const SkPoint pos[], const SkPaint& p
aint) |
| 2327 : INHERITED(kDrawPosText_OpType) { | 2341 : INHERITED(kDrawPosText_OpType) { |
| 2328 size_t numPts = paint.countText(text, byteLength); | 2342 size_t numPts = paint.countText(text, byteLength); |
| 2329 | 2343 |
| 2330 fText = new char[byteLength]; | 2344 fText = new char[byteLength]; |
| 2331 memcpy(fText, text, byteLength); | 2345 memcpy(fText, text, byteLength); |
| 2332 fByteLength = byteLength; | 2346 fByteLength = byteLength; |
| 2333 | 2347 |
| 2334 fPos = new SkPoint[numPts]; | 2348 fPos = new SkPoint[numPts]; |
| 2335 memcpy(fPos, pos, numPts * sizeof(SkPoint)); | 2349 memcpy(fPos, pos, numPts * sizeof(SkPoint)); |
| 2336 | 2350 |
| 2337 fPaint = paint; | 2351 fPaint = paint; |
| 2338 | 2352 |
| 2339 fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
ing())); | 2353 fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
ing())); |
| 2340 // TODO(chudy): Test that this works. | 2354 // TODO(chudy): Test that this works. |
| 2341 fInfo.push(SkObjectParser::PointsToString(pos, 1)); | 2355 fInfo.push(SkObjectParser::PointsToString(pos, 1)); |
| 2342 fInfo.push(SkObjectParser::PaintToString(paint)); | 2356 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2343 } | 2357 } |
| 2344 | 2358 |
| 2345 void SkDrawPosTextCommand::execute(SkCanvas* canvas) const { | 2359 void SkDrawPosTextCommand::execute(SkCanvas* canvas) const { |
| 2346 canvas->drawPosText(fText, fByteLength, fPos, fPaint); | 2360 canvas->drawPosText(fText, fByteLength, fPos, fPaint); |
| 2347 } | 2361 } |
| 2348 | 2362 |
| 2349 Json::Value SkDrawPosTextCommand::toJSON() const { | 2363 Json::Value SkDrawPosTextCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2350 Json::Value result = INHERITED::toJSON(); | 2364 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2351 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, | 2365 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, |
| 2352 ((const char*) fText) + f
ByteLength); | 2366 ((const char*) fText) + f
ByteLength); |
| 2353 Json::Value coords(Json::arrayValue); | 2367 Json::Value coords(Json::arrayValue); |
| 2354 for (size_t i = 0; i < fByteLength; i++) { | 2368 for (size_t i = 0; i < fByteLength; i++) { |
| 2355 coords.append(make_json_point(fPos[i])); | 2369 coords.append(make_json_point(fPos[i])); |
| 2356 } | 2370 } |
| 2357 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = coords; | 2371 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = coords; |
| 2358 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2372 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2359 return result; | 2373 return result; |
| 2360 } | 2374 } |
| 2361 | 2375 |
| 2362 SkDrawPosTextCommand* SkDrawPosTextCommand::fromJSON(Json::Value& command) { | 2376 SkDrawPosTextCommand* SkDrawPosTextCommand::fromJSON(Json::Value& command, |
| 2377 UrlDataManager& urlDataMana
ger) { |
| 2363 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); | 2378 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); |
| 2364 SkPaint paint; | 2379 SkPaint paint; |
| 2365 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2380 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2366 Json::Value coords = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; | 2381 Json::Value coords = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; |
| 2367 int count = (int) coords.size(); | 2382 int count = (int) coords.size(); |
| 2368 SkPoint* points = (SkPoint*) sk_malloc_throw(count * sizeof(SkPoint)); | 2383 SkPoint* points = (SkPoint*) sk_malloc_throw(count * sizeof(SkPoint)); |
| 2369 for (int i = 0; i < count; i++) { | 2384 for (int i = 0; i < count; i++) { |
| 2370 points[i] = SkPoint::Make(coords[i][0].asFloat(), coords[i][1].asFloat()
); | 2385 points[i] = SkPoint::Make(coords[i][0].asFloat(), coords[i][1].asFloat()
); |
| 2371 } | 2386 } |
| 2372 return new SkDrawPosTextCommand(text, strlen(text), points, paint); | 2387 return new SkDrawPosTextCommand(text, strlen(text), points, paint); |
| 2373 } | 2388 } |
| 2374 | 2389 |
| 2375 SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength
, | 2390 SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength
, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2454 SkRect bounds = fBlob->bounds().makeOffset(fXPos, fYPos); | 2469 SkRect bounds = fBlob->bounds().makeOffset(fXPos, fYPos); |
| 2455 xlate_and_scale_to_bounds(canvas, bounds); | 2470 xlate_and_scale_to_bounds(canvas, bounds); |
| 2456 | 2471 |
| 2457 canvas->drawTextBlob(fBlob.get(), fXPos, fYPos, fPaint); | 2472 canvas->drawTextBlob(fBlob.get(), fXPos, fYPos, fPaint); |
| 2458 | 2473 |
| 2459 canvas->restore(); | 2474 canvas->restore(); |
| 2460 | 2475 |
| 2461 return true; | 2476 return true; |
| 2462 } | 2477 } |
| 2463 | 2478 |
| 2464 Json::Value SkDrawTextBlobCommand::toJSON() const { | 2479 Json::Value SkDrawTextBlobCommand::toJSON(UrlDataManager& urlDataManager) const
{ |
| 2465 Json::Value result = INHERITED::toJSON(); | 2480 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2466 Json::Value runs(Json::arrayValue); | 2481 Json::Value runs(Json::arrayValue); |
| 2467 SkTextBlobRunIterator iter(fBlob.get()); | 2482 SkTextBlobRunIterator iter(fBlob.get()); |
| 2468 while (!iter.done()) { | 2483 while (!iter.done()) { |
| 2469 Json::Value run(Json::objectValue); | 2484 Json::Value run(Json::objectValue); |
| 2470 Json::Value jsonPositions(Json::arrayValue); | 2485 Json::Value jsonPositions(Json::arrayValue); |
| 2471 Json::Value jsonGlyphs(Json::arrayValue); | 2486 Json::Value jsonGlyphs(Json::arrayValue); |
| 2472 const SkScalar* iterPositions = iter.pos(); | 2487 const SkScalar* iterPositions = iter.pos(); |
| 2473 const uint16_t* iterGlyphs = iter.glyphs(); | 2488 const uint16_t* iterGlyphs = iter.glyphs(); |
| 2474 for (uint32_t i = 0; i < iter.glyphCount(); i++) { | 2489 for (uint32_t i = 0; i < iter.glyphCount(); i++) { |
| 2475 switch (iter.positioning()) { | 2490 switch (iter.positioning()) { |
| 2476 case SkTextBlob::kFull_Positioning: | 2491 case SkTextBlob::kFull_Positioning: |
| 2477 jsonPositions.append(make_json_point(iterPositions[i * 2], | 2492 jsonPositions.append(make_json_point(iterPositions[i * 2], |
| 2478 iterPositions[i * 2 + 1
])); | 2493 iterPositions[i * 2 + 1
])); |
| 2479 break; | 2494 break; |
| 2480 case SkTextBlob::kHorizontal_Positioning: | 2495 case SkTextBlob::kHorizontal_Positioning: |
| 2481 jsonPositions.append(Json::Value(iterPositions[i])); | 2496 jsonPositions.append(Json::Value(iterPositions[i])); |
| 2482 break; | 2497 break; |
| 2483 case SkTextBlob::kDefault_Positioning: | 2498 case SkTextBlob::kDefault_Positioning: |
| 2484 break; | 2499 break; |
| 2485 } | 2500 } |
| 2486 jsonGlyphs.append(Json::Value(iterGlyphs[i])); | 2501 jsonGlyphs.append(Json::Value(iterGlyphs[i])); |
| 2487 } | 2502 } |
| 2488 if (iter.positioning() != SkTextBlob::kDefault_Positioning) { | 2503 if (iter.positioning() != SkTextBlob::kDefault_Positioning) { |
| 2489 run[SKDEBUGCANVAS_ATTRIBUTE_POSITIONS] = jsonPositions; | 2504 run[SKDEBUGCANVAS_ATTRIBUTE_POSITIONS] = jsonPositions; |
| 2490 } | 2505 } |
| 2491 run[SKDEBUGCANVAS_ATTRIBUTE_GLYPHS] = jsonGlyphs; | 2506 run[SKDEBUGCANVAS_ATTRIBUTE_GLYPHS] = jsonGlyphs; |
| 2492 SkPaint fontPaint; | 2507 SkPaint fontPaint; |
| 2493 iter.applyFontToPaint(&fontPaint); | 2508 iter.applyFontToPaint(&fontPaint); |
| 2494 run[SKDEBUGCANVAS_ATTRIBUTE_FONT] = make_json_paint(fontPaint, SKDEBUGCA
NVAS_SEND_BINARIES); | 2509 run[SKDEBUGCANVAS_ATTRIBUTE_FONT] = make_json_paint(fontPaint, urlDataMa
nager); |
| 2495 run[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(iter.offset()); | 2510 run[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(iter.offset()); |
| 2496 runs.append(run); | 2511 runs.append(run); |
| 2497 iter.next(); | 2512 iter.next(); |
| 2498 } | 2513 } |
| 2499 result[SKDEBUGCANVAS_ATTRIBUTE_RUNS] = runs; | 2514 result[SKDEBUGCANVAS_ATTRIBUTE_RUNS] = runs; |
| 2500 result[SKDEBUGCANVAS_ATTRIBUTE_X] = Json::Value(fXPos); | 2515 result[SKDEBUGCANVAS_ATTRIBUTE_X] = Json::Value(fXPos); |
| 2501 result[SKDEBUGCANVAS_ATTRIBUTE_Y] = Json::Value(fYPos); | 2516 result[SKDEBUGCANVAS_ATTRIBUTE_Y] = Json::Value(fYPos); |
| 2502 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2517 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2503 return result; | 2518 return result; |
| 2504 } | 2519 } |
| 2505 | 2520 |
| 2506 SkDrawTextBlobCommand* SkDrawTextBlobCommand::fromJSON(Json::Value& command) { | 2521 SkDrawTextBlobCommand* SkDrawTextBlobCommand::fromJSON(Json::Value& command, |
| 2522 UrlDataManager& urlDataMa
nager) { |
| 2507 SkTextBlobBuilder builder; | 2523 SkTextBlobBuilder builder; |
| 2508 Json::Value runs = command[SKDEBUGCANVAS_ATTRIBUTE_RUNS]; | 2524 Json::Value runs = command[SKDEBUGCANVAS_ATTRIBUTE_RUNS]; |
| 2509 for (Json::ArrayIndex i = 0 ; i < runs.size(); i++) { | 2525 for (Json::ArrayIndex i = 0 ; i < runs.size(); i++) { |
| 2510 Json::Value run = runs[i]; | 2526 Json::Value run = runs[i]; |
| 2511 SkPaint font; | 2527 SkPaint font; |
| 2512 font.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 2528 font.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
| 2513 extract_json_paint(run[SKDEBUGCANVAS_ATTRIBUTE_FONT], &font); | 2529 extract_json_paint(run[SKDEBUGCANVAS_ATTRIBUTE_FONT], urlDataManager, &f
ont); |
| 2514 Json::Value glyphs = run[SKDEBUGCANVAS_ATTRIBUTE_GLYPHS]; | 2530 Json::Value glyphs = run[SKDEBUGCANVAS_ATTRIBUTE_GLYPHS]; |
| 2515 int count = glyphs.size(); | 2531 int count = glyphs.size(); |
| 2516 Json::Value coords = run[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; | 2532 Json::Value coords = run[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; |
| 2517 SkScalar x = coords[0].asFloat(); | 2533 SkScalar x = coords[0].asFloat(); |
| 2518 SkScalar y = coords[1].asFloat(); | 2534 SkScalar y = coords[1].asFloat(); |
| 2519 if (run.isMember(SKDEBUGCANVAS_ATTRIBUTE_POSITIONS)) { | 2535 if (run.isMember(SKDEBUGCANVAS_ATTRIBUTE_POSITIONS)) { |
| 2520 Json::Value positions = run[SKDEBUGCANVAS_ATTRIBUTE_POSITIONS]; | 2536 Json::Value positions = run[SKDEBUGCANVAS_ATTRIBUTE_POSITIONS]; |
| 2521 if (positions.size() > 0 && positions[0].isNumeric()) { | 2537 if (positions.size() > 0 && positions[0].isNumeric()) { |
| 2522 SkTextBlobBuilder::RunBuffer buffer = builder.allocRunPosH(font,
count, y); | 2538 SkTextBlobBuilder::RunBuffer buffer = builder.allocRunPosH(font,
count, y); |
| 2523 for (int j = 0; j < count; j++) { | 2539 for (int j = 0; j < count; j++) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2537 else { | 2553 else { |
| 2538 SkTextBlobBuilder::RunBuffer buffer = builder.allocRun(font, count,
x, y); | 2554 SkTextBlobBuilder::RunBuffer buffer = builder.allocRun(font, count,
x, y); |
| 2539 for (int j = 0; j < count; j++) { | 2555 for (int j = 0; j < count; j++) { |
| 2540 buffer.glyphs[j] = glyphs[j].asUInt(); | 2556 buffer.glyphs[j] = glyphs[j].asUInt(); |
| 2541 } | 2557 } |
| 2542 } | 2558 } |
| 2543 } | 2559 } |
| 2544 SkScalar x = command[SKDEBUGCANVAS_ATTRIBUTE_X].asFloat(); | 2560 SkScalar x = command[SKDEBUGCANVAS_ATTRIBUTE_X].asFloat(); |
| 2545 SkScalar y = command[SKDEBUGCANVAS_ATTRIBUTE_Y].asFloat(); | 2561 SkScalar y = command[SKDEBUGCANVAS_ATTRIBUTE_Y].asFloat(); |
| 2546 SkPaint paint; | 2562 SkPaint paint; |
| 2547 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2563 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2548 return new SkDrawTextBlobCommand(builder.build(), x, y, paint); | 2564 return new SkDrawTextBlobCommand(builder.build(), x, y, paint); |
| 2549 } | 2565 } |
| 2550 | 2566 |
| 2551 SkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor c
olors[4], | 2567 SkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor c
olors[4], |
| 2552 const SkPoint texCoords[4], SkXfermode* x
fermode, | 2568 const SkPoint texCoords[4], SkXfermode* x
fermode, |
| 2553 const SkPaint& paint) | 2569 const SkPaint& paint) |
| 2554 : INHERITED(kDrawPatch_OpType) { | 2570 : INHERITED(kDrawPatch_OpType) { |
| 2555 memcpy(fCubics, cubics, sizeof(fCubics)); | 2571 memcpy(fCubics, cubics, sizeof(fCubics)); |
| 2556 if (colors != nullptr) { | 2572 if (colors != nullptr) { |
| 2557 memcpy(fColors, colors, sizeof(fColors)); | 2573 memcpy(fColors, colors, sizeof(fColors)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2570 } | 2586 } |
| 2571 fPaint = paint; | 2587 fPaint = paint; |
| 2572 | 2588 |
| 2573 fInfo.push(SkObjectParser::PaintToString(paint)); | 2589 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2574 } | 2590 } |
| 2575 | 2591 |
| 2576 void SkDrawPatchCommand::execute(SkCanvas* canvas) const { | 2592 void SkDrawPatchCommand::execute(SkCanvas* canvas) const { |
| 2577 canvas->drawPatch(fCubics, fColorsPtr, fTexCoordsPtr, fXfermode, fPaint); | 2593 canvas->drawPatch(fCubics, fColorsPtr, fTexCoordsPtr, fXfermode, fPaint); |
| 2578 } | 2594 } |
| 2579 | 2595 |
| 2580 Json::Value SkDrawPatchCommand::toJSON() const { | 2596 Json::Value SkDrawPatchCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2581 Json::Value result = INHERITED::toJSON(); | 2597 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2582 Json::Value cubics = Json::Value(Json::arrayValue); | 2598 Json::Value cubics = Json::Value(Json::arrayValue); |
| 2583 for (int i = 0; i < 12; i++) { | 2599 for (int i = 0; i < 12; i++) { |
| 2584 cubics.append(make_json_point(fCubics[i])); | 2600 cubics.append(make_json_point(fCubics[i])); |
| 2585 } | 2601 } |
| 2586 result[SKDEBUGCANVAS_ATTRIBUTE_CUBICS] = cubics; | 2602 result[SKDEBUGCANVAS_ATTRIBUTE_CUBICS] = cubics; |
| 2587 if (fColorsPtr != nullptr) { | 2603 if (fColorsPtr != nullptr) { |
| 2588 Json::Value colors = Json::Value(Json::arrayValue); | 2604 Json::Value colors = Json::Value(Json::arrayValue); |
| 2589 for (int i = 0; i < 4; i++) { | 2605 for (int i = 0; i < 4; i++) { |
| 2590 colors.append(make_json_color(fColorsPtr[i])); | 2606 colors.append(make_json_color(fColorsPtr[i])); |
| 2591 } | 2607 } |
| 2592 result[SKDEBUGCANVAS_ATTRIBUTE_COLORS] = colors; | 2608 result[SKDEBUGCANVAS_ATTRIBUTE_COLORS] = colors; |
| 2593 } | 2609 } |
| 2594 if (fTexCoordsPtr != nullptr) { | 2610 if (fTexCoordsPtr != nullptr) { |
| 2595 Json::Value texCoords = Json::Value(Json::arrayValue); | 2611 Json::Value texCoords = Json::Value(Json::arrayValue); |
| 2596 for (int i = 0; i < 4; i++) { | 2612 for (int i = 0; i < 4; i++) { |
| 2597 texCoords.append(make_json_point(fTexCoords[i])); | 2613 texCoords.append(make_json_point(fTexCoords[i])); |
| 2598 } | 2614 } |
| 2599 result[SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS] = texCoords; | 2615 result[SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS] = texCoords; |
| 2600 } | 2616 } |
| 2601 if (fXfermode.get() != nullptr) { | 2617 if (fXfermode.get() != nullptr) { |
| 2602 Json::Value jsonXfermode; | 2618 Json::Value jsonXfermode; |
| 2603 flatten(fXfermode, &jsonXfermode, SKDEBUGCANVAS_SEND_BINARIES); | 2619 flatten(fXfermode, &jsonXfermode, urlDataManager); |
| 2604 result[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE] = jsonXfermode; | 2620 result[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE] = jsonXfermode; |
| 2605 } | 2621 } |
| 2606 return result; | 2622 return result; |
| 2607 } | 2623 } |
| 2608 | 2624 |
| 2609 SkDrawPatchCommand* SkDrawPatchCommand::fromJSON(Json::Value& command) { | 2625 SkDrawPatchCommand* SkDrawPatchCommand::fromJSON(Json::Value& command, |
| 2626 UrlDataManager& urlDataManager)
{ |
| 2610 Json::Value jsonCubics = command[SKDEBUGCANVAS_ATTRIBUTE_CUBICS]; | 2627 Json::Value jsonCubics = command[SKDEBUGCANVAS_ATTRIBUTE_CUBICS]; |
| 2611 SkPoint cubics[12]; | 2628 SkPoint cubics[12]; |
| 2612 for (int i = 0; i < 12; i++) { | 2629 for (int i = 0; i < 12; i++) { |
| 2613 cubics[i] = get_json_point(jsonCubics[i]); | 2630 cubics[i] = get_json_point(jsonCubics[i]); |
| 2614 } | 2631 } |
| 2615 SkColor* colorsPtr; | 2632 SkColor* colorsPtr; |
| 2616 SkColor colors[4]; | 2633 SkColor colors[4]; |
| 2617 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLORS)) { | 2634 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_COLORS)) { |
| 2618 Json::Value jsonColors = command[SKDEBUGCANVAS_ATTRIBUTE_COLORS]; | 2635 Json::Value jsonColors = command[SKDEBUGCANVAS_ATTRIBUTE_COLORS]; |
| 2619 for (int i = 0; i < 4; i++) { | 2636 for (int i = 0; i < 4; i++) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2632 texCoords[i] = get_json_point(jsonTexCoords[i]); | 2649 texCoords[i] = get_json_point(jsonTexCoords[i]); |
| 2633 } | 2650 } |
| 2634 texCoordsPtr = texCoords; | 2651 texCoordsPtr = texCoords; |
| 2635 } | 2652 } |
| 2636 else { | 2653 else { |
| 2637 texCoordsPtr = nullptr; | 2654 texCoordsPtr = nullptr; |
| 2638 } | 2655 } |
| 2639 SkAutoTUnref<SkXfermode> xfermode; | 2656 SkAutoTUnref<SkXfermode> xfermode; |
| 2640 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_XFERMODE)) { | 2657 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_XFERMODE)) { |
| 2641 Json::Value jsonXfermode = command[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE]; | 2658 Json::Value jsonXfermode = command[SKDEBUGCANVAS_ATTRIBUTE_XFERMODE]; |
| 2642 xfermode.reset((SkXfermode*) load_flattenable(jsonXfermode)); | 2659 xfermode.reset((SkXfermode*) load_flattenable(jsonXfermode, urlDataManag
er)); |
| 2643 } | 2660 } |
| 2644 SkPaint paint; | 2661 SkPaint paint; |
| 2645 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2662 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2646 return new SkDrawPatchCommand(cubics, colorsPtr, texCoordsPtr, xfermode, pai
nt); | 2663 return new SkDrawPatchCommand(cubics, colorsPtr, texCoordsPtr, xfermode, pai
nt); |
| 2647 } | 2664 } |
| 2648 | 2665 |
| 2649 SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) | 2666 SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) |
| 2650 : INHERITED(kDrawRect_OpType) { | 2667 : INHERITED(kDrawRect_OpType) { |
| 2651 fRect = rect; | 2668 fRect = rect; |
| 2652 fPaint = paint; | 2669 fPaint = paint; |
| 2653 | 2670 |
| 2654 fInfo.push(SkObjectParser::RectToString(rect)); | 2671 fInfo.push(SkObjectParser::RectToString(rect)); |
| 2655 fInfo.push(SkObjectParser::PaintToString(paint)); | 2672 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2656 } | 2673 } |
| 2657 | 2674 |
| 2658 void SkDrawRectCommand::execute(SkCanvas* canvas) const { | 2675 void SkDrawRectCommand::execute(SkCanvas* canvas) const { |
| 2659 canvas->drawRect(fRect, fPaint); | 2676 canvas->drawRect(fRect, fPaint); |
| 2660 } | 2677 } |
| 2661 | 2678 |
| 2662 Json::Value SkDrawRectCommand::toJSON() const { | 2679 Json::Value SkDrawRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2663 Json::Value result = INHERITED::toJSON(); | 2680 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2664 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fRect); | 2681 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rect(fRect); |
| 2665 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2682 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2666 return result; | 2683 return result; |
| 2667 } | 2684 } |
| 2668 | 2685 |
| 2669 SkDrawRectCommand* SkDrawRectCommand::fromJSON(Json::Value& command) { | 2686 SkDrawRectCommand* SkDrawRectCommand::fromJSON(Json::Value& command, |
| 2687 UrlDataManager& urlDataManager) { |
| 2670 SkRect coords; | 2688 SkRect coords; |
| 2671 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); | 2689 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); |
| 2672 SkPaint paint; | 2690 SkPaint paint; |
| 2673 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2691 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2674 return new SkDrawRectCommand(coords, paint); | 2692 return new SkDrawRectCommand(coords, paint); |
| 2675 } | 2693 } |
| 2676 | 2694 |
| 2677 SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& pain
t) | 2695 SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& pain
t) |
| 2678 : INHERITED(kDrawRRect_OpType) { | 2696 : INHERITED(kDrawRRect_OpType) { |
| 2679 fRRect = rrect; | 2697 fRRect = rrect; |
| 2680 fPaint = paint; | 2698 fPaint = paint; |
| 2681 | 2699 |
| 2682 fInfo.push(SkObjectParser::RRectToString(rrect)); | 2700 fInfo.push(SkObjectParser::RRectToString(rrect)); |
| 2683 fInfo.push(SkObjectParser::PaintToString(paint)); | 2701 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2684 } | 2702 } |
| 2685 | 2703 |
| 2686 void SkDrawRRectCommand::execute(SkCanvas* canvas) const { | 2704 void SkDrawRRectCommand::execute(SkCanvas* canvas) const { |
| 2687 canvas->drawRRect(fRRect, fPaint); | 2705 canvas->drawRRect(fRRect, fPaint); |
| 2688 } | 2706 } |
| 2689 | 2707 |
| 2690 bool SkDrawRRectCommand::render(SkCanvas* canvas) const { | 2708 bool SkDrawRRectCommand::render(SkCanvas* canvas) const { |
| 2691 render_rrect(canvas, fRRect); | 2709 render_rrect(canvas, fRRect); |
| 2692 return true; | 2710 return true; |
| 2693 } | 2711 } |
| 2694 | 2712 |
| 2695 Json::Value SkDrawRRectCommand::toJSON() const { | 2713 Json::Value SkDrawRRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2696 Json::Value result = INHERITED::toJSON(); | 2714 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2697 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rrect(fRRect); | 2715 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_rrect(fRRect); |
| 2698 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2716 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2699 return result; | 2717 return result; |
| 2700 } | 2718 } |
| 2701 | 2719 |
| 2702 SkDrawRRectCommand* SkDrawRRectCommand::fromJSON(Json::Value& command) { | 2720 SkDrawRRectCommand* SkDrawRRectCommand::fromJSON(Json::Value& command, |
| 2721 UrlDataManager& urlDataManager)
{ |
| 2703 SkRRect coords; | 2722 SkRRect coords; |
| 2704 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); | 2723 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); |
| 2705 SkPaint paint; | 2724 SkPaint paint; |
| 2706 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2725 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2707 return new SkDrawRRectCommand(coords, paint); | 2726 return new SkDrawRRectCommand(coords, paint); |
| 2708 } | 2727 } |
| 2709 | 2728 |
| 2710 SkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, | 2729 SkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, |
| 2711 const SkRRect& inner, | 2730 const SkRRect& inner, |
| 2712 const SkPaint& paint) | 2731 const SkPaint& paint) |
| 2713 : INHERITED(kDrawDRRect_OpType) { | 2732 : INHERITED(kDrawDRRect_OpType) { |
| 2714 fOuter = outer; | 2733 fOuter = outer; |
| 2715 fInner = inner; | 2734 fInner = inner; |
| 2716 fPaint = paint; | 2735 fPaint = paint; |
| 2717 | 2736 |
| 2718 fInfo.push(SkObjectParser::RRectToString(outer)); | 2737 fInfo.push(SkObjectParser::RRectToString(outer)); |
| 2719 fInfo.push(SkObjectParser::RRectToString(inner)); | 2738 fInfo.push(SkObjectParser::RRectToString(inner)); |
| 2720 fInfo.push(SkObjectParser::PaintToString(paint)); | 2739 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2721 } | 2740 } |
| 2722 | 2741 |
| 2723 void SkDrawDRRectCommand::execute(SkCanvas* canvas) const { | 2742 void SkDrawDRRectCommand::execute(SkCanvas* canvas) const { |
| 2724 canvas->drawDRRect(fOuter, fInner, fPaint); | 2743 canvas->drawDRRect(fOuter, fInner, fPaint); |
| 2725 } | 2744 } |
| 2726 | 2745 |
| 2727 bool SkDrawDRRectCommand::render(SkCanvas* canvas) const { | 2746 bool SkDrawDRRectCommand::render(SkCanvas* canvas) const { |
| 2728 render_drrect(canvas, fOuter, fInner); | 2747 render_drrect(canvas, fOuter, fInner); |
| 2729 return true; | 2748 return true; |
| 2730 } | 2749 } |
| 2731 | 2750 |
| 2732 Json::Value SkDrawDRRectCommand::toJSON() const { | 2751 Json::Value SkDrawDRRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2733 Json::Value result = INHERITED::toJSON(); | 2752 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2734 result[SKDEBUGCANVAS_ATTRIBUTE_OUTER] = make_json_rrect(fOuter); | 2753 result[SKDEBUGCANVAS_ATTRIBUTE_OUTER] = make_json_rrect(fOuter); |
| 2735 result[SKDEBUGCANVAS_ATTRIBUTE_INNER] = make_json_rrect(fInner); | 2754 result[SKDEBUGCANVAS_ATTRIBUTE_INNER] = make_json_rrect(fInner); |
| 2736 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2755 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2737 return result; | 2756 return result; |
| 2738 } | 2757 } |
| 2739 | 2758 |
| 2740 SkDrawDRRectCommand* SkDrawDRRectCommand::fromJSON(Json::Value& command) { | 2759 SkDrawDRRectCommand* SkDrawDRRectCommand::fromJSON(Json::Value& command, |
| 2760 UrlDataManager& urlDataManage
r) { |
| 2741 SkRRect outer; | 2761 SkRRect outer; |
| 2742 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_INNER], &outer); | 2762 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_INNER], &outer); |
| 2743 SkRRect inner; | 2763 SkRRect inner; |
| 2744 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_INNER], &inner); | 2764 extract_json_rrect(command[SKDEBUGCANVAS_ATTRIBUTE_INNER], &inner); |
| 2745 SkPaint paint; | 2765 SkPaint paint; |
| 2746 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2766 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2747 return new SkDrawDRRectCommand(outer, inner, paint); | 2767 return new SkDrawDRRectCommand(outer, inner, paint); |
| 2748 } | 2768 } |
| 2749 | 2769 |
| 2750 SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScal
ar x, SkScalar y, | 2770 SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScal
ar x, SkScalar y, |
| 2751 const SkPaint& paint) | 2771 const SkPaint& paint) |
| 2752 : INHERITED(kDrawText_OpType) { | 2772 : INHERITED(kDrawText_OpType) { |
| 2753 fText = new char[byteLength]; | 2773 fText = new char[byteLength]; |
| 2754 memcpy(fText, text, byteLength); | 2774 memcpy(fText, text, byteLength); |
| 2755 fByteLength = byteLength; | 2775 fByteLength = byteLength; |
| 2756 fX = x; | 2776 fX = x; |
| 2757 fY = y; | 2777 fY = y; |
| 2758 fPaint = paint; | 2778 fPaint = paint; |
| 2759 | 2779 |
| 2760 fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
ing())); | 2780 fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
ing())); |
| 2761 fInfo.push(SkObjectParser::ScalarToString(x, "SkScalar x: ")); | 2781 fInfo.push(SkObjectParser::ScalarToString(x, "SkScalar x: ")); |
| 2762 fInfo.push(SkObjectParser::ScalarToString(y, "SkScalar y: ")); | 2782 fInfo.push(SkObjectParser::ScalarToString(y, "SkScalar y: ")); |
| 2763 fInfo.push(SkObjectParser::PaintToString(paint)); | 2783 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2764 } | 2784 } |
| 2765 | 2785 |
| 2766 void SkDrawTextCommand::execute(SkCanvas* canvas) const { | 2786 void SkDrawTextCommand::execute(SkCanvas* canvas) const { |
| 2767 canvas->drawText(fText, fByteLength, fX, fY, fPaint); | 2787 canvas->drawText(fText, fByteLength, fX, fY, fPaint); |
| 2768 } | 2788 } |
| 2769 | 2789 |
| 2770 Json::Value SkDrawTextCommand::toJSON() const { | 2790 Json::Value SkDrawTextCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2771 Json::Value result = INHERITED::toJSON(); | 2791 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2772 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, | 2792 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, |
| 2773 ((const char*) fText) + f
ByteLength); | 2793 ((const char*) fText) + f
ByteLength); |
| 2774 Json::Value coords(Json::arrayValue); | 2794 Json::Value coords(Json::arrayValue); |
| 2775 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fX, fY); | 2795 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = make_json_point(fX, fY); |
| 2776 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2796 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2777 return result; | 2797 return result; |
| 2778 } | 2798 } |
| 2779 | 2799 |
| 2780 SkDrawTextCommand* SkDrawTextCommand::fromJSON(Json::Value& command) { | 2800 SkDrawTextCommand* SkDrawTextCommand::fromJSON(Json::Value& command, |
| 2801 UrlDataManager& urlDataManager) { |
| 2781 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); | 2802 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); |
| 2782 SkPaint paint; | 2803 SkPaint paint; |
| 2783 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2804 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2784 Json::Value coords = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; | 2805 Json::Value coords = command[SKDEBUGCANVAS_ATTRIBUTE_COORDS]; |
| 2785 return new SkDrawTextCommand(text, strlen(text), coords[0].asFloat(), coords
[1].asFloat(), | 2806 return new SkDrawTextCommand(text, strlen(text), coords[0].asFloat(), coords
[1].asFloat(), |
| 2786 paint); | 2807 paint); |
| 2787 } | 2808 } |
| 2788 | 2809 |
| 2789 SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLe
ngth, | 2810 SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLe
ngth, |
| 2790 const SkPath& path, const SkMat
rix* matrix, | 2811 const SkPath& path, const SkMat
rix* matrix, |
| 2791 const SkPaint& paint) | 2812 const SkPaint& paint) |
| 2792 : INHERITED(kDrawTextOnPath_OpType) { | 2813 : INHERITED(kDrawTextOnPath_OpType) { |
| 2793 fText = new char[byteLength]; | 2814 fText = new char[byteLength]; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2808 } | 2829 } |
| 2809 fInfo.push(SkObjectParser::PaintToString(paint)); | 2830 fInfo.push(SkObjectParser::PaintToString(paint)); |
| 2810 } | 2831 } |
| 2811 | 2832 |
| 2812 void SkDrawTextOnPathCommand::execute(SkCanvas* canvas) const { | 2833 void SkDrawTextOnPathCommand::execute(SkCanvas* canvas) const { |
| 2813 canvas->drawTextOnPath(fText, fByteLength, fPath, | 2834 canvas->drawTextOnPath(fText, fByteLength, fPath, |
| 2814 fMatrix.isIdentity() ? nullptr : &fMatrix, | 2835 fMatrix.isIdentity() ? nullptr : &fMatrix, |
| 2815 fPaint); | 2836 fPaint); |
| 2816 } | 2837 } |
| 2817 | 2838 |
| 2818 Json::Value SkDrawTextOnPathCommand::toJSON() const { | 2839 Json::Value SkDrawTextOnPathCommand::toJSON(UrlDataManager& urlDataManager) cons
t { |
| 2819 Json::Value result = INHERITED::toJSON(); | 2840 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2820 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, | 2841 result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText, |
| 2821 ((const char*) fText) + f
ByteLength); | 2842 ((const char*) fText) + f
ByteLength); |
| 2822 Json::Value coords(Json::arrayValue); | 2843 Json::Value coords(Json::arrayValue); |
| 2823 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); | 2844 result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = make_json_path(fPath); |
| 2824 if (!fMatrix.isIdentity()) { | 2845 if (!fMatrix.isIdentity()) { |
| 2825 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); | 2846 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); |
| 2826 } | 2847 } |
| 2827 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, SKDEBUGCANVA
S_SEND_BINARIES); | 2848 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(fPaint, urlDataManag
er); |
| 2828 return result; | 2849 return result; |
| 2829 } | 2850 } |
| 2830 | 2851 |
| 2831 SkDrawTextOnPathCommand* SkDrawTextOnPathCommand::fromJSON(Json::Value& command)
{ | 2852 SkDrawTextOnPathCommand* SkDrawTextOnPathCommand::fromJSON(Json::Value& command,
|
| 2853 UrlDataManager& urlDa
taManager) { |
| 2832 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); | 2854 const char* text = command[SKDEBUGCANVAS_ATTRIBUTE_TEXT].asCString(); |
| 2833 SkPaint paint; | 2855 SkPaint paint; |
| 2834 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 2856 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
| 2835 SkPath path; | 2857 SkPath path; |
| 2836 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); | 2858 extract_json_path(command[SKDEBUGCANVAS_ATTRIBUTE_PATH], &path); |
| 2837 SkMatrix* matrixPtr; | 2859 SkMatrix* matrixPtr; |
| 2838 SkMatrix matrix; | 2860 SkMatrix matrix; |
| 2839 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_MATRIX)) { | 2861 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_MATRIX)) { |
| 2840 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); | 2862 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); |
| 2841 matrixPtr = &matrix; | 2863 matrixPtr = &matrix; |
| 2842 } | 2864 } |
| 2843 else { | 2865 else { |
| 2844 matrixPtr = nullptr; | 2866 matrixPtr = nullptr; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2909 | 2931 |
| 2910 SkRestoreCommand::SkRestoreCommand() | 2932 SkRestoreCommand::SkRestoreCommand() |
| 2911 : INHERITED(kRestore_OpType) { | 2933 : INHERITED(kRestore_OpType) { |
| 2912 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 2934 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
| 2913 } | 2935 } |
| 2914 | 2936 |
| 2915 void SkRestoreCommand::execute(SkCanvas* canvas) const { | 2937 void SkRestoreCommand::execute(SkCanvas* canvas) const { |
| 2916 canvas->restore(); | 2938 canvas->restore(); |
| 2917 } | 2939 } |
| 2918 | 2940 |
| 2919 SkRestoreCommand* SkRestoreCommand::fromJSON(Json::Value& command) { | 2941 SkRestoreCommand* SkRestoreCommand::fromJSON(Json::Value& command, UrlDataManage
r& urlDataManager) { |
| 2920 return new SkRestoreCommand(); | 2942 return new SkRestoreCommand(); |
| 2921 } | 2943 } |
| 2922 | 2944 |
| 2923 SkSaveCommand::SkSaveCommand() | 2945 SkSaveCommand::SkSaveCommand() |
| 2924 : INHERITED(kSave_OpType) { | 2946 : INHERITED(kSave_OpType) { |
| 2925 } | 2947 } |
| 2926 | 2948 |
| 2927 void SkSaveCommand::execute(SkCanvas* canvas) const { | 2949 void SkSaveCommand::execute(SkCanvas* canvas) const { |
| 2928 canvas->save(); | 2950 canvas->save(); |
| 2929 } | 2951 } |
| 2930 | 2952 |
| 2931 SkSaveCommand* SkSaveCommand::fromJSON(Json::Value& command) { | 2953 SkSaveCommand* SkSaveCommand::fromJSON(Json::Value& command, UrlDataManager& url
DataManager) { |
| 2932 return new SkSaveCommand(); | 2954 return new SkSaveCommand(); |
| 2933 } | 2955 } |
| 2934 | 2956 |
| 2935 SkSaveLayerCommand::SkSaveLayerCommand(const SkCanvas::SaveLayerRec& rec) | 2957 SkSaveLayerCommand::SkSaveLayerCommand(const SkCanvas::SaveLayerRec& rec) |
| 2936 : INHERITED(kSaveLayer_OpType) { | 2958 : INHERITED(kSaveLayer_OpType) { |
| 2937 if (rec.fBounds) { | 2959 if (rec.fBounds) { |
| 2938 fBounds = *rec.fBounds; | 2960 fBounds = *rec.fBounds; |
| 2939 } else { | 2961 } else { |
| 2940 fBounds.setEmpty(); | 2962 fBounds.setEmpty(); |
| 2941 } | 2963 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2973 void SkSaveLayerCommand::execute(SkCanvas* canvas) const { | 2995 void SkSaveLayerCommand::execute(SkCanvas* canvas) const { |
| 2974 canvas->saveLayer(SkCanvas::SaveLayerRec(fBounds.isEmpty() ? nullptr : &fBou
nds, | 2996 canvas->saveLayer(SkCanvas::SaveLayerRec(fBounds.isEmpty() ? nullptr : &fBou
nds, |
| 2975 fPaintPtr, | 2997 fPaintPtr, |
| 2976 fSaveLayerFlags)); | 2998 fSaveLayerFlags)); |
| 2977 } | 2999 } |
| 2978 | 3000 |
| 2979 void SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { | 3001 void SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { |
| 2980 canvas->save(); | 3002 canvas->save(); |
| 2981 } | 3003 } |
| 2982 | 3004 |
| 2983 Json::Value SkSaveLayerCommand::toJSON() const { | 3005 Json::Value SkSaveLayerCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 2984 Json::Value result = INHERITED::toJSON(); | 3006 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 2985 if (!fBounds.isEmpty()) { | 3007 if (!fBounds.isEmpty()) { |
| 2986 result[SKDEBUGCANVAS_ATTRIBUTE_BOUNDS] = make_json_rect(fBounds); | 3008 result[SKDEBUGCANVAS_ATTRIBUTE_BOUNDS] = make_json_rect(fBounds); |
| 2987 } | 3009 } |
| 2988 if (fPaintPtr != nullptr) { | 3010 if (fPaintPtr != nullptr) { |
| 2989 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr, | 3011 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = make_json_paint(*fPaintPtr, |
| 2990 SKDEBUGCANVAS_SE
ND_BINARIES); | 3012 urlDataManager); |
| 2991 } | 3013 } |
| 2992 if (fBackdrop != nullptr) { | 3014 if (fBackdrop != nullptr) { |
| 2993 Json::Value jsonBackdrop; | 3015 Json::Value jsonBackdrop; |
| 2994 flatten(fBackdrop, &jsonBackdrop, SKDEBUGCANVAS_SEND_BINARIES); | 3016 flatten(fBackdrop, &jsonBackdrop, urlDataManager); |
| 2995 result[SKDEBUGCANVAS_ATTRIBUTE_BACKDROP] = jsonBackdrop; | 3017 result[SKDEBUGCANVAS_ATTRIBUTE_BACKDROP] = jsonBackdrop; |
| 2996 } | 3018 } |
| 2997 if (fSaveLayerFlags != 0) { | 3019 if (fSaveLayerFlags != 0) { |
| 2998 SkDebugf("unsupported: saveLayer flags\n"); | 3020 SkDebugf("unsupported: saveLayer flags\n"); |
| 2999 SkASSERT(false); | 3021 SkASSERT(false); |
| 3000 } | 3022 } |
| 3001 return result; | 3023 return result; |
| 3002 } | 3024 } |
| 3003 | 3025 |
| 3004 SkSaveLayerCommand* SkSaveLayerCommand::fromJSON(Json::Value& command) { | 3026 SkSaveLayerCommand* SkSaveLayerCommand::fromJSON(Json::Value& command, |
| 3027 UrlDataManager& urlDataManager)
{ |
| 3005 SkCanvas::SaveLayerRec rec; | 3028 SkCanvas::SaveLayerRec rec; |
| 3006 SkRect bounds; | 3029 SkRect bounds; |
| 3007 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_BOUNDS)) { | 3030 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_BOUNDS)) { |
| 3008 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_BOUNDS], &bounds); | 3031 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_BOUNDS], &bounds); |
| 3009 rec.fBounds = &bounds; | 3032 rec.fBounds = &bounds; |
| 3010 } | 3033 } |
| 3011 SkPaint paint; | 3034 SkPaint paint; |
| 3012 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { | 3035 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_PAINT)) { |
| 3013 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], &paint); | 3036 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManage
r, &paint); |
| 3014 rec.fPaint = &paint; | 3037 rec.fPaint = &paint; |
| 3015 } | 3038 } |
| 3016 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_BACKDROP)) { | 3039 if (command.isMember(SKDEBUGCANVAS_ATTRIBUTE_BACKDROP)) { |
| 3017 Json::Value backdrop = command[SKDEBUGCANVAS_ATTRIBUTE_BACKDROP]; | 3040 Json::Value backdrop = command[SKDEBUGCANVAS_ATTRIBUTE_BACKDROP]; |
| 3018 rec.fBackdrop = (SkImageFilter*) load_flattenable(backdrop); | 3041 rec.fBackdrop = (SkImageFilter*) load_flattenable(backdrop, urlDataManag
er); |
| 3019 } | 3042 } |
| 3020 SkSaveLayerCommand* result = new SkSaveLayerCommand(rec); | 3043 SkSaveLayerCommand* result = new SkSaveLayerCommand(rec); |
| 3021 if (rec.fBackdrop != nullptr) { | 3044 if (rec.fBackdrop != nullptr) { |
| 3022 rec.fBackdrop->unref(); | 3045 rec.fBackdrop->unref(); |
| 3023 } | 3046 } |
| 3024 return result; | 3047 return result; |
| 3025 } | 3048 } |
| 3026 | 3049 |
| 3027 SkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) | 3050 SkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) |
| 3028 : INHERITED(kSetMatrix_OpType) { | 3051 : INHERITED(kSetMatrix_OpType) { |
| 3029 fUserMatrix.reset(); | 3052 fUserMatrix.reset(); |
| 3030 fMatrix = matrix; | 3053 fMatrix = matrix; |
| 3031 fInfo.push(SkObjectParser::MatrixToString(matrix)); | 3054 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 3032 } | 3055 } |
| 3033 | 3056 |
| 3034 void SkSetMatrixCommand::setUserMatrix(const SkMatrix& userMatrix) { | 3057 void SkSetMatrixCommand::setUserMatrix(const SkMatrix& userMatrix) { |
| 3035 fUserMatrix = userMatrix; | 3058 fUserMatrix = userMatrix; |
| 3036 } | 3059 } |
| 3037 | 3060 |
| 3038 void SkSetMatrixCommand::execute(SkCanvas* canvas) const { | 3061 void SkSetMatrixCommand::execute(SkCanvas* canvas) const { |
| 3039 SkMatrix temp = SkMatrix::Concat(fUserMatrix, fMatrix); | 3062 SkMatrix temp = SkMatrix::Concat(fUserMatrix, fMatrix); |
| 3040 canvas->setMatrix(temp); | 3063 canvas->setMatrix(temp); |
| 3041 } | 3064 } |
| 3042 | 3065 |
| 3043 Json::Value SkSetMatrixCommand::toJSON() const { | 3066 Json::Value SkSetMatrixCommand::toJSON(UrlDataManager& urlDataManager) const { |
| 3044 Json::Value result = INHERITED::toJSON(); | 3067 Json::Value result = INHERITED::toJSON(urlDataManager); |
| 3045 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); | 3068 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = make_json_matrix(fMatrix); |
| 3046 return result; | 3069 return result; |
| 3047 } | 3070 } |
| 3048 | 3071 |
| 3049 SkSetMatrixCommand* SkSetMatrixCommand::fromJSON(Json::Value& command) { | 3072 SkSetMatrixCommand* SkSetMatrixCommand::fromJSON(Json::Value& command, |
| 3073 UrlDataManager& urlDataManager)
{ |
| 3050 SkMatrix matrix; | 3074 SkMatrix matrix; |
| 3051 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); | 3075 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); |
| 3052 return new SkSetMatrixCommand(matrix); | 3076 return new SkSetMatrixCommand(matrix); |
| 3053 } | 3077 } |
| OLD | NEW |