From 2ef9753588b02155faf8bc5a176e4fcf7489dae2 Mon Sep 17 00:00:00 2001 From: pixel Date: Fri, 14 Mar 2003 13:36:40 +0000 Subject: glcolor, first episode --- include/Makefile.am | 2 +- include/glcolor.h | 18 ++++++++++++++++++ include/glfont.h | 14 +++++++------- include/glshape.h | 26 +++++++++++++------------- include/sprite.h | 4 ++-- lib/Makefile.am | 4 ++-- lib/glcolor.cc | 13 +++++++++++++ lib/glfont.cc | 8 ++++---- lib/glshape.cc | 24 ++++++++++++------------ lib/sprite.cc | 2 +- 10 files changed, 73 insertions(+), 42 deletions(-) create mode 100644 include/glcolor.h create mode 100644 lib/glcolor.cc 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 +#include + +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 #include #include -#include #include -#include "gltexture.h" +#include +#include 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 -#include +#include #include 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 #include #include -#include +#include #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 +#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(); -- cgit v1.2.3