| Index: src/core/ARGB32_Clamp_Bilinear_BitmapShader.h
|
| diff --git a/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h b/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h
|
| deleted file mode 100644
|
| index 87121cfdb2c2f912f0e2d193ef5aef1113ab4bb1..0000000000000000000000000000000000000000
|
| --- a/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h
|
| +++ /dev/null
|
| @@ -1,177 +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.
|
| - */
|
| -
|
| -class ARGB32_Clamp_Bilinear_BitmapShader : public SkBitmapShader {
|
| -public:
|
| - ARGB32_Clamp_Bilinear_BitmapShader(const SkBitmap& src)
|
| - : SkBitmapShader(src, true,
|
| - SkShader::kClamp_TileMode, SkShader::kClamp_TileMode)
|
| - {}
|
| -
|
| - virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count);
|
| -};
|
| -
|
| -SkPMColor sample_bilerp(SkFixed fx, SkFixed fy, unsigned srcMaxX, unsigned srcMaxY,
|
| - const SkPMColor* srcPixels, int srcRB, const SkFilterPtrProc* proc_table);
|
| -SkPMColor sample_bilerp(SkFixed fx, SkFixed fy, unsigned srcMaxX, unsigned srcMaxY,
|
| - const SkPMColor* srcPixels, int srcRB, const SkFilterPtrProc* proc_table)
|
| -{
|
| - int ix = fx >> 16;
|
| - int iy = fy >> 16;
|
| -
|
| - const SkPMColor *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = ((const SkPMColor*)((const char*)srcPixels
|
| - + SkClampMax(iy, srcMaxY) * srcRB))
|
| - + SkClampMax(ix, srcMaxX);
|
| -
|
| - if ((unsigned)ix < srcMaxX)
|
| - p01 += 1;
|
| - p10 = p00;
|
| - p11 = p01;
|
| - if ((unsigned)iy < srcMaxY)
|
| - {
|
| - p10 = (const SkPMColor*)((const char*)p10 + srcRB);
|
| - p11 = (const SkPMColor*)((const char*)p11 + srcRB);
|
| - }
|
| -
|
| - SkFilterPtrProc proc = SkGetBilinearFilterPtrProc(proc_table, fx, fy);
|
| - return proc(p00, p01, p10, p11);
|
| -}
|
| -
|
| -static inline SkPMColor sample_bilerpx(SkFixed fx, unsigned srcMaxX, const SkPMColor* srcPixels,
|
| - int srcRB, const SkFilterPtrProc* proc_table)
|
| -{
|
| - int ix = fx >> 16;
|
| -
|
| - const SkPMColor *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = srcPixels + SkClampMax(ix, srcMaxX);
|
| - if ((unsigned)ix < srcMaxX)
|
| - p01 += 1;
|
| -
|
| - p10 = (const SkPMColor*)((const char*)p00 + srcRB);
|
| - p11 = (const SkPMColor*)((const char*)p01 + srcRB);
|
| -
|
| - SkFilterPtrProc proc = SkGetBilinearFilterPtrXProc(proc_table, fx);
|
| - return proc(p00, p01, p10, p11);
|
| -}
|
| -
|
| -void ARGB32_Clamp_Bilinear_BitmapShader::shadeSpan(int x, int y, SkPMColor dstC[], int count)
|
| -{
|
| - SkASSERT(count > 0);
|
| -
|
| - unsigned srcScale = SkAlpha255To256(this->getPaintAlpha());
|
| -
|
| - const SkMatrix& inv = this->getTotalInverse();
|
| - const SkBitmap& srcBitmap = this->getSrcBitmap();
|
| - unsigned srcMaxX = srcBitmap.width() - 1;
|
| - unsigned srcMaxY = srcBitmap.height() - 1;
|
| - unsigned srcRB = srcBitmap.rowBytes();
|
| -
|
| - const SkFilterPtrProc* proc_table = SkGetBilinearFilterPtrProcTable();
|
| - const SkPMColor* srcPixels = (const SkPMColor*)srcBitmap.getPixels();
|
| -
|
| - if (this->getInverseClass() == kPerspective_MatrixClass)
|
| - {
|
| - SkPerspIter iter(inv, SkIntToScalar(x) + SK_ScalarHalf,
|
| - SkIntToScalar(y) + SK_ScalarHalf, count);
|
| -
|
| - if (256 == srcScale)
|
| - {
|
| - while ((count = iter.next()) != 0)
|
| - {
|
| - const SkFixed* srcXY = iter.getXY();
|
| - while (--count >= 0)
|
| - {
|
| - SkFixed fx = *srcXY++ - SK_FixedHalf;
|
| - SkFixed fy = *srcXY++ - SK_FixedHalf;
|
| - *dstC++ = sample_bilerp(fx, fy, srcMaxX, srcMaxY, srcPixels, srcRB, proc_table);
|
| - }
|
| - }
|
| - }
|
| - else // scale by srcScale
|
| - {
|
| - while ((count = iter.next()) != 0)
|
| - {
|
| - const SkFixed* srcXY = iter.getXY();
|
| - while (--count >= 0)
|
| - {
|
| - SkFixed fx = *srcXY++ - SK_FixedHalf;
|
| - SkFixed fy = *srcXY++ - SK_FixedHalf;
|
| - SkPMColor c = sample_bilerp(fx, fy, srcMaxX, srcMaxY, srcPixels, srcRB, proc_table);
|
| - *dstC++ = SkAlphaMulQ(c, srcScale);
|
| - }
|
| - }
|
| - }
|
| - }
|
| - else // linear case
|
| - {
|
| - SkFixed fx, fy, dx, dy;
|
| -
|
| - // now init fx, fy, dx, dy
|
| - {
|
| - SkPoint srcPt;
|
| - this->getInverseMapPtProc()(inv, SkIntToScalar(x) + SK_ScalarHalf,
|
| - SkIntToScalar(y) + SK_ScalarHalf,
|
| - &srcPt);
|
| -
|
| - fx = SkScalarToFixed(srcPt.fX) - SK_FixedHalf;
|
| - fy = SkScalarToFixed(srcPt.fY) - SK_FixedHalf;
|
| -
|
| - if (this->getInverseClass() == kFixedStepInX_MatrixClass)
|
| - (void)inv.fixedStepInX(SkIntToScalar(y), &dx, &dy);
|
| - else
|
| - {
|
| - dx = SkScalarToFixed(inv.getScaleX());
|
| - dy = SkScalarToFixed(inv.getSkewY());
|
| - }
|
| - }
|
| -
|
| - if (dy == 0 && (unsigned)(fy >> 16) < srcMaxY)
|
| - {
|
| - srcPixels = (const SkPMColor*)((const char*)srcPixels + (fy >> 16) * srcRB);
|
| - proc_table = SkGetBilinearFilterPtrProcYTable(proc_table, fy);
|
| - if (256 == srcScale)
|
| - {
|
| - do {
|
| - *dstC++ = sample_bilerpx(fx, srcMaxX, srcPixels, srcRB, proc_table);
|
| - fx += dx;
|
| - } while (--count != 0);
|
| - }
|
| - else
|
| - {
|
| - do {
|
| - SkPMColor c = sample_bilerpx(fx, srcMaxX, srcPixels, srcRB, proc_table);
|
| - *dstC++ = SkAlphaMulQ(c, srcScale);
|
| - fx += dx;
|
| - } while (--count != 0);
|
| - }
|
| - }
|
| - else // dy is != 0
|
| - {
|
| - if (256 == srcScale)
|
| - {
|
| - do {
|
| - *dstC++ = sample_bilerp(fx, fy, srcMaxX, srcMaxY, srcPixels, srcRB, proc_table);
|
| - fx += dx;
|
| - fy += dy;
|
| - } while (--count != 0);
|
| - }
|
| - else
|
| - {
|
| - do {
|
| - SkPMColor c = sample_bilerp(fx, fy, srcMaxX, srcMaxY, srcPixels, srcRB, proc_table);
|
| - *dstC++ = SkAlphaMulQ(c, srcScale);
|
| - fx += dx;
|
| - fy += dy;
|
| - } while (--count != 0);
|
| - }
|
| - }
|
| - }
|
| -}
|
|
|