SelectionManager.h

00001 /*
00002  * Copyright (c) 2003-2005, Bram Stein
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without 
00006  * modification, are permitted provided that the following conditions 
00007  * are met:
00008  * 
00009  *  1. Redistributions of source code must retain the above copyright
00010  *     notice, this list of conditions and the following disclaimer. 
00011  *  2. Redistributions in binary form must reproduce the above copyright 
00012  *     notice, this list of conditions and the following disclaimer in the 
00013  *     documentation and/or other materials provided with the distribution. 
00014  *  3. The name of the author may not be used to endorse or promote products 
00015  *     derived from this software without specific prior written permission. 
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 
00018  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
00019  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 
00020  * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
00021  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
00022  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
00023  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
00024  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
00025  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
00026  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027  */
00028 #pragma once
00029 #ifndef SELECTIONMANAGER_H
00030 #define SELECTIONMANAGER_H
00031 
00032 #include ".\Pointers.h"
00033 #include ".\config.h"
00034 
00035 namespace ui
00036 {
00058     class SelectionManager
00059     {
00060     public:
00061         enum RENDERMODE
00062         {
00066             NORMAL,
00070             SELECTION
00071         };
00072 
00080         void setRenderMode(int m);
00081 
00085         int getRenderMode() const;
00086 
00094         void addComponent(Component* comp);
00095 
00101         void removeComponent(Component* comp);
00102 
00110         int getComponentId(Component* comp) const;
00111 
00112 
00117         void beginUpdate(int x, int y);
00118 
00123         Component* getComponentAt(int x, int y) const;
00124 
00129         void mouseMotion(int x, int y);
00130         
00135         void mousePressed(int button);
00136         
00141         void mouseReleased(int button);
00142 
00146         static SelectionManager& getInstance()
00147         {
00148             static SelectionManager obj;
00149             return obj;
00150         }
00151     private:
00152         SelectionManager();
00153         ~SelectionManager();
00154         SelectionManager(const SelectionManager&);
00155         SelectionManager& operator=(const SelectionManager&);
00156 
00157         class IntegerColor
00158         {
00159         public:
00160             IntegerColor(int r, int g, int b) : red(r), green(g), blue(b) {};
00161             int red;
00162             int green;
00163             int blue;
00164         };
00165 
00166         class ColorRegisterValue
00167         {
00168         public:
00169             ColorRegisterValue() : color(0,0,0), textureColor(0,0,0) {};
00170             int index;
00171             Component *comp;
00172             IntegerColor color;
00173             IntegerColor textureColor;
00174         };
00175 
00176         std::vector<ColorRegisterValue> colorRegister;
00177 
00178         //std::vector< std::pair<int, Component*> > pickingList;
00179         //std::vector< std::pair<util::Color, util::Color> > colorRegister;
00180         int idCounter;
00181         int mode;
00182         Component* foundComponent,*tempComponent, *hoverOverComponent;
00183         bool pressed;
00184         int buttonPressed;
00185         int mouseX, mouseY;
00186         int lastX, lastY;
00187 
00188         static const int textureWidth = 64;
00189         static const int textureHeight = 64;
00190         GLubyte texture[textureWidth][textureHeight][3];
00191         GLuint textureId;
00192     };
00193 }
00194 
00195 #endif

Generated on Mon Jun 20 19:41:34 2005 for UI by doxygen 1.3.1 using KingsTools