KHtml

render_media.h
1 /*
2  * Copyright (C) 2009 Michael Howell <[email protected]>.
3  * Parts copyright (C) 2007, 2008 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
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  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #ifndef render_media_h
28 #define render_media_h
29 
30 #include <phonon/videoplayer.h>
31 #include <rendering/render_replaced.h>
32 #include <html/HTMLMediaElement.h>
33 
34 namespace khtml
35 {
36 
37 class MediaPlayer : public Phonon::VideoPlayer
38 {
39  Q_OBJECT
40 public:
41  inline MediaPlayer(Phonon::Category category, QWidget *parent = nullptr) : Phonon::VideoPlayer(category, parent)
42  {
43  }
44  inline explicit MediaPlayer(QWidget *parent = nullptr) : Phonon::VideoPlayer(parent) {};
45 };
46 
47 class RenderMedia : public RenderWidget
48 {
49  Q_OBJECT
50 public:
51  const char *renderName() const override
52  {
53  return "RenderMedia";
54  }
55  bool isMedia() const override
56  {
57  return true;
58  }
59 
60  void setPlayer(MediaPlayer *player);
61  MediaPlayer *player()
62  {
63  return m_player;
64  }
65  const MediaPlayer *player() const
66  {
67  return m_player;
68  }
69  HTMLMediaElement *mediaElement()
70  {
71  return static_cast<HTMLMediaElement *>(RenderWidget::element());
72  }
73  const HTMLMediaElement *mediaElement() const
74  {
75  return static_cast<const HTMLMediaElement *>(RenderWidget::element());
76  }
77 
78 protected:
79  bool eventFilter(QObject *, QEvent *) override;
80 
81 private Q_SLOTS:
82  void slotMetaDataChanged();
83 
84 private:
85  RenderMedia(HTMLMediaElement *element);
86  void layout() override;
87  void updateFromElement() override;
88  MediaPlayer *m_player;
89  friend class HTMLMediaElement;
90 };
91 
92 } //namespace
93 
94 #endif
This file is part of the HTML rendering engine for KDE.
VideoPlayer(Phonon::Category category, QWidget *parent=nullptr)
Q_OBJECTQ_OBJECT
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Tue Oct 26 2021 22:48:08 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.