| 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>;
|
|
|