NAP
rendertag.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // External Includes
8 #include <nap/device.h>
9 #include <nap/resourceptr.h>
10 #include <nap/numeric.h>
11 #include <nap/group.h>
12 #include <rtti/typeinfo.h>
13 #include <string>
14 #include <vector>
15 
16 namespace nap
17 {
18  // Forward declares
19  class RenderService;
20  class Core;
21 
22  // RenderMask definition, supports up to 64 different tags
23  using RenderMask = uint64;
24 
25  namespace mask
26  {
27  // Includes every tag
28  constexpr RenderMask all = std::numeric_limits<RenderMask>::max();
29 
30  // No tag provided
31  constexpr RenderMask none = 0;
32  }
33 
51  class NAPAPI RenderTag : public Device
52  {
53  friend class RenderService;
54  RTTI_ENABLE(Device)
55  public:
56  RenderTag(Core& core);
57  virtual ~RenderTag() = default;
58 
62  virtual bool start(utility::ErrorState& errorState) override;
63 
67  virtual void stop() override;
68 
81  RenderMask getMask() const;
82 
95  RenderMask operator|(const RenderTag& other) const { return this->getMask() | other.getMask(); }
96 
102  RenderMask operator|(RenderMask other) const { return other | this->getMask(); }
103 
107  operator RenderMask() const { return this->getMask(); }
108 
109  std::string mName;
110 
111  private:
112  RenderService& mRenderService;
113  };
114 
115  // RenderTagGroup definition
117 }
nap::RenderTag::getMask
RenderMask getMask() const
nap::RenderTag
Definition: rendertag.h:51
nap::RenderTag::operator|
RenderMask operator|(RenderMask other) const
Definition: rendertag.h:102
nap::uint64
uint64_t uint64
Definition: numeric.h:22
nap::mask::none
constexpr RenderMask none
Definition: rendertag.h:31
nap::RenderTag::mName
std::string mName
Property: 'Name' The tag name.
Definition: rendertag.h:109
nap::utility::ErrorState
Definition: errorstate.h:19
nap::RenderMask
uint64 RenderMask
Definition: rendertag.h:23
nap::RenderTag::operator|
RenderMask operator|(const RenderTag &other) const
Definition: rendertag.h:95
nap::RenderService
Definition: renderservice.h:275
nap::Core
Definition: core.h:82
nap::mask::all
constexpr RenderMask all
Definition: rendertag.h:28
nap
Definition: templateapp.h:17
nap::Group
Definition: group.h:83
nap::Device
Definition: device.h:20