diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-01 22:31:35 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-01 22:31:35 +0000 |
commit | de56f378336660dcc848763c80267a5e063ae47d (patch) | |
tree | 7f551b88923b35bc4022ce6ab3a3f602fb60d91c /webkit/pending/SMILTimeContainer.h | |
parent | dc4f63c80cb90efe594131030aad6776e5945fcc (diff) | |
download | chromium_src-de56f378336660dcc848763c80267a5e063ae47d.zip chromium_src-de56f378336660dcc848763c80267a5e063ae47d.tar.gz chromium_src-de56f378336660dcc848763c80267a5e063ae47d.tar.bz2 |
Merge the chrome_webkit_merge_branch back on to trunk. This brings us
up to webkit@36102.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2778 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/pending/SMILTimeContainer.h')
-rw-r--r-- | webkit/pending/SMILTimeContainer.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/webkit/pending/SMILTimeContainer.h b/webkit/pending/SMILTimeContainer.h new file mode 100644 index 0000000..dc858a8 --- /dev/null +++ b/webkit/pending/SMILTimeContainer.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SMILTimeContainer_H +#define SMILTimeContainer_H + +#if ENABLE(SVG) + +#include "PlatformString.h" +#include "SMILTime.h" +#include "StringHash.h" +#include "Timer.h" +#include <wtf/HashMap.h> +#include <wtf/HashSet.h> +#include <wtf/PassRefPtr.h> +#include <wtf/RefCounted.h> + +namespace WebCore { + + class SVGElement; + class SVGSMILElement; + class SVGSVGElement; + + class SMILTimeContainer : public RefCounted<SMILTimeContainer> { + public: + static PassRefPtr<SMILTimeContainer> create(SVGSVGElement* owner) { return adoptRef(new SMILTimeContainer(owner)); } + + void schedule(SVGSMILElement*); + void unschedule(SVGSMILElement*); + + SMILTime elapsed() const; + + bool isActive() const; + bool isPaused() const; + + void begin(); + void pause(); + void resume(); + + void setDocumentOrderIndexesDirty() { m_documentOrderIndexesDirty = true; } + + private: + SMILTimeContainer(SVGSVGElement* owner); + + void timerFired(Timer<SMILTimeContainer>*); + void startTimer(SMILTime fireTime, SMILTime minimumDelay = 0); + void updateAnimations(SMILTime elapsed); + + void updateDocumentOrderIndexes(); + void sortByPriority(Vector<SVGSMILElement*>& smilElements, SMILTime elapsed); + + typedef pair<SVGElement*, String> ElementAttributePair; + String baseValueFor(ElementAttributePair); + + double m_beginTime; + double m_pauseTime; + double m_accumulatedPauseTime; + + bool m_documentOrderIndexesDirty; + + Timer<SMILTimeContainer> m_timer; + + typedef HashSet<SVGSMILElement*> TimingElementSet; + TimingElementSet m_scheduledAnimations; + + typedef HashMap<ElementAttributePair, String> BaseValueMap; + BaseValueMap m_savedBaseValues; + + SVGSVGElement* m_ownerSVGElement; + }; +} + +#endif +#endif |