OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com> | 2 * Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com> |
3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> | 3 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> |
4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 14 matching lines...) Expand all Loading... |
25 #if ENABLE(FILTERS) | 25 #if ENABLE(FILTERS) |
26 #include "FloatRect.h" | 26 #include "FloatRect.h" |
27 #include "IntRect.h" | 27 #include "IntRect.h" |
28 | 28 |
29 #include <wtf/ByteArray.h> | 29 #include <wtf/ByteArray.h> |
30 #include <wtf/PassOwnPtr.h> | 30 #include <wtf/PassOwnPtr.h> |
31 #include <wtf/RefCounted.h> | 31 #include <wtf/RefCounted.h> |
32 #include <wtf/RefPtr.h> | 32 #include <wtf/RefPtr.h> |
33 #include <wtf/Vector.h> | 33 #include <wtf/Vector.h> |
34 | 34 |
| 35 static const float kMaxFilterSize = 5000.0f; |
| 36 |
35 namespace WebCore { | 37 namespace WebCore { |
36 | 38 |
37 class Filter; | 39 class Filter; |
38 class FilterEffect; | 40 class FilterEffect; |
39 class ImageBuffer; | 41 class ImageBuffer; |
40 class TextStream; | 42 class TextStream; |
41 | 43 |
42 typedef Vector<RefPtr<FilterEffect> > FilterEffectVector; | 44 typedef Vector<RefPtr<FilterEffect> > FilterEffectVector; |
43 | 45 |
44 enum FilterEffectType { | 46 enum FilterEffectType { |
(...skipping 22 matching lines...) Expand all Loading... |
67 IntRect drawingRegionOfInputImage(const IntRect&) const; | 69 IntRect drawingRegionOfInputImage(const IntRect&) const; |
68 IntRect requestedRegionOfInputImageData(const IntRect&) const; | 70 IntRect requestedRegionOfInputImageData(const IntRect&) const; |
69 | 71 |
70 // Solid black image with different alpha values. | 72 // Solid black image with different alpha values. |
71 bool isAlphaImage() const { return m_alphaImage; } | 73 bool isAlphaImage() const { return m_alphaImage; } |
72 void setIsAlphaImage(bool alphaImage) { m_alphaImage = alphaImage; } | 74 void setIsAlphaImage(bool alphaImage) { m_alphaImage = alphaImage; } |
73 | 75 |
74 IntRect absolutePaintRect() const { return m_absolutePaintRect; } | 76 IntRect absolutePaintRect() const { return m_absolutePaintRect; } |
75 void setAbsolutePaintRect(const IntRect& absolutePaintRect) { m_absolutePain
tRect = absolutePaintRect; } | 77 void setAbsolutePaintRect(const IntRect& absolutePaintRect) { m_absolutePain
tRect = absolutePaintRect; } |
76 | 78 |
77 IntRect maxEffectRect() const { return m_maxEffectRect; } | 79 FloatRect maxEffectRect() const { return m_maxEffectRect; } |
78 void setMaxEffectRect(const IntRect& maxEffectRect) { m_maxEffectRect = maxE
ffectRect; } | 80 void setMaxEffectRect(const FloatRect& maxEffectRect) { m_maxEffectRect = ma
xEffectRect; } |
79 | 81 |
80 virtual void apply() = 0; | 82 virtual void apply() = 0; |
81 virtual void dump() = 0; | 83 virtual void dump() = 0; |
82 | 84 |
83 virtual void determineAbsolutePaintRect(); | 85 virtual void determineAbsolutePaintRect(); |
84 | 86 |
85 virtual FilterEffectType filterEffectType() const { return FilterEffectTypeU
nknown; } | 87 virtual FilterEffectType filterEffectType() const { return FilterEffectTypeU
nknown; } |
86 | 88 |
87 virtual TextStream& externalRepresentation(TextStream&, int indention = 0) c
onst; | 89 virtual TextStream& externalRepresentation(TextStream&, int indention = 0) c
onst; |
88 | 90 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 RefPtr<ByteArray> m_unmultipliedImageResult; | 123 RefPtr<ByteArray> m_unmultipliedImageResult; |
122 RefPtr<ByteArray> m_premultipliedImageResult; | 124 RefPtr<ByteArray> m_premultipliedImageResult; |
123 FilterEffectVector m_inputEffects; | 125 FilterEffectVector m_inputEffects; |
124 | 126 |
125 bool m_alphaImage; | 127 bool m_alphaImage; |
126 | 128 |
127 IntRect m_absolutePaintRect; | 129 IntRect m_absolutePaintRect; |
128 | 130 |
129 // The maximum size of a filter primitive. In SVG this is the primitive subr
egion in absolute coordinate space. | 131 // The maximum size of a filter primitive. In SVG this is the primitive subr
egion in absolute coordinate space. |
130 // The absolute paint rect should never be bigger than m_maxEffectRect. | 132 // The absolute paint rect should never be bigger than m_maxEffectRect. |
131 IntRect m_maxEffectRect; | 133 FloatRect m_maxEffectRect; |
132 Filter* m_filter; | 134 Filter* m_filter; |
133 | 135 |
134 private: | 136 private: |
135 inline void copyImageBytes(ByteArray* source, ByteArray* destination, const
IntRect&); | 137 inline void copyImageBytes(ByteArray* source, ByteArray* destination, const
IntRect&); |
136 | 138 |
137 // The following member variables are SVG specific and will move to RenderSV
GResourceFilterPrimitive. | 139 // The following member variables are SVG specific and will move to RenderSV
GResourceFilterPrimitive. |
138 // See bug https://bugs.webkit.org/show_bug.cgi?id=45614. | 140 // See bug https://bugs.webkit.org/show_bug.cgi?id=45614. |
139 | 141 |
140 // The subregion of a filter primitive according to the SVG Filter specifica
tion in local coordinates. | 142 // The subregion of a filter primitive according to the SVG Filter specifica
tion in local coordinates. |
141 // This is SVG specific and needs to move to RenderSVGResourceFilterPrimitiv
e. | 143 // This is SVG specific and needs to move to RenderSVGResourceFilterPrimitiv
e. |
142 FloatRect m_filterPrimitiveSubregion; | 144 FloatRect m_filterPrimitiveSubregion; |
143 | 145 |
144 // x, y, width and height of the actual SVGFE*Element. Is needed to determin
e the subregion of the | 146 // x, y, width and height of the actual SVGFE*Element. Is needed to determin
e the subregion of the |
145 // filter primitive on a later step. | 147 // filter primitive on a later step. |
146 FloatRect m_effectBoundaries; | 148 FloatRect m_effectBoundaries; |
147 bool m_hasX; | 149 bool m_hasX; |
148 bool m_hasY; | 150 bool m_hasY; |
149 bool m_hasWidth; | 151 bool m_hasWidth; |
150 bool m_hasHeight; | 152 bool m_hasHeight; |
151 }; | 153 }; |
152 | 154 |
153 } // namespace WebCore | 155 } // namespace WebCore |
154 | 156 |
155 #endif // ENABLE(FILTERS) | 157 #endif // ENABLE(FILTERS) |
156 | 158 |
157 #endif // FilterEffect_h | 159 #endif // FilterEffect_h |
OLD | NEW |