| Index: src/core/SkBitmapShader16BilerpTemplate.h
|
| diff --git a/src/core/SkBitmapShader16BilerpTemplate.h b/src/core/SkBitmapShader16BilerpTemplate.h
|
| deleted file mode 100644
|
| index 435b806bb287a9a62d1d1358077bac4f76cd7d81..0000000000000000000000000000000000000000
|
| --- a/src/core/SkBitmapShader16BilerpTemplate.h
|
| +++ /dev/null
|
| @@ -1,245 +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.
|
| - */
|
| -
|
| -
|
| -#include "SkFilterProc.h"
|
| -
|
| -class BILERP_BITMAP16_SHADER_CLASS : public HasSpan16_Sampler_BitmapShader {
|
| -public:
|
| - BILERP_BITMAP16_SHADER_CLASS(const SkBitmap& src)
|
| - : HasSpan16_Sampler_BitmapShader(src, true,
|
| - SkShader::kClamp_TileMode,
|
| - SkShader::kClamp_TileMode)
|
| - {
|
| - }
|
| -
|
| - virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count)
|
| - {
|
| - SkASSERT(count > 0);
|
| -
|
| - U8CPU alpha = 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();
|
| -
|
| - BILERP_BITMAP16_SHADER_PREAMBLE(srcBitmap);
|
| -
|
| - const SkFilterProc* proc_table = SkGetBilinearFilterProcTable();
|
| - const BILERP_BITMAP16_SHADER_TYPE* srcPixels = (const BILERP_BITMAP16_SHADER_TYPE*)srcBitmap.getPixels();
|
| -
|
| - 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)
|
| - {
|
| - SkFixed fx = *srcXY++ - SK_FixedHalf;
|
| - SkFixed fy = *srcXY++ - SK_FixedHalf;
|
| - int ix = fx >> 16;
|
| - int iy = fy >> 16;
|
| - int x = SkClampMax(ix, srcMaxX);
|
| - int y = SkClampMax(iy, srcMaxY);
|
| -
|
| - const BILERP_BITMAP16_SHADER_TYPE *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = ((const BILERP_BITMAP16_SHADER_TYPE*)((const char*)srcPixels + y * srcRB)) + x;
|
| - if ((unsigned)ix < srcMaxX)
|
| - p01 += 1;
|
| - p10 = p00;
|
| - p11 = p01;
|
| - if ((unsigned)iy < srcMaxY)
|
| - {
|
| - p10 = (const BILERP_BITMAP16_SHADER_TYPE*)((const char*)p10 + srcRB);
|
| - p11 = (const BILERP_BITMAP16_SHADER_TYPE*)((const char*)p11 + srcRB);
|
| - }
|
| -
|
| - SkFilterProc proc = SkGetBilinearFilterProc(proc_table, fx, fy);
|
| - uint32_t c = proc(SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p00)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p01)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p10)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p11)));
|
| -
|
| - *dstC++ = expanded_rgb16_to_8888(c, alpha);
|
| - }
|
| - }
|
| - }
|
| - 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());
|
| - }
|
| - }
|
| -
|
| - do {
|
| - int ix = fx >> 16;
|
| - int iy = fy >> 16;
|
| -
|
| - const BILERP_BITMAP16_SHADER_TYPE *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = ((const BILERP_BITMAP16_SHADER_TYPE*)((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 BILERP_BITMAP16_SHADER_TYPE*)((const char*)p10 + srcRB);
|
| - p11 = (const BILERP_BITMAP16_SHADER_TYPE*)((const char*)p11 + srcRB);
|
| - }
|
| -
|
| - SkFilterProc proc = SkGetBilinearFilterProc(proc_table, fx, fy);
|
| - uint32_t c = proc(SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p00)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p01)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p10)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p11)));
|
| - *dstC++ = expanded_rgb16_to_8888(c, alpha);
|
| -
|
| - fx += dx;
|
| - fy += dy;
|
| - } while (--count != 0);
|
| - }
|
| - BILERP_BITMAP16_SHADER_POSTAMBLE(srcBitmap);
|
| - }
|
| -
|
| - virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count)
|
| - {
|
| - SkASSERT(count > 0);
|
| -
|
| - const SkMatrix& inv = this->getTotalInverse();
|
| - const SkBitmap& srcBitmap = this->getSrcBitmap();
|
| - unsigned srcMaxX = srcBitmap.width() - 1;
|
| - unsigned srcMaxY = srcBitmap.height() - 1;
|
| - unsigned srcRB = srcBitmap.rowBytes();
|
| -
|
| - BILERP_BITMAP16_SHADER_PREAMBLE(srcBitmap);
|
| -
|
| - const SkFilterProc* proc_table = SkGetBilinearFilterProcTable();
|
| - const BILERP_BITMAP16_SHADER_TYPE* srcPixels = (const BILERP_BITMAP16_SHADER_TYPE*)srcBitmap.getPixels();
|
| -
|
| - 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)
|
| - {
|
| - SkFixed fx = *srcXY++ - SK_FixedHalf;
|
| - SkFixed fy = *srcXY++ - SK_FixedHalf;
|
| - int ix = fx >> 16;
|
| - int iy = fy >> 16;
|
| -
|
| - const BILERP_BITMAP16_SHADER_TYPE *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = ((const BILERP_BITMAP16_SHADER_TYPE*)((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 BILERP_BITMAP16_SHADER_TYPE*)((const char*)p10 + srcRB);
|
| - p11 = (const BILERP_BITMAP16_SHADER_TYPE*)((const char*)p11 + srcRB);
|
| - }
|
| -
|
| - SkFilterProc proc = SkGetBilinearFilterProc(proc_table, fx, fy);
|
| - uint32_t c = proc(SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p00)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p01)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p10)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p11)));
|
| - *dstC++ = SkCompact_rgb_16(c);
|
| - }
|
| - }
|
| - }
|
| - 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());
|
| - }
|
| - }
|
| -
|
| - do {
|
| - int ix = fx >> 16;
|
| - int iy = fy >> 16;
|
| -
|
| - const BILERP_BITMAP16_SHADER_TYPE *p00, *p01, *p10, *p11;
|
| -
|
| - p00 = p01 = ((const BILERP_BITMAP16_SHADER_TYPE*)((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 BILERP_BITMAP16_SHADER_TYPE*)((const char*)p10 + srcRB);
|
| - p11 = (const BILERP_BITMAP16_SHADER_TYPE*)((const char*)p11 + srcRB);
|
| - }
|
| -
|
| - SkFilterProc proc = SkGetBilinearFilterProc(proc_table, fx, fy);
|
| - uint32_t c = proc(SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p00)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p01)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p10)),
|
| - SkExpand_rgb_16(BILERP_BITMAP16_SHADER_PIXEL(*p11)));
|
| - *dstC++ = SkCompact_rgb_16(c);
|
| -
|
| - fx += dx;
|
| - fy += dy;
|
| - } while (--count != 0);
|
| - }
|
| - BILERP_BITMAP16_SHADER_POSTAMBLE(srcBitmap);
|
| - }
|
| -};
|
| -
|
| -#undef BILERP_BITMAP16_SHADER_CLASS
|
| -#undef BILERP_BITMAP16_SHADER_TYPE
|
| -#undef BILERP_BITMAP16_SHADER_PREAMBLE
|
| -#undef BILERP_BITMAP16_SHADER_PIXEL
|
| -#undef BILERP_BITMAP16_SHADER_POSTAMBLE
|
|
|