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

Side by Side Diff: include/effects/SkTransparentShader.h

Issue 207683004: Extract most of the mutable state of SkShader into a separate Context object. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: clean up Created 6 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkTransparentShader_DEFINED 8 #ifndef SkTransparentShader_DEFINED
9 #define SkTransparentShader_DEFINED 9 #define SkTransparentShader_DEFINED
10 10
11 #include "SkShader.h" 11 #include "SkShader.h"
12 12
13 class SK_API SkTransparentShader : public SkShader { 13 class SK_API SkTransparentShader : public SkShader {
14 public: 14 public:
15 SkTransparentShader() {} 15 SkTransparentShader() {}
16 16
17 virtual uint32_t getFlags() SK_OVERRIDE; 17 virtual bool validContext(const SkBitmap& device,
18 virtual bool setContext(const SkBitmap& device, 18 const SkPaint& paint,
19 const SkPaint& paint, 19 const SkMatrix& matrix) const SK_OVERRIDE;
20 const SkMatrix& matrix) SK_OVERRIDE; 20 virtual SkShader::Context* createContext(
21 virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE; 21 const SkBitmap& device, const SkPaint& paint,
scroggo 2014/03/24 21:24:46 device should be on the same line, assuming it fit
22 virtual void shadeSpan16(int x, int y, uint16_t span[], int count) SK_OVE RRIDE; 22 const SkMatrix& matrix, void* storage) const SK_OVERRIDE;
23 virtual size_t contextSize() const SK_OVERRIDE;
24
25 class TransparentShaderContext : public SkShader::Context {
26 public:
27 TransparentShaderContext(const SkTransparentShader& shader, const SkBitm ap& device,
28 const SkPaint& paint, const SkMatrix& matrix);
29 virtual ~TransparentShaderContext();
30
31 virtual uint32_t getFlags() const SK_OVERRIDE;
32 virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE ;
33 virtual void shadeSpan16(int x, int y, uint16_t span[], int count) SK_OV ERRIDE;
34 private:
35 const SkBitmap* fDevice;
36 uint8_t fAlpha;
37
38 typedef SkShader::Context INHERITED;
39 };
23 40
24 SK_DEVELOPER_TO_STRING() 41 SK_DEVELOPER_TO_STRING()
25 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTransparentShader) 42 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTransparentShader)
26 43
27 private: 44 private:
28 // these are a cache from the call to setContext()
29 const SkBitmap* fDevice;
30 uint8_t fAlpha;
31 45
32 SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {} 46 SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {}
33 47
34 typedef SkShader INHERITED; 48 typedef SkShader INHERITED;
35 }; 49 };
36 50
37 #endif 51 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698