1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
/*
* Copyright (C) Research In Motion Limited 2010. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef SVGElementRareData_h
#define SVGElementRareData_h
#include "core/style/ComputedStyle.h"
#include "core/svg/SVGElement.h"
#include "platform/heap/Handle.h"
#include "platform/transforms/AffineTransform.h"
#include "wtf/HashSet.h"
#include "wtf/Noncopyable.h"
namespace blink {
class SVGElementProxySet;
class SVGElementRareData
: public GarbageCollectedFinalized<SVGElementRareData> {
WTF_MAKE_NONCOPYABLE(SVGElementRareData);
public:
SVGElementRareData(SVGElement* owner)
: m_owner(owner),
m_correspondingElement(nullptr),
m_instancesUpdatesBlocked(false),
m_useOverrideComputedStyle(false),
m_needsOverrideComputedStyleUpdate(false),
m_webAnimatedAttributesDirty(false) {}
SVGElementSet& outgoingReferences() { return m_outgoingReferences; }
const SVGElementSet& outgoingReferences() const {
return m_outgoingReferences;
}
SVGElementSet& incomingReferences() { return m_incomingReferences; }
const SVGElementSet& incomingReferences() const {
return m_incomingReferences;
}
SVGElementProxySet& ensureElementProxySet();
HeapHashSet<WeakMember<SVGElement>>& elementInstances() {
return m_elementInstances;
}
const HeapHashSet<WeakMember<SVGElement>>& elementInstances() const {
return m_elementInstances;
}
bool instanceUpdatesBlocked() const { return m_instancesUpdatesBlocked; }
void setInstanceUpdatesBlocked(bool value) {
m_instancesUpdatesBlocked = value;
}
SVGElement* correspondingElement() const {
return m_correspondingElement.get();
}
void setCorrespondingElement(SVGElement* correspondingElement) {
m_correspondingElement = correspondingElement;
}
void setWebAnimatedAttributesDirty(bool dirty) {
m_webAnimatedAttributesDirty = dirty;
}
bool webAnimatedAttributesDirty() const {
return m_webAnimatedAttributesDirty;
}
HashSet<const QualifiedName*>& webAnimatedAttributes() {
return m_webAnimatedAttributes;
}
MutableStylePropertySet* animatedSMILStyleProperties() const {
return m_animatedSMILStyleProperties.get();
}
MutableStylePropertySet* ensureAnimatedSMILStyleProperties();
ComputedStyle* overrideComputedStyle(Element*, const ComputedStyle*);
bool useOverrideComputedStyle() const { return m_useOverrideComputedStyle; }
void setUseOverrideComputedStyle(bool value) {
m_useOverrideComputedStyle = value;
}
void setNeedsOverrideComputedStyleUpdate() {
m_needsOverrideComputedStyleUpdate = true;
}
AffineTransform* animateMotionTransform();
DECLARE_TRACE();
private:
Member<SVGElement> m_owner;
SVGElementSet m_outgoingReferences;
SVGElementSet m_incomingReferences;
HeapHashSet<WeakMember<SVGElement>> m_elementInstances;
Member<SVGElementProxySet> m_elementProxySet;
Member<SVGElement> m_correspondingElement;
bool m_instancesUpdatesBlocked : 1;
bool m_useOverrideComputedStyle : 1;
bool m_needsOverrideComputedStyleUpdate : 1;
bool m_webAnimatedAttributesDirty : 1;
HashSet<const QualifiedName*> m_webAnimatedAttributes;
Member<MutableStylePropertySet> m_animatedSMILStyleProperties;
RefPtr<ComputedStyle> m_overrideComputedStyle;
// Used by <animateMotion>
AffineTransform m_animateMotionTransform;
};
} // namespace blink
#endif
|