ADTF Display Toolbox
Loading...
Searching...
No Matches
drawer_manager.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <adtf_base.h>
12
13#include <memory>
14
15namespace adtf
16{
17
18namespace disptb
19{
20
21namespace drawerlib
22{
23
24namespace dengar
25{
32class cDrawerManager : public ucom::catwo::object<IDrawerManager>
33{
34public:
38 cDrawerManager() = default;
39
43 virtual ~cDrawerManager() = default;
44
50 tResult RegisterManagedDrawer(dengar::IDrawer* pDrawer) override
51 {
52 RETURN_IF_POINTER_NULL(pDrawer);
53 const auto it = std::find(std::cbegin(m_oRegisteredDrawers), std::cend(m_oRegisteredDrawers), pDrawer);
54
55 // Check if the drawer is already registered
56 if (it != std::cend(m_oRegisteredDrawers))
57 {
58 RETURN_NOERROR;
59 }
60
61 // insert it at the right position to respect the Z order
62 auto itInsert = std::cbegin(m_oRegisteredDrawers);
63 while (itInsert != std::cend(m_oRegisteredDrawers) && (*itInsert)->GetZOrder() <= pDrawer->GetZOrder())
64 {
65 ++itInsert;
66 }
67
68 m_oRegisteredDrawers.insert(itInsert, pDrawer);
69 RETURN_NOERROR;
70 }
71
76 const std::vector<dengar::IDrawer*>& GetOrderedDrawerList() const
77 {
78 // TODO GetOrderedDrawerList + RegisterManagedDrawer is not threadsafe, and can't be by interface either due to
79 // reference!
81 }
82
87 tBool HasChildren() const
88 {
89 return !m_oRegisteredDrawers.empty();
90 }
91
95 void Clear()
96 {
98 }
99
100private:
104 std::vector<dengar::IDrawer*> m_oRegisteredDrawers;
105};
106
107} // namespace dengar
108
110
111} // namespace drawerlib
112} // namespace disptb
113} // namespace adtf
ADTF 2D Display Drawer interface.
Definition drawer_intf.h:31
virtual tInt GetZOrder() const =0
The ZOrder defines the order of drawing the objects, if they are in the same coordinate space level.
ADTF 2D Display drawer manger class.
tBool HasChildren() const
Check for children.
std::vector< dengar::IDrawer * > m_oRegisteredDrawers
vector containing pointers to all registered drawers aka the children
const std::vector< dengar::IDrawer * > & GetOrderedDrawerList() const
Use this function to get a vector of all registered drawers in their correct order.
virtual ~cDrawerManager()=default
Destructor.
tResult RegisterManagedDrawer(dengar::IDrawer *pDrawer) override
Register a Drawer with this functions.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Namespace for functionality provided by the Display Toolbox.
Main namespace.