X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Foverlay.h;fp=source%2F3d%2Foverlay.h;h=0a9a0223efad695ae266187cea6416e890673925;hb=a861c2729a356173059177a0b800de2b31c9b49c;hp=0000000000000000000000000000000000000000;hpb=e07c0d862a4d43b2585c93e79d25380d00675309;p=r2c2.git diff --git a/source/3d/overlay.h b/source/3d/overlay.h new file mode 100644 index 0000000..0a9a022 --- /dev/null +++ b/source/3d/overlay.h @@ -0,0 +1,60 @@ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2010 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + +#ifndef MARKLIN3D_OVERLAY_H_ +#define MARKLIN3D_OVERLAY_H_ + +#include +#include +#include +#include +#include + +namespace Marklin { + +class Track3D; + +class Overlay3D: public Msp::GL::Renderable +{ +private: + struct Icon + { + std::vector graphics; + std::string label; + float width; + Msp::GL::Mesh background; + + Icon(); + }; + + const Msp::Graphics::Window &window; + const Msp::GL::Camera &camera; + const Msp::GL::Font &font; + std::map graphics; + std::map icons; + +public: + Overlay3D(const Msp::Graphics::Window &, const Msp::GL::Camera &, const Msp::GL::Font &); + ~Overlay3D(); + + void set_label(const Track3D &, const std::string &); + void add_graphic(const Track3D &, const std::string &); + void remove_graphic(const Track3D &, const std::string &); + void clear_graphics(const Track3D &); + void clear(const Track3D &); + + virtual void render(const Msp::GL::Tag &) const; + +private: + Icon &get_icon(const Track3D &); + const Msp::GL::Mesh *get_graphic(const std::string &); + void update_icon(Icon &); +}; + +} // namespace Marklin + +#endif