| 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 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "wtf/text/AtomicStringHash.h" | 30 #include "wtf/text/AtomicStringHash.h" |
| 31 | 31 |
| 32 class SkPaint; | 32 class SkPaint; |
| 33 | 33 |
| 34 namespace blink { | 34 namespace blink { |
| 35 | 35 |
| 36 class FloatRect; | 36 class FloatRect; |
| 37 class LayoutObject; | 37 class LayoutObject; |
| 38 class SVGFilterElement; | 38 class SVGFilterElement; |
| 39 | 39 |
| 40 // A map from LayoutObject -> FilterEffect and FilterEffect -> dependent (downst
ream) FilterEffects ("reverse DAG"). | 40 // A map from LayoutObject -> FilterEffect and FilterEffect -> dependent |
| 41 // Used during invalidations from changes to the primitives (graph nodes). | 41 // (downstream) FilterEffects ("reverse DAG"). Used during invalidations from |
| 42 // changes to the primitives (graph nodes). |
| 42 class SVGFilterGraphNodeMap final | 43 class SVGFilterGraphNodeMap final |
| 43 : public GarbageCollected<SVGFilterGraphNodeMap> { | 44 : public GarbageCollected<SVGFilterGraphNodeMap> { |
| 44 public: | 45 public: |
| 45 static SVGFilterGraphNodeMap* create() { return new SVGFilterGraphNodeMap; } | 46 static SVGFilterGraphNodeMap* create() { return new SVGFilterGraphNodeMap; } |
| 46 | 47 |
| 47 typedef HeapHashSet<Member<FilterEffect>> FilterEffectSet; | 48 typedef HeapHashSet<Member<FilterEffect>> FilterEffectSet; |
| 48 | 49 |
| 49 void addBuiltinEffect(FilterEffect*); | 50 void addBuiltinEffect(FilterEffect*); |
| 50 void addPrimitive(LayoutObject*, FilterEffect*); | 51 void addPrimitive(LayoutObject*, FilterEffect*); |
| 51 | 52 |
| 52 inline FilterEffectSet& effectReferences(FilterEffect* effect) { | 53 inline FilterEffectSet& effectReferences(FilterEffect* effect) { |
| 53 // Only allowed for effects belongs to this builder. | 54 // Only allowed for effects belongs to this builder. |
| 54 ASSERT(m_effectReferences.contains(effect)); | 55 ASSERT(m_effectReferences.contains(effect)); |
| 55 return m_effectReferences.find(effect)->value; | 56 return m_effectReferences.find(effect)->value; |
| 56 } | 57 } |
| 57 | 58 |
| 58 // Required to change the attributes of a filter during an svgAttributeChanged
. | 59 // Required to change the attributes of a filter during an |
| 60 // svgAttributeChanged. |
| 59 inline FilterEffect* effectByRenderer(LayoutObject* object) { | 61 inline FilterEffect* effectByRenderer(LayoutObject* object) { |
| 60 return m_effectRenderer.get(object); | 62 return m_effectRenderer.get(object); |
| 61 } | 63 } |
| 62 | 64 |
| 63 void invalidateDependentEffects(FilterEffect*); | 65 void invalidateDependentEffects(FilterEffect*); |
| 64 | 66 |
| 65 DECLARE_TRACE(); | 67 DECLARE_TRACE(); |
| 66 | 68 |
| 67 private: | 69 private: |
| 68 SVGFilterGraphNodeMap(); | 70 SVGFilterGraphNodeMap(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 98 NamedFilterEffectMap m_builtinEffects; | 100 NamedFilterEffectMap m_builtinEffects; |
| 99 NamedFilterEffectMap m_namedEffects; | 101 NamedFilterEffectMap m_namedEffects; |
| 100 | 102 |
| 101 Member<FilterEffect> m_lastEffect; | 103 Member<FilterEffect> m_lastEffect; |
| 102 Member<SVGFilterGraphNodeMap> m_nodeMap; | 104 Member<SVGFilterGraphNodeMap> m_nodeMap; |
| 103 }; | 105 }; |
| 104 | 106 |
| 105 } // namespace blink | 107 } // namespace blink |
| 106 | 108 |
| 107 #endif // SVGFilterBuilder_h | 109 #endif // SVGFilterBuilder_h |
| OLD | NEW |