Graphics.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 GRAPHICS_H
00030 #define GRAPHICS_H
00031 
00032 
00033 #include ".\Config.h"
00034 #include ".\Pointers.h"
00035 #include ".\util\Color.h"
00036 #include ".\util\Paint.h"
00037 
00038 namespace ui
00039 {
00045     class Graphics
00046     {
00047     public:
00052         Graphics();
00053         
00058         ~Graphics();
00059 
00063         void translate(int x, int y);
00064 
00068         void pushMatrix();
00069 
00073         void popMatrix();
00074 
00080         void setDepth(float newDepth);
00081 
00085         float getDepth();
00086 
00091         void setPaint(const util::Paint* paint);
00092 
00097         void drawRect(int x, int y, int width, int height);
00098 
00103         void fillRect(int x, int y, int width, int height);
00104 
00108         void drawImage(int textureId, int x, int y, int width, int height);
00109 
00113         void drawLine(int x1, int y1, int x2, int y2);
00114 
00115         /*
00116          * Sets the current font.
00117          */
00118         void setFont(Font* f);
00119 
00123         void drawString(int x, int y, std::string str);
00124 
00128         void fillCircle(int x, int y, int radius);
00129 
00135         void setLineWidth(int width);
00136 
00140         bool pushDepth(float d);
00141 
00145         void popDepth(float d);
00146 
00165         void enableScissor(int x, int y, int width, int height);
00166 
00170         void disableScissor();
00171 
00175         void enableBlending();
00176 
00180         void disableBlending();
00181 
00187         void paintUniqueColoredRect(int index, int x, int y, int width, int height);
00188 
00192         void rotate(float degrees);
00193 
00194         bool pushTransparency(float f);
00195         void popTransparency();
00196 
00197         void setTransparency(float f);
00198         float getTransparency();
00199     private:
00203         void applyCurrentColor();
00204 
00205         float getCurrentTransparency();
00206         float depth, transparency;
00207         FloatStack depthStack, transparencyStack;
00208     //  util::Color currentColor;
00209         int currentFont;
00210 
00211         const util::Paint *currentPaint;
00212     };
00213 }
00214 #endif

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