From 8b0e8ac5f582de80356019406e2975079bf0829d Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Thu, 30 Jan 2014 18:58:24 +0000 Subject: [PATCH] Refactor read and write buffers. Eliminates SkFlattenable{Read,Write}Buffer, promoting SkOrdered{Read,Write}Buffer a step each in the hierarchy. What used to be this: SkFlattenableWriteBuffer -> SkOrderedWriteBuffer SkFlattenableReadBuffer -> SkOrderedReadBuffer SkFlattenableReadBuffer -> SkValidatingReadBuffer is now SkWriteBuffer SkReadBuffer -> SkValidatingReadBuffer Benefits: - code is simpler, names are less wordy - the generic SkFlattenableFooBuffer code in SkPaint was incorrect; removed - write buffers are completely devirtualized, important for record speed This refactoring was mostly mechanical. You aren't going to find anything interesting in files with less than 10 lines changed. BUG=skia: R=reed@google.com, scroggo@google.com, djsollen@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/134163010 git-svn-id: http://skia.googlecode.com/svn/trunk@13245 2bbb7eff-a529-9590-31e7-b0007b416f81 --- gm/imagefiltersbase.cpp | 4 +- gm/imagefiltersgraph.cpp | 7 +- gm/texteffects.cpp | 3 +- gyp/core.gypi | 5 +- include/core/SkAnnotation.h | 8 +- include/core/SkBitmap.h | 4 +- include/core/SkColorFilter.h | 2 +- include/core/SkColorShader.h | 4 +- include/core/SkColorTable.h | 4 +- include/core/SkComposeShader.h | 4 +- include/core/SkDrawLooper.h | 2 +- include/core/SkEmptyShader.h | 2 +- include/core/SkFlattenable.h | 16 +- include/core/SkFlattenableBuffers.h | 260 +----------------- include/core/SkImageFilter.h | 8 +- include/core/SkImageInfo.h | 8 +- include/core/SkMallocPixelRef.h | 4 +- include/core/SkMaskFilter.h | 2 +- include/core/SkPaint.h | 8 +- include/core/SkPaintOptionsAndroid.h | 8 +- include/core/SkPathEffect.h | 10 +- include/core/SkPicture.h | 4 +- include/core/SkPixelRef.h | 4 +- include/core/SkRasterizer.h | 2 +- include/core/SkReadBuffer.h | 205 ++++++++++++++ include/core/SkShader.h | 4 +- include/core/SkUnitMapper.h | 2 +- include/core/SkWriteBuffer.h | 121 ++++++++ include/core/SkXfermode.h | 6 +- include/effects/Sk1DPathEffect.h | 4 +- include/effects/Sk2DPathEffect.h | 12 +- include/effects/SkAvoidXfermode.h | 4 +- include/effects/SkBicubicImageFilter.h | 4 +- include/effects/SkBitmapSource.h | 4 +- include/effects/SkBlurDrawLooper.h | 4 +- include/effects/SkBlurImageFilter.h | 4 +- include/effects/SkColorFilterImageFilter.h | 4 +- include/effects/SkColorMatrixFilter.h | 4 +- include/effects/SkComposeImageFilter.h | 2 +- include/effects/SkCornerPathEffect.h | 4 +- include/effects/SkDashPathEffect.h | 6 +- include/effects/SkDiscretePathEffect.h | 4 +- include/effects/SkDisplacementMapEffect.h | 4 +- include/effects/SkDropShadowImageFilter.h | 4 +- include/effects/SkEmbossMaskFilter.h | 4 +- include/effects/SkKernel33MaskFilter.h | 8 +- include/effects/SkLayerDrawLooper.h | 4 +- include/effects/SkLayerRasterizer.h | 4 +- include/effects/SkLerpXfermode.h | 4 +- include/effects/SkLightingImageFilter.h | 4 +- include/effects/SkLumaColorFilter.h | 4 +- include/effects/SkMagnifierImageFilter.h | 4 +- .../effects/SkMatrixConvolutionImageFilter.h | 4 +- include/effects/SkMergeImageFilter.h | 4 +- include/effects/SkMorphologyImageFilter.h | 8 +- include/effects/SkOffsetImageFilter.h | 4 +- include/effects/SkPerlinNoiseShader.h | 4 +- include/effects/SkPictureImageFilter.h | 4 +- include/effects/SkPixelXorXfermode.h | 4 +- include/effects/SkRectShaderImageFilter.h | 4 +- include/effects/SkResizeImageFilter.h | 4 +- include/effects/SkStippleMaskFilter.h | 2 +- include/effects/SkTableMaskFilter.h | 4 +- include/effects/SkTestImageFilters.h | 4 +- include/effects/SkTileImageFilter.h | 4 +- include/effects/SkTransparentShader.h | 2 +- include/effects/SkXfermodeImageFilter.h | 4 +- include/images/SkImageRef.h | 4 +- include/images/SkImageRef_GlobalPool.h | 2 +- include/utils/SkUnitMappers.h | 6 +- samplecode/ClockFaceView.cpp | 9 +- samplecode/SampleAll.cpp | 7 +- samplecode/SampleSlides.cpp | 3 +- samplecode/SampleText.cpp | 13 +- src/core/SkAnnotation.cpp | 7 +- src/core/SkBitmap.cpp | 8 +- src/core/SkBitmapHeap.cpp | 3 +- src/core/SkBitmapProcShader.cpp | 7 +- src/core/SkBitmapProcShader.h | 4 +- src/core/SkBlitter.cpp | 7 +- src/core/SkColorFilter.cpp | 3 +- src/core/SkColorTable.cpp | 7 +- src/core/SkComposeShader.cpp | 7 +- src/core/SkData.cpp | 3 +- src/core/SkDraw.cpp | 2 +- src/core/SkFilterShader.cpp | 7 +- src/core/SkFilterShader.h | 4 +- src/core/SkFlattenable.cpp | 2 +- src/core/SkFlattenableBuffers.cpp | 115 -------- src/core/SkFlattenableSerialization.cpp | 6 +- src/core/SkImageFilter.cpp | 7 +- src/core/SkImageInfo.cpp | 7 +- src/core/SkMallocPixelRef.cpp | 7 +- src/core/SkOrderedReadBuffer.h | 140 ---------- src/core/SkOrderedWriteBuffer.h | 115 -------- src/core/SkPaint.cpp | 144 ++++------ src/core/SkPaintOptionsAndroid.cpp | 7 +- src/core/SkPathEffect.cpp | 7 +- src/core/SkPathHeap.cpp | 7 +- src/core/SkPathHeap.h | 8 +- src/core/SkPictureFlat.h | 20 +- src/core/SkPicturePlayback.cpp | 26 +- src/core/SkPicturePlayback.h | 6 +- src/core/SkPixelRef.cpp | 9 +- ...OrderedReadBuffer.cpp => SkReadBuffer.cpp} | 82 +++--- src/core/SkScalerContext.cpp | 15 +- src/core/SkShader.cpp | 11 +- src/core/SkValidatingReadBuffer.cpp | 2 +- src/core/SkValidatingReadBuffer.h | 7 +- ...deredWriteBuffer.cpp => SkWriteBuffer.cpp} | 76 ++--- src/core/SkXfermode.cpp | 19 +- src/core/SkXfermode_proccoeff.h | 7 +- src/effects/Sk1DPathEffect.cpp | 7 +- src/effects/Sk2DPathEffect.cpp | 15 +- src/effects/SkAlphaThresholdFilter.cpp | 11 +- src/effects/SkArithmeticMode.cpp | 7 +- src/effects/SkAvoidXfermode.cpp | 7 +- src/effects/SkBicubicImageFilter.cpp | 7 +- src/effects/SkBitmapSource.cpp | 7 +- src/effects/SkBlurDrawLooper.cpp | 7 +- src/effects/SkBlurImageFilter.cpp | 7 +- src/effects/SkBlurMaskFilter.cpp | 11 +- src/effects/SkColorFilterImageFilter.cpp | 7 +- src/effects/SkColorFilters.cpp | 27 +- src/effects/SkColorMatrix.cpp | 3 +- src/effects/SkColorMatrixFilter.cpp | 7 +- src/effects/SkComposeImageFilter.cpp | 5 +- src/effects/SkCornerPathEffect.cpp | 7 +- src/effects/SkDashPathEffect.cpp | 9 +- src/effects/SkDiscretePathEffect.cpp | 7 +- src/effects/SkDisplacementMapEffect.cpp | 7 +- src/effects/SkDropShadowImageFilter.cpp | 7 +- src/effects/SkEmbossMaskFilter.cpp | 7 +- src/effects/SkKernel33MaskFilter.cpp | 11 +- src/effects/SkLayerDrawLooper.cpp | 7 +- src/effects/SkLayerRasterizer.cpp | 7 +- src/effects/SkLerpXfermode.cpp | 7 +- src/effects/SkLightingImageFilter.cpp | 55 ++-- src/effects/SkLumaColorFilter.cpp | 4 +- src/effects/SkMagnifierImageFilter.cpp | 7 +- .../SkMatrixConvolutionImageFilter.cpp | 7 +- src/effects/SkMergeImageFilter.cpp | 7 +- src/effects/SkMorphologyImageFilter.cpp | 7 +- src/effects/SkOffsetImageFilter.cpp | 7 +- src/effects/SkPerlinNoiseShader.cpp | 7 +- src/effects/SkPictureImageFilter.cpp | 7 +- src/effects/SkPixelXorXfermode.cpp | 7 +- src/effects/SkRectShaderImageFilter.cpp | 7 +- src/effects/SkResizeImageFilter.cpp | 7 +- src/effects/SkTableColorFilter.cpp | 11 +- src/effects/SkTableMaskFilter.cpp | 7 +- src/effects/SkTestImageFilters.cpp | 7 +- src/effects/SkTileImageFilter.cpp | 7 +- src/effects/SkXfermodeImageFilter.cpp | 7 +- src/effects/gradients/SkGradientShader.cpp | 4 +- src/effects/gradients/SkGradientShaderPriv.h | 7 +- src/effects/gradients/SkLinearGradient.cpp | 4 +- src/effects/gradients/SkLinearGradient.h | 4 +- src/effects/gradients/SkRadialGradient.cpp | 4 +- src/effects/gradients/SkRadialGradient.h | 4 +- src/effects/gradients/SkSweepGradient.cpp | 4 +- src/effects/gradients/SkSweepGradient.h | 4 +- .../gradients/SkTwoPointConicalGradient.cpp | 4 +- .../gradients/SkTwoPointConicalGradient.h | 4 +- .../gradients/SkTwoPointRadialGradient.cpp | 4 +- .../gradients/SkTwoPointRadialGradient.h | 4 +- src/images/SkImageRef.cpp | 7 +- src/images/SkImageRef_GlobalPool.cpp | 2 +- src/images/SkImageRef_ashmem.cpp | 7 +- src/images/SkImageRef_ashmem.h | 4 +- src/lazy/SkCachingPixelRef.h | 4 +- src/opts/SkXfermode_opts_arm_neon.cpp | 2 +- src/opts/SkXfermode_opts_arm_neon.h | 2 +- src/pipe/SkGPipeRead.cpp | 14 +- src/pipe/SkGPipeWrite.cpp | 12 +- src/utils/SkUnitMappers.cpp | 9 +- tests/AndroidPaintTest.cpp | 8 +- tests/BitmapHeapTest.cpp | 4 +- tests/ColorFilterTest.cpp | 10 +- tests/DataRefTest.cpp | 4 +- tests/FlatDataTest.cpp | 4 +- tests/SerializationTest.cpp | 32 +-- 182 files changed, 1079 insertions(+), 1326 deletions(-) create mode 100644 include/core/SkReadBuffer.h create mode 100644 include/core/SkWriteBuffer.h delete mode 100644 src/core/SkFlattenableBuffers.cpp delete mode 100644 src/core/SkOrderedReadBuffer.h delete mode 100644 src/core/SkOrderedWriteBuffer.h rename src/core/{SkOrderedReadBuffer.cpp => SkReadBuffer.cpp} (80%) rename src/core/{SkOrderedWriteBuffer.cpp => SkWriteBuffer.cpp} (77%) diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp index 528dd19f3..109be6a1e 100644 --- a/gm/imagefiltersbase.cpp +++ b/gm/imagefiltersbase.cpp @@ -27,7 +27,7 @@ protected: return false; } - FailImageFilter(SkFlattenableReadBuffer& buffer) + FailImageFilter(SkReadBuffer& buffer) : INHERITED(1, buffer) {} private: @@ -51,7 +51,7 @@ protected: return true; } - IdentityImageFilter(SkFlattenableReadBuffer& buffer) + IdentityImageFilter(SkReadBuffer& buffer) : INHERITED(1, buffer) {} private: diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp index f5eaa28b1..40b673cb4 100644 --- a/gm/imagefiltersgraph.cpp +++ b/gm/imagefiltersgraph.cpp @@ -13,7 +13,8 @@ #include "SkColorFilter.h" #include "SkColorFilterImageFilter.h" #include "SkColorMatrixFilter.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkMergeImageFilter.h" #include "SkMorphologyImageFilter.h" #include "SkOnce.h" @@ -57,13 +58,13 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter); protected: - explicit SimpleOffsetFilter(SkFlattenableReadBuffer& buffer) + explicit SimpleOffsetFilter(SkReadBuffer& buffer) : SkImageFilter(1, buffer) { fDX = buffer.readScalar(); fDY = buffer.readScalar(); } - virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { this->SkImageFilter::flatten(buffer); buffer.writeScalar(fDX); buffer.writeScalar(fDY); diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp index 7964de92d..094fe7b8a 100644 --- a/gm/texteffects.cpp +++ b/gm/texteffects.cpp @@ -8,7 +8,8 @@ #include "gm.h" #include "SkBlurMask.h" #include "SkBlurMaskFilter.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkLayerRasterizer.h" static void r0(SkLayerRasterizer* rast, SkPaint& p) { diff --git a/gyp/core.gypi b/gyp/core.gypi index 55447febd..fcd5e392f 100644 --- a/gyp/core.gypi +++ b/gyp/core.gypi @@ -84,7 +84,6 @@ '<(skia_src_path)/core/SkFilterProc.h', '<(skia_src_path)/core/SkFilterShader.cpp', '<(skia_src_path)/core/SkFlattenable.cpp', - '<(skia_src_path)/core/SkFlattenableBuffers.cpp', '<(skia_src_path)/core/SkFlattenableSerialization.cpp', '<(skia_src_path)/core/SkFloat.cpp', '<(skia_src_path)/core/SkFloat.h', @@ -114,8 +113,8 @@ '<(skia_src_path)/core/SkMessageBus.h', '<(skia_src_path)/core/SkMetaData.cpp', '<(skia_src_path)/core/SkMipMap.cpp', - '<(skia_src_path)/core/SkOrderedReadBuffer.cpp', - '<(skia_src_path)/core/SkOrderedWriteBuffer.cpp', + '<(skia_src_path)/core/SkReadBuffer.cpp', + '<(skia_src_path)/core/SkWriteBuffer.cpp', '<(skia_src_path)/core/SkPackBits.cpp', '<(skia_src_path)/core/SkPaint.cpp', '<(skia_src_path)/core/SkPaintOptionsAndroid.cpp', diff --git a/include/core/SkAnnotation.h b/include/core/SkAnnotation.h index 4d17b7900..872bb941a 100644 --- a/include/core/SkAnnotation.h +++ b/include/core/SkAnnotation.h @@ -12,8 +12,8 @@ #include "SkString.h" class SkData; -class SkFlattenableReadBuffer; -class SkFlattenableWriteBuffer; +class SkReadBuffer; +class SkWriteBuffer; class SkStream; class SkWStream; struct SkPoint; @@ -32,8 +32,8 @@ public: */ SkData* find(const char key[]) const; - SkAnnotation(SkFlattenableReadBuffer&); - void writeToBuffer(SkFlattenableWriteBuffer&) const; + SkAnnotation(SkReadBuffer&); + void writeToBuffer(SkWriteBuffer&) const; private: SkString fKey; diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h index 2cdac27ba..4951cf19c 100644 --- a/include/core/SkBitmap.h +++ b/include/core/SkBitmap.h @@ -658,8 +658,8 @@ public: buffers as they can optimize the recording process and avoid recording duplicate bitmaps and pixelRefs. */ - void flatten(SkFlattenableWriteBuffer&) const; - void unflatten(SkFlattenableReadBuffer&); + void flatten(SkWriteBuffer&) const; + void unflatten(SkReadBuffer&); SkDEBUGCODE(void validate() const;) diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h index 106e5bb86..a5ffca818 100644 --- a/include/core/SkColorFilter.h +++ b/include/core/SkColorFilter.h @@ -135,7 +135,7 @@ public: protected: SkColorFilter() {} - SkColorFilter(SkFlattenableReadBuffer& rb) : INHERITED(rb) {} + SkColorFilter(SkReadBuffer& rb) : INHERITED(rb) {} private: typedef SkFlattenable INHERITED; diff --git a/include/core/SkColorShader.h b/include/core/SkColorShader.h index c3790682e..5b8a86dfc 100644 --- a/include/core/SkColorShader.h +++ b/include/core/SkColorShader.h @@ -52,8 +52,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader) protected: - SkColorShader(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkColorShader(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: diff --git a/include/core/SkColorTable.h b/include/core/SkColorTable.h index 52300fc42..e4c8c86c1 100644 --- a/include/core/SkColorTable.h +++ b/include/core/SkColorTable.h @@ -75,8 +75,8 @@ public: SkDEBUGCODE(f16BitCacheLockCount -= 1); } - explicit SkColorTable(SkFlattenableReadBuffer&); - void writeToBuffer(SkFlattenableWriteBuffer&) const; + explicit SkColorTable(SkReadBuffer&); + void writeToBuffer(SkWriteBuffer&) const; private: SkPMColor* fColors; diff --git a/include/core/SkComposeShader.h b/include/core/SkComposeShader.h index 524161b78..1fefd1369 100644 --- a/include/core/SkComposeShader.h +++ b/include/core/SkComposeShader.h @@ -43,8 +43,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeShader) protected: - SkComposeShader(SkFlattenableReadBuffer& ); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkComposeShader(SkReadBuffer& ); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: diff --git a/include/core/SkDrawLooper.h b/include/core/SkDrawLooper.h index d6028ff94..4609c1dcf 100644 --- a/include/core/SkDrawLooper.h +++ b/include/core/SkDrawLooper.h @@ -68,7 +68,7 @@ public: protected: SkDrawLooper() {} - SkDrawLooper(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkDrawLooper(SkReadBuffer& buffer) : INHERITED(buffer) {} private: typedef SkFlattenable INHERITED; diff --git a/include/core/SkEmptyShader.h b/include/core/SkEmptyShader.h index 08c131db1..3f7dae41a 100644 --- a/include/core/SkEmptyShader.h +++ b/include/core/SkEmptyShader.h @@ -34,7 +34,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmptyShader) protected: - SkEmptyShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkEmptyShader(SkReadBuffer& buffer) : INHERITED(buffer) {} private: typedef SkShader INHERITED; diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h index 5a6e2ae88..ee7a43371 100644 --- a/include/core/SkFlattenable.h +++ b/include/core/SkFlattenable.h @@ -12,8 +12,8 @@ #include "SkRefCnt.h" -class SkFlattenableReadBuffer; -class SkFlattenableWriteBuffer; +class SkReadBuffer; +class SkWriteBuffer; #define SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(flattenable) \ SkFlattenable::Registrar(#flattenable, flattenable::CreateProc, \ @@ -32,7 +32,7 @@ class SkFlattenableWriteBuffer; #define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \ virtual Factory getFactory() const SK_OVERRIDE { return CreateProc; } \ - static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) { \ + static SkFlattenable* CreateProc(SkReadBuffer& buffer) { \ return SkNEW_ARGS(flattenable, (buffer)); \ } @@ -67,7 +67,7 @@ public: SK_DECLARE_INST_COUNT(SkFlattenable) - typedef SkFlattenable* (*Factory)(SkFlattenableReadBuffer&); + typedef SkFlattenable* (*Factory)(SkReadBuffer&); SkFlattenable() {} @@ -94,19 +94,19 @@ public: } }; -protected: - SkFlattenable(SkFlattenableReadBuffer&) {} /** Override this to write data specific to your subclass into the buffer, being sure to call your super-class' version first. This data will later be passed to your Factory function, returned by getFactory(). */ - virtual void flatten(SkFlattenableWriteBuffer&) const; + virtual void flatten(SkWriteBuffer&) const; + +protected: + SkFlattenable(SkReadBuffer&) {} private: static void InitializeFlattenablesIfNeeded(); friend class SkGraphics; - friend class SkFlattenableWriteBuffer; typedef SkRefCnt INHERITED; }; diff --git a/include/core/SkFlattenableBuffers.h b/include/core/SkFlattenableBuffers.h index aa61f21a7..3e5d5b94e 100644 --- a/include/core/SkFlattenableBuffers.h +++ b/include/core/SkFlattenableBuffers.h @@ -1,260 +1,10 @@ - -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - +// Temporary shim to keep a couple dependencies working in Chromium. #ifndef SkFlattenableBuffers_DEFINED #define SkFlattenableBuffers_DEFINED -#include "SkColor.h" -#include "SkData.h" -#include "SkPaint.h" -#include "SkPoint.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" -class SkBitmap; -class SkDrawLooper; -class SkFlattenable; -struct SkIRect; -class SkMatrix; -class SkOrderedReadBuffer; -class SkOrderedWriteBuffer; -class SkPath; -class SkPixelRef; -struct SkRect; -class SkRegion; -class SkStream; -class SkString; -class SkTypeface; -class SkUnitMapper; -class SkWStream; +typedef SkReadBuffer SkFlattenableReadBuffer; -class SkFlattenableReadBuffer { -public: - SkFlattenableReadBuffer(); - virtual ~SkFlattenableReadBuffer(); - - bool isOrderedBinaryBuffer() { return NULL != getOrderedBinaryBuffer(); } - virtual SkOrderedReadBuffer* getOrderedBinaryBuffer() { return NULL; } - - enum Flags { - kCrossProcess_Flag = 1 << 0, - kScalarIsFloat_Flag = 1 << 1, - kPtrIs64Bit_Flag = 1 << 2, - /** The kValidation_Flag is used to force stream validations (by making - * sure that no operation reads past the end of the stream, for example) - * and error handling if any reading operation yields an invalid value. - */ - kValidation_Flag = 1 << 3, - }; - - void setFlags(uint32_t flags) { fFlags = flags; } - uint32_t getFlags() const { return fFlags; } - - bool isCrossProcess() const { return SkToBool(fFlags & (kCrossProcess_Flag | kValidation_Flag)); } - bool isScalarFloat() const { return SkToBool(fFlags & kScalarIsFloat_Flag); } - bool isPtr64Bit() const { return SkToBool(fFlags & kPtrIs64Bit_Flag); } - bool isValidating() const { return SkToBool(fFlags & kValidation_Flag); } - - // primitives - virtual bool readBool() = 0; - virtual SkColor readColor() = 0; - virtual SkFixed readFixed() = 0; - virtual int32_t readInt() = 0; - virtual SkScalar readScalar() = 0; - virtual uint32_t readUInt() = 0; - virtual int32_t read32() = 0; - - // strings -- the caller is responsible for freeing the string contents - virtual void readString(SkString* string) = 0; - virtual void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding) = 0; - - /** - @param type This parameter is only used when using SkValidatingReadBuffer. It will verify - that the object about to be deserialized is of the given type or early return - NULL otherwise. The type provided here is the type of the base class of the - object to deserialize. - */ - virtual SkFlattenable* readFlattenable(SkFlattenable::Type type) = 0; - - SkColorFilter* readColorFilter(); - SkDrawLooper* readDrawLooper(); - SkImageFilter* readImageFilter(); - SkMaskFilter* readMaskFilter(); - SkPathEffect* readPathEffect(); - SkPixelRef* readPixelRef(); - SkRasterizer* readRasterizer(); - SkShader* readShader(); - SkUnitMapper* readUnitMapper(); - SkXfermode* readXfermode(); - - // common data structures - virtual void readPoint(SkPoint* point) = 0; - virtual void readMatrix(SkMatrix* matrix) = 0; - virtual void readIRect(SkIRect* rect) = 0; - virtual void readRect(SkRect* rect) = 0; - virtual void readRegion(SkRegion* region) = 0; - virtual void readPath(SkPath* path) = 0; - - // binary data and arrays - - /** - * In the following read.*Array(...) functions, the size parameter specifies the allocation - * size in number of elements (or in bytes, for void*) of the pointer parameter. If the - * pointer parameter's size does not match the size to be read, the pointer parameter's memory - * will then stay uninitialized, the cursor will be moved to the end of the stream and, in the - * case where isValidating() is true, an error flag will be set internally (see - * SkValidatingReadBuffer). - * If the sizes match, then "size" amount of memory will be read. - * - * @param size amount of memory expected to be read - * @return true if the size parameter matches the size to be read, false otherwise - */ - virtual bool readByteArray(void* value, size_t size) = 0; - virtual bool readColorArray(SkColor* colors, size_t size) = 0; - virtual bool readIntArray(int32_t* values, size_t size) = 0; - virtual bool readPointArray(SkPoint* points, size_t size) = 0; - virtual bool readScalarArray(SkScalar* values, size_t size) = 0; - - /** This helper peeks into the buffer and reports back the length of the next array in - * the buffer but does not change the state of the buffer. - */ - virtual uint32_t getArrayCount() = 0; - - // helper functions - virtual void* readFunctionPtr(); - virtual void readPaint(SkPaint* paint); - - virtual void readBitmap(SkBitmap* bitmap) = 0; - virtual SkTypeface* readTypeface() = 0; - - // helper function for classes with const SkPoint members - SkPoint readPoint() { - SkPoint point; - this->readPoint(&point); - return point; - } - - SkData* readByteArrayAsData() { - size_t len = this->getArrayCount(); - void* buffer = NULL; - if (this->validateAvailable(len)) { - buffer = sk_malloc_throw(len); - (void)this->readByteArray(buffer, len); - } else { - len = 0; - } - return SkData::NewFromMalloc(buffer, len); - } - - /** This function validates that the isValid input parameter is true - * If isValidating() is false, then true is always returned - * If isValidating() is true, then true is returned until validate() is called with isValid - * set to false. When isValid is false, an error flag will be set internally and, from that - * point on, validate() will return false. The error flag cannot be unset. - * - * @param isValid result of a test that is expected to be true - */ - virtual bool validate(bool isValid); - - /** This function returns true by default - * If isValidating() is true, it will return false if the internal error flag is set. - * Otherwise, it will return true. - */ - virtual bool isValid() const { return true; } - - /** This function returns true by default - * If isValidating() is true, it will return whether there's - * at least "size" memory left to read in the stream. - * - * @param size amount of memory that should still be available - */ - virtual bool validateAvailable(size_t size) { return true; } - -private: - template T* readFlattenableT(); - uint32_t fFlags; -}; - -/////////////////////////////////////////////////////////////////////////////// - -class SkFlattenableWriteBuffer { -public: - SkFlattenableWriteBuffer(); - virtual ~SkFlattenableWriteBuffer(); - - virtual bool isOrderedBinaryBuffer() { return false; } - virtual SkOrderedWriteBuffer* getOrderedBinaryBuffer() { sk_throw(); return NULL; } - - // primitives - virtual void writeByteArray(const void* data, size_t size) = 0; - virtual void writeBool(bool value) = 0; - virtual void writeFixed(SkFixed value) = 0; - virtual void writeScalar(SkScalar value) = 0; - virtual void writeScalarArray(const SkScalar* value, uint32_t count) = 0; - virtual void writeInt(int32_t value) = 0; - virtual void writeIntArray(const int32_t* value, uint32_t count) = 0; - virtual void writeUInt(uint32_t value) = 0; - virtual void write32(int32_t value) = 0; // printf in hex - virtual void writeString(const char* value) = 0; - virtual void writeEncodedString(const void* value, size_t byteLength, - SkPaint::TextEncoding encoding) = 0; - - // common data structures - virtual void writeFlattenable(const SkFlattenable* flattenable) = 0; - virtual void writeColor(const SkColor& color) = 0; - virtual void writeColorArray(const SkColor* color, uint32_t count) = 0; - virtual void writePoint(const SkPoint& point) = 0; - virtual void writePointArray(const SkPoint* points, uint32_t count) = 0; - virtual void writeMatrix(const SkMatrix& matrix) = 0; - virtual void writeIRect(const SkIRect& rect) = 0; - virtual void writeRect(const SkRect& rect) = 0; - virtual void writeRegion(const SkRegion& region) = 0; - virtual void writePath(const SkPath& path) = 0; - virtual size_t writeStream(SkStream* stream, size_t length) = 0; - - // helper functions - virtual void writeFunctionPtr(void* ptr); - virtual void writePaint(const SkPaint& paint); - - virtual void writeBitmap(const SkBitmap& bitmap) = 0; - virtual void writeTypeface(SkTypeface* typeface) = 0; - - virtual bool writeToStream(SkWStream*) = 0; - - enum Flags { - kCrossProcess_Flag = 0x01, - /** The kValidation_Flag is used here to make sure the write operation - * is symmetric with the read operation using the equivalent flag - * SkFlattenableReadBuffer::kValidation_Flag. - */ - kValidation_Flag = 0x02, - }; - - uint32_t getFlags() const { return fFlags; } - void setFlags(uint32_t flags) { fFlags = flags; } - - bool isCrossProcess() const { - return SkToBool(fFlags & (kCrossProcess_Flag | kValidation_Flag)); - } - - bool isValidating() const { - return SkToBool(fFlags & kValidation_Flag); - } - - bool persistTypeface() const { return (fFlags & kCrossProcess_Flag) != 0; } - - void writeDataAsByteArray(SkData* data) { - this->writeByteArray(data->data(), data->size()); - } - -protected: - // A helper function so that each subclass does not have to be a friend of SkFlattenable - void flattenObject(const SkFlattenable* obj, SkFlattenableWriteBuffer& buffer); - - uint32_t fFlags; -}; - -#endif +#endif//SkFlattenableBuffers_DEFINED diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h index 25d3bac80..37993c0ea 100644 --- a/include/core/SkImageFilter.h +++ b/include/core/SkImageFilter.h @@ -160,15 +160,15 @@ protected: virtual ~SkImageFilter(); /** - * Constructs a new SkImageFilter read from an SkFlattenableReadBuffer object. + * Constructs a new SkImageFilter read from an SkReadBuffer object. * * @param inputCount The exact number of inputs expected for this SkImageFilter object. * -1 can be used if the filter accepts any number of inputs. - * @param rb SkFlattenableReadBuffer object from which the SkImageFilter is read. + * @param rb SkReadBuffer object from which the SkImageFilter is read. */ - explicit SkImageFilter(int inputCount, SkFlattenableReadBuffer& rb); + explicit SkImageFilter(int inputCount, SkReadBuffer& rb); - virtual void flatten(SkFlattenableWriteBuffer& wb) const SK_OVERRIDE; + virtual void flatten(SkWriteBuffer& wb) const SK_OVERRIDE; /** * This is the virtual which should be overridden by the derived class diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h index d389d5e00..722ff2743 100644 --- a/include/core/SkImageInfo.h +++ b/include/core/SkImageInfo.h @@ -11,8 +11,8 @@ #include "SkTypes.h" #include "SkSize.h" -class SkFlattenableWriteBuffer; -class SkFlattenableReadBuffer; +class SkWriteBuffer; +class SkReadBuffer; /** * Describes how to interpret the alpha compoent of a pixel. @@ -178,8 +178,8 @@ struct SkImageInfo { return 0 != memcmp(this, &other, sizeof(other)); } - void unflatten(SkFlattenableReadBuffer&); - void flatten(SkFlattenableWriteBuffer&) const; + void unflatten(SkReadBuffer&); + void flatten(SkWriteBuffer&) const; size_t getSafeSize(size_t rowBytes) const { if (0 == fHeight) { diff --git a/include/core/SkMallocPixelRef.h b/include/core/SkMallocPixelRef.h index 4607fa284..f6a57b3de 100644 --- a/include/core/SkMallocPixelRef.h +++ b/include/core/SkMallocPixelRef.h @@ -91,12 +91,12 @@ protected: // The ownPixels version of this constructor is deprecated. SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*, bool ownPixels); - SkMallocPixelRef(SkFlattenableReadBuffer& buffer); + SkMallocPixelRef(SkReadBuffer& buffer); virtual ~SkMallocPixelRef(); virtual bool onNewLockPixels(LockRec*) SK_OVERRIDE; virtual void onUnlockPixels() SK_OVERRIDE; - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual size_t getAllocatedSizeInBytes() const SK_OVERRIDE; private: diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h index 20dc37972..b47e034e3 100644 --- a/include/core/SkMaskFilter.h +++ b/include/core/SkMaskFilter.h @@ -137,7 +137,7 @@ public: protected: // empty for now, but lets get our subclass to remember to init us for the future - SkMaskFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkMaskFilter(SkReadBuffer& buffer) : INHERITED(buffer) {} enum FilterReturn { kFalse_FilterReturn, diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h index 00ec29e42..abb859950 100644 --- a/include/core/SkPaint.h +++ b/include/core/SkPaint.h @@ -24,8 +24,8 @@ class SkAutoGlyphCache; class SkColorFilter; class SkDescriptor; struct SkDeviceProperties; -class SkFlattenableReadBuffer; -class SkFlattenableWriteBuffer; +class SkReadBuffer; +class SkWriteBuffer; struct SkGlyph; struct SkRect; class SkGlyphCache; @@ -72,8 +72,8 @@ public: return !(a == b); } - void flatten(SkFlattenableWriteBuffer&) const; - void unflatten(SkFlattenableReadBuffer&); + void flatten(SkWriteBuffer&) const; + void unflatten(SkReadBuffer&); /** Restores the paint to its initial settings. */ diff --git a/include/core/SkPaintOptionsAndroid.h b/include/core/SkPaintOptionsAndroid.h index f49345f12..ab84ec050 100644 --- a/include/core/SkPaintOptionsAndroid.h +++ b/include/core/SkPaintOptionsAndroid.h @@ -13,8 +13,8 @@ #include "SkTypes.h" #include "SkString.h" -class SkFlattenableReadBuffer; -class SkFlattenableWriteBuffer; +class SkReadBuffer; +class SkWriteBuffer; /** \class SkLanguage @@ -80,8 +80,8 @@ public: fUseFontFallbacks != b.fUseFontFallbacks; } - void flatten(SkFlattenableWriteBuffer&) const; - void unflatten(SkFlattenableReadBuffer&); + void flatten(SkWriteBuffer&) const; + void unflatten(SkReadBuffer&); /** Return the paint's language value used for drawing text. @return the paint's language value used for drawing text. diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h index ed6d93b76..3f38f3a10 100644 --- a/include/core/SkPathEffect.h +++ b/include/core/SkPathEffect.h @@ -109,7 +109,7 @@ public: SK_DEFINE_FLATTENABLE_TYPE(SkPathEffect) protected: - SkPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) {} private: // illegal @@ -131,8 +131,8 @@ public: virtual ~SkPairPathEffect(); protected: - SkPairPathEffect(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPairPathEffect(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // these are visible to our subclasses SkPathEffect* fPE0, *fPE1; @@ -162,7 +162,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposePathEffect) protected: - SkComposePathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkComposePathEffect(SkReadBuffer& buffer) : INHERITED(buffer) {} private: // illegal @@ -193,7 +193,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSumPathEffect) protected: - SkSumPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkSumPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) {} private: // illegal diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h index d63b66bef..82d6835db 100644 --- a/include/core/SkPicture.h +++ b/include/core/SkPicture.h @@ -169,8 +169,8 @@ public: /** * Function to encode an SkBitmap to an SkData. A function with this - * signature can be passed to serialize() and SkOrderedWriteBuffer. - * Returning NULL will tell the SkOrderedWriteBuffer to use + * signature can be passed to serialize() and SkWriteBuffer. + * Returning NULL will tell the SkWriteBuffer to use * SkBitmap::flatten() to store the bitmap. * * @param pixelRefOffset DEPRECATED -- caller assumes it will return 0. diff --git a/include/core/SkPixelRef.h b/include/core/SkPixelRef.h index 5a9a5a05f..439a4ca54 100644 --- a/include/core/SkPixelRef.h +++ b/include/core/SkPixelRef.h @@ -328,8 +328,8 @@ protected: SkBaseMutex* mutex() const { return fMutex; } // serialization - SkPixelRef(SkFlattenableReadBuffer&, SkBaseMutex*); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPixelRef(SkReadBuffer&, SkBaseMutex*); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // only call from constructor. Flags this to always be locked, removing // the need to grab the mutex and call onLockPixels/onUnlockPixels. diff --git a/include/core/SkRasterizer.h b/include/core/SkRasterizer.h index 6e6224ef3..d916b231b 100644 --- a/include/core/SkRasterizer.h +++ b/include/core/SkRasterizer.h @@ -33,7 +33,7 @@ public: SK_DEFINE_FLATTENABLE_TYPE(SkRasterizer) protected: - SkRasterizer(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkRasterizer(SkReadBuffer& buffer) : INHERITED(buffer) {} virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix, const SkIRect* clipBounds, diff --git a/include/core/SkReadBuffer.h b/include/core/SkReadBuffer.h new file mode 100644 index 000000000..75cc64b2b --- /dev/null +++ b/include/core/SkReadBuffer.h @@ -0,0 +1,205 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkReadBuffer_DEFINED +#define SkReadBuffer_DEFINED + +#include "SkBitmapHeap.h" +#include "SkColorFilter.h" +#include "SkData.h" +#include "SkDrawLooper.h" +#include "SkImageFilter.h" +#include "SkMaskFilter.h" +#include "SkPath.h" +#include "SkPathEffect.h" +#include "SkPicture.h" +#include "SkPixelRef.h" +#include "SkRasterizer.h" +#include "SkReadBuffer.h" +#include "SkReader32.h" +#include "SkRefCnt.h" +#include "SkShader.h" +#include "SkUnitMapper.h" +#include "SkWriteBuffer.h" +#include "SkXfermode.h" + +class SkBitmap; + +#if defined(SK_DEBUG) && defined(SK_BUILD_FOR_MAC) + #define DEBUG_NON_DETERMINISTIC_ASSERT +#endif + +class SkReadBuffer { +public: + SkReadBuffer(); + SkReadBuffer(const void* data, size_t size); + SkReadBuffer(SkStream* stream); + virtual ~SkReadBuffer(); + + enum Flags { + kCrossProcess_Flag = 1 << 0, + kScalarIsFloat_Flag = 1 << 1, + kPtrIs64Bit_Flag = 1 << 2, + kValidation_Flag = 1 << 3, + }; + + void setFlags(uint32_t flags) { fFlags = flags; } + uint32_t getFlags() const { return fFlags; } + + bool isCrossProcess() const { + return this->isValidating() || SkToBool(fFlags & kCrossProcess_Flag); + } + bool isScalarFloat() const { return SkToBool(fFlags & kScalarIsFloat_Flag); } + bool isPtr64Bit() const { return SkToBool(fFlags & kPtrIs64Bit_Flag); } + bool isValidating() const { return SkToBool(fFlags & kValidation_Flag); } + + SkReader32* getReader32() { return &fReader; } + + uint32_t size() { return fReader.size(); } + uint32_t offset() { return fReader.offset(); } + bool eof() { return fReader.eof(); } + const void* skip(size_t size) { return fReader.skip(size); } + + // primitives + virtual bool readBool(); + virtual SkColor readColor(); + virtual SkFixed readFixed(); + virtual int32_t readInt(); + virtual SkScalar readScalar(); + virtual uint32_t readUInt(); + virtual int32_t read32(); + + void* readFunctionPtr() { + void* ptr; + this->readByteArray(&ptr, sizeof(ptr)); + return ptr; + } + + // strings -- the caller is responsible for freeing the string contents + virtual void readString(SkString* string); + virtual void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding); + + // common data structures + virtual void readPoint(SkPoint* point); + SkPoint readPoint() { SkPoint p; this->readPoint(&p); return p; } + virtual void readMatrix(SkMatrix* matrix); + virtual void readIRect(SkIRect* rect); + virtual void readRect(SkRect* rect); + virtual void readRegion(SkRegion* region); + virtual void readPath(SkPath* path); + void readPaint(SkPaint* paint) { paint->unflatten(*this); } + + virtual SkFlattenable* readFlattenable(SkFlattenable::Type); + template T* readFlattenable() { + return (T*) this->readFlattenable(T::GetFlattenableType()); + } + SkColorFilter* readColorFilter() { return this->readFlattenable(); } + SkDrawLooper* readDrawLooper() { return this->readFlattenable(); } + SkImageFilter* readImageFilter() { return this->readFlattenable(); } + SkMaskFilter* readMaskFilter() { return this->readFlattenable(); } + SkPathEffect* readPathEffect() { return this->readFlattenable(); } + SkPixelRef* readPixelRef() { return this->readFlattenable(); } + SkRasterizer* readRasterizer() { return this->readFlattenable(); } + SkShader* readShader() { return this->readFlattenable(); } + SkUnitMapper* readUnitMapper() { return this->readFlattenable(); } + SkXfermode* readXfermode() { return this->readFlattenable(); } + + + // binary data and arrays + virtual bool readByteArray(void* value, size_t size); + virtual bool readColorArray(SkColor* colors, size_t size); + virtual bool readIntArray(int32_t* values, size_t size); + virtual bool readPointArray(SkPoint* points, size_t size); + virtual bool readScalarArray(SkScalar* values, size_t size); + + SkData* readByteArrayAsData() { + size_t len = this->getArrayCount(); + if (!this->validateAvailable(len)) { + return SkData::NewEmpty(); + } + void* buffer = sk_malloc_throw(len); + this->readByteArray(buffer, len); + return SkData::NewFromMalloc(buffer, len); + } + + // helpers to get info about arrays and binary data + virtual uint32_t getArrayCount(); + + virtual void readBitmap(SkBitmap* bitmap); + virtual SkTypeface* readTypeface(); + + void setBitmapStorage(SkBitmapHeapReader* bitmapStorage) { + SkRefCnt_SafeAssign(fBitmapStorage, bitmapStorage); + } + + void setTypefaceArray(SkTypeface* array[], int count) { + fTFArray = array; + fTFCount = count; + } + + /** + * Call this with a pre-loaded array of Factories, in the same order as + * were created/written by the writer. SkPicture uses this. + */ + void setFactoryPlayback(SkFlattenable::Factory array[], int count) { + fFactoryTDArray = NULL; + fFactoryArray = array; + fFactoryCount = count; + } + + /** + * Call this with an initially empty array, so the reader can cache each + * factory it sees by name. Used by the pipe code in conjunction with + * SkWriteBuffer::setNamedFactoryRecorder. + */ + void setFactoryArray(SkTDArray* array) { + fFactoryTDArray = array; + fFactoryArray = NULL; + fFactoryCount = 0; + } + + /** + * Provide a function to decode an SkBitmap from encoded data. Only used if the writer + * encoded the SkBitmap. If the proper decoder cannot be used, a red bitmap with the + * appropriate size will be used. + */ + void setBitmapDecoder(SkPicture::InstallPixelRefProc bitmapDecoder) { + fBitmapDecoder = bitmapDecoder; + } + + // Default impelementations don't check anything. + virtual bool validate(bool isValid) { return true; } + virtual bool isValid() const { return true; } + virtual bool validateAvailable(size_t size) { return true; } + +private: + bool readArray(void* value, size_t size, size_t elementSize); + + uint32_t fFlags; + + SkReader32 fReader; + void* fMemoryPtr; + + SkBitmapHeapReader* fBitmapStorage; + SkTypeface** fTFArray; + int fTFCount; + + SkTDArray* fFactoryTDArray; + SkFlattenable::Factory* fFactoryArray; + int fFactoryCount; + + SkPicture::InstallPixelRefProc fBitmapDecoder; + +#ifdef DEBUG_NON_DETERMINISTIC_ASSERT + // Debugging counter to keep track of how many bitmaps we + // have decoded. + int fDecodedBitmapIndex; +#endif // DEBUG_NON_DETERMINISTIC_ASSERT +}; + +#endif // SkReadBuffer_DEFINED diff --git a/include/core/SkShader.h b/include/core/SkShader.h index cdb7a2fdb..108c6b082 100644 --- a/include/core/SkShader.h +++ b/include/core/SkShader.h @@ -363,8 +363,8 @@ protected: const SkMatrix& getTotalInverse() const { return fTotalInverse; } MatrixClass getInverseClass() const { return (MatrixClass)fTotalInverseClass; } - SkShader(SkFlattenableReadBuffer& ); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkShader(SkReadBuffer& ); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkMatrix fLocalMatrix; SkMatrix fTotalInverse; diff --git a/include/core/SkUnitMapper.h b/include/core/SkUnitMapper.h index 57a8b8332..46f6eddd7 100644 --- a/include/core/SkUnitMapper.h +++ b/include/core/SkUnitMapper.h @@ -28,7 +28,7 @@ public: SK_DEFINE_FLATTENABLE_TYPE(SkUnitMapper) protected: - SkUnitMapper(SkFlattenableReadBuffer& rb) : SkFlattenable(rb) {} + SkUnitMapper(SkReadBuffer& rb) : SkFlattenable(rb) {} private: typedef SkFlattenable INHERITED; diff --git a/include/core/SkWriteBuffer.h b/include/core/SkWriteBuffer.h new file mode 100644 index 000000000..ab56f9d48 --- /dev/null +++ b/include/core/SkWriteBuffer.h @@ -0,0 +1,121 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkWriteBuffer_DEFINED +#define SkWriteBuffer_DEFINED + +#include "SkBitmapHeap.h" +#include "SkData.h" +#include "SkPath.h" +#include "SkPicture.h" +#include "SkRefCnt.h" +#include "SkWriter32.h" + +class SkBitmap; +class SkFactorySet; +class SkFlattenable; +class SkNamedFactorySet; +class SkRefCntSet; + +class SkWriteBuffer { +public: + SkWriteBuffer(); + SkWriteBuffer(void* initialStorage, size_t storageSize); + ~SkWriteBuffer(); + + enum Flags { + kCrossProcess_Flag = 1 << 0, + kValidation_Flag = 1 << 1, + }; + void setFlags(uint32_t flags) { fFlags = flags; } + uint32_t getFlags() const { return fFlags; } + + bool isValidating() const { return SkToBool(fFlags & kValidation_Flag); } + bool isCrossProcess() const { + return this->isValidating() || SkToBool(fFlags & kCrossProcess_Flag); + } + + SkWriter32* getWriter32() { return &fWriter; } + void reset(void* storage = NULL, size_t storageSize = 0) { + fWriter.reset(storage, storageSize); + } + + uint32_t* reserve(size_t size) { return fWriter.reserve(size); } + + size_t bytesWritten() const { return fWriter.bytesWritten(); } + + void writeByteArray(const void* data, size_t size); + void writeDataAsByteArray(SkData* data) { this->writeByteArray(data->data(), data->size()); } + void writeBool(bool value); + void writeFixed(SkFixed value); + void writeScalar(SkScalar value); + void writeScalarArray(const SkScalar* value, uint32_t count); + void writeInt(int32_t value); + void writeIntArray(const int32_t* value, uint32_t count); + void writeUInt(uint32_t value); + void write32(int32_t value); + void writeString(const char* value); + void writeEncodedString(const void* value, size_t byteLength, SkPaint::TextEncoding encoding); + void writeFunctionPtr(void* ptr) { this->writeByteArray(&ptr, sizeof(ptr)); } + + void writeFlattenable(const SkFlattenable* flattenable); + void writeColor(const SkColor& color); + void writeColorArray(const SkColor* color, uint32_t count); + void writePoint(const SkPoint& point); + void writePointArray(const SkPoint* point, uint32_t count); + void writeMatrix(const SkMatrix& matrix); + void writeIRect(const SkIRect& rect); + void writeRect(const SkRect& rect); + void writeRegion(const SkRegion& region); + void writePath(const SkPath& path); + size_t writeStream(SkStream* stream, size_t length); + void writeBitmap(const SkBitmap& bitmap); + void writeTypeface(SkTypeface* typeface); + void writePaint(const SkPaint& paint) { paint.flatten(*this); } + + bool writeToStream(SkWStream*); + void writeToMemory(void* dst) { fWriter.flatten(dst); } + + SkFactorySet* setFactoryRecorder(SkFactorySet*); + SkNamedFactorySet* setNamedFactoryRecorder(SkNamedFactorySet*); + + SkRefCntSet* getTypefaceRecorder() const { return fTFSet; } + SkRefCntSet* setTypefaceRecorder(SkRefCntSet*); + + /** + * Set an SkBitmapHeap to store bitmaps rather than flattening. + * + * Incompatible with an EncodeBitmap function. If an EncodeBitmap function is set, setting an + * SkBitmapHeap will set the function to NULL in release mode and crash in debug. + */ + void setBitmapHeap(SkBitmapHeap*); + + /** + * Provide a function to encode an SkBitmap to an SkData. writeBitmap will attempt to use + * bitmapEncoder to store the SkBitmap. If the reader does not provide a function to decode, it + * will not be able to restore SkBitmaps, but will still be able to read the rest of the stream. + * bitmapEncoder will never be called with a NULL pixelRefOffset. + * + * Incompatible with the SkBitmapHeap. If an encoder is set fBitmapHeap will be set to NULL in + * release and crash in debug. + */ + void setBitmapEncoder(SkPicture::EncodeBitmap bitmapEncoder); + +private: + uint32_t fFlags; + SkFactorySet* fFactorySet; + SkNamedFactorySet* fNamedFactorySet; + SkWriter32 fWriter; + + SkBitmapHeap* fBitmapHeap; + SkRefCntSet* fTFSet; + + SkPicture::EncodeBitmap fBitmapEncoder; +}; + +#endif // SkWriteBuffer_DEFINED diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h index 3ef2241c7..31b8081f8 100644 --- a/include/core/SkXfermode.h +++ b/include/core/SkXfermode.h @@ -218,7 +218,7 @@ public: SK_DEFINE_FLATTENABLE_TYPE(SkXfermode) protected: - SkXfermode(SkFlattenableReadBuffer& rb) : SkFlattenable(rb) {} + SkXfermode(SkReadBuffer& rb) : SkFlattenable(rb) {} /** The default implementation of xfer32/xfer16/xferA8 in turn call this method, 1 color at a time (upscaled to a SkPMColor). The default @@ -264,8 +264,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcXfermode) protected: - SkProcXfermode(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkProcXfermode(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // allow subclasses to update this after we unflatten void setProc(SkXfermodeProc proc) { diff --git a/include/effects/Sk1DPathEffect.h b/include/effects/Sk1DPathEffect.h index 4599276e7..4ac8f73b2 100644 --- a/include/effects/Sk1DPathEffect.h +++ b/include/effects/Sk1DPathEffect.h @@ -60,8 +60,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPath1DPathEffect) protected: - SkPath1DPathEffect(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPath1DPathEffect(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // overrides from Sk1DPathEffect virtual SkScalar begin(SkScalar contourLength) const SK_OVERRIDE; diff --git a/include/effects/Sk2DPathEffect.h b/include/effects/Sk2DPathEffect.h index ed7f674f8..859b5cd95 100644 --- a/include/effects/Sk2DPathEffect.h +++ b/include/effects/Sk2DPathEffect.h @@ -41,8 +41,8 @@ protected: const SkMatrix& getMatrix() const { return fMatrix; } // protected so that subclasses can call this during unflattening - Sk2DPathEffect(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + Sk2DPathEffect(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkMatrix fMatrix, fInverse; @@ -69,9 +69,9 @@ public: protected: virtual void nextSpan(int u, int v, int ucount, SkPath*) const SK_OVERRIDE; - SkLine2DPathEffect(SkFlattenableReadBuffer&); + SkLine2DPathEffect(SkReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkScalar fWidth; @@ -90,8 +90,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPath2DPathEffect) protected: - SkPath2DPathEffect(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPath2DPathEffect(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual void next(const SkPoint&, int u, int v, SkPath*) const SK_OVERRIDE; diff --git a/include/effects/SkAvoidXfermode.h b/include/effects/SkAvoidXfermode.h index 4950b6470..afc3fc9d7 100644 --- a/include/effects/SkAvoidXfermode.h +++ b/include/effects/SkAvoidXfermode.h @@ -51,8 +51,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkAvoidXfermode) protected: - SkAvoidXfermode(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkAvoidXfermode(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkColor fOpColor; diff --git a/include/effects/SkBicubicImageFilter.h b/include/effects/SkBicubicImageFilter.h index bd918eb76..d321169b7 100644 --- a/include/effects/SkBicubicImageFilter.h +++ b/include/effects/SkBicubicImageFilter.h @@ -35,8 +35,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBicubicImageFilter) protected: - SkBicubicImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkBicubicImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkBitmapSource.h b/include/effects/SkBitmapSource.h index ec779eafe..e0e241b67 100644 --- a/include/effects/SkBitmapSource.h +++ b/include/effects/SkBitmapSource.h @@ -20,8 +20,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource) protected: - explicit SkBitmapSource(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkBitmapSource(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h index 013e80714..46b154deb 100644 --- a/include/effects/SkBlurDrawLooper.h +++ b/include/effects/SkBlurDrawLooper.h @@ -51,8 +51,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurDrawLooper) protected: - SkBlurDrawLooper(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkBlurDrawLooper(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkMaskFilter* fBlur; diff --git a/include/effects/SkBlurImageFilter.h b/include/effects/SkBlurImageFilter.h index d0d2446a7..1d51f9a5e 100644 --- a/include/effects/SkBlurImageFilter.h +++ b/include/effects/SkBlurImageFilter.h @@ -22,8 +22,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter) protected: - explicit SkBlurImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkBlurImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; diff --git a/include/effects/SkColorFilterImageFilter.h b/include/effects/SkColorFilterImageFilter.h index c4ac6b2a8..c04e418f2 100755 --- a/include/effects/SkColorFilterImageFilter.h +++ b/include/effects/SkColorFilterImageFilter.h @@ -22,8 +22,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorFilterImageFilter) protected: - SkColorFilterImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkColorFilterImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkColorMatrixFilter.h b/include/effects/SkColorMatrixFilter.h index ca7c0865b..a4144e171 100644 --- a/include/effects/SkColorMatrixFilter.h +++ b/include/effects/SkColorMatrixFilter.h @@ -35,8 +35,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorMatrixFilter) protected: - SkColorMatrixFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkColorMatrixFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkColorMatrix fMatrix; diff --git a/include/effects/SkComposeImageFilter.h b/include/effects/SkComposeImageFilter.h index 45f530b39..744647d46 100644 --- a/include/effects/SkComposeImageFilter.h +++ b/include/effects/SkComposeImageFilter.h @@ -18,7 +18,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter) protected: - explicit SkComposeImageFilter(SkFlattenableReadBuffer& buffer); + explicit SkComposeImageFilter(SkReadBuffer& buffer); virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkCornerPathEffect.h b/include/effects/SkCornerPathEffect.h index 704b7fb8f..dcb7c9f73 100644 --- a/include/effects/SkCornerPathEffect.h +++ b/include/effects/SkCornerPathEffect.h @@ -29,8 +29,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCornerPathEffect) protected: - SkCornerPathEffect(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkCornerPathEffect(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkScalar fRadius; diff --git a/include/effects/SkDashPathEffect.h b/include/effects/SkDashPathEffect.h index 4e83f45cb..818e07392 100644 --- a/include/effects/SkDashPathEffect.h +++ b/include/effects/SkDashPathEffect.h @@ -49,11 +49,11 @@ public: virtual Factory getFactory() const SK_OVERRIDE; - static SkFlattenable* CreateProc(SkFlattenableReadBuffer&); + static SkFlattenable* CreateProc(SkReadBuffer&); protected: - SkDashPathEffect(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkDashPathEffect(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkScalar* fIntervals; diff --git a/include/effects/SkDiscretePathEffect.h b/include/effects/SkDiscretePathEffect.h index 999ea0481..60eb85274 100644 --- a/include/effects/SkDiscretePathEffect.h +++ b/include/effects/SkDiscretePathEffect.h @@ -28,8 +28,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscretePathEffect) protected: - SkDiscretePathEffect(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkDiscretePathEffect(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkScalar fSegLength, fPerterb; diff --git a/include/effects/SkDisplacementMapEffect.h b/include/effects/SkDisplacementMapEffect.h index d82a40ab9..ba7e25901 100644 --- a/include/effects/SkDisplacementMapEffect.h +++ b/include/effects/SkDisplacementMapEffect.h @@ -46,8 +46,8 @@ public: #endif protected: - explicit SkDisplacementMapEffect(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkDisplacementMapEffect(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: ChannelSelectorType fXChannelSelector; diff --git a/include/effects/SkDropShadowImageFilter.h b/include/effects/SkDropShadowImageFilter.h index 0c66272dd..14a78930d 100644 --- a/include/effects/SkDropShadowImageFilter.h +++ b/include/effects/SkDropShadowImageFilter.h @@ -17,8 +17,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDropShadowImageFilter) protected: - explicit SkDropShadowImageFilter(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkDropShadowImageFilter(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& source, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; private: diff --git a/include/effects/SkEmbossMaskFilter.h b/include/effects/SkEmbossMaskFilter.h index 7210b78c5..263c5e054 100644 --- a/include/effects/SkEmbossMaskFilter.h +++ b/include/effects/SkEmbossMaskFilter.h @@ -39,8 +39,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmbossMaskFilter) protected: - SkEmbossMaskFilter(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkEmbossMaskFilter(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: Light fLight; diff --git a/include/effects/SkKernel33MaskFilter.h b/include/effects/SkKernel33MaskFilter.h index 3404b73b1..bcd9b26b8 100644 --- a/include/effects/SkKernel33MaskFilter.h +++ b/include/effects/SkKernel33MaskFilter.h @@ -24,8 +24,8 @@ public: SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;) protected: - SkKernel33ProcMaskFilter(SkFlattenableReadBuffer& rb); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkKernel33ProcMaskFilter(SkReadBuffer& rb); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: int fPercent256; @@ -53,8 +53,8 @@ private: int fKernel[3][3]; int fShift; - SkKernel33MaskFilter(SkFlattenableReadBuffer& rb); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkKernel33MaskFilter(SkReadBuffer& rb); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; typedef SkKernel33ProcMaskFilter INHERITED; }; diff --git a/include/effects/SkLayerDrawLooper.h b/include/effects/SkLayerDrawLooper.h index adf07a97a..6955192b5 100644 --- a/include/effects/SkLayerDrawLooper.h +++ b/include/effects/SkLayerDrawLooper.h @@ -110,8 +110,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerDrawLooper) protected: - SkLayerDrawLooper(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkLayerDrawLooper(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: struct Rec { diff --git a/include/effects/SkLayerRasterizer.h b/include/effects/SkLayerRasterizer.h index 65d1be0bc..be81a2ba3 100644 --- a/include/effects/SkLayerRasterizer.h +++ b/include/effects/SkLayerRasterizer.h @@ -35,8 +35,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer) protected: - SkLayerRasterizer(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkLayerRasterizer(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // override from SkRasterizer virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix, diff --git a/include/effects/SkLerpXfermode.h b/include/effects/SkLerpXfermode.h index 6151f3d5a..b6cc93fe0 100644 --- a/include/effects/SkLerpXfermode.h +++ b/include/effects/SkLerpXfermode.h @@ -32,8 +32,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLerpXfermode) protected: - SkLerpXfermode(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkLerpXfermode(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkLerpXfermode(unsigned scale256); diff --git a/include/effects/SkLightingImageFilter.h b/include/effects/SkLightingImageFilter.h index b3fb7d0a0..4a76a9cd7 100644 --- a/include/effects/SkLightingImageFilter.h +++ b/include/effects/SkLightingImageFilter.h @@ -74,8 +74,8 @@ protected: SkScalar surfaceScale, SkImageFilter* input, const CropRect* cropRect = NULL); - explicit SkLightingImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkLightingImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; const SkLight* light() const { return fLight; } SkScalar surfaceScale() const { return fSurfaceScale; } diff --git a/include/effects/SkLumaColorFilter.h b/include/effects/SkLumaColorFilter.h index a0c08bbb9..6c57f7cc7 100644 --- a/include/effects/SkLumaColorFilter.h +++ b/include/effects/SkLumaColorFilter.h @@ -35,8 +35,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLumaColorFilter) protected: - SkLumaColorFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkLumaColorFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkLumaColorFilter(); diff --git a/include/effects/SkMagnifierImageFilter.h b/include/effects/SkMagnifierImageFilter.h index b5a79fa14..222abd128 100644 --- a/include/effects/SkMagnifierImageFilter.h +++ b/include/effects/SkMagnifierImageFilter.h @@ -19,8 +19,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMagnifierImageFilter) protected: - explicit SkMagnifierImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkMagnifierImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; diff --git a/include/effects/SkMatrixConvolutionImageFilter.h b/include/effects/SkMatrixConvolutionImageFilter.h index d3cf8e34f..8da556e91 100644 --- a/include/effects/SkMatrixConvolutionImageFilter.h +++ b/include/effects/SkMatrixConvolutionImageFilter.h @@ -64,8 +64,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixConvolutionImageFilter) protected: - SkMatrixConvolutionImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkMatrixConvolutionImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkMergeImageFilter.h b/include/effects/SkMergeImageFilter.h index ad464d3fd..bd9ab6c8e 100755 --- a/include/effects/SkMergeImageFilter.h +++ b/include/effects/SkMergeImageFilter.h @@ -25,8 +25,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMergeImageFilter) protected: - SkMergeImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkMergeImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkMorphologyImageFilter.h b/include/effects/SkMorphologyImageFilter.h index d44d0e253..03359088d 100644 --- a/include/effects/SkMorphologyImageFilter.h +++ b/include/effects/SkMorphologyImageFilter.h @@ -32,8 +32,8 @@ protected: bool filterImageGeneric(Proc procX, Proc procY, Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* offset); - SkMorphologyImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkMorphologyImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; #if SK_SUPPORT_GPU virtual bool canFilterImageGPU() const SK_OVERRIDE { return true; } bool filterImageGPUGeneric(bool dilate, Proxy* proxy, const SkBitmap& src, @@ -65,7 +65,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter) protected: - SkDilateImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkDilateImageFilter(SkReadBuffer& buffer) : INHERITED(buffer) {} private: typedef SkMorphologyImageFilter INHERITED; @@ -88,7 +88,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter) protected: - SkErodeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkErodeImageFilter(SkReadBuffer& buffer) : INHERITED(buffer) {} private: typedef SkMorphologyImageFilter INHERITED; diff --git a/include/effects/SkOffsetImageFilter.h b/include/effects/SkOffsetImageFilter.h index f15641585..9237111bc 100644 --- a/include/effects/SkOffsetImageFilter.h +++ b/include/effects/SkOffsetImageFilter.h @@ -21,8 +21,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter) protected: - SkOffsetImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkOffsetImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkPerlinNoiseShader.h b/include/effects/SkPerlinNoiseShader.h index 22cb89292..dd89c7092 100644 --- a/include/effects/SkPerlinNoiseShader.h +++ b/include/effects/SkPerlinNoiseShader.h @@ -73,8 +73,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPerlinNoiseShader) protected: - SkPerlinNoiseShader(SkFlattenableReadBuffer&); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPerlinNoiseShader(SkReadBuffer&); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, SkScalar baseFrequencyX, diff --git a/include/effects/SkPictureImageFilter.h b/include/effects/SkPictureImageFilter.h index 98d72d986..ccda85d3a 100644 --- a/include/effects/SkPictureImageFilter.h +++ b/include/effects/SkPictureImageFilter.h @@ -28,8 +28,8 @@ public: protected: virtual ~SkPictureImageFilter(); - explicit SkPictureImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkPictureImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; diff --git a/include/effects/SkPixelXorXfermode.h b/include/effects/SkPixelXorXfermode.h index 5411b12d0..9472d9426 100644 --- a/include/effects/SkPixelXorXfermode.h +++ b/include/effects/SkPixelXorXfermode.h @@ -23,8 +23,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPixelXorXfermode) protected: - SkPixelXorXfermode(SkFlattenableReadBuffer& rb); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkPixelXorXfermode(SkReadBuffer& rb); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; // override from SkXfermode virtual SkPMColor xferColor(SkPMColor src, SkPMColor dst) const; diff --git a/include/effects/SkRectShaderImageFilter.h b/include/effects/SkRectShaderImageFilter.h index ea974785a..28d98cc49 100644 --- a/include/effects/SkRectShaderImageFilter.h +++ b/include/effects/SkRectShaderImageFilter.h @@ -34,8 +34,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkRectShaderImageFilter) protected: - SkRectShaderImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkRectShaderImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkResizeImageFilter.h b/include/effects/SkResizeImageFilter.h index d63855561..e2747e7bf 100644 --- a/include/effects/SkResizeImageFilter.h +++ b/include/effects/SkResizeImageFilter.h @@ -36,8 +36,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkResizeImageFilter) protected: - SkResizeImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkResizeImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkStippleMaskFilter.h b/include/effects/SkStippleMaskFilter.h index 8f6d20d9c..ee32ae1fe 100644 --- a/include/effects/SkStippleMaskFilter.h +++ b/include/effects/SkStippleMaskFilter.h @@ -31,7 +31,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkStippleMaskFilter); protected: - SkStippleMaskFilter(SkFlattenableReadBuffer& buffer) + SkStippleMaskFilter(SkReadBuffer& buffer) : SkMaskFilter(buffer) { } diff --git a/include/effects/SkTableMaskFilter.h b/include/effects/SkTableMaskFilter.h index ac33266f8..1c2bbd7a1 100644 --- a/include/effects/SkTableMaskFilter.h +++ b/include/effects/SkTableMaskFilter.h @@ -51,8 +51,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTableMaskFilter) protected: - SkTableMaskFilter(SkFlattenableReadBuffer& rb); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkTableMaskFilter(SkReadBuffer& rb); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: uint8_t fTable[256]; diff --git a/include/effects/SkTestImageFilters.h b/include/effects/SkTestImageFilters.h index e848ff106..66ef5b1e6 100755 --- a/include/effects/SkTestImageFilters.h +++ b/include/effects/SkTestImageFilters.h @@ -12,8 +12,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) protected: - SkDownSampleImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkDownSampleImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; diff --git a/include/effects/SkTileImageFilter.h b/include/effects/SkTileImageFilter.h index bee8a687d..095b97644 100644 --- a/include/effects/SkTileImageFilter.h +++ b/include/effects/SkTileImageFilter.h @@ -28,9 +28,9 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter) protected: - explicit SkTileImageFilter(SkFlattenableReadBuffer& buffer); + explicit SkTileImageFilter(SkReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE; + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE; private: SkRect fSrcRect; diff --git a/include/effects/SkTransparentShader.h b/include/effects/SkTransparentShader.h index bee9a02d2..2b3f99814 100644 --- a/include/effects/SkTransparentShader.h +++ b/include/effects/SkTransparentShader.h @@ -29,7 +29,7 @@ private: const SkBitmap* fDevice; uint8_t fAlpha; - SkTransparentShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {} typedef SkShader INHERITED; }; diff --git a/include/effects/SkXfermodeImageFilter.h b/include/effects/SkXfermodeImageFilter.h index 6343c4b57..e2724c350 100644 --- a/include/effects/SkXfermodeImageFilter.h +++ b/include/effects/SkXfermodeImageFilter.h @@ -40,8 +40,8 @@ public: #endif protected: - explicit SkXfermodeImageFilter(SkFlattenableReadBuffer& buffer); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + explicit SkXfermodeImageFilter(SkReadBuffer& buffer); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkXfermode* fMode; diff --git a/include/images/SkImageRef.h b/include/images/SkImageRef.h index 36f95e64b..ec14456fa 100644 --- a/include/images/SkImageRef.h +++ b/include/images/SkImageRef.h @@ -76,8 +76,8 @@ protected: // override this in your subclass to clean up when we're unlocking pixels virtual void onUnlockPixels() SK_OVERRIDE {} - SkImageRef(SkFlattenableReadBuffer&, SkBaseMutex* mutex = NULL); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkImageRef(SkReadBuffer&, SkBaseMutex* mutex = NULL); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; SkBitmap fBitmap; diff --git a/include/images/SkImageRef_GlobalPool.h b/include/images/SkImageRef_GlobalPool.h index caaf2487d..7b99a6e53 100644 --- a/include/images/SkImageRef_GlobalPool.h +++ b/include/images/SkImageRef_GlobalPool.h @@ -53,7 +53,7 @@ protected: virtual void onUnlockPixels(); - SkImageRef_GlobalPool(SkFlattenableReadBuffer&); + SkImageRef_GlobalPool(SkReadBuffer&); private: typedef SkImageRef INHERITED; diff --git a/include/utils/SkUnitMappers.h b/include/utils/SkUnitMappers.h index 509e2d638..3833e69f9 100644 --- a/include/utils/SkUnitMappers.h +++ b/include/utils/SkUnitMappers.h @@ -23,8 +23,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscreteMapper) protected: - SkDiscreteMapper(SkFlattenableReadBuffer& ); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkDiscreteMapper(SkReadBuffer& ); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: int fSegments; @@ -45,7 +45,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCosineMapper) protected: - SkCosineMapper(SkFlattenableReadBuffer&); + SkCosineMapper(SkReadBuffer&); private: diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp index 32c8161ac..ed0bce9b6 100644 --- a/samplecode/ClockFaceView.cpp +++ b/samplecode/ClockFaceView.cpp @@ -8,7 +8,8 @@ #include "SampleCode.h" #include "SkView.h" #include "SkCanvas.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkGradientShader.h" #include "SkPath.h" #include "SkRegion.h" @@ -89,12 +90,12 @@ protected: dst->addCircle(loc.fX, loc.fY, fRadius); } - Dot2DPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { + Dot2DPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) { fRadius = buffer.readScalar(); fPts = NULL; } - virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { this->INHERITED::flatten(buffer); buffer.writeScalar(fRadius); } @@ -118,7 +119,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(InverseFillPE) protected: - InverseFillPE(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} + InverseFillPE(SkReadBuffer& buffer) : INHERITED(buffer) {} private: typedef SkPathEffect INHERITED; diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp index 6b742b835..6410670fe 100644 --- a/samplecode/SampleAll.cpp +++ b/samplecode/SampleAll.cpp @@ -19,7 +19,8 @@ #include "SkDashPathEffect.h" #include "SkDiscretePathEffect.h" #include "SkEmbossMaskFilter.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkGradientShader.h" #include "SkImageDecoder.h" #include "SkLayerRasterizer.h" @@ -171,10 +172,10 @@ protected: dst->addCircle(loc.fX, loc.fY, fRadius); } - Dot2DPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { + Dot2DPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) { fRadius = buffer.readScalar(); } - virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { this->INHERITED::flatten(buffer); buffer.writeScalar(fRadius); } diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp index 68651f3ea..4f6803221 100644 --- a/samplecode/SampleSlides.cpp +++ b/samplecode/SampleSlides.cpp @@ -10,7 +10,8 @@ #include "SkBlurMaskFilter.h" #include "SkCanvas.h" #include "SkDevice.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkGradientShader.h" #include "SkLayerRasterizer.h" #include "SkPaint.h" diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp index 9aefd2c09..7e98171da 100644 --- a/samplecode/SampleText.cpp +++ b/samplecode/SampleText.cpp @@ -8,7 +8,8 @@ #include "SampleCode.h" #include "SkView.h" #include "SkCanvas.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkGradientShader.h" #include "SkGraphics.h" #include "SkImageDecoder.h" @@ -59,7 +60,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(ReduceNoise) private: - ReduceNoise(SkFlattenableReadBuffer& rb) : SkKernel33ProcMaskFilter(rb) {} + ReduceNoise(SkReadBuffer& rb) : SkKernel33ProcMaskFilter(rb) {} typedef SkKernel33ProcMaskFilter INHERITED; }; @@ -91,7 +92,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Darken) private: - Darken(SkFlattenableReadBuffer& rb) : SkKernel33ProcMaskFilter(rb) {} + Darken(SkReadBuffer& rb) : SkKernel33ProcMaskFilter(rb) {} typedef SkKernel33ProcMaskFilter INHERITED; }; @@ -143,7 +144,7 @@ public: virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count, const SkAlpha aa[]) const SK_OVERRIDE; - typedef SkFlattenable* (*Factory)(SkFlattenableReadBuffer&); + typedef SkFlattenable* (*Factory)(SkReadBuffer&); SK_DEVELOPER_TO_STRING() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPowerMode) @@ -153,11 +154,11 @@ private: uint8_t fTable[256]; // cache void init(SkScalar exponent); - SkPowerMode(SkFlattenableReadBuffer& b) : INHERITED(b) { + SkPowerMode(SkReadBuffer& b) : INHERITED(b) { // read the exponent this->init(SkFixedToScalar(b.readFixed())); } - virtual void flatten(SkFlattenableWriteBuffer& b) const SK_OVERRIDE { + virtual void flatten(SkWriteBuffer& b) const SK_OVERRIDE { this->INHERITED::flatten(b); b.writeFixed(SkScalarToFixed(fExp)); } diff --git a/src/core/SkAnnotation.cpp b/src/core/SkAnnotation.cpp index 837cb62ad..6ba645ffe 100644 --- a/src/core/SkAnnotation.cpp +++ b/src/core/SkAnnotation.cpp @@ -7,7 +7,8 @@ #include "SkAnnotation.h" #include "SkData.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkPoint.h" #include "SkStream.h" @@ -28,12 +29,12 @@ SkData* SkAnnotation::find(const char key[]) const { return fKey.equals(key) ? fData : NULL; } -SkAnnotation::SkAnnotation(SkFlattenableReadBuffer& buffer) { +SkAnnotation::SkAnnotation(SkReadBuffer& buffer) { buffer.readString(&fKey); fData = buffer.readByteArrayAsData(); } -void SkAnnotation::writeToBuffer(SkFlattenableWriteBuffer& buffer) const { +void SkAnnotation::writeToBuffer(SkWriteBuffer& buffer) const { buffer.writeString(fKey.c_str()); buffer.writeDataAsByteArray(fData); } diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp index e12840ada..3b3382055 100644 --- a/src/core/SkBitmap.cpp +++ b/src/core/SkBitmap.cpp @@ -14,8 +14,8 @@ #include "SkImagePriv.h" #include "SkMallocPixelRef.h" #include "SkMask.h" -#include "SkOrderedReadBuffer.h" -#include "SkOrderedWriteBuffer.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkPixelRef.h" #include "SkThread.h" #include "SkUnPreMultiply.h" @@ -1583,7 +1583,7 @@ enum { SERIALIZE_PIXELTYPE_REF_DATA }; -void SkBitmap::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkBitmap::flatten(SkWriteBuffer& buffer) const { buffer.writeInt(fWidth); buffer.writeInt(fHeight); buffer.writeInt(fRowBytes); @@ -1605,7 +1605,7 @@ void SkBitmap::flatten(SkFlattenableWriteBuffer& buffer) const { } } -void SkBitmap::unflatten(SkFlattenableReadBuffer& buffer) { +void SkBitmap::unflatten(SkReadBuffer& buffer) { this->reset(); int width = buffer.readInt(); diff --git a/src/core/SkBitmapHeap.cpp b/src/core/SkBitmapHeap.cpp index 7904492f4..da628937e 100644 --- a/src/core/SkBitmapHeap.cpp +++ b/src/core/SkBitmapHeap.cpp @@ -9,7 +9,8 @@ #include "SkBitmapHeap.h" #include "SkBitmap.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkTSearch.h" SkBitmapHeapEntry::SkBitmapHeapEntry() diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp index 9a94676d6..d7c7269c8 100644 --- a/src/core/SkBitmapProcShader.cpp +++ b/src/core/SkBitmapProcShader.cpp @@ -6,7 +6,8 @@ * found in the LICENSE file. */ #include "SkColorPriv.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkPixelRef.h" #include "SkErrorInternals.h" #include "SkBitmapProcShader.h" @@ -38,7 +39,7 @@ SkBitmapProcShader::SkBitmapProcShader(const SkBitmap& src, fFlags = 0; // computed in setContext } -SkBitmapProcShader::SkBitmapProcShader(SkFlattenableReadBuffer& buffer) +SkBitmapProcShader::SkBitmapProcShader(SkReadBuffer& buffer) : INHERITED(buffer) { buffer.readBitmap(&fRawBitmap); fRawBitmap.setImmutable(); @@ -63,7 +64,7 @@ SkShader::BitmapType SkBitmapProcShader::asABitmap(SkBitmap* texture, return kDefault_BitmapType; } -void SkBitmapProcShader::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkBitmapProcShader::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeBitmap(fRawBitmap); diff --git a/src/core/SkBitmapProcShader.h b/src/core/SkBitmapProcShader.h index 5a599c3b9..b7e60f1ca 100644 --- a/src/core/SkBitmapProcShader.h +++ b/src/core/SkBitmapProcShader.h @@ -37,8 +37,8 @@ public: #endif protected: - SkBitmapProcShader(SkFlattenableReadBuffer& ); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkBitmapProcShader(SkReadBuffer& ); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; SkBitmap fRawBitmap; // experimental for RLE encoding SkBitmapProcState fState; diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index 9682d5572..31a3edea7 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -12,7 +12,8 @@ #include "SkColor.h" #include "SkColorFilter.h" #include "SkFilterShader.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkMask.h" #include "SkMaskFilter.h" #include "SkTemplatesPriv.h" @@ -682,13 +683,13 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Sk3DShader) protected: - Sk3DShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { + Sk3DShader(SkReadBuffer& buffer) : INHERITED(buffer) { fProxy = buffer.readShader(); fPMColor = buffer.readColor(); fMask = NULL; } - virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { + virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { this->INHERITED::flatten(buffer); buffer.writeFlattenable(fProxy); buffer.writeColor(fPMColor); diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index ef0bda74e..8cf9fc010 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -7,7 +7,8 @@ #include "SkColorFilter.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkShader.h" #include "SkUnPreMultiply.h" #include "SkString.h" diff --git a/src/core/SkColorTable.cpp b/src/core/SkColorTable.cpp index 12ec43ec9..b8e7b059e 100644 --- a/src/core/SkColorTable.cpp +++ b/src/core/SkColorTable.cpp @@ -8,7 +8,8 @@ #include "SkColorTable.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkStream.h" #include "SkTemplates.h" @@ -83,7 +84,7 @@ const uint16_t* SkColorTable::lock16BitCache() { /////////////////////////////////////////////////////////////////////////////// -SkColorTable::SkColorTable(SkFlattenableReadBuffer& buffer) { +SkColorTable::SkColorTable(SkReadBuffer& buffer) { f16BitCache = NULL; SkDEBUGCODE(fColorLockCount = 0;) SkDEBUGCODE(f16BitCacheLockCount = 0;) @@ -105,7 +106,7 @@ SkColorTable::SkColorTable(SkFlattenableReadBuffer& buffer) { #endif } -void SkColorTable::writeToBuffer(SkFlattenableWriteBuffer& buffer) const { +void SkColorTable::writeToBuffer(SkWriteBuffer& buffer) const { buffer.writeUInt(fAlphaType); buffer.writeColorArray(fColors, fCount); } diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp index 0d2d68717..b5ea63c24 100644 --- a/src/core/SkComposeShader.cpp +++ b/src/core/SkComposeShader.cpp @@ -11,7 +11,8 @@ #include "SkColorFilter.h" #include "SkColorPriv.h" #include "SkColorShader.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkXfermode.h" #include "SkString.h" @@ -25,7 +26,7 @@ SkComposeShader::SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode) { SkSafeRef(mode); } -SkComposeShader::SkComposeShader(SkFlattenableReadBuffer& buffer) : +SkComposeShader::SkComposeShader(SkReadBuffer& buffer) : INHERITED(buffer) { fShaderA = buffer.readShader(); if (NULL == fShaderA) { @@ -61,7 +62,7 @@ private: }; #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) -void SkComposeShader::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkComposeShader::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeFlattenable(fShaderA); buffer.writeFlattenable(fShaderB); diff --git a/src/core/SkData.cpp b/src/core/SkData.cpp index 176e93c47..2f0791406 100644 --- a/src/core/SkData.cpp +++ b/src/core/SkData.cpp @@ -6,7 +6,8 @@ */ #include "SkData.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkOSFile.h" #include "SkOnce.h" diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index 013b73d23..5f8107306 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -2382,7 +2382,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTriColorShader) protected: - SkTriColorShader(SkFlattenableReadBuffer& buffer) : SkShader(buffer) {} + SkTriColorShader(SkReadBuffer& buffer) : SkShader(buffer) {} private: SkMatrix fDstToUnit; diff --git a/src/core/SkFilterShader.cpp b/src/core/SkFilterShader.cpp index 1e590cb66..feea75b48 100644 --- a/src/core/SkFilterShader.cpp +++ b/src/core/SkFilterShader.cpp @@ -8,7 +8,8 @@ #include "SkFilterShader.h" #include "SkColorFilter.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkShader.h" #include "SkString.h" @@ -20,7 +21,7 @@ SkFilterShader::SkFilterShader(SkShader* shader, SkColorFilter* filter) { filter->ref(); } -SkFilterShader::SkFilterShader(SkFlattenableReadBuffer& buffer) +SkFilterShader::SkFilterShader(SkReadBuffer& buffer) : INHERITED(buffer) { fShader = buffer.readShader(); fFilter = buffer.readColorFilter(); @@ -31,7 +32,7 @@ SkFilterShader::~SkFilterShader() { fShader->unref(); } -void SkFilterShader::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkFilterShader::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeFlattenable(fShader); buffer.writeFlattenable(fFilter); diff --git a/src/core/SkFilterShader.h b/src/core/SkFilterShader.h index be19640d0..abb516557 100644 --- a/src/core/SkFilterShader.h +++ b/src/core/SkFilterShader.h @@ -28,8 +28,8 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkFilterShader) protected: - SkFilterShader(SkFlattenableReadBuffer& ); - virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; + SkFilterShader(SkReadBuffer& ); + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; private: SkShader* fShader; diff --git a/src/core/SkFlattenable.cpp b/src/core/SkFlattenable.cpp index 877fa0a85..410fe0d97 100644 --- a/src/core/SkFlattenable.cpp +++ b/src/core/SkFlattenable.cpp @@ -10,7 +10,7 @@ /////////////////////////////////////////////////////////////////////////////// -void SkFlattenable::flatten(SkFlattenableWriteBuffer&) const +void SkFlattenable::flatten(SkWriteBuffer&) const { /* we don't write anything at the moment, but this allows our subclasses to not know that, since we want them to always call INHERITED::flatten() diff --git a/src/core/SkFlattenableBuffers.cpp b/src/core/SkFlattenableBuffers.cpp deleted file mode 100644 index fc38529ef..000000000 --- a/src/core/SkFlattenableBuffers.cpp +++ /dev/null @@ -1,115 +0,0 @@ - -/* - * Copyright 2012 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "SkFlattenableBuffers.h" -#include "SkPaint.h" -#include "SkTypeface.h" - -#include "SkColorFilter.h" -#include "SkDrawLooper.h" -#include "SkImageFilter.h" -#include "SkMaskFilter.h" -#include "SkPathEffect.h" -#include "SkPixelRef.h" -#include "SkRasterizer.h" -#include "SkShader.h" -#include "SkUnitMapper.h" -#include "SkXfermode.h" - -SkFlattenableReadBuffer::SkFlattenableReadBuffer() { - // Set default values. These should be explicitly set by our client - // via setFlags() if the buffer came from serialization. - fFlags = 0; - // TODO: remove this flag, since we're always floats (now) - fFlags |= kScalarIsFloat_Flag; - if (8 == sizeof(void*)) { - fFlags |= kPtrIs64Bit_Flag; - } -} - -SkFlattenableReadBuffer::~SkFlattenableReadBuffer() { } - -void* SkFlattenableReadBuffer::readFunctionPtr() { - void* proc; - SkASSERT(sizeof(void*) == this->getArrayCount()); - this->readByteArray(&proc, sizeof(void*)); - return proc; -} - -void SkFlattenableReadBuffer::readPaint(SkPaint* paint) { - paint->unflatten(*this); -} - -template T* SkFlattenableReadBuffer::readFlattenableT() { - return static_cast(this->readFlattenable(T::GetFlattenableType())); -} - -SkColorFilter* SkFlattenableReadBuffer::readColorFilter() { - return this->readFlattenableT(); -} - -SkDrawLooper* SkFlattenableReadBuffer::readDrawLooper() { - return this->readFlattenableT(); -} - -SkImageFilter* SkFlattenableReadBuffer::readImageFilter() { - return this->readFlattenableT(); -} - -SkMaskFilter* SkFlattenableReadBuffer::readMaskFilter() { - return this->readFlattenableT(); -} - -SkPathEffect* SkFlattenableReadBuffer::readPathEffect() { - return this->readFlattenableT(); -} - -SkPixelRef* SkFlattenableReadBuffer::readPixelRef() { - return this->readFlattenableT(); -} - -SkRasterizer* SkFlattenableReadBuffer::readRasterizer() { - return this->readFlattenableT(); -} - -SkShader* SkFlattenableReadBuffer::readShader() { - return this->readFlattenableT(); -} - -SkUnitMapper* SkFlattenableReadBuffer::readUnitMapper() { - return this->readFlattenableT(); -} - -SkXfermode* SkFlattenableReadBuffer::readXfermode() { - return this->readFlattenableT(); -} - -bool SkFlattenableReadBuffer::validate(bool isValid) { - return true; -} - -/////////////////////////////////////////////////////////////////////////////// - -SkFlattenableWriteBuffer::SkFlattenableWriteBuffer() { - fFlags = (Flags)0; -} - -SkFlattenableWriteBuffer::~SkFlattenableWriteBuffer() { } - -void SkFlattenableWriteBuffer::writeFunctionPtr(void* ptr) { - void* ptrStorage[] = { ptr }; - this->writeByteArray(ptrStorage, sizeof(void*)); -} - -void SkFlattenableWriteBuffer::writePaint(const SkPaint& paint) { - paint.flatten(*this); -} - -void SkFlattenableWriteBuffer::flattenObject(const SkFlattenable* obj, - SkFlattenableWriteBuffer& buffer) { - obj->flatten(buffer); -} diff --git a/src/core/SkFlattenableSerialization.cpp b/src/core/SkFlattenableSerialization.cpp index 5c83101ea..13fbe6edb 100644 --- a/src/core/SkFlattenableSerialization.cpp +++ b/src/core/SkFlattenableSerialization.cpp @@ -9,11 +9,11 @@ #include "SkData.h" #include "SkValidatingReadBuffer.h" -#include "SkOrderedWriteBuffer.h" +#include "SkWriteBuffer.h" SkData* SkValidatingSerializeFlattenable(SkFlattenable* flattenable) { - SkOrderedWriteBuffer writer; - writer.setFlags(SkOrderedWriteBuffer::kValidation_Flag); + SkWriteBuffer writer; + writer.setFlags(SkWriteBuffer::kValidation_Flag); writer.writeFlattenable(flattenable); uint32_t size = writer.bytesWritten(); void* data = sk_malloc_throw(size); diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index cb1d9fb57..43e96bbb5 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -8,7 +8,8 @@ #include "SkImageFilter.h" #include "SkBitmap.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkRect.h" #include "SkValidationUtils.h" #if SK_SUPPORT_GPU @@ -51,7 +52,7 @@ SkImageFilter::~SkImageFilter() { delete[] fInputs; } -SkImageFilter::SkImageFilter(int inputCount, SkFlattenableReadBuffer& buffer) { +SkImageFilter::SkImageFilter(int inputCount, SkReadBuffer& buffer) { fInputCount = buffer.readInt(); if (buffer.validate((fInputCount >= 0) && ((inputCount < 0) || (fInputCount == inputCount)))) { fInputs = new SkImageFilter*[fInputCount]; @@ -78,7 +79,7 @@ SkImageFilter::SkImageFilter(int inputCount, SkFlattenableReadBuffer& buffer) { } } -void SkImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkImageFilter::flatten(SkWriteBuffer& buffer) const { buffer.writeInt(fInputCount); for (int i = 0; i < fInputCount; i++) { SkImageFilter* input = getInput(i); diff --git a/src/core/SkImageInfo.cpp b/src/core/SkImageInfo.cpp index 967b4f6f0..27c457391 100644 --- a/src/core/SkImageInfo.cpp +++ b/src/core/SkImageInfo.cpp @@ -6,7 +6,8 @@ */ #include "SkImageInfo.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" static bool alpha_type_is_valid(SkAlphaType alphaType) { return (alphaType >= 0) && (alphaType <= kLastEnum_SkAlphaType); @@ -16,7 +17,7 @@ static bool color_type_is_valid(SkColorType colorType) { return (colorType >= 0) && (colorType <= kLastEnum_SkColorType); } -void SkImageInfo::unflatten(SkFlattenableReadBuffer& buffer) { +void SkImageInfo::unflatten(SkReadBuffer& buffer) { fWidth = buffer.read32(); fHeight = buffer.read32(); @@ -28,7 +29,7 @@ void SkImageInfo::unflatten(SkFlattenableReadBuffer& buffer) { color_type_is_valid(fColorType)); } -void SkImageInfo::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkImageInfo::flatten(SkWriteBuffer& buffer) const { buffer.write32(fWidth); buffer.write32(fHeight); diff --git a/src/core/SkMallocPixelRef.cpp b/src/core/SkMallocPixelRef.cpp index 9adcd34ba..aa7c4f745 100644 --- a/src/core/SkMallocPixelRef.cpp +++ b/src/core/SkMallocPixelRef.cpp @@ -7,7 +7,8 @@ #include "SkMallocPixelRef.h" #include "SkBitmap.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" // assumes ptr was allocated via sk_malloc static void sk_free_releaseproc(void* ptr, void*) { @@ -201,7 +202,7 @@ size_t SkMallocPixelRef::getAllocatedSizeInBytes() const { return this->info().getSafeSize(fRB); } -void SkMallocPixelRef::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkMallocPixelRef::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.write32(SkToU32(fRB)); @@ -216,7 +217,7 @@ void SkMallocPixelRef::flatten(SkFlattenableWriteBuffer& buffer) const { } } -SkMallocPixelRef::SkMallocPixelRef(SkFlattenableReadBuffer& buffer) +SkMallocPixelRef::SkMallocPixelRef(SkReadBuffer& buffer) : INHERITED(buffer, NULL) , fReleaseProc(sk_free_releaseproc) , fReleaseProcContext(NULL) diff --git a/src/core/SkOrderedReadBuffer.h b/src/core/SkOrderedReadBuffer.h deleted file mode 100644 index 2c4f480e7..000000000 --- a/src/core/SkOrderedReadBuffer.h +++ /dev/null @@ -1,140 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkOrderedReadBuffer_DEFINED -#define SkOrderedReadBuffer_DEFINED - -#include "SkRefCnt.h" -#include "SkBitmapHeap.h" -#include "SkFlattenableBuffers.h" -#include "SkPath.h" -#include "SkPicture.h" -#include "SkReader32.h" - -class SkBitmap; - -#if defined(SK_DEBUG) && defined(SK_BUILD_FOR_MAC) - #define DEBUG_NON_DETERMINISTIC_ASSERT -#endif - -class SkOrderedReadBuffer : public SkFlattenableReadBuffer { -public: - SkOrderedReadBuffer(); - SkOrderedReadBuffer(const void* data, size_t size); - SkOrderedReadBuffer(SkStream* stream); - virtual ~SkOrderedReadBuffer(); - - virtual SkOrderedReadBuffer* getOrderedBinaryBuffer() SK_OVERRIDE { return this; } - - SkReader32* getReader32() { return &fReader; } - - uint32_t size() { return fReader.size(); } - uint32_t offset() { return fReader.offset(); } - bool eof() { return fReader.eof(); } - const void* skip(size_t size) { return fReader.skip(size); } - - // primitives - virtual bool readBool() SK_OVERRIDE; - virtual SkColor readColor() SK_OVERRIDE; - virtual SkFixed readFixed() SK_OVERRIDE; - virtual int32_t readInt() SK_OVERRIDE; - virtual SkScalar readScalar() SK_OVERRIDE; - virtual uint32_t readUInt() SK_OVERRIDE; - virtual int32_t read32() SK_OVERRIDE; - - // strings -- the caller is responsible for freeing the string contents - virtual void readString(SkString* string) SK_OVERRIDE; - virtual void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding) SK_OVERRIDE; - - // common data structures - virtual SkFlattenable* readFlattenable(SkFlattenable::Type) SK_OVERRIDE; - virtual void readPoint(SkPoint* point) SK_OVERRIDE; - virtual void readMatrix(SkMatrix* matrix) SK_OVERRIDE; - virtual void readIRect(SkIRect* rect) SK_OVERRIDE; - virtual void readRect(SkRect* rect) SK_OVERRIDE; - virtual void readRegion(SkRegion* region) SK_OVERRIDE; - virtual void readPath(SkPath* path) SK_OVERRIDE; - - // binary data and arrays - virtual bool readByteArray(void* value, size_t size) SK_OVERRIDE; - virtual bool readColorArray(SkColor* colors, size_t size) SK_OVERRIDE; - virtual bool readIntArray(int32_t* values, size_t size) SK_OVERRIDE; - virtual bool readPointArray(SkPoint* points, size_t size) SK_OVERRIDE; - virtual bool readScalarArray(SkScalar* values, size_t size) SK_OVERRIDE; - - // helpers to get info about arrays and binary data - virtual uint32_t getArrayCount() SK_OVERRIDE; - - virtual void readBitmap(SkBitmap* bitmap) SK_OVERRIDE; - virtual SkTypeface* readTypeface() SK_OVERRIDE; - - void setBitmapStorage(SkBitmapHeapReader* bitmapStorage) { - SkRefCnt_SafeAssign(fBitmapStorage, bitmapStorage); - } - - void setTypefaceArray(SkTypeface* array[], int count) { - fTFArray = array; - fTFCount = count; - } - - /** - * Call this with a pre-loaded array of Factories, in the same order as - * were created/written by the writer. SkPicture uses this. - */ - void setFactoryPlayback(SkFlattenable::Factory array[], int count) { - fFactoryTDArray = NULL; - fFactoryArray = array; - fFactoryCount = count; - } - - /** - * Call this with an initially empty array, so the reader can cache each - * factory it sees by name. Used by the pipe code in conjunction with - * SkOrderedWriteBuffer::setNamedFactoryRecorder. - */ - void setFactoryArray(SkTDArray* array) { - fFactoryTDArray = array; - fFactoryArray = NULL; - fFactoryCount = 0; - } - - /** - * Provide a function to decode an SkBitmap from encoded data. Only used if the writer - * encoded the SkBitmap. If the proper decoder cannot be used, a red bitmap with the - * appropriate size will be used. - */ - void setBitmapDecoder(SkPicture::InstallPixelRefProc bitmapDecoder) { - fBitmapDecoder = bitmapDecoder; - } - -private: - bool readArray(void* value, size_t size, size_t elementSize); - - SkReader32 fReader; - void* fMemoryPtr; - - SkBitmapHeapReader* fBitmapStorage; - SkTypeface** fTFArray; - int fTFCount; - - SkTDArray* fFactoryTDArray; - SkFlattenable::Factory* fFactoryArray; - int fFactoryCount; - - SkPicture::InstallPixelRefProc fBitmapDecoder; - -#ifdef DEBUG_NON_DETERMINISTIC_ASSERT - // Debugging counter to keep track of how many bitmaps we - // have decoded. - int fDecodedBitmapIndex; -#endif // DEBUG_NON_DETERMINISTIC_ASSERT - - typedef SkFlattenableReadBuffer INHERITED; -}; - -#endif // SkOrderedReadBuffer_DEFINED diff --git a/src/core/SkOrderedWriteBuffer.h b/src/core/SkOrderedWriteBuffer.h deleted file mode 100644 index 1f1015229..000000000 --- a/src/core/SkOrderedWriteBuffer.h +++ /dev/null @@ -1,115 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkOrderedWriteBuffer_DEFINED -#define SkOrderedWriteBuffer_DEFINED - -#include "SkFlattenableBuffers.h" - -#include "SkRefCnt.h" -#include "SkBitmapHeap.h" -#include "SkPath.h" -#include "SkPicture.h" -#include "SkWriter32.h" - -class SkBitmap; -class SkFlattenable; -class SkFactorySet; -class SkNamedFactorySet; -class SkRefCntSet; - -class SkOrderedWriteBuffer : public SkFlattenableWriteBuffer { -public: - SkOrderedWriteBuffer(); - SkOrderedWriteBuffer(void* initialStorage, size_t storageSize); - virtual ~SkOrderedWriteBuffer(); - - virtual bool isOrderedBinaryBuffer() SK_OVERRIDE { return true; } - virtual SkOrderedWriteBuffer* getOrderedBinaryBuffer() SK_OVERRIDE { return this; } - - SkWriter32* getWriter32() { return &fWriter; } - void reset(void* storage = NULL, size_t storageSize = 0) { - fWriter.reset(storage, storageSize); - } - - void writeToMemory(void* dst) { fWriter.flatten(dst); } - uint32_t* reserve(size_t size) { return fWriter.reserve(size); } - - size_t bytesWritten() const { return fWriter.bytesWritten(); } - // Deprecated. Please call bytesWritten instead. TODO(mtklein): clean up - size_t size() const { return this->bytesWritten(); } - - virtual void writeByteArray(const void* data, size_t size) SK_OVERRIDE; - virtual void writeBool(bool value) SK_OVERRIDE; - virtual void writeFixed(SkFixed value) SK_OVERRIDE; - virtual void writeScalar(SkScalar value) SK_OVERRIDE; - virtual void writeScalarArray(const SkScalar* value, uint32_t count) SK_OVERRIDE; - virtual void writeInt(int32_t value) SK_OVERRIDE; - virtual void writeIntArray(const int32_t* value, uint32_t count) SK_OVERRIDE; - virtual void writeUInt(uint32_t value) SK_OVERRIDE; - virtual void write32(int32_t value) SK_OVERRIDE; - virtual void writeString(const char* value) SK_OVERRIDE; - virtual void writeEncodedString(const void* value, size_t byteLength, - SkPaint::TextEncoding encoding) SK_OVERRIDE; - - virtual void writeFlattenable(const SkFlattenable* flattenable) SK_OVERRIDE; - virtual void writeColor(const SkColor& color) SK_OVERRIDE; - virtual void writeColorArray(const SkColor* color, uint32_t count) SK_OVERRIDE; - virtual void writePoint(const SkPoint& point) SK_OVERRIDE; - virtual void writePointArray(const SkPoint* point, uint32_t count) SK_OVERRIDE; - virtual void writeMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual void writeIRect(const SkIRect& rect)SK_OVERRIDE; - virtual void writeRect(const SkRect& rect) SK_OVERRIDE; - virtual void writeRegion(const SkRegion& region) SK_OVERRIDE; - virtual void writePath(const SkPath& path) SK_OVERRIDE; - virtual size_t writeStream(SkStream* stream, size_t length) SK_OVERRIDE; - - virtual void writeBitmap(const SkBitmap& bitmap) SK_OVERRIDE; - virtual void writeTypeface(SkTypeface* typeface) SK_OVERRIDE; - - virtual bool writeToStream(SkWStream*) SK_OVERRIDE; - - SkFactorySet* setFactoryRecorder(SkFactorySet*); - SkNamedFactorySet* setNamedFactoryRecorder(SkNamedFactorySet*); - - SkRefCntSet* getTypefaceRecorder() const { return fTFSet; } - SkRefCntSet* setTypefaceRecorder(SkRefCntSet*); - - /** - * Set an SkBitmapHeap to store bitmaps rather than flattening. - * - * Incompatible with an EncodeBitmap function. If an EncodeBitmap function is set, setting an - * SkBitmapHeap will set the function to NULL in release mode and crash in debug. - */ - void setBitmapHeap(SkBitmapHeap*); - - /** - * Provide a function to encode an SkBitmap to an SkData. writeBitmap will attempt to use - * bitmapEncoder to store the SkBitmap. If the reader does not provide a function to decode, it - * will not be able to restore SkBitmaps, but will still be able to read the rest of the stream. - * bitmapEncoder will never be called with a NULL pixelRefOffset. - * - * Incompatible with the SkBitmapHeap. If an encoder is set fBitmapHeap will be set to NULL in - * release and crash in debug. - */ - void setBitmapEncoder(SkPicture::EncodeBitmap bitmapEncoder); - -private: - SkFactorySet* fFactorySet; - SkNamedFactorySet* fNamedFactorySet; - SkWriter32 fWriter; - - SkBitmapHeap* fBitmapHeap; - SkRefCntSet* fTFSet; - - SkPicture::EncodeBitmap fBitmapEncoder; - - typedef SkFlattenableWriteBuffer INHERITED; -}; - -#endif // SkOrderedWriteBuffer_DEFINED diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp index cc6d7ba1b..c3f217cef 100644 --- a/src/core/SkPaint.cpp +++ b/src/core/SkPaint.cpp @@ -18,8 +18,8 @@ #include "SkImageFilter.h" #include "SkMaskFilter.h" #include "SkMaskGamma.h" -#include "SkOrderedReadBuffer.h" -#include "SkOrderedWriteBuffer.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkPaintDefaults.h" #include "SkPaintOptionsAndroid.h" #include "SkPathEffect.h" @@ -1474,8 +1474,8 @@ void SkPaint::getPosTextPath(const void* textData, size_t length, } static void add_flattenable(SkDescriptor* desc, uint32_t tag, - SkOrderedWriteBuffer* buffer) { - buffer->writeToMemory(desc->addEntry(tag, buffer->size(), NULL)); + SkWriteBuffer* buffer) { + buffer->writeToMemory(desc->addEntry(tag, buffer->bytesWritten(), NULL)); } // SkFontHost can override this choice in FilterRec() @@ -1815,18 +1815,18 @@ void SkPaint::descriptorProc(const SkDeviceProperties* deviceProperties, SkMaskFilter* mf = this->getMaskFilter(); SkRasterizer* ra = this->getRasterizer(); - SkOrderedWriteBuffer peBuffer, mfBuffer, raBuffer; + SkWriteBuffer peBuffer, mfBuffer, raBuffer; if (pe) { peBuffer.writeFlattenable(pe); - descSize += peBuffer.size(); + descSize += peBuffer.bytesWritten(); entryCount += 1; rec.fMaskFormat = SkMask::kA8_Format; // force antialiasing when we do the scan conversion // seems like we could support kLCD as well at this point... } if (mf) { mfBuffer.writeFlattenable(mf); - descSize += mfBuffer.size(); + descSize += mfBuffer.bytesWritten(); entryCount += 1; rec.fMaskFormat = SkMask::kA8_Format; // force antialiasing with maskfilters /* Pre-blend is not currently applied to filtered text. @@ -1837,15 +1837,15 @@ void SkPaint::descriptorProc(const SkDeviceProperties* deviceProperties, } if (ra) { raBuffer.writeFlattenable(ra); - descSize += raBuffer.size(); + descSize += raBuffer.bytesWritten(); entryCount += 1; rec.fMaskFormat = SkMask::kA8_Format; // force antialiasing when we do the scan conversion } #ifdef SK_BUILD_FOR_ANDROID - SkOrderedWriteBuffer androidBuffer; + SkWriteBuffer androidBuffer; fPaintOptionsAndroid.flatten(androidBuffer); - descSize += androidBuffer.size(); + descSize += androidBuffer.bytesWritten(); entryCount += 1; #endif @@ -1999,7 +1999,7 @@ static const uint32_t kPODPaintSize = 5 * sizeof(SkScalar) + /* To save space/time, we analyze the paint, and write a truncated version of it if there are not tricky elements like shaders, etc. */ -void SkPaint::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkPaint::flatten(SkWriteBuffer& buffer) const { uint8_t flatFlags = 0; if (this->getTypeface()) { flatFlags |= kHasTypeface_FlatFlag; @@ -2021,42 +2021,24 @@ void SkPaint::flatten(SkFlattenableWriteBuffer& buffer) const { } #endif - if (buffer.isOrderedBinaryBuffer()) { - SkASSERT(SkAlign4(kPODPaintSize) == kPODPaintSize); - uint32_t* ptr = buffer.getOrderedBinaryBuffer()->reserve(kPODPaintSize); + SkASSERT(SkAlign4(kPODPaintSize) == kPODPaintSize); + uint32_t* ptr = buffer.reserve(kPODPaintSize); - ptr = write_scalar(ptr, this->getTextSize()); - ptr = write_scalar(ptr, this->getTextScaleX()); - ptr = write_scalar(ptr, this->getTextSkewX()); - ptr = write_scalar(ptr, this->getStrokeWidth()); - ptr = write_scalar(ptr, this->getStrokeMiter()); - *ptr++ = this->getColor(); - // previously flags:16, textAlign:8, flatFlags:8 - // now flags:16, hinting:4, textAlign:4, flatFlags:8 - *ptr++ = (this->getFlags() << 16) | - // hinting added later. 0 in this nibble means use the default. - ((this->getHinting()+1) << 12) | - (this->getTextAlign() << 8) | - flatFlags; - *ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(), - this->getStyle(), this->getTextEncoding()); - } else { - buffer.writeScalar(fTextSize); - buffer.writeScalar(fTextScaleX); - buffer.writeScalar(fTextSkewX); - buffer.writeScalar(fWidth); - buffer.writeScalar(fMiterLimit); - buffer.writeColor(fColor); - buffer.writeUInt(fFlags); - buffer.writeUInt(fHinting); - buffer.writeUInt(fTextAlign); - buffer.writeUInt(flatFlags); - - buffer.writeUInt(fCapType); - buffer.writeUInt(fJoinType); - buffer.writeUInt(fStyle); - buffer.writeUInt(fTextEncoding); - } + ptr = write_scalar(ptr, this->getTextSize()); + ptr = write_scalar(ptr, this->getTextScaleX()); + ptr = write_scalar(ptr, this->getTextSkewX()); + ptr = write_scalar(ptr, this->getStrokeWidth()); + ptr = write_scalar(ptr, this->getStrokeMiter()); + *ptr++ = this->getColor(); + // previously flags:16, textAlign:8, flatFlags:8 + // now flags:16, hinting:4, textAlign:4, flatFlags:8 + *ptr++ = (this->getFlags() << 16) | + // hinting added later. 0 in this nibble means use the default. + ((this->getHinting()+1) << 12) | + (this->getTextAlign() << 8) | + flatFlags; + *ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(), + this->getStyle(), this->getTextEncoding()); // now we're done with ptr and the (pre)reserved space. If we need to write // additional fields, use the buffer directly @@ -2087,58 +2069,38 @@ void SkPaint::flatten(SkFlattenableWriteBuffer& buffer) const { #endif } -void SkPaint::unflatten(SkFlattenableReadBuffer& buffer) { +void SkPaint::unflatten(SkReadBuffer& buffer) { uint8_t flatFlags = 0; - if (buffer.isOrderedBinaryBuffer()) { - SkASSERT(SkAlign4(kPODPaintSize) == kPODPaintSize); - const void* podData = buffer.getOrderedBinaryBuffer()->skip(kPODPaintSize); - const uint32_t* pod = reinterpret_cast(podData); + SkASSERT(SkAlign4(kPODPaintSize) == kPODPaintSize); + const void* podData = buffer.skip(kPODPaintSize); + const uint32_t* pod = reinterpret_cast(podData); - // the order we read must match the order we wrote in flatten() - this->setTextSize(read_scalar(pod)); - this->setTextScaleX(read_scalar(pod)); - this->setTextSkewX(read_scalar(pod)); - this->setStrokeWidth(read_scalar(pod)); - this->setStrokeMiter(read_scalar(pod)); - this->setColor(*pod++); + // the order we read must match the order we wrote in flatten() + this->setTextSize(read_scalar(pod)); + this->setTextScaleX(read_scalar(pod)); + this->setTextSkewX(read_scalar(pod)); + this->setStrokeWidth(read_scalar(pod)); + this->setStrokeMiter(read_scalar(pod)); + this->setColor(*pod++); - // previously flags:16, textAlign:8, flatFlags:8 - // now flags:16, hinting:4, textAlign:4, flatFlags:8 - uint32_t tmp = *pod++; - this->setFlags(tmp >> 16); + // previously flags:16, textAlign:8, flatFlags:8 + // now flags:16, hinting:4, textAlign:4, flatFlags:8 + uint32_t tmp = *pod++; + this->setFlags(tmp >> 16); - // hinting added later. 0 in this nibble means use the default. - uint32_t hinting = (tmp >> 12) & 0xF; - this->setHinting(0 == hinting ? kNormal_Hinting : static_cast(hinting-1)); + // hinting added later. 0 in this nibble means use the default. + uint32_t hinting = (tmp >> 12) & 0xF; + this->setHinting(0 == hinting ? kNormal_Hinting : static_cast(hinting-1)); - this->setTextAlign(static_cast((tmp >> 8) & 0xF)); + this->setTextAlign(static_cast((tmp >> 8) & 0xF)); - flatFlags = tmp & 0xFF; + flatFlags = tmp & 0xFF; - tmp = *pod++; - this->setStrokeCap(static_cast((tmp >> 24) & 0xFF)); - this->setStrokeJoin(static_cast((tmp >> 16) & 0xFF)); - this->setStyle(static_cast