| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include "lc_overlaysmanager.h" |
| |
|
| | #include "lc_overlayentitiescontainer.h" |
| | #include "rs_entitycontainer.h" |
| |
|
| | LC_OverlaysManager::LC_OverlaysManager() { |
| | for (int i = 0; i < RS2::OverlayGraphics::LAST; i++){ |
| | overlays[i] = nullptr; |
| | } |
| | for (int i = 0; i < RS2::OverlayGraphics::LAST; i++){ |
| | entities[i] = nullptr; |
| | } |
| | } |
| |
|
| | LC_OverlaysManager::~LC_OverlaysManager() { |
| | for (auto & e : overlays){ |
| | delete e; |
| | } |
| | for (auto & e : entities){ |
| | delete e; |
| | } |
| | } |
| |
|
| | void LC_OverlaysManager::setGraphic(RS_Graphic *g) { |
| | graphic = g; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class OverlayEntityContainer:public RS_EntityContainer { |
| | public: |
| | explicit OverlayEntityContainer(RS_Graphic *g):RS_EntityContainer(nullptr) { |
| | graphic = g; |
| | } |
| |
|
| | RS_Graphic *getGraphic() const override { |
| | return graphic; |
| | } |
| |
|
| | RS_Graphic *graphic; |
| | }; |
| |
|
| |
|
| | RS_EntityContainer *LC_OverlaysManager::getEntitiesContainer(RS2::OverlayGraphics position) { |
| | RS_EntityContainer* result = entities[position]; |
| | if (result != nullptr) { |
| | return result; |
| | } |
| | if (position == RS2::OverlayGraphics::OverlayEffects) { |
| | entities[position] = new OverlayEntityContainer(graphic); |
| | } else { |
| | entities[position] = new RS_EntityContainer(nullptr); |
| | } |
| | if (position == RS2::OverlayEffects) { |
| | entities[position]->setOwner(true); |
| | } |
| | return entities[position]; |
| | } |
| |
|
| | LC_OverlayDrawablesContainer *LC_OverlaysManager::getDrawablesContainer(RS2::OverlayGraphics position) { |
| | LC_OverlayDrawablesContainer* container = overlays[position]; |
| | if (container == nullptr) { |
| | container = new LC_OverlayDrawablesContainer(); |
| | overlays[position] = container; |
| | } |
| | return container; |
| | } |
| |
|
| | RS_EntityContainer *LC_OverlaysManager::entitiesAt(RS2::OverlayGraphics position) { |
| | return entities[position]; |
| | } |
| |
|
| | void LC_OverlaysManager::addOverlay(LC_OverlayDrawable *ent, RS2::OverlayGraphics position) { |
| | LC_OverlayDrawablesContainer* container = overlays[position]; |
| | if (container == nullptr) { |
| | container = new LC_OverlayDrawablesContainer(); |
| | overlays[position] = container; |
| | } |
| | container->add(ent); |
| | } |
| |
|
| | LC_OverlayDrawablesContainer *LC_OverlaysManager::drawablesAt(RS2::OverlayGraphics position) { |
| | return overlays[position]; |
| | } |
| |
|