Index: src/core/SkBitmapShaderTemplate.h |
diff --git a/src/core/SkBitmapShaderTemplate.h b/src/core/SkBitmapShaderTemplate.h |
deleted file mode 100644 |
index 20e55188e03389e6f14db4e981160d3773787671..0000000000000000000000000000000000000000 |
--- a/src/core/SkBitmapShaderTemplate.h |
+++ /dev/null |
@@ -1,306 +0,0 @@ |
- |
-/* |
- * Copyright 2006 The Android Open Source Project |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
- |
- |
-#ifndef NOFILTER_BITMAP_SHADER_PREAMBLE |
- #define NOFILTER_BITMAP_SHADER_PREAMBLE(bitmap, rb) |
-#endif |
-#ifndef NOFILTER_BITMAP_SHADER_POSTAMBLE |
- #define NOFILTER_BITMAP_SHADER_POSTAMBLE(bitmap) |
-#endif |
-#ifndef NOFILTER_BITMAP_SHADER_PREAMBLE16 |
- #define NOFILTER_BITMAP_SHADER_PREAMBLE16(bitmap, rb) |
-#endif |
-#ifndef NOFILTER_BITMAP_SHADER_POSTAMBLE16 |
- #define NOFILTER_BITMAP_SHADER_POSTAMBLE16(bitmap) |
-#endif |
- |
-class NOFILTER_BITMAP_SHADER_CLASS : public HasSpan16_Sampler_BitmapShader { |
-public: |
- NOFILTER_BITMAP_SHADER_CLASS(const SkBitmap& src) |
- : HasSpan16_Sampler_BitmapShader(src, false, |
- NOFILTER_BITMAP_SHADER_TILEMODE, |
- NOFILTER_BITMAP_SHADER_TILEMODE) |
- { |
- } |
- |
- virtual bool setContext(const SkBitmap& device, const SkPaint& paint, const SkMatrix& matrix) |
- { |
- if (!this->INHERITED::setContext(device, paint, matrix)) |
- return false; |
- |
-#ifdef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- this->computeUnitInverse(); |
-#endif |
- return true; |
- } |
- |
- virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) |
- { |
- SkASSERT(count > 0); |
- |
-#ifdef NOFILTER_BITMAP_SHADER_SPRITEPROC32 |
- if ((this->getTotalInverse().getType() & ~SkMatrix::kTranslate_Mask) == 0) |
- { |
- NOFILTER_BITMAP_SHADER_SPRITEPROC32(this, x, y, dstC, count); |
- return; |
- } |
-#endif |
- |
- unsigned scale = SkAlpha255To256(this->getPaintAlpha()); |
-#ifdef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- const SkMatrix& inv = this->getUnitInverse(); |
- SkMatrix::MapPtProc invProc = this->getUnitInverseProc(); |
-#else |
- const SkMatrix& inv = this->getTotalInverse(); |
- SkMatrix::MapPtProc invProc = this->getInverseMapPtProc(); |
-#endif |
- const SkBitmap& srcBitmap = this->getSrcBitmap(); |
- unsigned srcMaxX = srcBitmap.width() - 1; |
- unsigned srcMaxY = srcBitmap.height() - 1; |
- unsigned srcRB = srcBitmap.rowBytes(); |
- SkFixed fx, fy, dx, dy; |
- |
- const NOFILTER_BITMAP_SHADER_TYPE* srcPixels = (const NOFILTER_BITMAP_SHADER_TYPE*)srcBitmap.getPixels(); |
- NOFILTER_BITMAP_SHADER_PREAMBLE(srcBitmap, srcRB); |
- |
- if (this->getInverseClass() == kPerspective_MatrixClass) |
- { |
- SkPerspIter iter(inv, SkIntToScalar(x) + SK_ScalarHalf, |
- SkIntToScalar(y) + SK_ScalarHalf, count); |
- while ((count = iter.next()) != 0) |
- { |
- const SkFixed* srcXY = iter.getXY(); |
- |
-/* Do I need this? |
-#ifndef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- fx >>= level; |
- fy >>= level; |
-#endif |
-*/ |
- if (256 == scale) |
- { |
- while (--count >= 0) |
- { |
- fx = *srcXY++; |
- fy = *srcXY++; |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_XY(srcPixels, x, y, srcRB); |
- } |
- } |
- else |
- { |
- while (--count >= 0) |
- { |
- fx = *srcXY++; |
- fy = *srcXY++; |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- uint32_t c = NOFILTER_BITMAP_SHADER_SAMPLE_XY(srcPixels, x, y, srcRB); |
- *dstC++ = SkAlphaMulQ(c, scale); |
- } |
- } |
- } |
- return; |
- } |
- |
- // now init fx, fy, dx, dy |
- { |
- SkPoint srcPt; |
- invProc(inv, SkIntToScalar(x) + SK_ScalarHalf, |
- SkIntToScalar(y) + SK_ScalarHalf, &srcPt); |
- |
- fx = SkScalarToFixed(srcPt.fX); |
- fy = SkScalarToFixed(srcPt.fY); |
- |
- if (this->getInverseClass() == kFixedStepInX_MatrixClass) |
- (void)inv.fixedStepInX(SkIntToScalar(y), &dx, &dy); |
- else |
- { |
- dx = SkScalarToFixed(inv.getScaleX()); |
- dy = SkScalarToFixed(inv.getSkewY()); |
- } |
- } |
- |
-#ifndef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- { int level = this->getMipLevel() >> 16; |
- fx >>= level; |
- fy >>= level; |
- dx >>= level; |
- dy >>= level; |
- } |
-#endif |
- |
- if (dy == 0) |
- { |
- int y_index = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
-// SkDEBUGF(("fy = %g, srcMaxY = %d, y_index = %d\n", SkFixedToFloat(fy), srcMaxY, y_index)); |
- srcPixels = (const NOFILTER_BITMAP_SHADER_TYPE*)((const char*)srcPixels + y_index * srcRB); |
- if (scale == 256) |
- while (--count >= 0) |
- { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- fx += dx; |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_X(srcPixels, x); |
- } |
- else |
- while (--count >= 0) |
- { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- SkPMColor c = NOFILTER_BITMAP_SHADER_SAMPLE_X(srcPixels, x); |
- fx += dx; |
- *dstC++ = SkAlphaMulQ(c, scale); |
- } |
- } |
- else // dy != 0 |
- { |
- if (scale == 256) |
- while (--count >= 0) |
- { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- fx += dx; |
- fy += dy; |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_XY(srcPixels, x, y, srcRB); |
- } |
- else |
- while (--count >= 0) |
- { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- SkPMColor c = NOFILTER_BITMAP_SHADER_SAMPLE_XY(srcPixels, x, y, srcRB); |
- fx += dx; |
- fy += dy; |
- *dstC++ = SkAlphaMulQ(c, scale); |
- } |
- } |
- |
- NOFILTER_BITMAP_SHADER_POSTAMBLE(srcBitmap); |
- } |
- |
- virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count) |
- { |
- SkASSERT(count > 0); |
- SkASSERT(this->getFlags() & SkShader::kHasSpan16_Flag); |
- |
-#ifdef NOFILTER_BITMAP_SHADER_SPRITEPROC16 |
- if ((this->getTotalInverse().getType() & ~SkMatrix::kTranslate_Mask) == 0) |
- { |
- NOFILTER_BITMAP_SHADER_SPRITEPROC16(this, x, y, dstC, count); |
- return; |
- } |
-#endif |
- |
-#ifdef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- const SkMatrix& inv = this->getUnitInverse(); |
- SkMatrix::MapPtProc invProc = this->getUnitInverseProc(); |
-#else |
- const SkMatrix& inv = this->getTotalInverse(); |
- SkMatrix::MapPtProc invProc = this->getInverseMapPtProc(); |
-#endif |
- const SkBitmap& srcBitmap = this->getSrcBitmap(); |
- unsigned srcMaxX = srcBitmap.width() - 1; |
- unsigned srcMaxY = srcBitmap.height() - 1; |
- unsigned srcRB = srcBitmap.rowBytes(); |
- SkFixed fx, fy, dx, dy; |
- |
- const NOFILTER_BITMAP_SHADER_TYPE* srcPixels = (const NOFILTER_BITMAP_SHADER_TYPE*)srcBitmap.getPixels(); |
- NOFILTER_BITMAP_SHADER_PREAMBLE16(srcBitmap, srcRB); |
- |
- if (this->getInverseClass() == kPerspective_MatrixClass) |
- { |
- SkPerspIter iter(inv, SkIntToScalar(x) + SK_ScalarHalf, |
- SkIntToScalar(y) + SK_ScalarHalf, count); |
- while ((count = iter.next()) != 0) |
- { |
- const SkFixed* srcXY = iter.getXY(); |
- |
- while (--count >= 0) |
- { |
- fx = *srcXY++; |
- fy = *srcXY++; |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_XY16(srcPixels, x, y, srcRB); |
- } |
- } |
- return; |
- } |
- |
- // now init fx, fy, dx, dy |
- { |
- SkPoint srcPt; |
- invProc(inv, SkIntToScalar(x) + SK_ScalarHalf, |
- SkIntToScalar(y) + SK_ScalarHalf, &srcPt); |
- |
- fx = SkScalarToFixed(srcPt.fX); |
- fy = SkScalarToFixed(srcPt.fY); |
- |
- if (this->getInverseClass() == kFixedStepInX_MatrixClass) |
- (void)inv.fixedStepInX(SkIntToScalar(y), &dx, &dy); |
- else |
- { |
- dx = SkScalarToFixed(inv.getScaleX()); |
- dy = SkScalarToFixed(inv.getSkewY()); |
- } |
- } |
- |
-#ifndef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
- { int level = this->getMipLevel() >> 16; |
- fx >>= level; |
- fy >>= level; |
- dx >>= level; |
- dy >>= level; |
- } |
-#endif |
- |
- if (dy == 0) |
- { |
- srcPixels = (const NOFILTER_BITMAP_SHADER_TYPE*)((const char*)srcPixels + NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY) * srcRB); |
- do { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- fx += dx; |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_X16(srcPixels, x); |
- } while (--count != 0); |
- } |
- else // dy != 0 |
- { |
- do { |
- unsigned x = NOFILTER_BITMAP_SHADER_TILEPROC(fx, srcMaxX); |
- unsigned y = NOFILTER_BITMAP_SHADER_TILEPROC(fy, srcMaxY); |
- fx += dx; |
- fy += dy; |
- *dstC++ = NOFILTER_BITMAP_SHADER_SAMPLE_XY16(srcPixels, x, y, srcRB); |
- } while (--count != 0); |
- } |
- |
- NOFILTER_BITMAP_SHADER_POSTAMBLE16(srcBitmap); |
- } |
-private: |
- typedef HasSpan16_Sampler_BitmapShader INHERITED; |
-}; |
- |
-#undef NOFILTER_BITMAP_SHADER_CLASS |
-#undef NOFILTER_BITMAP_SHADER_TYPE |
-#undef NOFILTER_BITMAP_SHADER_PREAMBLE |
-#undef NOFILTER_BITMAP_SHADER_POSTAMBLE |
-#undef NOFILTER_BITMAP_SHADER_SAMPLE_X //(x) |
-#undef NOFILTER_BITMAP_SHADER_SAMPLE_XY //(x, y, rowBytes) |
-#undef NOFILTER_BITMAP_SHADER_TILEMODE |
-#undef NOFILTER_BITMAP_SHADER_TILEPROC |
- |
-#undef NOFILTER_BITMAP_SHADER_PREAMBLE16 |
-#undef NOFILTER_BITMAP_SHADER_POSTAMBLE16 |
-#undef NOFILTER_BITMAP_SHADER_SAMPLE_X16 //(x) |
-#undef NOFILTER_BITMAP_SHADER_SAMPLE_XY16 //(x, y, rowBytes) |
- |
-#undef NOFILTER_BITMAP_SHADER_USE_UNITINVERSE |
-#undef NOFILTER_BITMAP_SHADER_SPRITEPROC16 |
-#undef NOFILTER_BITMAP_SHADER_SPRITEPROC32 |