Overte C++ Documentation
Overlay.h
1 //
2 // Overlay.h
3 // interface/src/ui/overlays
4 //
5 // Copyright 2014 High Fidelity, Inc.
6 //
7 // Distributed under the Apache License, Version 2.0.
8 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
9 //
10 
11 #ifndef hifi_Overlay_h
12 #define hifi_Overlay_h
13 
14 #include <render/Scene.h>
15 
16 class Overlay : public QObject {
17  Q_OBJECT
18 
19 public:
20  typedef std::shared_ptr<Overlay> Pointer;
21  typedef render::Payload<Overlay> Payload;
22  typedef std::shared_ptr<render::Item::PayloadInterface> PayloadPointer;
23 
24  Overlay();
25  Overlay(const Overlay* overlay);
26 
27  virtual QUuid getID() const { return _id; }
28  virtual void setID(const QUuid& id) { _id = id; }
29 
30  virtual void render(RenderArgs* args) = 0;
31 
32  virtual render::ItemKey getKey();
33  virtual AABox getBounds() const = 0;
34 
35  virtual bool addToScene(Overlay::Pointer overlay, const render::ScenePointer& scene, render::Transaction& transaction);
36  virtual void removeFromScene(Overlay::Pointer overlay, const render::ScenePointer& scene, render::Transaction& transaction);
37 
38  virtual const render::ShapeKey getShapeKey() { return render::ShapeKey::Builder::ownPipeline(); }
39 
40  virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems) const { return 0; }
41 
42  // getters
43  virtual QString getType() const = 0;
44  bool getVisible() const { return _visible; }
45 
46  // setters
47  void setVisible(bool visible) { _visible = visible; }
48  unsigned int getStackOrder() const { return _stackOrder; }
49  void setStackOrder(unsigned int stackOrder) { _stackOrder = stackOrder; }
50 
51  Q_INVOKABLE virtual void setProperties(const QVariantMap& properties) = 0;
52  Q_INVOKABLE virtual Overlay* createClone() const = 0;
53 
54  render::ItemID getRenderItemID() const { return _renderItemID; }
55  void setRenderItemID(render::ItemID renderItemID) { _renderItemID = renderItemID; }
56 
57 protected:
58  render::ItemID _renderItemID { render::Item::INVALID_ITEM_ID };
59 
60  bool _visible { true };
61  unsigned int _stackOrder { 0 };
62 
63 private:
64  QUuid _id;
65 };
66 
67 namespace render {
68  template <> const ItemKey payloadGetKey(const Overlay::Pointer& overlay);
69  template <> const Item::Bound payloadGetBound(const Overlay::Pointer& overlay, RenderArgs* args);
70  template <> void payloadRender(const Overlay::Pointer& overlay, RenderArgs* args);
71  template <> const ShapeKey shapeGetShapeKey(const Overlay::Pointer& overlay);
72  template <> uint32_t metaFetchMetaSubItems(const Overlay::Pointer& overlay, ItemIDs& subItems);
73 }
74 
75 #endif // hifi_Overlay_h