Index: src/core/SkLinearBitmapPipeline.h |
diff --git a/src/core/SkLinearBitmapPipeline.h b/src/core/SkLinearBitmapPipeline.h |
index d9748df75061854968ef947b4b35599fb65f791b..3d5dd31df34d533531ac87473f092e75cd6637d5 100644 |
--- a/src/core/SkLinearBitmapPipeline.h |
+++ b/src/core/SkLinearBitmapPipeline.h |
@@ -15,53 +15,6 @@ |
#include "SkNx.h" |
#include "SkShader.h" |
-using Sk4fArg = const Sk4f&; |
- |
-class PointProcessorInterface { |
-public: |
- virtual ~PointProcessorInterface() { } |
- virtual void pointListFew(int n, Sk4fArg xs, Sk4fArg ys) = 0; |
- virtual void pointList4(Sk4fArg xs, Sk4fArg ys) = 0; |
- |
- // The pointSpan method efficiently process horizontal spans of pixels. |
- // * start - the point where to start the span. |
- // * length - the number of pixels to traverse in source space. |
- // * count - the number of pixels to produce in destination space. |
- // Both start and length are mapped through the inversion matrix to produce values in source |
- // space. After the matrix operation, the tilers may break the spans up into smaller spans. |
- // The tilers can produce spans that seem nonsensical. |
- // * The clamp tiler can create spans with length of 0. This indicates to copy an edge pixel out |
- // to the edge of the destination scan. |
- // * The mirror tiler can produce spans with negative length. This indicates that the source |
- // should be traversed in the opposite direction to the destination pixels. |
- virtual void pointSpan(SkPoint start, SkScalar length, int count) = 0; |
-}; |
- |
-class BilerpProcessorInterface : public PointProcessorInterface { |
-public: |
- // The x's and y's are setup in the following order: |
- // +--------+--------+ |
- // | | | |
- // | px00 | px10 | |
- // | 0 | 1 | |
- // +--------+--------+ |
- // | | | |
- // | px01 | px11 | |
- // | 2 | 3 | |
- // +--------+--------+ |
- // These pixels coordinates are arranged in the following order in xs and ys: |
- // px00 px10 px01 px11 |
- virtual void bilerpList(Sk4fArg xs, Sk4fArg ys) = 0; |
-}; |
- |
-class PixelPlacerInterface { |
-public: |
- virtual ~PixelPlacerInterface() { } |
- virtual void setDestination(SkPM4f* dst) = 0; |
- virtual void placePixel(Sk4fArg pixel0) = 0; |
- virtual void place4Pixels(Sk4fArg p0, Sk4fArg p1, Sk4fArg p2, Sk4fArg p3) = 0; |
-}; |
- |
class SkLinearBitmapPipeline { |
public: |
SkLinearBitmapPipeline( |
@@ -69,6 +22,7 @@ public: |
SkFilterQuality filterQuality, |
SkShader::TileMode xTile, SkShader::TileMode yTile, |
const SkPixmap& srcPixmap); |
+ ~SkLinearBitmapPipeline(); |
void shadeSpan4f(int x, int y, SkPM4f* dst, int count); |
@@ -98,6 +52,10 @@ public: |
mutable Space fSpace; |
}; |
+ class PointProcessorInterface; |
+ class BilerpProcessorInterface; |
+ class PixelPlacerInterface; |
+ |
using MatrixStage = PolymorphicUnion<PointProcessorInterface, 112>; |
using FilterStage = PolymorphicUnion<PointProcessorInterface, 8>; |
using TileStage = PolymorphicUnion<BilerpProcessorInterface, 96>; |