diff options
Diffstat (limited to 'WebCore/rendering/MediaControlElements.h')
-rw-r--r-- | WebCore/rendering/MediaControlElements.h | 149 |
1 files changed, 110 insertions, 39 deletions
diff --git a/WebCore/rendering/MediaControlElements.h b/WebCore/rendering/MediaControlElements.h index 21831ce..68c06a3 100644 --- a/WebCore/rendering/MediaControlElements.h +++ b/WebCore/rendering/MediaControlElements.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -72,14 +72,16 @@ HTMLMediaElement* toParentMediaElement(RenderObject*); class MediaControlShadowRootElement : public HTMLDivElement { public: - MediaControlShadowRootElement(Document*, HTMLMediaElement*); - - virtual bool isShadowNode() const { return true; } - virtual Node* shadowParentNode() { return m_mediaElement; } + static PassRefPtr<MediaControlShadowRootElement> create(HTMLMediaElement*); void updateStyle(); private: + MediaControlShadowRootElement(HTMLMediaElement*); + + virtual bool isShadowNode() const { return true; } + virtual Node* shadowParentNode() { return m_mediaElement; } + HTMLMediaElement* m_mediaElement; }; @@ -87,21 +89,27 @@ private: class MediaControlElement : public HTMLDivElement { public: - MediaControlElement(Document*, PseudoId, HTMLMediaElement*); - virtual void attach(); - virtual bool rendererIsNeeded(RenderStyle*); + static PassRefPtr<MediaControlElement> create(HTMLMediaElement*, PseudoId); - virtual PassRefPtr<RenderStyle> styleForElement(); + virtual void attach(); void attachToParent(Element*); void update(); - virtual void updateStyle(); + void updateStyle(); MediaControlElementType displayType() const { return m_displayType; } HTMLMediaElement* mediaElement() const { return m_mediaElement; } - virtual bool isMediaControlElement() const { return true; } protected: + MediaControlElement(HTMLMediaElement*, PseudoId); + + virtual bool rendererIsNeeded(RenderStyle*); + + virtual PassRefPtr<RenderStyle> styleForElement(); + +private: + virtual bool isMediaControlElement() const { return true; } + HTMLMediaElement* m_mediaElement; PseudoId m_pseudoStyleId; MediaControlElementType m_displayType; // some elements can show multiple types (e.g. play/pause) @@ -111,7 +119,10 @@ protected: class MediaControlTimelineContainerElement : public MediaControlElement { public: - MediaControlTimelineContainerElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlTimelineContainerElement> create(HTMLMediaElement*); + +private: + MediaControlTimelineContainerElement(HTMLMediaElement*); virtual bool rendererIsNeeded(RenderStyle*); }; @@ -119,7 +130,8 @@ public: class MediaControlVolumeSliderContainerElement : public MediaControlElement { public: - MediaControlVolumeSliderContainerElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlVolumeSliderContainerElement> create(HTMLMediaElement*); + virtual PassRefPtr<RenderStyle> styleForElement(); void setVisible(bool); bool isVisible() { return m_isVisible; } @@ -127,6 +139,8 @@ public: bool hitTest(const IntPoint& absPoint); private: + MediaControlVolumeSliderContainerElement(HTMLMediaElement*); + bool m_isVisible; int m_x, m_y; }; @@ -135,10 +149,15 @@ private: class MediaControlStatusDisplayElement : public MediaControlElement { public: - MediaControlStatusDisplayElement(Document*, HTMLMediaElement*); - virtual void update(); - virtual bool rendererIsNeeded(RenderStyle*); + static PassRefPtr<MediaControlStatusDisplayElement> create(HTMLMediaElement*); + + void update(); + private: + MediaControlStatusDisplayElement(HTMLMediaElement*); + + virtual bool rendererIsNeeded(RenderStyle*); + enum StateBeingDisplayed { Nothing, Loading, LiveBroadcast }; StateBeingDisplayed m_stateBeingDisplayed; }; @@ -147,25 +166,33 @@ private: class MediaControlInputElement : public HTMLInputElement { public: - MediaControlInputElement(Document*, PseudoId, const String& type, HTMLMediaElement*); - virtual void attach(); - virtual bool rendererIsNeeded(RenderStyle*); - - virtual PassRefPtr<RenderStyle> styleForElement(); void attachToParent(Element*); void update(); void updateStyle(); bool hitTest(const IntPoint& absPoint); + MediaControlElementType displayType() const { return m_displayType; } HTMLMediaElement* mediaElement() const { return m_mediaElement; } - virtual bool isMediaControlElement() const { return true; } protected: - virtual void updateDisplayType() { } + MediaControlInputElement(HTMLMediaElement*, PseudoId, const String& type); + void setDisplayType(MediaControlElementType); + PseudoId pseudoStyleId() const { return m_pseudoStyleId; } + +private: + virtual void attach(); + virtual bool rendererIsNeeded(RenderStyle*); + + virtual PassRefPtr<RenderStyle> styleForElement(); + + virtual bool isMediaControlElement() const { return true; } + + virtual void updateDisplayType() { } + HTMLMediaElement* m_mediaElement; PseudoId m_pseudoStyleId; MediaControlElementType m_displayType; @@ -175,8 +202,13 @@ protected: class MediaControlMuteButtonElement : public MediaControlInputElement { public: - MediaControlMuteButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlMuteButtonElement(HTMLMediaElement*); + virtual void updateDisplayType(); }; @@ -184,8 +216,13 @@ public: class MediaControlPlayButtonElement : public MediaControlInputElement { public: - MediaControlPlayButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlPlayButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlPlayButtonElement(HTMLMediaElement*); + virtual void updateDisplayType(); }; @@ -193,13 +230,18 @@ public: class MediaControlSeekButtonElement : public MediaControlInputElement { public: - MediaControlSeekButtonElement(Document*, HTMLMediaElement*, bool forward); + static PassRefPtr<MediaControlSeekButtonElement> create(HTMLMediaElement*, PseudoId); + virtual void defaultEventHandler(Event*); + +private: + MediaControlSeekButtonElement(HTMLMediaElement*, PseudoId); + + bool isForwardButton() const; + virtual void detach(); void seekTimerFired(Timer<MediaControlSeekButtonElement>*); -private: - bool m_forward; bool m_seeking; bool m_capturing; Timer<MediaControlSeekButtonElement> m_seekTimer; @@ -209,24 +251,37 @@ private: class MediaControlRewindButtonElement : public MediaControlInputElement { public: - MediaControlRewindButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlRewindButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlRewindButtonElement(HTMLMediaElement*); }; // ---------------------------- class MediaControlReturnToRealtimeButtonElement : public MediaControlInputElement { public: - MediaControlReturnToRealtimeButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlReturnToRealtimeButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlReturnToRealtimeButtonElement(HTMLMediaElement*); }; // ---------------------------- class MediaControlToggleClosedCaptionsButtonElement : public MediaControlInputElement { public: - MediaControlToggleClosedCaptionsButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlToggleClosedCaptionsButtonElement(HTMLMediaElement*); + virtual void updateDisplayType(); }; @@ -234,40 +289,55 @@ public: class MediaControlTimelineElement : public MediaControlInputElement { public: - MediaControlTimelineElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlTimelineElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); void update(bool updateDuration = true); + +private: + MediaControlTimelineElement(HTMLMediaElement*); }; // ---------------------------- class MediaControlVolumeSliderElement : public MediaControlInputElement { public: - MediaControlVolumeSliderElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlVolumeSliderElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); - virtual void update(); + void update(); + +private: + MediaControlVolumeSliderElement(HTMLMediaElement*); }; // ---------------------------- class MediaControlFullscreenButtonElement : public MediaControlInputElement { public: - MediaControlFullscreenButtonElement(Document*, HTMLMediaElement*); + static PassRefPtr<MediaControlFullscreenButtonElement> create(HTMLMediaElement*); + virtual void defaultEventHandler(Event*); + +private: + MediaControlFullscreenButtonElement(HTMLMediaElement*); }; // ---------------------------- class MediaControlTimeDisplayElement : public MediaControlElement { public: - MediaControlTimeDisplayElement(Document*, PseudoId, HTMLMediaElement*); + static PassRefPtr<MediaControlTimeDisplayElement> create(HTMLMediaElement*, PseudoId); + void setVisible(bool); - virtual PassRefPtr<RenderStyle> styleForElement(); void setCurrentValue(float); float currentValue() const { return m_currentValue; } private: + MediaControlTimeDisplayElement(HTMLMediaElement*, PseudoId); + + virtual PassRefPtr<RenderStyle> styleForElement(); float m_currentValue; bool m_isVisible; }; @@ -282,7 +352,8 @@ public: // ---------------------------- - } //namespace WebCore -#endif // enable(video) + +#endif // ENABLE(VIDEO) + #endif // MediaControlElements_h |