diff options
author | 2014-05-16 13:35:01 +0000 | |
---|---|---|
committer | 2014-05-16 13:35:01 +0000 | |
commit | ee0cac336c6a3a357ae3cb18be8ef4b3cb5edddb (patch) | |
tree | c71916deffeca1a48b45639e8cb373a188af57ac /src | |
parent | 61744ec1d2b0e287a652a419dac285c6a803e270 (diff) |
remove unused (by clients) SkUnitMapper
BUG=skia:
R=robertphillips@google.com, scroggo@google.com, george@mozilla.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/283273002
git-svn-id: http://skia.googlecode.com/svn/trunk@14761 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/animator/SkDrawGradient.cpp | 52 | ||||
-rw-r--r-- | src/animator/SkDrawGradient.h | 3 | ||||
-rw-r--r-- | src/core/SkReadBuffer.cpp | 22 | ||||
-rw-r--r-- | src/core/SkValidatingReadBuffer.cpp | 12 | ||||
-rw-r--r-- | src/core/SkValidatingReadBuffer.h | 1 | ||||
-rw-r--r-- | src/effects/gradients/SkGradientShader.cpp | 75 | ||||
-rw-r--r-- | src/effects/gradients/SkGradientShaderPriv.h | 3 | ||||
-rw-r--r-- | src/utils/SkUnitMappers.cpp | 61 |
8 files changed, 51 insertions, 178 deletions
diff --git a/src/animator/SkDrawGradient.cpp b/src/animator/SkDrawGradient.cpp index c11559581b..70e5e4493e 100644 --- a/src/animator/SkDrawGradient.cpp +++ b/src/animator/SkDrawGradient.cpp @@ -11,49 +11,6 @@ #include "SkAnimateMaker.h" #include "SkAnimatorScript.h" #include "SkGradientShader.h" -#include "SkUnitMapper.h" - -static SkScalar SkUnitToScalar(U16CPU x) { - return x / 65535.0f; -} - -static U16CPU SkScalarToUnit(SkScalar x) { - SkScalar pin = SkScalarPin(x, 0, SK_Scalar1); - return (int) (pin * 65535.0f); -} - -class SkDrawGradientUnitMapper : public SkUnitMapper { -public: - SkDrawGradientUnitMapper(SkAnimateMaker* maker, const char* script) : fMaker(maker), fScript(script) { - } - - SK_DECLARE_UNFLATTENABLE_OBJECT() - -protected: - virtual uint16_t mapUnit16(uint16_t x) { - fUnit = SkUnitToScalar(x); - SkScriptValue value; - SkAnimatorScript engine(*fMaker, NULL, SkType_Float); - engine.propertyCallBack(GetUnitValue, &fUnit); - if (engine.evaluate(fScript, &value, SkType_Float)) - x = SkScalarToUnit(value.fOperand.fScalar); - return x; - } - - static bool GetUnitValue(const char* token, size_t len, void* unitPtr, SkScriptValue* value) { - if (SK_LITERAL_STR_EQUAL("unit", token, len)) { - value->fOperand.fScalar = *(SkScalar*) unitPtr; - value->fType = SkType_Float; - return true; - } - return false; - } - - SkAnimateMaker* fMaker; - const char* fScript; - SkScalar fUnit; -}; - #if SK_USE_CONDENSED_INFO == 0 @@ -67,13 +24,12 @@ const SkMemberInfo SkDrawGradient::fInfo[] = { DEFINE_GET_MEMBER(SkDrawGradient); -SkDrawGradient::SkDrawGradient() : fUnitMapper(NULL) { +SkDrawGradient::SkDrawGradient() { } SkDrawGradient::~SkDrawGradient() { for (int index = 0; index < fDrawColors.count(); index++) delete fDrawColors[index]; - delete fUnitMapper; } bool SkDrawGradient::addChild(SkAnimateMaker& , SkDisplayable* child) { @@ -138,8 +94,6 @@ void SkDrawGradient::onEndElement(SkAnimateMaker& maker) { } } } - if (unitMapper.size() > 0) - fUnitMapper = new SkDrawGradientUnitMapper(&maker, unitMapper.c_str()); INHERITED::onEndElement(maker); } @@ -176,7 +130,7 @@ SkShader* SkDrawLinearGradient::getShader() { return NULL; SkShader* shader = SkGradientShader::CreateLinear((SkPoint*)points.begin(), fColors.begin(), offsets.begin(), fColors.count(), (SkShader::TileMode) tileMode, - fUnitMapper, 0, getMatrix()); + 0, getMatrix()); SkAutoTDelete<SkShader> autoDel(shader); (void)autoDel.detach(); return shader; @@ -211,7 +165,7 @@ SkShader* SkDrawRadialGradient::getShader() { return NULL; SkShader* shader = SkGradientShader::CreateRadial(center, radius, fColors.begin(), offsets.begin(), fColors.count(), (SkShader::TileMode) tileMode, - fUnitMapper, 0, getMatrix()); + 0, getMatrix()); SkAutoTDelete<SkShader> autoDel(shader); (void)autoDel.detach(); return shader; diff --git a/src/animator/SkDrawGradient.h b/src/animator/SkDrawGradient.h index ff79e3fb91..fa46a9e629 100644 --- a/src/animator/SkDrawGradient.h +++ b/src/animator/SkDrawGradient.h @@ -14,8 +14,6 @@ #include "SkDrawShader.h" #include "SkIntArray.h" -class SkUnitMapper; - class SkDrawGradient : public SkDrawShader { DECLARE_PRIVATE_MEMBER_INFO(DrawGradient); SkDrawGradient(); @@ -30,7 +28,6 @@ protected: SkString unitMapper; SkTDColorArray fColors; SkTDDrawColorArray fDrawColors; - SkUnitMapper* fUnitMapper; int addPrelude(); private: typedef SkDrawShader INHERITED; diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp index b4bc87529a..28a88763fc 100644 --- a/src/core/SkReadBuffer.cpp +++ b/src/core/SkReadBuffer.cpp @@ -335,3 +335,25 @@ SkFlattenable* SkReadBuffer::readFlattenable(SkFlattenable::Type ft) { } return obj; } + +/** + * Needs to follow the same pattern as readFlattenable(), but explicitly skip whatever data + * has been written. + */ +void SkReadBuffer::skipFlattenable() { + if (fFactoryCount > 0) { + if (0 == fReader.readU32()) { + return; + } + } else if (fFactoryTDArray) { + if (0 == fReader.readU32()) { + return; + } + } else { + if (NULL == this->readFunctionPtr()) { + return; + } + } + uint32_t sizeRecorded = fReader.readU32(); + fReader.skip(sizeRecorded); +} diff --git a/src/core/SkValidatingReadBuffer.cpp b/src/core/SkValidatingReadBuffer.cpp index 0112f18ec4..96f20a2483 100644 --- a/src/core/SkValidatingReadBuffer.cpp +++ b/src/core/SkValidatingReadBuffer.cpp @@ -273,3 +273,15 @@ SkFlattenable* SkValidatingReadBuffer::readFlattenable(SkFlattenable::Type type) } return obj; } + +void SkValidatingReadBuffer::skipFlattenable() { + SkString name; + this->readString(&name); + if (fError) { + return; + } + uint32_t sizeRecorded = this->readUInt(); + this->skip(sizeRecorded); +} + + diff --git a/src/core/SkValidatingReadBuffer.h b/src/core/SkValidatingReadBuffer.h index d5e192e1c7..12f5413109 100644 --- a/src/core/SkValidatingReadBuffer.h +++ b/src/core/SkValidatingReadBuffer.h @@ -40,6 +40,7 @@ public: // common data structures virtual SkFlattenable* readFlattenable(SkFlattenable::Type type) SK_OVERRIDE; + virtual void skipFlattenable() SK_OVERRIDE; virtual void readPoint(SkPoint* point) SK_OVERRIDE; virtual void readMatrix(SkMatrix* matrix) SK_OVERRIDE; virtual void readIRect(SkIRect* rect) SK_OVERRIDE; diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index d376b22236..ec0f542283 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -17,8 +17,6 @@ SkGradientShaderBase::SkGradientShaderBase(const Descriptor& desc, const SkMatri { SkASSERT(desc.fCount > 1); - fMapper = desc.fMapper; - SkSafeRef(fMapper); fGradFlags = SkToU8(desc.fGradFlags); SkASSERT((unsigned)desc.fTileMode < SkShader::kTileModeCount); @@ -142,7 +140,10 @@ static uint32_t unpack_flags(uint32_t packed) { } SkGradientShaderBase::SkGradientShaderBase(SkReadBuffer& buffer) : INHERITED(buffer) { - fMapper = buffer.readUnitMapper(); + if (0 != buffer.pictureVersion() && buffer.pictureVersion() < 27) { + // skip the old SkUnitMapper slot + buffer.skipFlattenable(); + } int colorCount = fColorCount = buffer.getArrayCount(); if (colorCount > kColorStorageCount) { @@ -181,7 +182,6 @@ SkGradientShaderBase::~SkGradientShaderBase() { if (fOrigColors != fStorage) { sk_free(fOrigColors); } - SkSafeUnref(fMapper); } void SkGradientShaderBase::initCommon() { @@ -194,7 +194,6 @@ void SkGradientShaderBase::initCommon() { void SkGradientShaderBase::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); - buffer.writeFlattenable(fMapper); buffer.writeColorArray(fOrigColors, fColorCount); buffer.writeUInt(pack_mode_flags(fTileMode, fGradFlags)); if (fColorCount > 2) { @@ -528,20 +527,6 @@ void SkGradientShaderBase::GradientShaderCache::initCache16(GradientShaderCache* prevIndex = nextIndex; } } - - if (cache->fShader.fMapper) { - cache->fCache16Storage = (uint16_t*)sk_malloc_throw(allocSize); - uint16_t* linear = cache->fCache16; // just computed linear data - uint16_t* mapped = cache->fCache16Storage; // storage for mapped data - SkUnitMapper* map = cache->fShader.fMapper; - for (int i = 0; i < kCache16Count; i++) { - int index = map->mapUnit16(bitsTo16(i, kCache16Bits)) >> kCache16Shift; - mapped[i] = linear[index]; - mapped[i + kCache16Count] = linear[index + kCache16Count]; - } - sk_free(cache->fCache16); - cache->fCache16 = cache->fCache16Storage; - } } const SkPMColor* SkGradientShaderBase::GradientShaderCache::getCache32() { @@ -579,23 +564,6 @@ void SkGradientShaderBase::GradientShaderCache::initCache32(GradientShaderCache* prevIndex = nextIndex; } } - - if (cache->fShader.fMapper) { - SkMallocPixelRef* newPR = SkMallocPixelRef::NewAllocate(info, 0, NULL); - SkPMColor* linear = cache->fCache32; // just computed linear data - SkPMColor* mapped = (SkPMColor*)newPR->getAddr(); // storage for mapped data - SkUnitMapper* map = cache->fShader.fMapper; - for (int i = 0; i < kCache32Count; i++) { - int index = map->mapUnit16((i << 8) | i) >> 8; - mapped[i + kCache32Count*0] = linear[index + kCache32Count*0]; - mapped[i + kCache32Count*1] = linear[index + kCache32Count*1]; - mapped[i + kCache32Count*2] = linear[index + kCache32Count*2]; - mapped[i + kCache32Count*3] = linear[index + kCache32Count*3]; - } - cache->fCache32PixelRef->unref(); - cache->fCache32PixelRef = newPR; - cache->fCache32 = (SkPMColor*)newPR->getAddr(); - } } /* @@ -627,15 +595,6 @@ void SkGradientShaderBase::getGradientTableBitmap(SkBitmap* bitmap) const { // built with 0xFF SkAutoTUnref<GradientShaderCache> cache(this->refCache(0xFF)); - // don't have a way to put the mapper into our cache-key yet - if (fMapper) { - // force our cache32pixelref to be built - (void)cache->getCache32(); - bitmap->setConfig(SkImageInfo::MakeN32Premul(kCache32Count, 1)); - bitmap->setPixelRef(cache->getCache32PixelRef()); - return; - } - // build our key: [numColors + colors[] + {positions[]} + flags ] int count = 1 + fColorCount + 1; if (fColorCount > 2) { @@ -744,8 +703,6 @@ void SkGradientShaderBase::toString(SkString* str) const { str->append(" "); str->append(gTileModeName[fTileMode]); - // TODO: add "fMapper->toString(str);" when SkUnitMapper::toString is added - this->INHERITED::toString(str); } #endif @@ -770,13 +727,11 @@ void SkGradientShaderBase::toString(SkString* str) const { static void desc_init(SkGradientShaderBase::Descriptor* desc, const SkColor colors[], const SkScalar pos[], int colorCount, - SkShader::TileMode mode, - SkUnitMapper* mapper, uint32_t flags) { + SkShader::TileMode mode, uint32_t flags) { desc->fColors = colors; desc->fPos = pos; desc->fCount = colorCount; desc->fTileMode = mode; - desc->fMapper = mapper; desc->fGradFlags = flags; } @@ -784,7 +739,6 @@ SkShader* SkGradientShader::CreateLinear(const SkPoint pts[2], const SkColor colors[], const SkScalar pos[], int colorCount, SkShader::TileMode mode, - SkUnitMapper* mapper, uint32_t flags, const SkMatrix* localMatrix) { if (NULL == pts || NULL == colors || colorCount < 1) { @@ -793,7 +747,7 @@ SkShader* SkGradientShader::CreateLinear(const SkPoint pts[2], EXPAND_1_COLOR(colorCount); SkGradientShaderBase::Descriptor desc; - desc_init(&desc, colors, pos, colorCount, mode, mapper, flags); + desc_init(&desc, colors, pos, colorCount, mode, flags); return SkNEW_ARGS(SkLinearGradient, (pts, desc, localMatrix)); } @@ -801,7 +755,6 @@ SkShader* SkGradientShader::CreateRadial(const SkPoint& center, SkScalar radius, const SkColor colors[], const SkScalar pos[], int colorCount, SkShader::TileMode mode, - SkUnitMapper* mapper, uint32_t flags, const SkMatrix* localMatrix) { if (radius <= 0 || NULL == colors || colorCount < 1) { @@ -810,7 +763,7 @@ SkShader* SkGradientShader::CreateRadial(const SkPoint& center, SkScalar radius, EXPAND_1_COLOR(colorCount); SkGradientShaderBase::Descriptor desc; - desc_init(&desc, colors, pos, colorCount, mode, mapper, flags); + desc_init(&desc, colors, pos, colorCount, mode, flags); return SkNEW_ARGS(SkRadialGradient, (center, radius, desc, localMatrix)); } @@ -822,7 +775,6 @@ SkShader* SkGradientShader::CreateTwoPointRadial(const SkPoint& start, const SkScalar pos[], int colorCount, SkShader::TileMode mode, - SkUnitMapper* mapper, uint32_t flags, const SkMatrix* localMatrix) { if (startRadius < 0 || endRadius < 0 || NULL == colors || colorCount < 1) { @@ -831,7 +783,7 @@ SkShader* SkGradientShader::CreateTwoPointRadial(const SkPoint& start, EXPAND_1_COLOR(colorCount); SkGradientShaderBase::Descriptor desc; - desc_init(&desc, colors, pos, colorCount, mode, mapper, flags); + desc_init(&desc, colors, pos, colorCount, mode, flags); return SkNEW_ARGS(SkTwoPointRadialGradient, (start, startRadius, end, endRadius, desc, localMatrix)); } @@ -844,7 +796,6 @@ SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start, const SkScalar pos[], int colorCount, SkShader::TileMode mode, - SkUnitMapper* mapper, uint32_t flags, const SkMatrix* localMatrix) { if (startRadius < 0 || endRadius < 0 || NULL == colors || colorCount < 1) { @@ -861,7 +812,7 @@ SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start, SkGradientShaderBase::Descriptor desc; if (!flipGradient) { - desc_init(&desc, colors, pos, colorCount, mode, mapper, flags); + desc_init(&desc, colors, pos, colorCount, mode, flags); return SkNEW_ARGS(SkTwoPointConicalGradient, (start, startRadius, end, endRadius, flipGradient, desc, localMatrix)); } else { @@ -875,9 +826,9 @@ SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start, for (int i = 0; i < colorCount; ++i) { posNew[i] = 1 - pos[colorCount - i - 1]; } - desc_init(&desc, colorsNew.get(), posNew.get(), colorCount, mode, mapper, flags); + desc_init(&desc, colorsNew.get(), posNew.get(), colorCount, mode, flags); } else { - desc_init(&desc, colorsNew.get(), NULL, colorCount, mode, mapper, flags); + desc_init(&desc, colorsNew.get(), NULL, colorCount, mode, flags); } return SkNEW_ARGS(SkTwoPointConicalGradient, @@ -888,7 +839,7 @@ SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start, SkShader* SkGradientShader::CreateSweep(SkScalar cx, SkScalar cy, const SkColor colors[], const SkScalar pos[], - int colorCount, SkUnitMapper* mapper, + int colorCount, uint32_t flags, const SkMatrix* localMatrix) { if (NULL == colors || colorCount < 1) { @@ -897,7 +848,7 @@ SkShader* SkGradientShader::CreateSweep(SkScalar cx, SkScalar cy, EXPAND_1_COLOR(colorCount); SkGradientShaderBase::Descriptor desc; - desc_init(&desc, colors, pos, colorCount, SkShader::kClamp_TileMode, mapper, flags); + desc_init(&desc, colors, pos, colorCount, SkShader::kClamp_TileMode, flags); return SkNEW_ARGS(SkSweepGradient, (cx, cy, desc, localMatrix)); } diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h index a699c4ce00..9613537803 100644 --- a/src/effects/gradients/SkGradientShaderPriv.h +++ b/src/effects/gradients/SkGradientShaderPriv.h @@ -14,7 +14,6 @@ #include "SkReadBuffer.h" #include "SkWriteBuffer.h" #include "SkMallocPixelRef.h" -#include "SkUnitMapper.h" #include "SkUtils.h" #include "SkTemplates.h" #include "SkBitmapCache.h" @@ -94,7 +93,6 @@ public: const SkScalar* fPos; int fCount; SkShader::TileMode fTileMode; - SkUnitMapper* fMapper; uint32_t fGradFlags; }; @@ -201,7 +199,6 @@ protected: virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; SK_TO_STRING_OVERRIDE() - SkUnitMapper* fMapper; SkMatrix fPtsToUnit; // set by subclass TileMode fTileMode; TileProc fTileProc; diff --git a/src/utils/SkUnitMappers.cpp b/src/utils/SkUnitMappers.cpp deleted file mode 100644 index 336a26e164..0000000000 --- a/src/utils/SkUnitMappers.cpp +++ /dev/null @@ -1,61 +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. - */ -#include "SkUnitMappers.h" -#include "SkReadBuffer.h" -#include "SkWriteBuffer.h" - - -SkDiscreteMapper::SkDiscreteMapper(int segments) { - if (segments < 2) { - fSegments = 0; - fScale = 0; - } else { - if (segments > 0xFFFF) { - segments = 0xFFFF; - } - fSegments = segments; - fScale = (1 << 30) / (segments - 1); - } -} - -uint16_t SkDiscreteMapper::mapUnit16(uint16_t input) { - SkFixed x = input * fSegments >> 16; - x = x * fScale >> 14; - x += x << 15 >> 31; // map 0x10000 to 0xFFFF - return SkToU16(x); -} - -SkDiscreteMapper::SkDiscreteMapper(SkReadBuffer& rb) - : SkUnitMapper(rb) { - fSegments = rb.readInt(); - fScale = rb.read32(); -} - -void SkDiscreteMapper::flatten(SkWriteBuffer& wb) const { - this->INHERITED::flatten(wb); - - wb.writeInt(fSegments); - wb.write32(fScale); -} - -/////////////////////////////////////////////////////////////////////////////// - -uint16_t SkCosineMapper::mapUnit16(uint16_t input) -{ - /* we want to call cosine(input * pi/2) treating input as [0...1) - however, the straight multitply would overflow 32bits since input is - 16bits and pi/2 is 17bits, so we shift down our pi const before we mul - */ - SkFixed rads = (unsigned)(input * (SK_FixedPI >> 2)) >> 15; - SkFixed x = SkFixedCos(rads); - x += x << 15 >> 31; // map 0x10000 to 0xFFFF - return SkToU16(x); -} - -SkCosineMapper::SkCosineMapper(SkReadBuffer& rb) - : SkUnitMapper(rb) {} |