Index: Source/platform/graphics/Pattern.h |
diff --git a/Source/platform/graphics/Pattern.h b/Source/platform/graphics/Pattern.h |
index 3a2b89d5096d1466ee0aac8668f6339ac3d5448b..7e5884c0bdd596526241e68babb955f11f486ffe 100644 |
--- a/Source/platform/graphics/Pattern.h |
+++ b/Source/platform/graphics/Pattern.h |
@@ -40,35 +40,53 @@ |
namespace blink { |
-class AffineTransform; |
- |
class PLATFORM_EXPORT Pattern : public RefCounted<Pattern> { |
public: |
- static PassRefPtr<Pattern> create(PassRefPtr<Image> tileImage, bool repeatX, bool repeatY) |
- { |
- return adoptRef(new Pattern(tileImage, repeatX, repeatY)); |
- } |
- ~Pattern(); |
+ static PassRefPtr<Pattern> create(PassRefPtr<Image> tileImage, bool repeatX, bool repeatY); |
+ |
+ virtual ~Pattern(); |
- SkShader* shader(); |
+ SkShader* shader(SkShader::ShaderLocation preferredLocation = SkShader::kKeep_ShaderLocation); |
void setPatternSpaceTransform(const AffineTransform& patternSpaceTransformation); |
- const AffineTransform& getPatternSpaceTransform() { return m_patternSpaceTransformation; }; |
+ const AffineTransform& getPatternSpaceTransform() { return m_patternSpaceTransformation; } |
bool repeatX() const { return m_repeatX; } |
bool repeatY() const { return m_repeatY; } |
+protected: |
+ virtual PassRefPtr<SkShader> createShader(SkShader::ShaderLocation preferredLocation) = 0; |
-private: |
- Pattern(PassRefPtr<Image>, bool repeatX, bool repeatY); |
+ Pattern(bool repeatX, bool repeatY, int64_t externalMemoryAllocated = 0) |
+ : m_repeatX(repeatX) |
+ , m_repeatY(repeatY) |
+ , m_externalMemoryAllocated(0) |
+ { |
+ adjustExternalMemoryAllocated(externalMemoryAllocated); |
+ } |
- RefPtr<NativeImageSkia> m_tileImage; |
bool m_repeatX; |
bool m_repeatY; |
AffineTransform m_patternSpaceTransformation; |
+ |
+ void adjustExternalMemoryAllocated(int64_t delta); |
+ |
+private: |
RefPtr<SkShader> m_pattern; |
- int m_externalMemoryAllocated; |
+ int64_t m_externalMemoryAllocated; |
+}; |
+ |
+class BitmapBackedPattern : public Pattern { |
Justin Novosad
2014/08/05 17:31:26
This should be in its own header and I think it sh
Rémi Piotaix
2014/08/06 18:09:14
Done.
|
+public: |
+ BitmapBackedPattern(bool repeatX, bool repeatY, int64_t externalMemoryAllocated = 0); |
+ virtual ~BitmapBackedPattern(); |
+ |
+ virtual PassRefPtr<SkShader> createShader(SkShader::ShaderLocation preferredLocation) OVERRIDE; |
+ |
+protected: |
+ virtual SkImageInfo getBitmapInfo() = 0; |
+ virtual void drawBitmapToCanvas(SkCanvas&, SkPaint&) = 0; |
}; |
-} //namespace |
+} // namespace |
#endif |