]>
Commit | Line | Data |
---|---|---|
a90939db JF |
1 | /* |
2 | * Copyright (C) 2008 Apple Inc. All rights reserved. | |
3 | * | |
4 | * Redistribution and use in source and binary forms, with or without | |
5 | * modification, are permitted provided that the following conditions | |
6 | * are met: | |
7 | * | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of | |
14 | * its contributors may be used to endorse or promote products derived | |
15 | * from this software without specific prior written permission. | |
16 | * | |
17 | * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY | |
18 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
19 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
20 | * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | |
21 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
22 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
23 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
24 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 | */ | |
28 | ||
29 | #ifndef MediaControlElements_h | |
30 | #define MediaControlElements_h | |
31 | ||
32 | #if ENABLE(VIDEO) | |
33 | ||
34 | #include "HTMLDivElement.h" | |
35 | #include "HTMLInputElement.h" | |
36 | #include "HTMLMediaElement.h" | |
37 | #include "RenderBlock.h" | |
38 | ||
39 | // These are the shadow elements used in RenderMedia | |
40 | ||
41 | namespace WebCore { | |
42 | ||
43 | class Event; | |
44 | class Frame; | |
45 | ||
46 | enum MediaControlElements { | |
47 | MediaFullscreenButton, MediaMuteButton, MediaPlayButton, | |
48 | MediaSeekBackButton, MediaSeekForwardButton, MediaSlider, MediaSliderThumb, | |
49 | MediaUnMuteButton, MediaPauseButton, MediaTimelineContainer, MediaCurrentTimeDisplay, | |
50 | MediaTimeRemainingDisplay, MediaControlsPanel | |
51 | }; | |
52 | ||
53 | class MediaControlShadowRootElement : public HTMLDivElement { | |
54 | public: | |
55 | MediaControlShadowRootElement(Document*, HTMLMediaElement*); | |
56 | ||
57 | virtual bool isShadowNode() const { return true; } | |
58 | virtual Node* shadowParentNode() { return m_mediaElement; } | |
59 | ||
60 | private: | |
61 | HTMLMediaElement* m_mediaElement; | |
62 | }; | |
63 | ||
64 | // ---------------------------- | |
65 | ||
66 | class MediaTextDisplayElement : public HTMLDivElement | |
67 | { | |
68 | public: | |
69 | MediaTextDisplayElement(Document*, RenderStyle::PseudoId, HTMLMediaElement*); | |
70 | void attachToParent(Element*); | |
71 | void update(); | |
72 | protected: | |
73 | HTMLMediaElement* m_mediaElement; | |
74 | }; | |
75 | ||
76 | // ---------------------------- | |
77 | ||
78 | class MediaTimeDisplayElement : public MediaTextDisplayElement { | |
79 | public: | |
80 | MediaTimeDisplayElement(Document*, HTMLMediaElement*, bool currentTime); | |
81 | }; | |
82 | ||
83 | // ---------------------------- | |
84 | ||
85 | class MediaControlInputElement : public HTMLInputElement { | |
86 | public: | |
87 | MediaControlInputElement(Document*, RenderStyle::PseudoId, const String& type, HTMLMediaElement*); | |
88 | void attachToParent(Element*); | |
89 | void update(); | |
90 | bool hitTest(const IntPoint& absPoint); | |
91 | protected: | |
92 | HTMLMediaElement* m_mediaElement; | |
93 | }; | |
94 | ||
95 | // ---------------------------- | |
96 | ||
97 | class MediaControlMuteButtonElement : public MediaControlInputElement { | |
98 | public: | |
99 | MediaControlMuteButtonElement(Document*, HTMLMediaElement*); | |
100 | virtual void defaultEventHandler(Event*); | |
101 | }; | |
102 | ||
103 | // ---------------------------- | |
104 | ||
105 | class MediaControlPlayButtonElement : public MediaControlInputElement { | |
106 | public: | |
107 | MediaControlPlayButtonElement(Document*, HTMLMediaElement*); | |
108 | virtual void defaultEventHandler(Event*); | |
109 | }; | |
110 | ||
111 | // ---------------------------- | |
112 | ||
113 | class MediaControlSeekButtonElement : public MediaControlInputElement { | |
114 | public: | |
115 | MediaControlSeekButtonElement(Document*, HTMLMediaElement*, bool forward); | |
116 | virtual void defaultEventHandler(Event*); | |
117 | void seekTimerFired(Timer<MediaControlSeekButtonElement>*); | |
118 | ||
119 | private: | |
120 | bool m_forward; | |
121 | bool m_seeking; | |
122 | bool m_capturing; | |
123 | Timer<MediaControlSeekButtonElement> m_seekTimer; | |
124 | }; | |
125 | ||
126 | // ---------------------------- | |
127 | ||
128 | class MediaControlTimelineElement : public MediaControlInputElement { | |
129 | public: | |
130 | MediaControlTimelineElement(Document*, HTMLMediaElement*); | |
131 | virtual void defaultEventHandler(Event*); | |
132 | void update(bool updateDuration = true); | |
133 | }; | |
134 | ||
135 | // ---------------------------- | |
136 | ||
137 | class MediaControlFullscreenButtonElement : public MediaControlInputElement { | |
138 | public: | |
139 | MediaControlFullscreenButtonElement(Document*, HTMLMediaElement*); | |
140 | virtual void defaultEventHandler(Event*); | |
141 | }; | |
142 | ||
143 | // ---------------------------- | |
144 | ||
145 | class RenderMediaControlShadowRoot : public RenderBlock { | |
146 | public: | |
147 | RenderMediaControlShadowRoot(Element* e) : RenderBlock(e) { } | |
148 | void setParent(RenderObject* p) { RenderObject::setParent(p); } | |
149 | }; | |
150 | ||
151 | // ---------------------------- | |
152 | ||
153 | } //namespace WebCore | |
154 | #endif // enable(video) | |
155 | #endif // MediaControlElements_h |