OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 bool isContributing(SMILTime elapsed) const; | 102 bool isContributing(SMILTime elapsed) const; |
103 bool isFrozen() const; | 103 bool isFrozen() const; |
104 | 104 |
105 unsigned documentOrderIndex() const { return m_documentOrderIndex; } | 105 unsigned documentOrderIndex() const { return m_documentOrderIndex; } |
106 void setDocumentOrderIndex(unsigned index) { m_documentOrderIndex = index; } | 106 void setDocumentOrderIndex(unsigned index) { m_documentOrderIndex = index; } |
107 | 107 |
108 virtual void resetAnimatedType() = 0; | 108 virtual void resetAnimatedType() = 0; |
109 virtual void clearAnimatedType(SVGElement* targetElement) = 0; | 109 virtual void clearAnimatedType(SVGElement* targetElement) = 0; |
110 virtual void applyResultsToTarget() = 0; | 110 virtual void applyResultsToTarget() = 0; |
111 | 111 |
112 void connectConditions(); | 112 void connectSyncBaseConditions(); |
| 113 void connectEventBaseConditions(); |
113 | 114 |
114 void dispatchPendingEvent(SMILEventSender*); | 115 void dispatchPendingEvent(SMILEventSender*); |
115 void dispatchRepeatEvents(unsigned); | 116 void dispatchRepeatEvents(unsigned); |
116 | 117 |
117 protected: | 118 protected: |
118 void addBeginTime(SMILTime eventTime, SMILTime endTime, SMILTimeWithOrigin::
Origin = SMILTimeWithOrigin::ParserOrigin); | 119 void addBeginTime(SMILTime eventTime, SMILTime endTime, SMILTimeWithOrigin::
Origin = SMILTimeWithOrigin::ParserOrigin); |
119 void addEndTime(SMILTime eventTime, SMILTime endTime, SMILTimeWithOrigin::Or
igin = SMILTimeWithOrigin::ParserOrigin); | 120 void addEndTime(SMILTime eventTime, SMILTime endTime, SMILTimeWithOrigin::Or
igin = SMILTimeWithOrigin::ParserOrigin); |
120 | 121 |
121 void setInactive() { m_activeState = Inactive; } | 122 void setInactive() { m_activeState = Inactive; } |
122 | 123 |
123 // Sub-classes may need to take action when the target is changed. | 124 // Sub-classes may need to take action when the target is changed. |
124 virtual void setTargetElement(SVGElement*); | 125 virtual void setTargetElement(SVGElement*); |
125 virtual void setAttributeName(const QualifiedName&); | 126 virtual void setAttributeName(const QualifiedName&); |
126 | 127 |
127 private: | 128 private: |
128 void buildPendingResource(); | 129 void buildPendingResource(); |
129 void clearResourceReferences(); | 130 void clearResourceAndEventBaseReferences(); |
130 | 131 |
131 virtual void startedActiveInterval() = 0; | 132 virtual void startedActiveInterval() = 0; |
132 void endedActiveInterval(); | 133 void endedActiveInterval(); |
133 virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement*
resultElement) = 0; | 134 virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement*
resultElement) = 0; |
134 | 135 |
135 virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } | 136 virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE { return false; } |
136 | 137 |
137 enum BeginOrEnd { | 138 enum BeginOrEnd { |
138 Begin, | 139 Begin, |
139 End | 140 End |
(...skipping 25 matching lines...) Expand all Loading... |
165 String m_name; | 166 String m_name; |
166 SMILTime m_offset; | 167 SMILTime m_offset; |
167 int m_repeat; | 168 int m_repeat; |
168 RefPtr<Element> m_syncbase; | 169 RefPtr<Element> m_syncbase; |
169 RefPtr<ConditionEventListener> m_eventListener; | 170 RefPtr<ConditionEventListener> m_eventListener; |
170 }; | 171 }; |
171 bool parseCondition(const String&, BeginOrEnd beginOrEnd); | 172 bool parseCondition(const String&, BeginOrEnd beginOrEnd); |
172 void parseBeginOrEnd(const String&, BeginOrEnd beginOrEnd); | 173 void parseBeginOrEnd(const String&, BeginOrEnd beginOrEnd); |
173 Element* eventBaseFor(const Condition&); | 174 Element* eventBaseFor(const Condition&); |
174 | 175 |
175 void disconnectConditions(); | 176 void disconnectSyncBaseConditions(); |
| 177 void disconnectEventBaseConditions(); |
176 | 178 |
177 // Event base timing | 179 // Event base timing |
178 void handleConditionEvent(Event*, Condition*); | 180 void handleConditionEvent(Event*, Condition*); |
179 | 181 |
180 void notifyDependentsIntervalChanged(); | 182 void notifyDependentsIntervalChanged(); |
181 void createInstanceTimesFromSyncbase(SVGSMILElement* syncbase); | 183 void createInstanceTimesFromSyncbase(SVGSMILElement* syncbase); |
182 void addTimeDependent(SVGSMILElement*); | 184 void addSyncBaseDependent(SVGSMILElement*); |
183 void removeTimeDependent(SVGSMILElement*); | 185 void removeSyncBaseDependent(SVGSMILElement*); |
184 | 186 |
185 enum ActiveState { | 187 enum ActiveState { |
186 Inactive, | 188 Inactive, |
187 Active, | 189 Active, |
188 Frozen | 190 Frozen |
189 }; | 191 }; |
190 | 192 |
191 QualifiedName m_attributeName; | 193 QualifiedName m_attributeName; |
192 | 194 |
193 ActiveState determineActiveState(SMILTime elapsed) const; | 195 ActiveState determineActiveState(SMILTime elapsed) const; |
194 float calculateAnimationPercentAndRepeat(SMILTime elapsed, unsigned& repeat)
const; | 196 float calculateAnimationPercentAndRepeat(SMILTime elapsed, unsigned& repeat)
const; |
195 SMILTime calculateNextProgressTime(SMILTime elapsed) const; | 197 SMILTime calculateNextProgressTime(SMILTime elapsed) const; |
196 | 198 |
197 mutable SVGElement* m_targetElement; | 199 mutable SVGElement* m_targetElement; |
198 | 200 |
199 Vector<Condition> m_conditions; | 201 Vector<Condition> m_conditions; |
200 bool m_conditionsConnected; | 202 bool m_syncBaseConditionsConnected; |
201 bool m_hasEndEventConditions; | 203 bool m_hasEndEventConditions; |
202 | 204 |
203 bool m_isWaitingForFirstInterval; | 205 bool m_isWaitingForFirstInterval; |
204 | 206 |
205 typedef HashSet<SVGSMILElement*> TimeDependentSet; | 207 typedef HashSet<SVGSMILElement*> TimeDependentSet; |
206 TimeDependentSet m_timeDependents; | 208 TimeDependentSet m_syncBaseDependents; |
207 | 209 |
208 // Instance time lists | 210 // Instance time lists |
209 Vector<SMILTimeWithOrigin> m_beginTimes; | 211 Vector<SMILTimeWithOrigin> m_beginTimes; |
210 Vector<SMILTimeWithOrigin> m_endTimes; | 212 Vector<SMILTimeWithOrigin> m_endTimes; |
211 | 213 |
212 // This is the upcoming or current interval | 214 // This is the upcoming or current interval |
213 SMILTime m_intervalBegin; | 215 SMILTime m_intervalBegin; |
214 SMILTime m_intervalEnd; | 216 SMILTime m_intervalEnd; |
215 | 217 |
216 SMILTime m_previousIntervalBegin; | 218 SMILTime m_previousIntervalBegin; |
(...skipping 22 matching lines...) Expand all Loading... |
239 { | 241 { |
240 return node.hasTagName(SVGNames::setTag) || node.hasTagName(SVGNames::animat
eTag) || node.hasTagName(SVGNames::animateMotionTag) | 242 return node.hasTagName(SVGNames::setTag) || node.hasTagName(SVGNames::animat
eTag) || node.hasTagName(SVGNames::animateMotionTag) |
241 || node.hasTagName(SVGNames::animateTransformTag) || node.hasTagName(SVG
Names::animateColorTag); | 243 || node.hasTagName(SVGNames::animateTransformTag) || node.hasTagName(SVG
Names::animateColorTag); |
242 } | 244 } |
243 | 245 |
244 DEFINE_NODE_TYPE_CASTS_WITH_FUNCTION(SVGSMILElement); | 246 DEFINE_NODE_TYPE_CASTS_WITH_FUNCTION(SVGSMILElement); |
245 | 247 |
246 } | 248 } |
247 | 249 |
248 #endif // SVGSMILElement_h | 250 #endif // SVGSMILElement_h |
OLD | NEW |