diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-06 15:06:26 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-06 15:06:26 (GMT) |
| commit | adc9cc08167946927fa21f86d70ce0a0b9630baa (patch) | |
| tree | 009ec84f4398cac18d89283bc6d80193085b39af /src/OpenGLGraphics.cpp | |
| parent | 94c9603d0ce7597cfe987bf211610ca7d325ddaa (diff) | |
| download | powder-adc9cc08167946927fa21f86d70ce0a0b9630baa.zip powder-adc9cc08167946927fa21f86d70ce0a0b9630baa.tar.gz | |
Move graphics into seperate folder
Diffstat (limited to 'src/OpenGLGraphics.cpp')
| -rw-r--r-- | src/OpenGLGraphics.cpp | 401 |
1 files changed, 0 insertions, 401 deletions
diff --git a/src/OpenGLGraphics.cpp b/src/OpenGLGraphics.cpp deleted file mode 100644 index b6f8f2a..0000000 --- a/src/OpenGLGraphics.cpp +++ /dev/null @@ -1,401 +0,0 @@ -#include "Graphics.h" -#include "font.h" - -#ifdef OGLI - -Graphics::Graphics(): -sdl_scale(1) -{ - Reset(); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - //Texture for main UI - glEnable(GL_TEXTURE_2D); - - glGenTextures(1, &vidBuf); - glBindTexture(GL_TEXTURE_2D, vidBuf); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, XRES+BARSIZE, YRES+MENUSIZE, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL); - - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); - - glBindTexture(GL_TEXTURE_2D, 0); - - glGenTextures(1, &textTexture); - glBindTexture(GL_TEXTURE_2D, textTexture); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glBindTexture(GL_TEXTURE_2D, 0); - - glDisable(GL_TEXTURE_2D); -} - -Graphics::~Graphics() -{ -} - -void Graphics::Reset() -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - //glOrtho(0, (XRES+BARSIZE)*sdl_scale, 0, (YRES+MENUSIZE)*sdl_scale, -1, 1); - glOrtho(0, (XRES+BARSIZE)*sdl_scale, (YRES+MENUSIZE)*sdl_scale, 0, -1, 1); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - //glRasterPos2i(0, (YRES+MENUSIZE)); - glRasterPos2i(0, 0); - glPixelZoom(1, 1); -} - -void Graphics::Clear() -{ - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); -} - -void Graphics::Finalise() -{ - glFlush(); -} - -int Graphics::drawtext(int x, int y, const char *s, int r, int g, int b, int a) -{ - if(!strlen(s)) - return 0; - int oR = r, oG = g, oB = b; - int width, height; - Graphics::textsize(s, width, height); - VideoBuffer texture(width, height); - int characterX = 0, characterY = 0; - int startX = characterX; - for (; *s; s++) - { - if (*s == '\n') - { - characterX = startX; - characterY += FONT_H+2; - } - else if (*s == '\x0F') - { - if(!s[1] || !s[2] || !s[3]) break; - r = s[1]; - g = s[2]; - b = s[3]; - s += 3; - } - else if (*s == '\x0E') - { - r = oR; - g = oG; - b = oB; - } - else if (*s == '\b') - { - if(!s[1]) break; - switch (s[1]) - { - case 'w': - r = g = b = 255; - break; - case 'g': - r = g = b = 192; - break; - case 'o': - r = 255; - g = 216; - b = 32; - break; - case 'r': - r = 255; - g = b = 0; - break; - case 'l': - r = 255; - g = b = 75; - break; - case 'b': - r = g = 0; - b = 255; - break; - case 't': - b = 255; - g = 170; - r = 32; - break; - } - s++; - } - else - { - characterX = texture.SetCharacter(characterX, characterY, *(unsigned char *)s, r, g, b, a); - } - } - glEnable(GL_TEXTURE_2D); - - //Generate texture - glBindTexture(GL_TEXTURE_2D, textTexture); - - //Draw texture - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture.Width, texture.Height, 0, GL_BGRA, GL_UNSIGNED_BYTE, texture.Buffer); - - //glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture.Width, texture.Height, GL_BGRA, GL_UNSIGNED_BYTE, texture.Buffer); - glBegin(GL_QUADS); - glTexCoord2d(0, 0); - glVertex2f(x, y); - glTexCoord2d(1, 0); - glVertex2f(x+texture.Width, y); - glTexCoord2d(1, 1); - glVertex2f(x+texture.Width, y+texture.Height); - glTexCoord2d(0, 1); - glVertex2f(x, y+texture.Height); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); - - return x; -} - -int Graphics::drawtext(int x, int y, std::string s, int r, int g, int b, int a) -{ - return drawtext(x, y, s.c_str(), r, g, b, a); -} - -TPT_INLINE int Graphics::drawchar(int x, int y, int c, int r, int g, int b, int a) -{ - int i, j, w, bn = 0, ba = 0; - char *rp = font_data + font_ptrs[c]; - w = *(rp++); - VideoBuffer texture(w, 12); - texture.SetCharacter(0, 0, c, r, g, b, a); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, textTexture); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture.Width, texture.Height, 0, GL_BGRA, GL_UNSIGNED_BYTE, texture.Buffer); - glBegin(GL_QUADS); - glTexCoord2d(0, 0); - glVertex2f(x, y); - glTexCoord2d(1, 0); - glVertex2f(x+texture.Width, y); - glTexCoord2d(1, 1); - glVertex2f(x+texture.Width, y+texture.Height); - glTexCoord2d(0, 1); - glVertex2f(x, y+texture.Height); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); - - return x + w; -} - -TPT_INLINE int Graphics::addchar(int x, int y, int c, int r, int g, int b, int a) -{ - int i, j, w, bn = 0, ba = 0; - char *rp = font_data + font_ptrs[c]; - w = *(rp++); - VideoBuffer texture(w, 12); - texture.AddCharacter(0, 0, c, r, g, b, a); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, textTexture); - glBlendFunc(GL_ONE, GL_ONE); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture.Width, texture.Height, 0, GL_BGRA, GL_UNSIGNED_BYTE, texture.Buffer); - glBegin(GL_QUADS); - glTexCoord2d(0, 0); - glVertex2f(x, y); - glTexCoord2d(1, 0); - glVertex2f(x+texture.Width, y); - glTexCoord2d(1, 1); - glVertex2f(x+texture.Width, y+texture.Height); - glTexCoord2d(0, 1); - glVertex2f(x, y+texture.Height); - glEnd(); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); - - return x + w; -} - -TPT_INLINE void Graphics::xor_pixel(int x, int y) -{ - //OpenGL doesn't support single pixel manipulation, there are ways around it, but with poor performance -} - -TPT_INLINE void Graphics::blendpixel(int x, int y, int r, int g, int b, int a) -{ - //OpenGL doesn't support single pixel manipulation, there are ways around it, but with poor performance -} - -TPT_INLINE void Graphics::addpixel(int x, int y, int r, int g, int b, int a) -{ - //OpenGL doesn't support single pixel manipulation, there are ways around it, but with poor performance -} - -void Graphics::xor_line(int x, int y, int x2, int y2) -{ - glEnable(GL_COLOR_LOGIC_OP); - //glEnable(GL_LINE_SMOOTH); - glLogicOp(GL_XOR); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glBegin(GL_LINES); - glVertex2i(x, y); - glVertex2i(x2, y2); - glEnd(); - glDisable(GL_COLOR_LOGIC_OP); -} - -void Graphics::xor_rect(int x, int y, int width, int height) -{ - glEnable(GL_COLOR_LOGIC_OP); - //glEnable(GL_LINE_SMOOTH); - glLogicOp(GL_XOR); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glBegin(GL_LINE_STRIP); - glVertex2i(x, y); - glVertex2i(x+width, y); - glVertex2i(x+width, y+height); - glVertex2i(x, y+height); - glVertex2i(x, y); - glEnd(); - glDisable(GL_COLOR_LOGIC_OP); -} - -void Graphics::xor_bitmap(unsigned char * bitmap, int x, int y, int w, int h) -{ - //glEnable(GL_COLOR_LOGIC_OP); - //glLogicOp(GL_XOR); - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, textTexture); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, w, h, 0, GL_ALPHA, GL_UNSIGNED_BYTE, bitmap); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - - glBegin(GL_QUADS); - glTexCoord2d(0, 0); - glVertex2f(x, y); - glTexCoord2d(1, 0); - glVertex2f(x+w, y); - glTexCoord2d(1, 1); - glVertex2f(x+w, y+h); - glTexCoord2d(0, 1); - glVertex2f(x, y+h); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); - //glDisable(GL_COLOR_LOGIC_OP); -} - -void Graphics::draw_line(int x, int y, int x2, int y2, int r, int g, int b, int a) -{ - a = 255; - glColor4ub(r, g, b, a); - glBegin(GL_LINES); - glVertex2i(x, y); - glVertex2i(x2, y2); - glEnd(); -} - -void Graphics::drawrect(int x, int y, int width, int height, int r, int g, int b, int a) -{ - float fx = float(x)+0.5f; - float fy = float(y)+0.5f; - float fwidth = width-1.0f; - float fheight = height-1.0f; - //x++; - //y++; - //height-=2; - //width-=2; - glColor4ub(r, g, b, a); - glBegin(GL_LINE_STRIP); - glVertex2f(fx, fy); - glVertex2f(fx+fwidth, fy); - glVertex2f(fx+fwidth, fy+fheight); - glVertex2f(fx, fy+fheight); //+1 is a hack to prevent squares from missing their corners, will make smoothed lines look like SHIT - glVertex2f(fx, fy); - glEnd(); -} - -void Graphics::fillrect(int x, int y, int width, int height, int r, int g, int b, int a) -{ - /*x++; - y++; - width-=1; - height-=1;*/ - - glColor4ub(r, g, b, a); - glBegin(GL_QUADS); - glVertex2i(x, y); - glVertex2i(x+width, y); - glVertex2i(x+width, y+height); - glVertex2i(x, y+height); - glEnd(); -} - -void Graphics::gradientrect(int x, int y, int width, int height, int r, int g, int b, int a, int r2, int g2, int b2, int a2) -{ - glBegin(GL_QUADS); - glColor4ub(r, g, b, a); - glVertex2i(x, y); - glColor4ub(r2, g2, b2, a2); - glVertex2i(x+width, y); - glColor4ub(r2, g2, b2, a2); - glVertex2i(x+width, y+height); - glColor4ub(r, g, b, a); - glVertex2i(x, y+height); - glEnd(); -} - -void Graphics::clearrect(int x, int y, int width, int height) -{ - glColor4ub(0, 0, 0, 255); - glBegin(GL_QUADS); - glVertex2i(x, y); - glVertex2i(x+width, y); - glVertex2i(x+width, y+height); - glVertex2i(x, y+height); - glEnd(); -} - -void Graphics::draw_image(pixel *img, int x, int y, int w, int h, int a) -{ - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, textTexture); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, img); - glBegin(GL_QUADS); - glTexCoord2d(0, 0); - glVertex2f(x, y); - glTexCoord2d(1, 0); - glVertex2f(x+w, y); - glTexCoord2d(1, 1); - glVertex2f(x+w, y+h); - glTexCoord2d(0, 1); - glVertex2f(x, y+h); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); -} - -#endif |
