summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/Makefile.am2
-rw-r--r--include/glcolor.h18
-rw-r--r--include/glfont.h14
-rw-r--r--include/glshape.h26
-rw-r--r--include/sprite.h4
-rw-r--r--lib/Makefile.am4
-rw-r--r--lib/glcolor.cc13
-rw-r--r--lib/glfont.cc8
-rw-r--r--lib/glshape.cc24
-rw-r--r--lib/sprite.cc2
10 files changed, 73 insertions, 42 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 0aa8482..283156d 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,4 +1,4 @@
pkginclude_HEADERS = \
-engine.h glbase.h glfont.h gltexture.h glshape.h glwidgets.h sprite.h
+engine.h glbase.h glcolor.h glfont.h gltexture.h glshape.h glwidgets.h sprite.h
noinst_HEADERS = gettext.h
diff --git a/include/glcolor.h b/include/glcolor.h
new file mode 100644
index 0000000..8296451
--- /dev/null
+++ b/include/glcolor.h
@@ -0,0 +1,18 @@
+#ifndef __GLCOLOR_H__
+#define __GLCOLOR_H__
+
+#include <Exceptions.h>
+#include <Color.h>
+
+namespace mogltk {
+ class ColorP : public Base {
+ public:
+ ColorP(const Color &);
+ ColorP(Uint8, Uint8, Uint8, Uint8);
+ void Bind();
+ private:
+ Color c;
+ };
+};
+
+#endif
diff --git a/include/glfont.h b/include/glfont.h
index 4ace74a..991024e 100644
--- a/include/glfont.h
+++ b/include/glfont.h
@@ -4,24 +4,24 @@
#include <SDL.h>
#include <stdarg.h>
#include <BString.h>
-#include <Color.h>
#include <Handle.h>
-#include "gltexture.h"
+#include <gltexture.h>
+#include <glcolor.h>
namespace mogltk {
class font : public Base {
public:
font(Handle *);
virtual ~font();
- void drawentry(Uint16, int, int, Color = Color(255, 255, 255, 255));
+ void drawentry(Uint16, int, int, ColorP = WHITE);
void putcursor(int, int);
- void putentry(Uint16, Color = Color(255, 255, 255, 255));
- void putchar(char, Color = Color(255, 255, 255, 255));
+ void putentry(Uint16, ColorP = WHITE);
+ void putchar(char, ColorP = WHITE);
void newline(void);
int printf(const ugly_string &, ...);
int printf(const char *, ...);
int printf(const ugly_string &, va_list);
- void setcolor(Color);
+ void setcolor(ColorP);
void setshadow(int);
int getchar(char) const;
int singletextsize(const String &) const;
@@ -34,7 +34,7 @@ namespace mogltk {
Uint16 * corresp;
void Bind(int);
int cx, cy, ox;
- Color textcolor;
+ ColorP textcolor;
int shadow;
};
extern font * SystemFont;
diff --git a/include/glshape.h b/include/glshape.h
index cd9fef0..a0c7bf2 100644
--- a/include/glshape.h
+++ b/include/glshape.h
@@ -2,24 +2,24 @@
#define __GLSHAPE_H__
#include <Exceptions.h>
-#include <Color.h>
+#include <glcolor.h>
#include <gltexture.h>
namespace mogltk {
class shape : public Base {
public:
- static void box(int x1, int y1, int x2, int y2, Color = WHITE);
- static void box(int x1, int y1, int x2, int y2, Color, Color, Color, Color);
- static void obox(int x1, int y1, int x2, int y2, Color = WHITE);
- static void obox(int x1, int y1, int x2, int y2, Color, Color, Color, Color);
- static void tbox(texture *, int x1, int y1, int x2, int y2, int tx = 0, int ty = 0, double = 1.0, Color = WHITE);
- static void tbox(texture *, int x1, int y1, int x2, int y2, int tx1, int ty1, int tx2, int ty2, Color = WHITE);
- static void tbox(texture *, int x1, int y1, int x2, int y2, Color, Color, Color, Color, int tx = 0, int ty = 0, double = 1.0);
- static void tbox(texture *, int x1, int y1, int x2, int y2, Color, Color, Color, Color, int tx1, int ty1, int tx2, int ty2);
- static void hline(int x1, int x2, int y, Color = WHITE);
- static void hline(int x1, int x2, int y, Color, Color);
- static void vline(int x, int y1, int y2, Color = WHITE);
- static void vline(int x, int y1, int y2, Color, Color);
+ static void box(int x1, int y1, int x2, int y2, ColorP = WHITE);
+ static void box(int x1, int y1, int x2, int y2, ColorP, ColorP, ColorP, ColorP);
+ static void obox(int x1, int y1, int x2, int y2, ColorP = WHITE);
+ static void obox(int x1, int y1, int x2, int y2, ColorP, ColorP, ColorP, ColorP);
+ static void tbox(texture *, int x1, int y1, int x2, int y2, int tx = 0, int ty = 0, double = 1.0, ColorP = WHITE);
+ static void tbox(texture *, int x1, int y1, int x2, int y2, int tx1, int ty1, int tx2, int ty2, ColorP = WHITE);
+ static void tbox(texture *, int x1, int y1, int x2, int y2, ColorP, ColorP, ColorP, ColorP, int tx = 0, int ty = 0, double = 1.0);
+ static void tbox(texture *, int x1, int y1, int x2, int y2, ColorP, ColorP, ColorP, ColorP, int tx1, int ty1, int tx2, int ty2);
+ static void hline(int x1, int x2, int y, ColorP = WHITE);
+ static void hline(int x1, int x2, int y, ColorP, ColorP);
+ static void vline(int x, int y1, int y2, ColorP = WHITE);
+ static void vline(int x, int y1, int y2, ColorP, ColorP);
private:
static bool in2D(bool);
static void out2D(bool);
diff --git a/include/sprite.h b/include/sprite.h
index fbc50ff..16565d0 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -4,7 +4,7 @@
#include <vector>
#include <Exceptions.h>
#include <Handle.h>
-#include <Color.h>
+#include <glcolor.h>
#include "gltexture.h"
namespace mogltk {
@@ -13,7 +13,7 @@ namespace mogltk {
Sprite(Handle *, int, int);
Sprite(Uint8 *, int, int);
virtual ~Sprite();
- void draw(int, int, Color = WHITE);
+ void draw(int, int, ColorP = WHITE);
private:
class TexList : public Base {
public:
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 269a346..a13b4c3 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -5,6 +5,6 @@ LIBS = @SDL_LIBS@ @BALTISOT_LIBS@
INCLUDES = -I.. -I../include -I$(includedir)
lib_LTLIBRARIES = libmogltk.la
-libmogltk_la_SOURCES = engine.cc glbase.cc glfont.cc gltexture.cc glshape.cc \
-glwidgets.cc sprite.cc
+libmogltk_la_SOURCES = engine.cc glbase.cc glcolor.cc glfont.cc gltexture.cc \
+glshape.cc glwidgets.cc sprite.cc
diff --git a/lib/glcolor.cc b/lib/glcolor.cc
new file mode 100644
index 0000000..23ade75
--- /dev/null
+++ b/lib/glcolor.cc
@@ -0,0 +1,13 @@
+#include <SDL_opengl.h>
+#include "glcolor.h"
+
+mogltk::ColorP::ColorP(const Color & ac) : c(ac) {
+}
+
+mogltk::ColorP::ColorP(Uint8 ar, Uint8 ag, Uint8 ab, Uint8 aa) : c(ar, ag, ab, aa) {
+}
+
+void mogltk::ColorP::Bind() {
+ glColor4d((double) c.R / 255, (double) c.G / 255, (double) c.B / 255, (double) c.A / 255);
+}
+
diff --git a/lib/glfont.cc b/lib/glfont.cc
index 5cb1646..d8dbb5b 100644
--- a/lib/glfont.cc
+++ b/lib/glfont.cc
@@ -160,7 +160,7 @@ mogltk::font::~font() {
free(sizes);
}
-void mogltk::font::drawentry(Uint16 entry, int x, int y, Color c) {
+void mogltk::font::drawentry(Uint16 entry, int x, int y, ColorP c) {
bool was2D;
int trueentry, cx, cy, px, py;
@@ -208,12 +208,12 @@ void mogltk::font::putcursor(int x, int y) {
cy = y;
}
-void mogltk::font::putentry(Uint16 entry, Color c) {
+void mogltk::font::putentry(Uint16 entry, ColorP c) {
drawentry(entry, cx, cy, c);
cx += sizes[entry];
}
-void mogltk::font::putchar(char ch, Color c) {
+void mogltk::font::putchar(char ch, ColorP c) {
Uint16 * p;
int i;
@@ -290,7 +290,7 @@ int mogltk::font::printf(const char * p, ...) {
return r;
}
-void mogltk::font::setcolor(Color c) {
+void mogltk::font::setcolor(ColorP c) {
textcolor = c;
}
diff --git a/lib/glshape.cc b/lib/glshape.cc
index cad1e36..6d88a15 100644
--- a/lib/glshape.cc
+++ b/lib/glshape.cc
@@ -7,7 +7,7 @@
#define ENTERT bool was2d = in2D(false)
#define LEAVE out2D(was2d)
-void mogltk::shape::box(int x1, int y1, int x2, int y2, Color c) {
+void mogltk::shape::box(int x1, int y1, int x2, int y2, ColorP c) {
ENTER;
c.Bind();
@@ -21,7 +21,7 @@ void mogltk::shape::box(int x1, int y1, int x2, int y2, Color c) {
LEAVE;
}
-void mogltk::shape::box(int x1, int y1, int x2, int y2, Color c1, Color c2, Color c3, Color c4) {
+void mogltk::shape::box(int x1, int y1, int x2, int y2, ColorP c1, ColorP c2, ColorP c3, ColorP c4) {
ENTER;
glBegin(GL_TRIANGLE_STRIP);
@@ -34,23 +34,23 @@ void mogltk::shape::box(int x1, int y1, int x2, int y2, Color c1, Color c2, Colo
LEAVE;
}
-void mogltk::shape::hline(int x1, int x2, int y, Color c) {
+void mogltk::shape::hline(int x1, int x2, int y, ColorP c) {
box(x1, y, x2, y, c);
}
-void mogltk::shape::vline(int x, int y1, int y2, Color c) {
+void mogltk::shape::vline(int x, int y1, int y2, ColorP c) {
box(x, y1, x, y2, c);
}
-void mogltk::shape::hline(int x1, int x2, int y, Color c1, Color c2) {
+void mogltk::shape::hline(int x1, int x2, int y, ColorP c1, ColorP c2) {
box(x1, y, x2, y, c1, c2, c1, c2);
}
-void mogltk::shape::vline(int x, int y1, int y2, Color c1, Color c2) {
+void mogltk::shape::vline(int x, int y1, int y2, ColorP c1, ColorP c2) {
box(x, y1, x, y2, c1, c1, c2, c2);
}
-void mogltk::shape::obox(int x1, int y1, int x2, int y2, Color c) {
+void mogltk::shape::obox(int x1, int y1, int x2, int y2, ColorP c) {
ENTER;
hline(x1, x2, y1, c);
hline(x1, x2, y2, c);
@@ -59,7 +59,7 @@ void mogltk::shape::obox(int x1, int y1, int x2, int y2, Color c) {
LEAVE;
}
-void mogltk::shape::obox(int x1, int y1, int x2, int y2, Color c1, Color c2, Color c3, Color c4) {
+void mogltk::shape::obox(int x1, int y1, int x2, int y2, ColorP c1, ColorP c2, ColorP c3, ColorP c4) {
ENTER;
hline(x1, x2, y1, c1, c2);
hline(x1, x2, y2, c3, c4);
@@ -68,15 +68,15 @@ void mogltk::shape::obox(int x1, int y1, int x2, int y2, Color c1, Color c2, Col
LEAVE;
}
-void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, int tx, int ty, double f, Color c) {
+void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, int tx, int ty, double f, ColorP c) {
tbox(t, x1, y1, x2, y2, tx, ty, tx + (x2 - x1) * f, ty + (y2 - y1) * f, c);
}
-void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, Color c1, Color c2, Color c3, Color c4, int tx, int ty, double f) {
+void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, ColorP c1, ColorP c2, ColorP c3, ColorP c4, int tx, int ty, double f) {
tbox(t, x1, y1, x2, y2, c1, c2, c3, c4, tx, ty, tx + (x2 - x1) * f, ty + (y2 - y1) * f);
}
-void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, int tx1, int ty1, int tx2, int ty2, Color c) {
+void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, int tx1, int ty1, int tx2, int ty2, ColorP c) {
ENTERT;
c.Bind();
@@ -91,7 +91,7 @@ void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, in
LEAVE;
}
-void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, Color c1, Color c2, Color c3, Color c4, int tx1, int ty1, int tx2, int ty2) {
+void mogltk::shape::tbox(mogltk::texture * t, int x1, int y1, int x2, int y2, ColorP c1, ColorP c2, ColorP c3, ColorP c4, int tx1, int ty1, int tx2, int ty2) {
ENTERT;
t->Bind();
diff --git a/lib/sprite.cc b/lib/sprite.cc
index 68450d3..282eefe 100644
--- a/lib/sprite.cc
+++ b/lib/sprite.cc
@@ -123,7 +123,7 @@ bool mogltk::Sprite::canfit(int x1, int y1, int x2, int y2) const {
return false;
}
-void mogltk::Sprite::draw(int dx, int dy, Color c) {
+void mogltk::Sprite::draw(int dx, int dy, ColorP c) {
bool was2D;
was2D = mogltk::glbase::is2D();