| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkScanPriv.h" | 10 #include "SkScanPriv.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 /////////////////////////////////////////////////////////////////////////////// | 37 /////////////////////////////////////////////////////////////////////////////// |
| 38 | 38 |
| 39 /// Base class for a single-pass supersampled blitter. | 39 /// Base class for a single-pass supersampled blitter. |
| 40 class BaseSuperBlitter : public SkBlitter { | 40 class BaseSuperBlitter : public SkBlitter { |
| 41 public: | 41 public: |
| 42 BaseSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, | 42 BaseSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, |
| 43 const SkRegion& clip, bool isInverse); | 43 const SkRegion& clip, bool isInverse); |
| 44 | 44 |
| 45 /// Must be explicitly defined on subclasses. | 45 /// Must be explicitly defined on subclasses. |
| 46 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], | 46 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], |
| 47 const int16_t runs[]) SK_OVERRIDE { | 47 const int16_t runs[]) override { |
| 48 SkDEBUGFAIL("How did I get here?"); | 48 SkDEBUGFAIL("How did I get here?"); |
| 49 } | 49 } |
| 50 /// May not be called on BaseSuperBlitter because it blits out of order. | 50 /// May not be called on BaseSuperBlitter because it blits out of order. |
| 51 void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE { | 51 void blitV(int x, int y, int height, SkAlpha alpha) override { |
| 52 SkDEBUGFAIL("How did I get here?"); | 52 SkDEBUGFAIL("How did I get here?"); |
| 53 } | 53 } |
| 54 | 54 |
| 55 protected: | 55 protected: |
| 56 SkBlitter* fRealBlitter; | 56 SkBlitter* fRealBlitter; |
| 57 /// Current y coordinate, in destination coordinates. | 57 /// Current y coordinate, in destination coordinates. |
| 58 int fCurrIY; | 58 int fCurrIY; |
| 59 /// Widest row of region to be blitted, in destination coordinates. | 59 /// Widest row of region to be blitted, in destination coordinates. |
| 60 int fWidth; | 60 int fWidth; |
| 61 /// Leftmost x coordinate in any row, in destination coordinates. | 61 /// Leftmost x coordinate in any row, in destination coordinates. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 virtual ~SuperBlitter() { | 108 virtual ~SuperBlitter() { |
| 109 this->flush(); | 109 this->flush(); |
| 110 } | 110 } |
| 111 | 111 |
| 112 /// Once fRuns contains a complete supersampled row, flush() blits | 112 /// Once fRuns contains a complete supersampled row, flush() blits |
| 113 /// it out through the wrapped blitter. | 113 /// it out through the wrapped blitter. |
| 114 void flush(); | 114 void flush(); |
| 115 | 115 |
| 116 /// Blits a row of pixels, with location and width specified | 116 /// Blits a row of pixels, with location and width specified |
| 117 /// in supersampled coordinates. | 117 /// in supersampled coordinates. |
| 118 void blitH(int x, int y, int width) SK_OVERRIDE; | 118 void blitH(int x, int y, int width) override; |
| 119 /// Blits a rectangle of pixels, with location and size specified | 119 /// Blits a rectangle of pixels, with location and size specified |
| 120 /// in supersampled coordinates. | 120 /// in supersampled coordinates. |
| 121 void blitRect(int x, int y, int width, int height) SK_OVERRIDE; | 121 void blitRect(int x, int y, int width, int height) override; |
| 122 | 122 |
| 123 private: | 123 private: |
| 124 // The next three variables are used to track a circular buffer that | 124 // The next three variables are used to track a circular buffer that |
| 125 // contains the values used in SkAlphaRuns. These variables should only | 125 // contains the values used in SkAlphaRuns. These variables should only |
| 126 // ever be updated in advanceRuns(), and fRuns should always point to | 126 // ever be updated in advanceRuns(), and fRuns should always point to |
| 127 // a valid SkAlphaRuns... | 127 // a valid SkAlphaRuns... |
| 128 int fRunsToBuffer; | 128 int fRunsToBuffer; |
| 129 void* fRunsBuffer; | 129 void* fRunsBuffer; |
| 130 int fCurrentRun; | 130 int fCurrentRun; |
| 131 SkAlphaRuns fRuns; | 131 SkAlphaRuns fRuns; |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 /////////////////////////////////////////////////////////////////////////////// | 393 /////////////////////////////////////////////////////////////////////////////// |
| 394 | 394 |
| 395 /// Masked supersampling antialiased blitter. | 395 /// Masked supersampling antialiased blitter. |
| 396 class MaskSuperBlitter : public BaseSuperBlitter { | 396 class MaskSuperBlitter : public BaseSuperBlitter { |
| 397 public: | 397 public: |
| 398 MaskSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion&,
bool isInverse); | 398 MaskSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, const SkRegion&,
bool isInverse); |
| 399 virtual ~MaskSuperBlitter() { | 399 virtual ~MaskSuperBlitter() { |
| 400 fRealBlitter->blitMask(fMask, fClipRect); | 400 fRealBlitter->blitMask(fMask, fClipRect); |
| 401 } | 401 } |
| 402 | 402 |
| 403 void blitH(int x, int y, int width) SK_OVERRIDE; | 403 void blitH(int x, int y, int width) override; |
| 404 | 404 |
| 405 static bool CanHandleRect(const SkIRect& bounds) { | 405 static bool CanHandleRect(const SkIRect& bounds) { |
| 406 #ifdef FORCE_RLE | 406 #ifdef FORCE_RLE |
| 407 return false; | 407 return false; |
| 408 #endif | 408 #endif |
| 409 int width = bounds.width(); | 409 int width = bounds.width(); |
| 410 int64_t rb = SkAlign4(width); | 410 int64_t rb = SkAlign4(width); |
| 411 // use 64bits to detect overflow | 411 // use 64bits to detect overflow |
| 412 int64_t storage = rb * bounds.height(); | 412 int64_t storage = rb * bounds.height(); |
| 413 | 413 |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 AntiFillPath(path, clip.bwRgn(), blitter); | 758 AntiFillPath(path, clip.bwRgn(), blitter); |
| 759 } else { | 759 } else { |
| 760 SkRegion tmp; | 760 SkRegion tmp; |
| 761 SkAAClipBlitter aaBlitter; | 761 SkAAClipBlitter aaBlitter; |
| 762 | 762 |
| 763 tmp.setRect(clip.getBounds()); | 763 tmp.setRect(clip.getBounds()); |
| 764 aaBlitter.init(blitter, &clip.aaRgn()); | 764 aaBlitter.init(blitter, &clip.aaRgn()); |
| 765 SkScan::AntiFillPath(path, tmp, &aaBlitter, true); | 765 SkScan::AntiFillPath(path, tmp, &aaBlitter, true); |
| 766 } | 766 } |
| 767 } | 767 } |
| OLD | NEW |