Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(627)

Side by Side Diff: src/core/SkBlitter.h

Issue 387953005: Buffer four scanlines prior to blitting. We will eventually use this (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Cosmetics Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkScan_AntiPath.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef SkBlitter_DEFINED 10 #ifndef SkBlitter_DEFINED
(...skipping 15 matching lines...) Expand all
26 class SkBlitter { 26 class SkBlitter {
27 public: 27 public:
28 virtual ~SkBlitter(); 28 virtual ~SkBlitter();
29 29
30 /// Blit a horizontal run of one or more pixels. 30 /// Blit a horizontal run of one or more pixels.
31 virtual void blitH(int x, int y, int width); 31 virtual void blitH(int x, int y, int width);
32 /// Blit a horizontal run of antialiased pixels; runs[] is a *sparse* 32 /// Blit a horizontal run of antialiased pixels; runs[] is a *sparse*
33 /// zero-terminated run-length encoding of spans of constant alpha values. 33 /// zero-terminated run-length encoding of spans of constant alpha values.
34 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], 34 virtual void blitAntiH(int x, int y, const SkAlpha antialias[],
35 const int16_t runs[]); 35 const int16_t runs[]);
36
36 /// Blit a vertical run of pixels with a constant alpha value. 37 /// Blit a vertical run of pixels with a constant alpha value.
37 virtual void blitV(int x, int y, int height, SkAlpha alpha); 38 virtual void blitV(int x, int y, int height, SkAlpha alpha);
38 /// Blit a solid rectangle one or more pixels wide. 39 /// Blit a solid rectangle one or more pixels wide.
39 virtual void blitRect(int x, int y, int width, int height); 40 virtual void blitRect(int x, int y, int width, int height);
40 /** Blit a rectangle with one alpha-blended column on the left, 41 /** Blit a rectangle with one alpha-blended column on the left,
41 width (zero or more) opaque pixels, and one alpha-blended column 42 width (zero or more) opaque pixels, and one alpha-blended column
42 on the right. 43 on the right.
43 The result will always be at least two pixels wide. 44 The result will always be at least two pixels wide.
44 */ 45 */
45 virtual void blitAntiRect(int x, int y, int width, int height, 46 virtual void blitAntiRect(int x, int y, int width, int height,
(...skipping 14 matching lines...) Expand all
60 * returns false. 61 * returns false.
61 */ 62 */
62 virtual bool isNullBlitter() const; 63 virtual bool isNullBlitter() const;
63 64
64 /** 65 /**
65 * Special methods for SkShaderBlitter. On all other classes this is a no-o p. 66 * Special methods for SkShaderBlitter. On all other classes this is a no-o p.
66 */ 67 */
67 virtual bool resetShaderContext(const SkShader::ContextRec&); 68 virtual bool resetShaderContext(const SkShader::ContextRec&);
68 virtual SkShader::Context* getShaderContext() const; 69 virtual SkShader::Context* getShaderContext() const;
69 70
71 /**
72 * Special methods for blitters that can blit more than one row at a time.
73 * This function returns the number of rows that this blitter could optimall y
74 * process at a time. It is still required to support blitting one scanline
75 * at a time.
76 */
77 virtual int requestRowsPreserved() const { return 1; }
78
70 ///@name non-virtual helpers 79 ///@name non-virtual helpers
71 void blitMaskRegion(const SkMask& mask, const SkRegion& clip); 80 void blitMaskRegion(const SkMask& mask, const SkRegion& clip);
72 void blitRectRegion(const SkIRect& rect, const SkRegion& clip); 81 void blitRectRegion(const SkIRect& rect, const SkRegion& clip);
73 void blitRegion(const SkRegion& clip); 82 void blitRegion(const SkRegion& clip);
74 ///@} 83 ///@}
75 84
76 /** @name Factories 85 /** @name Factories
77 Return the correct blitter to use given the specified context. 86 Return the correct blitter to use given the specified context.
78 */ 87 */
79 static SkBlitter* Choose(const SkBitmap& device, 88 static SkBlitter* Choose(const SkBitmap& device,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 SkBlitter* apply(SkBlitter* blitter, const SkRegion* clip, 178 SkBlitter* apply(SkBlitter* blitter, const SkRegion* clip,
170 const SkIRect* bounds = NULL); 179 const SkIRect* bounds = NULL);
171 180
172 private: 181 private:
173 SkNullBlitter fNullBlitter; 182 SkNullBlitter fNullBlitter;
174 SkRectClipBlitter fRectBlitter; 183 SkRectClipBlitter fRectBlitter;
175 SkRgnClipBlitter fRgnBlitter; 184 SkRgnClipBlitter fRgnBlitter;
176 }; 185 };
177 186
178 #endif 187 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkScan_AntiPath.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698