TGUI  0.9.1
Picture.hpp
1 //
3 // TGUI - Texus' Graphical User Interface
4 // Copyright (C) 2012-2021 Bruno Van de Velde (vdv_b@tgui.eu)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 
26 #ifndef TGUI_PICTURE_HPP
27 #define TGUI_PICTURE_HPP
28 
29 
30 #include <TGUI/Widgets/ClickableWidget.hpp>
31 #include <TGUI/Renderers/PictureRenderer.hpp>
32 
34 
35 namespace tgui
36 {
40  class TGUI_API Picture : public ClickableWidget
41  {
42  public:
43 
44  typedef std::shared_ptr<Picture> Ptr;
45  typedef std::shared_ptr<const Picture> ConstPtr;
46 
47 
55  Picture(const char* typeName = "Picture", bool initRenderer = true);
56 
57 
63  static Picture::Ptr create();
64 
65 
85  static Picture::Ptr create(const Texture& texture, bool transparentTexture = false);
86 
87 
97 
98 
104  const PictureRenderer* getSharedRenderer() const;
105 
112  const PictureRenderer* getRenderer() const;
113 
114 
123  void setSize(const Layout2d& size) override;
124  using Widget::setSize;
125 
126 
134  void ignoreMouseEvents(bool ignore = true);
135 
136 
142  bool isIgnoringMouseEvents() const;
143 
144 
151  bool canGainFocus() const override;
152 
153 
160  bool isMouseOnWidget(Vector2f pos) const override;
161 
162 
166  void leftMouseReleased(Vector2f pos) override;
167 
168 
176  void draw(BackendRenderTargetBase& target, RenderStates states) const override;
177 
178 
180  protected:
181 
191  Signal& getSignal(String signalName) override;
192 
193 
195  public:
196 
197  SignalVector2f onDoubleClick = {"DoubleClicked"};
198 
199 
201  protected:
202 
209  void rendererChanged(const String& property) override;
210 
211 
215  std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
216 
217 
221  void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
222 
223 
225  // This function is called every frame with the time passed since the last frame.
227  bool updateTime(Duration elapsedTime) override;
228 
229 
231  // Makes a copy of the widget
233  Widget::Ptr clone() const override
234  {
235  return std::make_shared<Picture>(*this);
236  }
237 
238 
240  protected:
241 
242  Sprite m_sprite;
243 
244  bool m_ignoringMouseEvents = false;
245 
246  // Will be set to true after the first click, but gets reset to false when the second click does not occur soon after
247  bool m_possibleDoubleClick = false;
248  };
249 
251 }
252 
254 
255 #endif // TGUI_PICTURE_HPP
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Clickable widget.
Definition: ClickableWidget.hpp:40
Wrapper for durations.
Definition: Duration.hpp:52
Class to store the position or size of a widget.
Definition: Layout.hpp:262
Definition: PictureRenderer.hpp:37
Picture widget.
Definition: Picture.hpp:41
PictureRenderer * getSharedRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
bool canGainFocus() const override
Returns whether the widget can gain focus.
Signal & getSignal(String signalName) override
Retrieves a signal based on its name.
bool isMouseOnWidget(Vector2f pos) const override
Returns whether the mouse position (which is relative to the parent widget) lies on top of the widget...
std::shared_ptr< const Picture > ConstPtr
Shared constant widget pointer.
Definition: Picture.hpp:45
bool isIgnoringMouseEvents() const
Returns whether the widget is ignoring mouse events and letting them pass to the widgets behind it.
PictureRenderer * getRenderer()
Returns the renderer, which gives access to functions that determine how the widget is displayed.
std::shared_ptr< Picture > Ptr
Shared widget pointer.
Definition: Picture.hpp:44
void rendererChanged(const String &property) override
Function called when one of the properties of the renderer is changed.
std::unique_ptr< DataIO::Node > save(SavingRenderersMap &renderers) const override
Saves the widget as a tree node in order to save it to a file.
void draw(BackendRenderTargetBase &target, RenderStates states) const override
Draw the widget to a render target.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
Definition: Picture.hpp:233
void setSize(const Layout2d &size) override
Changes the size of the picture.
static Picture::Ptr create(const Texture &texture, bool transparentTexture=false)
Creates a new picture widget.
void ignoreMouseEvents(bool ignore=true)
Sets whether the widget should completely ignore mouse events and let them pass to the widgets behind...
void load(const std::unique_ptr< DataIO::Node > &node, const LoadingRenderersMap &renderers) override
Loads the widget from a tree of nodes.
static Picture::Ptr create()
Creates a new empty picture widget.
static Picture::Ptr copy(Picture::ConstPtr picture)
Makes a copy of another picture.
Signal to which the user can subscribe to get callbacks from.
Definition: Signal.hpp:58
Definition: Sprite.hpp:49
Wrapper class to store strings.
Definition: String.hpp:74
Definition: Texture.hpp:48
std::shared_ptr< Widget > Ptr
Shared widget pointer.
Definition: Widget.hpp:73
virtual void setSize(const Layout2d &size)
Changes the size of the widget.
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
States used for drawing.
Definition: RenderStates.hpp:39