/* QGL RendererSelection Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef RENDERER_SELECTION_H #define RENDERER_SELECTION_H #include "renderer_service.h" #include class RendererSelection { friend class QGLView; friend class MouseController; friend class Renderer; friend class RendererService; public: RendererSelection(Renderer * r_); virtual ~RendererSelection(); void init(int width, int height); void resize(int width, int height); protected: enum SelectionBufferRole { sbrSrcHover, sbrSrcSelect, sbrHovered, sbrSelected, sbrHoveredFXAA, sbrSelectedFXAA, }; void generateObjectsID(Scene & scene); void renderSelection(Scene & scene); void renderSelectionFrame(); void drawSelection(Framebuffer & fbo_out, int index_out = 0); private: Renderer * r; Framebuffer fbo_selection; Mesh * sel_frame; float line_thick_, scale_; QVector cur_selections_; QHash ids; QHash aim_ids; uint id_hover; }; #endif // RENDERER_selection_H