Namepsace in Dateien eingefuegt.
GL aus Rect/Color entfernt Compiled als .so
This commit is contained in:
parent
b41c12950d
commit
45c8964c49
|
@ -1,3 +1,4 @@
|
||||||
*.o
|
*.o
|
||||||
*.a
|
*.a
|
||||||
|
libsegl.so.*
|
||||||
testprog
|
testprog
|
||||||
|
|
32
Makefile
32
Makefile
|
@ -1,18 +1,27 @@
|
||||||
CC = g++
|
CC = g++
|
||||||
AR = ar
|
AR = ar
|
||||||
OBJECTS = punkt3d.o punkt2d.o emath.o emath_opengl.o glcolor.o gldrawhelper.o glfontengine.o glrect.o gltexture.o matrix.o quaternion.o rotationsmatrix.o glsdlscreen.o sdlfuncs.o fpsmanager.o glcamera.o catmullromspline.o extstring.o quader.o
|
OBJECTS = punkt3d.o punkt2d.o emath.o emath_opengl.o color.o gldrawhelper.o glfontengine.o rect.o gltexture.o matrix.o quaternion.o rotationsmatrix.o glsdlscreen.o sdlfuncs.o fpsmanager.o glcamera.o catmullromspline.o extstring.o quader.o
|
||||||
OBJOPT = -Wall -c `sdl-config --cflags`
|
OBJOPT = -Wall -c -DVERSION=$(VERSION) -O2 `sdl-config --cflags`
|
||||||
|
WINOPT = -Wall -c -DVERSION=$(VERSION) -O2 -I/usr/i586-mingw32msvc/include -I/usr/i586-mingw32msvc/include/SDL
|
||||||
|
LIBLINK = -lc -shared -Wl,-soname,$(LIBNAME).so.$(LIBVERSION)
|
||||||
|
WINLINK = -L/usr/i586-mingw32msvc/lib /usr/i586-mingw32msvc/lib/SDL_image.lib -lmingw32 -shared -mwindows -lGL -lGLU -lSDL -lSDL_image /usr/i586-mingw32msvc/lib/SDL_image.lib /usr/i586-mingw32msvc/lib/SDL_image.dll
|
||||||
SUBDIRS = glgui glmenu model
|
SUBDIRS = glgui glmenu model
|
||||||
SUBDIROBJECTS = glgui/*.o glmenu/*.o model/*.o
|
SUBDIROBJECTS = glgui/*.o glmenu/*.o model/*.o
|
||||||
VERSION = 0.0.1
|
VERSION = 0.1.1
|
||||||
|
LIBVERSION = 1
|
||||||
LIBNAME = libsegl
|
LIBNAME = libsegl
|
||||||
|
EXT = so.$(LIBVERSION)
|
||||||
|
|
||||||
|
.PHONY: windows
|
||||||
|
|
||||||
seglar: $(OBJECTS) subdirs
|
seglar: $(OBJECTS) subdirs
|
||||||
rm -f $(LIBNAME).a
|
rm -f $(LIBNAME).a
|
||||||
$(AR) rcs $(LIBNAME).a $(OBJECTS) $(SUBDIROBJECTS)
|
$(AR) rcs $(LIBNAME).a $(OBJECTS) $(SUBDIROBJECTS)
|
||||||
# ranlib $(LIBNAME).a
|
# ranlib $(LIBNAME).a
|
||||||
|
|
||||||
segllib: $(OBJECTS) subdirs
|
lib: LINKER = $(LINKER)
|
||||||
|
lib: $(OBJECTS) subdirs
|
||||||
|
$(CC) -o $(LIBNAME).$(EXT) $(OBJECTS) $(SUBDIROBJECTS) $(LIBLINK)
|
||||||
|
|
||||||
subdirs:
|
subdirs:
|
||||||
@for i in $(SUBDIRS); do $(MAKE) CC="$(CC)" AR="$(AR)" OBJOPT="$(OBJOPT)" -C $$i; done
|
@for i in $(SUBDIRS); do $(MAKE) CC="$(CC)" AR="$(AR)" OBJOPT="$(OBJOPT)" -C $$i; done
|
||||||
|
@ -30,6 +39,21 @@ glmenu/glmenu.a:
|
||||||
testprog: seglar testprog.o
|
testprog: seglar testprog.o
|
||||||
g++ `sdl-config --libs` -lSDL_image -lGL -lGLU testprog.o -o testprog $(LIBNAME).a
|
g++ `sdl-config --libs` -lSDL_image -lGL -lGLU testprog.o -o testprog $(LIBNAME).a
|
||||||
|
|
||||||
|
winlib: CC = i586-mingw32msvc-g++
|
||||||
|
winlib: AR = i586-mingw32msvc-ar
|
||||||
|
winlib: OBJOPT = $(WINOPT)
|
||||||
|
winlib: LIBLINK = $(WINLINK)
|
||||||
|
winlib: export EXT = dll
|
||||||
|
winlib: lib
|
||||||
|
|
||||||
|
winar: CC = i586-mingw32msvc-g++
|
||||||
|
winar: AR = i586-mingw32msvc-ar
|
||||||
|
winar: OBJOPT = $(WINOPT)
|
||||||
|
winar: LIBLINK = $(WINLINK)
|
||||||
|
winar: export EXT = dll
|
||||||
|
winar: seglar
|
||||||
|
|
||||||
|
|
||||||
cleansubdirs:
|
cleansubdirs:
|
||||||
@for i in $(SUBDIRS); do $(MAKE) clean -C $$i; done
|
@for i in $(SUBDIRS); do $(MAKE) clean -C $$i; done
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "catmullromspline.h"
|
#include "catmullromspline.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
CatmullRomSpline::CatmullRomSpline(float _s) {
|
CatmullRomSpline::CatmullRomSpline(float _s) {
|
||||||
cr = new Matrix(4, 4);
|
cr = new Matrix(4, 4);
|
||||||
setS(_s);
|
setS(_s);
|
||||||
|
@ -99,3 +101,5 @@ void CatmullRomSpline::setS(float _s) {
|
||||||
CatmullRomSpline::~CatmullRomSpline() {
|
CatmullRomSpline::~CatmullRomSpline() {
|
||||||
delete(cr);
|
delete(cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "punkt2d.h"
|
#include "punkt2d.h"
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class CatmullRomSpline {
|
class CatmullRomSpline {
|
||||||
private:
|
private:
|
||||||
|
@ -27,5 +28,6 @@ class CatmullRomSpline {
|
||||||
~CatmullRomSpline();
|
~CatmullRomSpline();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
#include "color.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
|
Color::Color() {
|
||||||
|
set(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
setalpha = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Color::Color(float _r, float _g, float _b, float _a) {
|
||||||
|
set(_r, _g, _b, _a);
|
||||||
|
}
|
||||||
|
|
||||||
|
Color::Color(const SDL_Color &c) {
|
||||||
|
set(c.r/255.0f, c.g/255.0f, c.b/255.0f);
|
||||||
|
setalpha = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Color::set(float _r, float _g, float _b, float _a) {
|
||||||
|
r = _r;
|
||||||
|
g = _g;
|
||||||
|
b = _b;
|
||||||
|
a = _a;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Color Color::getSDLColor() {
|
||||||
|
SDL_Color c = {(Uint8)(r*255.0f), (Uint8)(g*255.0f), (Uint8)(b*255.0f), (Uint8)(a*255.0f)};
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Color::print(std::string m) {
|
||||||
|
std::cout << m << " Color: " << r << ", " << g << ", " << b << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
|
void glColorGLC(segl::Color c) {
|
||||||
|
if(c.setalpha) {
|
||||||
|
glColor4f(c.r, c.g, c.b, c.a);
|
||||||
|
} else {
|
||||||
|
glColor3f(c.r, c.g, c.b);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,27 +1,31 @@
|
||||||
#ifndef __GLCOLOR_H
|
#ifndef __COLOR_H
|
||||||
#define __GLCOLOR_H
|
#define __COLOR_H
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class GLColor {
|
namespace segl {
|
||||||
|
|
||||||
|
class Color {
|
||||||
public:
|
public:
|
||||||
float r, g, b, a;
|
float r, g, b, a;
|
||||||
bool setalpha;
|
bool setalpha;
|
||||||
|
|
||||||
|
|
||||||
GLColor();
|
Color();
|
||||||
GLColor(float _r, float _g, float _b, float _a=1.0f);
|
Color(float _r, float _g, float _b, float _a=1.0f);
|
||||||
GLColor(const SDL_Color&);
|
Color(const SDL_Color&);
|
||||||
|
|
||||||
void set(float _r, float _g, float _b, float _a=1.0f);
|
void set(float _r, float _g, float _b, float _a=1.0f);
|
||||||
SDL_Color getSDLColor();
|
SDL_Color getSDLColor();
|
||||||
void print(std::string m="");
|
void print(std::string m="");
|
||||||
};
|
};
|
||||||
|
|
||||||
void glColorGLC(GLColor c);
|
} // namespace segl
|
||||||
|
|
||||||
|
void glColorGLC(segl::Color c);
|
||||||
// a) setalpha entscheiden lassen
|
// a) setalpha entscheiden lassen
|
||||||
// b) zwei funktionen, eine setzt alpha mit in richtung 3f, 4f..
|
// b) zwei funktionen, eine setzt alpha mit in richtung 3f, 4f..
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
// Trigonometrische Funktionen
|
// Trigonometrische Funktionen
|
||||||
|
|
||||||
float deg2rad(float deg) {
|
float deg2rad(float deg) {
|
||||||
|
@ -34,3 +36,5 @@ float ssin(float c) {
|
||||||
float scos(float c) {
|
float scos(float c) {
|
||||||
return ssin(c+90.0f);
|
return ssin(c+90.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
4
emath.h
4
emath.h
|
@ -5,6 +5,7 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
float deg2rad(float deg);
|
float deg2rad(float deg);
|
||||||
float rad2deg(float rad);
|
float rad2deg(float rad);
|
||||||
|
@ -15,4 +16,7 @@ float rad2deg(float rad);
|
||||||
float ssin(float);
|
float ssin(float);
|
||||||
float scos(float);
|
float scos(float);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "emath_opengl.h"
|
#include "emath_opengl.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, Punkt3D *rvec, float *rvecdeg, Punkt3D *rvec2, float *rvecdeg2) {
|
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, Punkt3D *rvec, float *rvecdeg, Punkt3D *rvec2, float *rvecdeg2) {
|
||||||
Punkt3D rotvec, rotvec2, nullvec;
|
Punkt3D rotvec, rotvec2, nullvec;
|
||||||
float rotvecdeg = 0.0f, rotvecdeg2 = 0.0f;
|
float rotvecdeg = 0.0f, rotvecdeg2 = 0.0f;
|
||||||
|
@ -71,3 +73,5 @@ void rotvec2(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, float *dega, Punkt3D *v
|
||||||
else
|
else
|
||||||
*vecb = c.kreuzprodukt(d);
|
*vecb = c.kreuzprodukt(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -7,7 +7,12 @@
|
||||||
#include "rotationsmatrix.h"
|
#include "rotationsmatrix.h"
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, Punkt3D *, float *, Punkt3D *, float *);
|
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, Punkt3D *, float *, Punkt3D *, float *);
|
||||||
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d);
|
void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d);
|
||||||
void rotvec2(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, float *dega, Punkt3D *veca, float *degb, Punkt3D *vecb);
|
void rotvec2(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, float *dega, Punkt3D *veca, float *degb, Punkt3D *vecb);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "extstring.h"
|
#include "extstring.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
int explode(std::string str, std::string delim, std::vector<std::string> *erg, bool clean) {
|
int explode(std::string str, std::string delim, std::vector<std::string> *erg, bool clean) {
|
||||||
erg->clear();
|
erg->clear();
|
||||||
|
|
||||||
|
@ -45,3 +47,5 @@ std::string basename(std::string str) {
|
||||||
std::string rbasename(std::string str) {
|
std::string rbasename(std::string str) {
|
||||||
return str.substr(0, str.rfind("/")+1);
|
return str.substr(0, str.rfind("/")+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -4,9 +4,13 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
int explode(std::string str, std::string delim, std::vector<std::string> *erg, bool clean=false);
|
int explode(std::string str, std::string delim, std::vector<std::string> *erg, bool clean=false);
|
||||||
std::string trim(std::string t);
|
std::string trim(std::string t);
|
||||||
std::string basename(std::string str);
|
std::string basename(std::string str);
|
||||||
std::string rbasename(std::string str);
|
std::string rbasename(std::string str);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "fpsmanager.h"
|
#include "fpsmanager.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
FPSManager::FPSManager(int _fps) {
|
FPSManager::FPSManager(int _fps) {
|
||||||
setFPS(_fps);
|
setFPS(_fps);
|
||||||
frames = 0;
|
frames = 0;
|
||||||
|
@ -31,3 +33,5 @@ void FPSManager::delay() {
|
||||||
float FPSManager::getFPS() {
|
float FPSManager::getFPS() {
|
||||||
return framerate;
|
return framerate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class FPSManager {
|
class FPSManager {
|
||||||
private:
|
private:
|
||||||
Uint32 lastticks;
|
Uint32 lastticks;
|
||||||
|
@ -17,4 +19,6 @@ class FPSManager {
|
||||||
float getFPS();
|
float getFPS();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
#include "geotypes.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
|
Sphere::Sphere(Punkt3D _pos, float _radius) {
|
||||||
|
pos = _pos;
|
||||||
|
radius = _radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sphere::Sphere() {
|
||||||
|
radius = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sphere::collision(const Sphere &s) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sphere::collision(const Ray &r) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sphere::collision(const Box & b) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sphere::collision(const Plane &p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Ray::Ray() {
|
||||||
|
dir.set(0.0f, 1.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ray::Ray(Punkt3D _pos, Punkt3D _dir) {
|
||||||
|
pos = _pos;
|
||||||
|
dir = _dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Ray::collision(const Sphere &s) {
|
||||||
|
return s.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Ray::collision(const Ray &r);
|
||||||
|
bool Ray::collision(const Box & b);
|
||||||
|
bool Ray::collision(const Plane &p);
|
||||||
|
|
||||||
|
Box::Box() {
|
||||||
|
max.set(1.0f, 1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Box::Box(Punkt3D _min, Punkt3D _max) {
|
||||||
|
min = _min;
|
||||||
|
max = _max;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Box::collision(const Sphere &s) {
|
||||||
|
return s.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Box::collision(const Ray &r) {
|
||||||
|
return r.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Box::collision(const Box & b) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Box::collision(const Plane &p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Plane::Plane() {
|
||||||
|
norm.set(0.0f, 1.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Plane::Plane(Punkt3D _pos, Punkt3D _norm) {
|
||||||
|
pos = _pos;
|
||||||
|
norm = _norm;
|
||||||
|
}
|
||||||
|
|
||||||
|
Plane::Plane(float x, float y, float z, float a) {
|
||||||
|
// TODO: Implementation (if not too lazy)
|
||||||
|
norm.set(x, y, z);
|
||||||
|
norm.normalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Plane::collision(const Sphere &s) {
|
||||||
|
return s.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Plane::collision(const Ray &r) {
|
||||||
|
return r.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Plane::collision(const Box & b) {
|
||||||
|
return b.collision(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Plane::collision(const Plane &p) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
|
@ -0,0 +1,70 @@
|
||||||
|
#ifndef __GEOTYPES_H
|
||||||
|
#define __GEOTYPES_H
|
||||||
|
|
||||||
|
#include "punkt3d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
|
class Ray;
|
||||||
|
class Box
|
||||||
|
class Plane;
|
||||||
|
|
||||||
|
|
||||||
|
class Sphere {
|
||||||
|
public:
|
||||||
|
Punkt3D pos;
|
||||||
|
float radius;
|
||||||
|
|
||||||
|
Sphere(Punkt3D _pos, float radius);
|
||||||
|
Sphere();
|
||||||
|
|
||||||
|
bool collision(const Sphere &s);
|
||||||
|
bool collision(const Ray &r);
|
||||||
|
bool collision(const Box & b);
|
||||||
|
bool collision(const Plane &p);
|
||||||
|
};
|
||||||
|
|
||||||
|
class Ray {
|
||||||
|
public:
|
||||||
|
Punkt3D pos;
|
||||||
|
Punkt3D dir;
|
||||||
|
|
||||||
|
Ray();
|
||||||
|
Ray(Punkt3D _pos, Punkt3D _dir);
|
||||||
|
|
||||||
|
bool collision(const Sphere &s);
|
||||||
|
bool collision(const Ray &r);
|
||||||
|
bool collision(const Box & b);
|
||||||
|
bool collision(const Plane &p);
|
||||||
|
};
|
||||||
|
|
||||||
|
class Box {
|
||||||
|
public:
|
||||||
|
Punkt3D min;
|
||||||
|
Punkt3D max;
|
||||||
|
|
||||||
|
Box();
|
||||||
|
Box(Punkt3D _min, Punkt3D _max);
|
||||||
|
|
||||||
|
bool collision(const Sphere &s);
|
||||||
|
bool collision(const Ray &r);
|
||||||
|
bool collision(const Box & b);
|
||||||
|
bool collision(const Plane &p);
|
||||||
|
};
|
||||||
|
|
||||||
|
class Plane {
|
||||||
|
public:
|
||||||
|
Punkt3D pos;
|
||||||
|
Punkt3D norm;
|
||||||
|
|
||||||
|
Plane();
|
||||||
|
Plane(Punkt3D _pos, Punkt3D _norm);
|
||||||
|
Plane(float x, float y, float z, float a);
|
||||||
|
|
||||||
|
bool collision(const Sphere &s);
|
||||||
|
bool collision(const Ray &r);
|
||||||
|
bool collision(const Box & b);
|
||||||
|
bool collision(const Plane &p);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
|
@ -1,5 +1,7 @@
|
||||||
#include "glcamera.h"
|
#include "glcamera.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
GLCamera::GLCamera() {
|
GLCamera::GLCamera() {
|
||||||
std_norm.set(0.0f, 1.0f, 0.0f);
|
std_norm.set(0.0f, 1.0f, 0.0f);
|
||||||
std_dir.set(0.0f, 0.0f, -1.0f);
|
std_dir.set(0.0f, 0.0f, -1.0f);
|
||||||
|
@ -182,3 +184,5 @@ Punkt3D GLCamera::getPos() {
|
||||||
GLCamera::~GLCamera() {
|
GLCamera::~GLCamera() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "emath_opengl.h"
|
#include "emath_opengl.h"
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLCamera {
|
class GLCamera {
|
||||||
private:
|
private:
|
||||||
Punkt3D std_dir;
|
Punkt3D std_dir;
|
||||||
|
@ -57,4 +59,6 @@ class GLCamera {
|
||||||
~GLCamera();
|
~GLCamera();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
39
glcolor.cpp
39
glcolor.cpp
|
@ -1,39 +0,0 @@
|
||||||
#include "glcolor.h"
|
|
||||||
|
|
||||||
GLColor::GLColor() {
|
|
||||||
set(0.0f, 0.0f, 0.0f, 1.0f);
|
|
||||||
setalpha = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
GLColor::GLColor(float _r, float _g, float _b, float _a) {
|
|
||||||
set(_r, _g, _b, _a);
|
|
||||||
}
|
|
||||||
|
|
||||||
GLColor::GLColor(const SDL_Color &c) {
|
|
||||||
set(c.r/255.0f, c.g/255.0f, c.b/255.0f);
|
|
||||||
setalpha = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLColor::set(float _r, float _g, float _b, float _a) {
|
|
||||||
r = _r;
|
|
||||||
g = _g;
|
|
||||||
b = _b;
|
|
||||||
a = _a;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Color GLColor::getSDLColor() {
|
|
||||||
SDL_Color c = {(Uint8)(r*255.0f), (Uint8)(g*255), (Uint8)(b*255), (Uint8)(a*255)};
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLColor::print(std::string m) {
|
|
||||||
std::cout << m << " Color: " << r << ", " << g << ", " << b << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void glColorGLC(GLColor c) {
|
|
||||||
if(c.setalpha) {
|
|
||||||
glColor4f(c.r, c.g, c.b, c.a);
|
|
||||||
} else {
|
|
||||||
glColor3f(c.r, c.g, c.b);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +1,9 @@
|
||||||
#include "gldrawhelper.h"
|
#include "gldrawhelper.h"
|
||||||
|
|
||||||
void GLDrawSDLRect(SDL_Rect *rect, GLRect *tex) {
|
namespace segl {
|
||||||
GLRect tmptex;
|
|
||||||
|
void GLDrawSDLRect(SDL_Rect *rect, Rect *tex) {
|
||||||
|
Rect tmptex;
|
||||||
if(tex) {
|
if(tex) {
|
||||||
tmptex = *tex;
|
tmptex = *tex;
|
||||||
} else {
|
} else {
|
||||||
|
@ -22,3 +24,5 @@ void GLDrawSDLRect(SDL_Rect *rect, GLRect *tex) {
|
||||||
glVertex2i(rect->x, rect->y);
|
glVertex2i(rect->x, rect->y);
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -4,9 +4,12 @@
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
|
|
||||||
#include "glrect.h"
|
#include "rect.h"
|
||||||
|
|
||||||
void GLDrawSDLRect(SDL_Rect *rect, GLRect *tex=0);
|
namespace segl {
|
||||||
|
|
||||||
|
void GLDrawSDLRect(SDL_Rect *rect, Rect *tex=0);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "glfontengine.h"
|
#include "glfontengine.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
bool GLFontEngine::addFont(std::string fontfile, std::string fontname) {
|
bool GLFontEngine::addFont(std::string fontfile, std::string fontname) {
|
||||||
GLFont *tmp = new GLFont(fontfile, 0.685f);
|
GLFont *tmp = new GLFont(fontfile, 0.685f);
|
||||||
|
@ -80,7 +81,7 @@ void GLFontEngine::setColor(float _r, float _g, float _b, float _a) {
|
||||||
col.set(_r, _g, _b, _a);
|
col.set(_r, _g, _b, _a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLFontEngine::setColor(GLColor c) {
|
void GLFontEngine::setColor(Color c) {
|
||||||
col = c;
|
col = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,3 +248,5 @@ int GLFontEngine::getTextWidthbyInt(int length) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<std::string, GLFont*> GLFontEngine::fontpool;
|
std::map<std::string, GLFont*> GLFontEngine::fontpool;
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include "gltexture.h"
|
#include "gltexture.h"
|
||||||
#include "glcolor.h"
|
#include "color.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLFont {
|
class GLFont {
|
||||||
public:
|
public:
|
||||||
|
@ -32,7 +34,7 @@ class GLFontEngine {
|
||||||
|
|
||||||
GLFont *font;
|
GLFont *font;
|
||||||
bool fontloaded;
|
bool fontloaded;
|
||||||
GLColor col;
|
Color col;
|
||||||
// float r, g, b, a;
|
// float r, g, b, a;
|
||||||
int fsize;
|
int fsize;
|
||||||
|
|
||||||
|
@ -49,7 +51,7 @@ class GLFontEngine {
|
||||||
GLFontEngine(std::string);
|
GLFontEngine(std::string);
|
||||||
bool fontSelect(std::string);
|
bool fontSelect(std::string);
|
||||||
void setColor(float, float, float, float=1.0f);
|
void setColor(float, float, float, float=1.0f);
|
||||||
void setColor(GLColor);
|
void setColor(Color);
|
||||||
|
|
||||||
void renderText(std::string, SDL_Rect); // wrapper
|
void renderText(std::string, SDL_Rect); // wrapper
|
||||||
// void renderText(std::string, int x, int y, *SDL_Rect=0, bool center=false);
|
// void renderText(std::string, int x, int y, *SDL_Rect=0, bool center=false);
|
||||||
|
@ -67,5 +69,6 @@ class GLFontEngine {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
GLGuiButton::GLGuiButton(int _eventid, int _x, int _y, bool _center, int _wrap) : GLGuiTextLabel(_x, _y, _center, _wrap) {
|
GLGuiButton::GLGuiButton(int _eventid, int _x, int _y, bool _center, int _wrap) : GLGuiTextLabel(_x, _y, _center, _wrap) {
|
||||||
highlightable = true;
|
highlightable = true;
|
||||||
clickable = true;
|
clickable = true;
|
||||||
eventid = _eventid;
|
eventid = _eventid;
|
||||||
highlightcol.set(1.0f, 0.0f, 0.0f, 1.0f);
|
highlightcol.set(1.0f, 0.0f, 0.0f, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLGuiButton::GLGuiButton(int _eventid, std::string str, int _x, int _y, bool _center, int _wrap) : GLGuiTextLabel(str, _x, _y, _center, _wrap){
|
GLGuiButton::GLGuiButton(int _eventid, std::string str, int _x, int _y, bool _center, int _wrap) : GLGuiTextLabel(str, _x, _y, _center, _wrap){
|
||||||
highlightable = true;
|
highlightable = true;
|
||||||
clickable = true;
|
clickable = true;
|
||||||
|
@ -14,7 +17,7 @@ GLGuiButton::GLGuiButton(int _eventid, std::string str, int _x, int _y, bool _ce
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGuiButton::onMouseOver(int m_x, int m_y) {
|
void GLGuiButton::onMouseOver(int m_x, int m_y) {
|
||||||
// Längste stelle finden, dann collision
|
// L<EFBFBD>ngste stelle finden, dann collision
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGuiButton::onMouseClick(int m_x, int m_y, int m_button) {
|
void GLGuiButton::onMouseClick(int m_x, int m_y, int m_button) {
|
||||||
|
@ -23,3 +26,5 @@ void GLGuiButton::onMouseClick(int m_x, int m_y, int m_button) {
|
||||||
e.user.code = eventid;
|
e.user.code = eventid;
|
||||||
SDL_PushEvent(&e);
|
SDL_PushEvent(&e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
|
@ -10,10 +10,12 @@
|
||||||
|
|
||||||
#define GLGUI_BUTTONDOWN SDL_USEREVENT+10
|
#define GLGUI_BUTTONDOWN SDL_USEREVENT+10
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLGuiButton : public GLGuiTextLabel {
|
class GLGuiButton : public GLGuiTextLabel {
|
||||||
protected:
|
protected:
|
||||||
int eventid;
|
int eventid;
|
||||||
GLColor highlightcol;
|
Color highlightcol;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GLGuiButton(int _eventid, int _x, int _y, bool _center=false, int _wrap=0);
|
GLGuiButton(int _eventid, int _x, int _y, bool _center=false, int _wrap=0);
|
||||||
|
@ -25,4 +27,6 @@ class GLGuiButton : public GLGuiTextLabel {
|
||||||
void onMouseClick(int m_x, int m_y, int m_button);
|
void onMouseClick(int m_x, int m_y, int m_button);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "textlabel.h"
|
#include "textlabel.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
GLGuiTextLabel::GLGuiTextLabel(int _x, int _y, bool _center, int _wrap) {
|
GLGuiTextLabel::GLGuiTextLabel(int _x, int _y, bool _center, int _wrap) {
|
||||||
setPos(_x, _y);
|
setPos(_x, _y);
|
||||||
center = _center;
|
center = _center;
|
||||||
|
@ -19,7 +21,7 @@ void GLGuiTextLabel::setText(std::string str) {
|
||||||
text = str;
|
text = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGuiTextLabel::setColor(GLColor c) {
|
void GLGuiTextLabel::setColor(Color c) {
|
||||||
col = c;
|
col = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,3 +37,6 @@ void GLGuiTextLabel::render() {
|
||||||
fontengine.renderLines(text, x, y, center, 0, wrap, 0);
|
fontengine.renderLines(text, x, y, center, 0, wrap, 0);
|
||||||
GLFontEngine::regain3DbyPoppingMatrix();
|
GLFontEngine::regain3DbyPoppingMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
|
|
|
@ -7,15 +7,17 @@
|
||||||
#include <SDL/SDL_opengl.h>
|
#include <SDL/SDL_opengl.h>
|
||||||
|
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
#include "../glcolor.h"
|
#include "../color.h"
|
||||||
#include "../glfontengine.h"
|
#include "../glfontengine.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLGuiTextLabel : public GLGuiObject{
|
class GLGuiTextLabel : public GLGuiObject{
|
||||||
protected:
|
protected:
|
||||||
GLFontEngine fontengine;
|
GLFontEngine fontengine;
|
||||||
std::string text;
|
std::string text;
|
||||||
|
|
||||||
GLColor col;
|
Color col;
|
||||||
int x, y;
|
int x, y;
|
||||||
bool center;
|
bool center;
|
||||||
int wrap;
|
int wrap;
|
||||||
|
@ -24,9 +26,11 @@ class GLGuiTextLabel : public GLGuiObject{
|
||||||
GLGuiTextLabel(std::string, int _x, int _y, bool _center=false, int _wrap=0);
|
GLGuiTextLabel(std::string, int _x, int _y, bool _center=false, int _wrap=0);
|
||||||
|
|
||||||
void setText(std::string str);
|
void setText(std::string str);
|
||||||
void setColor(GLColor);
|
void setColor(Color);
|
||||||
void setPos(int _x, int _y);
|
void setPos(int _x, int _y);
|
||||||
virtual void render();
|
virtual void render();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
GLGuiWindow::GLGuiWindow(SDL_Rect _pos, GLColor _bgcolor) {
|
namespace segl {
|
||||||
|
|
||||||
|
GLGuiWindow::GLGuiWindow(SDL_Rect _pos, Color _bgcolor) {
|
||||||
pos = _pos;
|
pos = _pos;
|
||||||
bgcolor = _bgcolor;
|
bgcolor = _bgcolor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGuiWindow::addItem(GLGuiObject *gobj) {
|
void GLGuiWindow::addItem(GLGuiObject *gobj) {
|
||||||
// Objekt wird in delete gelöscht
|
// Objekt wird in delete gel<EFBFBD>scht
|
||||||
items.push_back(gobj);
|
items.push_back(gobj);
|
||||||
if(gobj->isHighlightable())
|
if(gobj->isHighlightable())
|
||||||
highlightable.push_back(gobj);
|
highlightable.push_back(gobj);
|
||||||
|
@ -33,8 +35,10 @@ SDL_Rect GLGuiWindow::getPos() {
|
||||||
}
|
}
|
||||||
|
|
||||||
GLGuiWindow::~GLGuiWindow() {
|
GLGuiWindow::~GLGuiWindow() {
|
||||||
// der der allokiert soll sich gefälligst drum kümmern
|
// der der allokiert soll sich gef<EFBFBD>lligst drum k<>mmern
|
||||||
// for(unsigned int i=0; i<items.size(); i++) {
|
// for(unsigned int i=0; i<items.size(); i++) {
|
||||||
// delete(items[i]);
|
// delete(items[i]);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -7,16 +7,17 @@
|
||||||
#include <SDL/SDL.h>
|
#include <SDL/SDL.h>
|
||||||
#include <SDL/SDL_opengl.h>
|
#include <SDL/SDL_opengl.h>
|
||||||
|
|
||||||
#include "../glcolor.h"
|
#include "../color.h"
|
||||||
#include "../gldrawhelper.h"
|
#include "../gldrawhelper.h"
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLGuiWindow : public GLGuiObject {
|
class GLGuiWindow : public GLGuiObject {
|
||||||
private:
|
private:
|
||||||
bool renderbackground;
|
bool renderbackground;
|
||||||
SDL_Rect pos;
|
SDL_Rect pos;
|
||||||
GLColor bgcolor;
|
Color bgcolor;
|
||||||
|
|
||||||
std::vector<GLGuiObject*> items;
|
std::vector<GLGuiObject*> items;
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ class GLGuiWindow : public GLGuiObject {
|
||||||
std::vector<GLGuiObject*> clickable;
|
std::vector<GLGuiObject*> clickable;
|
||||||
std::vector<GLGuiObject*> keyboardable;
|
std::vector<GLGuiObject*> keyboardable;
|
||||||
public:
|
public:
|
||||||
GLGuiWindow(SDL_Rect _pos, GLColor _bgcolor);
|
GLGuiWindow(SDL_Rect _pos, Color _bgcolor);
|
||||||
~GLGuiWindow();
|
~GLGuiWindow();
|
||||||
|
|
||||||
void addItem(GLGuiObject*);
|
void addItem(GLGuiObject*);
|
||||||
|
@ -32,4 +33,6 @@ class GLGuiWindow : public GLGuiObject {
|
||||||
void render();
|
void render();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "menuitem.h"
|
#include "menuitem.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
MenuItem::MenuItem(std::string c) {
|
MenuItem::MenuItem(std::string c) {
|
||||||
caption = c;
|
caption = c;
|
||||||
fontsizeadd = 0;
|
fontsizeadd = 0;
|
||||||
|
@ -40,7 +42,7 @@ void MenuItem::render(Punkt2D pos, bool center, int basefontsize, int maxwidth,
|
||||||
if(!usevalue) {
|
if(!usevalue) {
|
||||||
fontengine.renderLine(caption, (int)pos.x, (int)pos.y, center);
|
fontengine.renderLine(caption, (int)pos.x, (int)pos.y, center);
|
||||||
} else {
|
} else {
|
||||||
// center und position ggf. überarbeiten..
|
// center und position ggf. <EFBFBD>berarbeiten..
|
||||||
|
|
||||||
Punkt2D tmp = pos;
|
Punkt2D tmp = pos;
|
||||||
// tmp.x = pos.x - (caplen+vallen+valuewidth)/2;
|
// tmp.x = pos.x - (caplen+vallen+valuewidth)/2;
|
||||||
|
@ -79,3 +81,5 @@ MenuItem::~MenuItem() {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#include "../glfontengine.h"
|
#include "../glfontengine.h"
|
||||||
#include "../punkt2d.h"
|
#include "../punkt2d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class MenuItem {
|
class MenuItem {
|
||||||
protected:
|
protected:
|
||||||
std::string caption;
|
std::string caption;
|
||||||
|
@ -43,4 +45,6 @@ class MenuItem {
|
||||||
virtual void render(Punkt2D pos, bool center, int basefontsize, int maxwidth, int valuewidth, bool highlight, int caplen, int capvallen, int maxlen);
|
virtual void render(Punkt2D pos, bool center, int basefontsize, int maxwidth, int valuewidth, bool highlight, int caplen, int capvallen, int maxlen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "menuitems.h"
|
#include "menuitems.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
// MISendSDLEvent
|
// MISendSDLEvent
|
||||||
|
|
||||||
MISendSDLEvent::MISendSDLEvent(std::string str, SDL_Event event) : MenuItem(str) {
|
MISendSDLEvent::MISendSDLEvent(std::string str, SDL_Event event) : MenuItem(str) {
|
||||||
|
@ -201,3 +203,5 @@ void MIEventOnToggle::right() {
|
||||||
void MIEventOnToggle::resetEvent(SDL_Event event) {
|
void MIEventOnToggle::resetEvent(SDL_Event event) {
|
||||||
sendevent = event;
|
sendevent = event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include "menuitem.h"
|
#include "menuitem.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class MISendSDLEvent : public MenuItem {
|
class MISendSDLEvent : public MenuItem {
|
||||||
private:
|
private:
|
||||||
SDL_Event sendevent;
|
SDL_Event sendevent;
|
||||||
|
@ -97,4 +99,6 @@ class MIEventOnToggle : public MIToggle {
|
||||||
void resetEvent(SDL_Event event);
|
void resetEvent(SDL_Event event);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "menumanager.h"
|
#include "menumanager.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
MenuManager::MenuManager() {
|
MenuManager::MenuManager() {
|
||||||
aktuell = 0;
|
aktuell = 0;
|
||||||
}
|
}
|
||||||
|
@ -69,3 +71,5 @@ void MenuManager::reset() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "../glfontengine.h"
|
#include "../glfontengine.h"
|
||||||
#include "menumenu.h"
|
#include "menumenu.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class MenuManager {
|
class MenuManager {
|
||||||
private:
|
private:
|
||||||
|
@ -31,4 +32,6 @@ class MenuManager {
|
||||||
void reset();
|
void reset();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "menumenu.h"
|
#include "menumenu.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
MenuMenu::MenuMenu() {
|
MenuMenu::MenuMenu() {
|
||||||
itempos = 0;
|
itempos = 0;
|
||||||
centermenu = false;
|
centermenu = false;
|
||||||
|
@ -165,3 +167,5 @@ void MenuMenu::render() {
|
||||||
}
|
}
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include "../punkt2d.h"
|
#include "../punkt2d.h"
|
||||||
#include "menuitem.h"
|
#include "menuitem.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class MenuMenu {
|
class MenuMenu {
|
||||||
private:
|
private:
|
||||||
std::vector<MenuItem*> menuitems;
|
std::vector<MenuItem*> menuitems;
|
||||||
|
@ -49,4 +51,6 @@ class MenuMenu {
|
||||||
void render();
|
void render();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
35
glrect.cpp
35
glrect.cpp
|
@ -1,35 +0,0 @@
|
||||||
#include "glrect.h"
|
|
||||||
|
|
||||||
GLRect::GLRect() {
|
|
||||||
set(0.0f, 0.0f, 0.0f, 0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
GLRect::GLRect(float _x, float _y, float _w, float _h) {
|
|
||||||
set(_x, _y, _w, _h);
|
|
||||||
}
|
|
||||||
|
|
||||||
GLRect::GLRect(const SDL_Rect &r) {
|
|
||||||
set(r.x, r.y, r.w, r.h);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLRect::set(float _x, float _y, float _w, float _h) {
|
|
||||||
x = _x;
|
|
||||||
y = _y;
|
|
||||||
w = _w;
|
|
||||||
h = _h;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLRect::setPoint(float _x, float _y) {
|
|
||||||
x = _x;
|
|
||||||
y = _y;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLRect::setDim(float _w, float _h) {
|
|
||||||
w = _w;
|
|
||||||
h = _h;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Rect GLRect::getSDLRect() {
|
|
||||||
SDL_Rect tmp = {(Uint8)x, (Uint8)y, (Uint8)w, (Uint8)h};
|
|
||||||
return tmp;
|
|
||||||
}
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "glsdlscreen.h"
|
#include "glsdlscreen.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
GLSDLScreen::GLSDLScreen() {
|
GLSDLScreen::GLSDLScreen() {
|
||||||
width = 0;
|
width = 0;
|
||||||
height = 1;
|
height = 1;
|
||||||
|
@ -152,3 +154,5 @@ void GLSDLScreen::clearScreen() {
|
||||||
void GLSDLScreen::renderScreen() {
|
void GLSDLScreen::renderScreen() {
|
||||||
SDL_GL_SwapBuffers();
|
SDL_GL_SwapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include "gltexture.h"
|
#include "gltexture.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLSDLScreen {
|
class GLSDLScreen {
|
||||||
private:
|
private:
|
||||||
SDL_Surface *screen;
|
SDL_Surface *screen;
|
||||||
|
@ -44,4 +46,6 @@ class GLSDLScreen {
|
||||||
void renderScreen();
|
void renderScreen();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "gltexture.h"
|
#include "gltexture.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
GLTexture::GLTexture() {
|
GLTexture::GLTexture() {
|
||||||
init();
|
init();
|
||||||
alltextures.push_back(this);
|
alltextures.push_back(this);
|
||||||
|
@ -112,7 +114,7 @@ void GLTexture::unloadTexture() {
|
||||||
glDeleteTextures(1, &texint);
|
glDeleteTextures(1, &texint);
|
||||||
|
|
||||||
loaded = false;
|
loaded = false;
|
||||||
// Entweder tex == image, wurde schon gelöscht oder wir müssen es nich löschen
|
// Entweder tex == image, wurde schon gel<EFBFBD>scht oder wir m<>ssen es nich l<>schen
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,3 +179,5 @@ GLTexture::~GLTexture() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<GLTexture*> GLTexture::alltextures;
|
std::vector<GLTexture*> GLTexture::alltextures;
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include "sdlfuncs.h"
|
#include "sdlfuncs.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class GLTexture {
|
class GLTexture {
|
||||||
private:
|
private:
|
||||||
GLuint texint;
|
GLuint texint;
|
||||||
|
@ -60,4 +62,6 @@ class GLTexture {
|
||||||
bool isLoaded();
|
bool isLoaded();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
177
main.cpp
177
main.cpp
|
@ -1,177 +0,0 @@
|
||||||
#define VERSION "0.2.2 DEV"
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <SDL.h>
|
|
||||||
#include <SDL_opengl.h>
|
|
||||||
|
|
||||||
#include "gltexture.h"
|
|
||||||
#include "glfontengine.h"
|
|
||||||
|
|
||||||
// #define GL_DEBUG_MOVEMENT false
|
|
||||||
|
|
||||||
void setupGL();
|
|
||||||
void resizeOpenGLWindow(int, int, float=1.0f, float=100.0f);
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
std::cout << "ARGV: " << argv[0] << std::endl;
|
|
||||||
//Vars
|
|
||||||
SDL_Surface *screen;
|
|
||||||
bool quit = false;
|
|
||||||
SDL_Event event;
|
|
||||||
int w_width = 640;
|
|
||||||
int w_height = 480;
|
|
||||||
int w_bbp = 32;
|
|
||||||
float znear = 1.0f;
|
|
||||||
float zfar = 100.0f;
|
|
||||||
|
|
||||||
if(SDL_Init(SDL_INIT_VIDEO)<0) {
|
|
||||||
std::cerr << "Konnte SDL nicht initialisieren" << SDL_GetError() << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting video mode
|
|
||||||
int videoFlags;
|
|
||||||
const SDL_VideoInfo *videoInfo;
|
|
||||||
|
|
||||||
videoInfo = SDL_GetVideoInfo();
|
|
||||||
|
|
||||||
if(!videoInfo) {
|
|
||||||
std::cerr << "Video query failed: " << SDL_GetError() << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
videoFlags = SDL_OPENGL;
|
|
||||||
videoFlags |= SDL_GL_DOUBLEBUFFER;
|
|
||||||
videoFlags |= SDL_HWPALETTE;
|
|
||||||
videoFlags |= SDL_RESIZABLE;
|
|
||||||
if(videoInfo->hw_available)
|
|
||||||
videoFlags |= SDL_HWSURFACE;
|
|
||||||
else
|
|
||||||
videoFlags |= SDL_SWSURFACE;
|
|
||||||
if(videoInfo->blit_hw)
|
|
||||||
videoFlags |= SDL_HWACCEL;
|
|
||||||
|
|
||||||
// videoFlags |=SDL_FULLSCREEN;
|
|
||||||
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
|
|
||||||
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
|
|
||||||
|
|
||||||
if(!(screen = SDL_SetVideoMode(w_width, w_height, w_bbp, videoFlags))) {
|
|
||||||
std::cerr << "Kein SDL-Screen verfügbar: " << SDL_GetError() << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
|
|
||||||
|
|
||||||
SDL_WM_SetCaption("GLGui Test, 0);
|
|
||||||
|
|
||||||
// blank screen
|
|
||||||
// SDL_FillRect(screen, 0, SDL_MapRGBA(screen->format, 0, 0, 0, 0));
|
|
||||||
|
|
||||||
// GL Optionen
|
|
||||||
setupGL();
|
|
||||||
|
|
||||||
resizeOpenGLWindow(w_width, w_height, znear, zfar);
|
|
||||||
|
|
||||||
// Keyrepeat, falls benötigt auskommentieren
|
|
||||||
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
|
||||||
|
|
||||||
// Fontengine initliaisieren, für alle die Fonts brauchen
|
|
||||||
GLFontEngine::addFont("font_big_better_alpha.png", "default");
|
|
||||||
|
|
||||||
// Programmvariablen
|
|
||||||
Snake3D snake3d;
|
|
||||||
|
|
||||||
//movement & keyboardcontrol
|
|
||||||
Uint8 *keys = SDL_GetKeyState(NULL);;
|
|
||||||
SDLKey tkey;
|
|
||||||
typedef enum { move_up=0, move_down, move_left, move_right} nummovekeys;
|
|
||||||
SDLKey movekeys[4];
|
|
||||||
|
|
||||||
bool pause = true;
|
|
||||||
bool blend = false;
|
|
||||||
bool extralines = false;
|
|
||||||
bool fullscreen = false;
|
|
||||||
|
|
||||||
// splash screen
|
|
||||||
bool splashscreen = true;
|
|
||||||
snake3d.pause(true);
|
|
||||||
SDL_Rect splashpos = { 40, 40, screen->w -80, 310 };
|
|
||||||
GLFontEngine fontengine("default");
|
|
||||||
|
|
||||||
#ifdef GL_DEBUG_MOVEMENT
|
|
||||||
movekeys[move_up] = SDLK_i;
|
|
||||||
movekeys[move_down] = SDLK_k;
|
|
||||||
movekeys[move_left] = SDLK_j;
|
|
||||||
movekeys[move_right] = SDLK_l;
|
|
||||||
#else
|
|
||||||
movekeys[move_up] = SDLK_UP;
|
|
||||||
movekeys[move_down] = SDLK_DOWN;
|
|
||||||
movekeys[move_left] = SDLK_LEFT;
|
|
||||||
movekeys[move_right] = SDLK_RIGHT;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while(!quit) {
|
|
||||||
if(SDL_PollEvent(&event)) {
|
|
||||||
switch(event.type) {
|
|
||||||
case SDL_QUIT:
|
|
||||||
quit = true;
|
|
||||||
break;
|
|
||||||
case SDL_KEYDOWN:
|
|
||||||
keys = SDL_GetKeyState(NULL);
|
|
||||||
tkey = event.key.keysym.sym;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SDL_KEYUP:
|
|
||||||
keys = SDL_GetKeyState(NULL);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
SDL_Delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
GLFontEngine::quit();
|
|
||||||
SDL_Quit();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setupGL() {
|
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
|
||||||
glClearDepth(1.0f);
|
|
||||||
glDepthFunc(GL_LEQUAL);
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glShadeModel(GL_SMOOTH);
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
|
||||||
// glBlendFunc(GL_SRC_COLOR,GL_DST_COLOR);
|
|
||||||
|
|
||||||
// glBlendFunc(GL_DST_COLOR, GL_SRC_ALPHA);
|
|
||||||
// glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
|
|
||||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
|
|
||||||
glEnable(GL_ALPHA_TEST);
|
|
||||||
glAlphaFunc(GL_GREATER, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void resizeOpenGLWindow(int width, int height, float znear, float zfar) {
|
|
||||||
if(height==0)
|
|
||||||
height = 1;
|
|
||||||
|
|
||||||
glViewport(0, 0, (GLsizei)width, (GLsizei)height);
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, znear, zfar);
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
}
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Matrix::Matrix(int _m, int _n) {
|
Matrix::Matrix(int _m, int _n) {
|
||||||
m = _m;
|
m = _m;
|
||||||
n = _n;
|
n = _n;
|
||||||
|
@ -154,3 +156,5 @@ Matrix::~Matrix() {
|
||||||
}
|
}
|
||||||
delete[](c);
|
delete[](c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
4
matrix.h
4
matrix.h
|
@ -7,6 +7,8 @@
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Matrix {
|
class Matrix {
|
||||||
protected:
|
protected:
|
||||||
float **c;
|
float **c;
|
||||||
|
@ -39,6 +41,6 @@ class Matrix {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "loadobj.h"
|
#include "loadobj.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
LoadOBJ::LoadOBJ(std::string _filename) : Modelloader(_filename) {
|
LoadOBJ::LoadOBJ(std::string _filename) : Modelloader(_filename) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -233,3 +235,5 @@ bool LoadOBJ::load(Model *m) {
|
||||||
// std::cout << "Loaded!" << std::endl;
|
// std::cout << "Loaded!" << std::endl;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include "model.h"
|
#include "model.h"
|
||||||
#include "../extstring.h"
|
#include "../extstring.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class LoadOBJ : public Modelloader {
|
class LoadOBJ : public Modelloader {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -14,4 +16,6 @@ class LoadOBJ : public Modelloader {
|
||||||
bool load(Model *m);
|
bool load(Model *m);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "model.h"
|
#include "model.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
// Class Meshpoint
|
// Class Meshpoint
|
||||||
|
|
||||||
Meshpoint::Meshpoint() {
|
Meshpoint::Meshpoint() {
|
||||||
|
@ -31,11 +33,11 @@ Material::Material() {
|
||||||
specular.set(1.0f, 1.0f, 1.0f);
|
specular.set(1.0f, 1.0f, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Material::Material(std::string _name, GLColor _a, GLColor _d, GLColor _s) {
|
Material::Material(std::string _name, Color _a, Color _d, Color _s) {
|
||||||
set(_name, _a, _d, _s);
|
set(_name, _a, _d, _s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Material::set(std::string _name, GLColor _a, GLColor _d, GLColor _s) {
|
void Material::set(std::string _name, Color _a, Color _d, Color _s) {
|
||||||
name = _name;
|
name = _name;
|
||||||
ambient = _a;
|
ambient = _a;
|
||||||
diffuse = _d;
|
diffuse = _d;
|
||||||
|
@ -156,3 +158,5 @@ const Punkt3D* Model::getMeshData(unsigned int *meshanz) {
|
||||||
*meshanz = meshdataanz;
|
*meshanz = meshdataanz;
|
||||||
return (const Punkt3D*)meshdata;
|
return (const Punkt3D*)meshdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -5,9 +5,11 @@
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include "../punkt3d.h"
|
#include "../punkt3d.h"
|
||||||
#include "../punkt2d.h"
|
#include "../punkt2d.h"
|
||||||
#include "../glcolor.h"
|
#include "../color.h"
|
||||||
#include "../quader.h"
|
#include "../quader.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Meshpoint {
|
class Meshpoint {
|
||||||
public:
|
public:
|
||||||
Meshpoint();
|
Meshpoint();
|
||||||
|
@ -22,12 +24,12 @@ class Meshpoint {
|
||||||
class Material {
|
class Material {
|
||||||
public:
|
public:
|
||||||
Material();
|
Material();
|
||||||
Material(std::string _name, GLColor _a, GLColor _d, GLColor _s);
|
Material(std::string _name, Color _a, Color _d, Color _s);
|
||||||
void set(std::string _name, GLColor _a, GLColor _d, GLColor _s);
|
void set(std::string _name, Color _a, Color _d, Color _s);
|
||||||
void use();
|
void use();
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
GLColor ambient, diffuse, specular;
|
Color ambient, diffuse, specular;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Polygonpoint {
|
class Polygonpoint {
|
||||||
|
@ -88,4 +90,6 @@ class Model {
|
||||||
const Punkt3D* getMeshData(unsigned int *meshanz);
|
const Punkt3D* getMeshData(unsigned int *meshanz);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#include "modelloader.h"
|
#include "modelloader.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Modelloader::Modelloader(std::string _filename) {
|
Modelloader::Modelloader(std::string _filename) {
|
||||||
filename = _filename;
|
filename = _filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include "model.h"
|
#include "model.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Modelloader {
|
class Modelloader {
|
||||||
protected:
|
protected:
|
||||||
|
@ -15,4 +16,6 @@ class Modelloader {
|
||||||
virtual bool load(Model *m)=0;
|
virtual bool load(Model *m)=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
27
punkt2d.cpp
27
punkt2d.cpp
|
@ -1,5 +1,7 @@
|
||||||
#include "punkt2d.h"
|
#include "punkt2d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Punkt2D::Punkt2D() {
|
Punkt2D::Punkt2D() {
|
||||||
x = y = 0.0f;
|
x = y = 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -112,33 +114,36 @@ bool Punkt2D::operator==(const Punkt2D& b) {
|
||||||
bool Punkt2D::operator!=(const Punkt2D& b) {
|
bool Punkt2D::operator!=(const Punkt2D& b) {
|
||||||
return !(*this==b);
|
return !(*this==b);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Freunde
|
// Freunde
|
||||||
|
|
||||||
Punkt2D operator+(const float& _m, const Punkt2D& b) {
|
segl::Punkt2D operator+(const float& _m, const segl::Punkt2D& b) {
|
||||||
return Punkt2D(b.x+_m, b.y+_m);
|
return segl::Punkt2D(b.x+_m, b.y+_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt2D operator-(const float& _m, const Punkt2D& b) {
|
segl::Punkt2D operator-(const float& _m, const segl::Punkt2D& b) {
|
||||||
return Punkt2D(b.x-_m, b.y-_m);
|
return segl::Punkt2D(b.x-_m, b.y-_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt2D operator*(const float& _m, const Punkt2D& b) {
|
segl::Punkt2D operator*(const float& _m, const segl::Punkt2D& b) {
|
||||||
return Punkt2D(b.x*_m, b.y*_m);
|
return segl::Punkt2D(b.x*_m, b.y*_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt2D operator/(const float& _m, const Punkt2D& b) {
|
segl::Punkt2D operator/(const float& _m, const segl::Punkt2D& b) {
|
||||||
return Punkt2D(b.x/_m, b.y/_m);
|
return segl::Punkt2D(b.x/_m, b.y/_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glTexCoord2f(Punkt2D p) {
|
} // namespace segl
|
||||||
|
|
||||||
|
void glTexCoord2f(segl::Punkt2D p) {
|
||||||
glTexCoord2f(p.x, p.y);
|
glTexCoord2f(p.x, p.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
float abs(Punkt2D p) {
|
float abs(segl::Punkt2D p) {
|
||||||
return p.abs();
|
return p.abs();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fixed Headers
|
// Fixed Headers
|
||||||
void glTexCoordP2D(Punkt2D p) {
|
void glTexCoordP2D(segl::Punkt2D p) {
|
||||||
glTexCoord2f(p.x, p.y);
|
glTexCoord2f(p.x, p.y);
|
||||||
}
|
}
|
||||||
|
|
13
punkt2d.h
13
punkt2d.h
|
@ -5,6 +5,8 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Punkt2D {
|
class Punkt2D {
|
||||||
public:
|
public:
|
||||||
Punkt2D();
|
Punkt2D();
|
||||||
|
@ -45,10 +47,15 @@ class Punkt2D {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void glTexCoord2f(Punkt2D);
|
|
||||||
float abs(Punkt2D);
|
} // namespace segl
|
||||||
|
|
||||||
|
void glTexCoord2f(segl::Punkt2D);
|
||||||
|
float abs(segl::Punkt2D);
|
||||||
|
|
||||||
// Fixed Headers
|
// Fixed Headers
|
||||||
void glTexCoordP2D(Punkt2D p);
|
void glTexCoordP2D(segl::Punkt2D p);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
45
punkt3d.cpp
45
punkt3d.cpp
|
@ -1,5 +1,7 @@
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Punkt3D::Punkt3D() {
|
Punkt3D::Punkt3D() {
|
||||||
x = y = z = 0.0f;
|
x = y = z = 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -88,8 +90,6 @@ void Punkt3D::print(std::string coordname) {
|
||||||
std::cout << coordname << "Coord: (" << x << ", " << y << ", " << z << ")" << std::endl;
|
std::cout << coordname << "Coord: (" << x << ", " << y << ", " << z << ")" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Punkt3D Punkt3D::operator+(const Punkt3D &b) {
|
Punkt3D Punkt3D::operator+(const Punkt3D &b) {
|
||||||
Punkt3D c;
|
Punkt3D c;
|
||||||
c.x = x + b.x;
|
c.x = x + b.x;
|
||||||
|
@ -179,68 +179,71 @@ bool Punkt3D::operator==(const Punkt3D& b) {
|
||||||
bool Punkt3D::operator!=(const Punkt3D& b) {
|
bool Punkt3D::operator!=(const Punkt3D& b) {
|
||||||
return !(*this==b);
|
return !(*this==b);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Freunde
|
// Freunde
|
||||||
|
|
||||||
Punkt3D operator+(const float& _m, const Punkt3D& b) {
|
segl::Punkt3D operator+(const float& _m, const segl::Punkt3D& b) {
|
||||||
return Punkt3D(b.x+_m, b.y+_m, b.z+_m);
|
return segl::Punkt3D(b.x+_m, b.y+_m, b.z+_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt3D operator-(const float& _m, const Punkt3D& b) {
|
segl::Punkt3D operator-(const float& _m, const segl::Punkt3D& b) {
|
||||||
return Punkt3D(b.x-_m, b.y-_m, b.z-_m);
|
return segl::Punkt3D(b.x-_m, b.y-_m, b.z-_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt3D operator*(const float& _m, const Punkt3D& b) {
|
segl::Punkt3D operator*(const float& _m, const segl::Punkt3D& b) {
|
||||||
return Punkt3D(b.x*_m, b.y*_m, b.z*_m);
|
return segl::Punkt3D(b.x*_m, b.y*_m, b.z*_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
Punkt3D operator/(const float& _m, const Punkt3D& b) {
|
segl::Punkt3D operator/(const float& _m, const segl::Punkt3D& b) {
|
||||||
return Punkt3D(b.x/_m, b.y/_m, b.z/_m);
|
return segl::Punkt3D(b.x/_m, b.y/_m, b.z/_m);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &ostr, const Punkt3D &r) {
|
std::ostream &operator<<(std::ostream &ostr, const segl::Punkt3D &r) {
|
||||||
return ostr << "(" << r.x << ", " << r.y << ", " << r.z << ")";
|
return ostr << "(" << r.x << ", " << r.y << ", " << r.z << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
float abs(Punkt3D p) {
|
} // namespace segl
|
||||||
|
|
||||||
|
float abs(segl::Punkt3D p) {
|
||||||
return p.abs();
|
return p.abs();
|
||||||
}
|
}
|
||||||
|
|
||||||
// OpenGL Funktionen f<>r Punkt3D
|
// OpenGL Funktionen f<>r Punkt3D
|
||||||
|
|
||||||
void glVertex3f(Punkt3D p) {
|
void glVertex3f(segl::Punkt3D p) {
|
||||||
glVertex3f(p.x, p.y, p.z);
|
glVertex3f(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glTranslatef(Punkt3D p) {
|
void glTranslatef(segl::Punkt3D p) {
|
||||||
glTranslatef(p.x, p.y, p.z);
|
glTranslatef(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glNormal3f(Punkt3D p) {
|
void glNormal3f(segl::Punkt3D p) {
|
||||||
glNormal3f(p.x, p.y, p.z);
|
glNormal3f(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glRotatef(float deg, Punkt3D vec) {
|
void glRotatef(float deg, segl::Punkt3D vec) {
|
||||||
glRotatef(deg, vec.x, vec.y, vec.z);
|
glRotatef(deg, vec.x, vec.y, vec.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funktionen mit richtgen bezeichnern
|
// Funktionen mit richtgen bezeichnern
|
||||||
void glVertexP3D(Punkt3D p) {
|
void glVertexP3D(segl::Punkt3D p) {
|
||||||
glVertex3f(p.x, p.y, p.z);
|
glVertex3f(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glTranslateP3D(Punkt3D p) {
|
void glTranslateP3D(segl::Punkt3D p) {
|
||||||
glTranslatef(p.x, p.y, p.z);
|
glTranslatef(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glNormalP3D(Punkt3D p) {
|
void glNormalP3D(segl::Punkt3D p) {
|
||||||
glNormal3f(p.x, p.y, p.z);
|
glNormal3f(p.x, p.y, p.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glRotateP3D(float deg, Punkt3D vec) {
|
void glRotateP3D(float deg, segl::Punkt3D vec) {
|
||||||
glRotatef(deg, vec.x, vec.y, vec.z);
|
glRotatef(deg, vec.x, vec.y, vec.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gluLookAt(Punkt3D pos, Punkt3D viewport, Punkt3D normal) {
|
void gluLookAt(segl::Punkt3D pos, segl::Punkt3D viewport, segl::Punkt3D normal) {
|
||||||
gluLookAt( pos.x, pos.y, pos.z,
|
gluLookAt( pos.x, pos.y, pos.z,
|
||||||
viewport.x, viewport.y, viewport.z,
|
viewport.x, viewport.y, viewport.z,
|
||||||
normal.x, normal.y, normal.z );
|
normal.x, normal.y, normal.z );
|
||||||
|
|
24
punkt3d.h
24
punkt3d.h
|
@ -5,6 +5,8 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Punkt3D {
|
class Punkt3D {
|
||||||
public:
|
public:
|
||||||
Punkt3D();
|
Punkt3D();
|
||||||
|
@ -55,22 +57,24 @@ class Punkt3D {
|
||||||
friend std::ostream &operator<<(std::ostream &ostr, const Punkt3D &r);
|
friend std::ostream &operator<<(std::ostream &ostr, const Punkt3D &r);
|
||||||
};
|
};
|
||||||
|
|
||||||
float abs(Punkt3D);
|
} // namespace segl
|
||||||
|
|
||||||
|
float abs(segl::Punkt3D);
|
||||||
|
|
||||||
// OpenGL-Functions for Punkt3D
|
// OpenGL-Functions for Punkt3D
|
||||||
|
|
||||||
void glVertex3f(Punkt3D);
|
void glVertex3f(segl::Punkt3D);
|
||||||
void glTranslatef(Punkt3D);
|
void glTranslatef(segl::Punkt3D);
|
||||||
void glNormal3f(Punkt3D);
|
void glNormal3f(segl::Punkt3D);
|
||||||
|
|
||||||
void glRotatef(float, Punkt3D);
|
void glRotatef(float, segl::Punkt3D);
|
||||||
|
|
||||||
// Funktionen mit richtgen bezeichnern
|
// Funktionen mit richtgen bezeichnern
|
||||||
void glVertexP3D(Punkt3D);
|
void glVertexP3D(segl::Punkt3D);
|
||||||
void glTranslateP3D(Punkt3D);
|
void glTranslateP3D(segl::Punkt3D);
|
||||||
void glNormalP3D(Punkt3D);
|
void glNormalP3D(segl::Punkt3D);
|
||||||
|
|
||||||
void glRotateP3D(float, Punkt3D);
|
void glRotateP3D(float, segl::Punkt3D);
|
||||||
void gluLookAt(Punkt3D pos, Punkt3D viewport, Punkt3D normal);
|
void gluLookAt(segl::Punkt3D pos, segl::Punkt3D viewport, segl::Punkt3D normal);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "quader.h"
|
#include "quader.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
void Quader::clean() {
|
void Quader::clean() {
|
||||||
a.set(0.0f, 0.0f, 0.0f);
|
a.set(0.0f, 0.0f, 0.0f);
|
||||||
b = c = d = e = f = g = h = a;
|
b = c = d = e = f = g = h = a;
|
||||||
|
@ -33,3 +35,5 @@ void Quader::render() {
|
||||||
glVertexP3D(h);
|
glVertexP3D(h);
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
3
quader.h
3
quader.h
|
@ -4,6 +4,7 @@
|
||||||
#include <SDL_opengl.h>
|
#include <SDL_opengl.h>
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Quader {
|
class Quader {
|
||||||
public:
|
public:
|
||||||
|
@ -12,4 +13,6 @@ class Quader {
|
||||||
void render();
|
void render();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "quaternion.h"
|
#include "quaternion.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Quaternion::Quaternion() {
|
Quaternion::Quaternion() {
|
||||||
w = 1.0f,
|
w = 1.0f,
|
||||||
x = y = z = 0.0f;
|
x = y = z = 0.0f;
|
||||||
|
@ -163,3 +165,5 @@ Quaternion Quaternion::operator*(const Quaternion &q) {
|
||||||
// q.createGlMatrix(matrix);
|
// q.createGlMatrix(matrix);
|
||||||
// glMultMatrixf(matrix);
|
// glMultMatrixf(matrix);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "punkt3d.h"
|
#include "punkt3d.h"
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
class Quaternion {
|
class Quaternion {
|
||||||
private:
|
private:
|
||||||
float x, y, z, w;
|
float x, y, z, w;
|
||||||
|
@ -51,4 +53,6 @@ class Quaternion {
|
||||||
//
|
//
|
||||||
// void glMultMatrixf(Quaternion);
|
// void glMultMatrixf(Quaternion);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#include "rect.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
|
Rect::Rect() {
|
||||||
|
set(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Rect::Rect(float _x, float _y, float _w, float _h) {
|
||||||
|
set(_x, _y, _w, _h);
|
||||||
|
}
|
||||||
|
|
||||||
|
Rect::Rect(const SDL_Rect &r) {
|
||||||
|
set(r.x, r.y, r.w, r.h);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rect::set(float _x, float _y, float _w, float _h) {
|
||||||
|
x = _x;
|
||||||
|
y = _y;
|
||||||
|
w = _w;
|
||||||
|
h = _h;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rect::setPoint(float _x, float _y) {
|
||||||
|
x = _x;
|
||||||
|
y = _y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rect::setDim(float _w, float _h) {
|
||||||
|
w = _w;
|
||||||
|
h = _h;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Rect Rect::getSDLRect() {
|
||||||
|
SDL_Rect tmp = {(Uint8)x, (Uint8)y, (Uint8)w, (Uint8)h};
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
#ifndef __GLRECT_H
|
#ifndef __RECT_H
|
||||||
#define __GLRECT_H
|
#define __RECT_H
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
class GLRect {
|
namespace segl {
|
||||||
|
|
||||||
|
class Rect {
|
||||||
public:
|
public:
|
||||||
float x, y;
|
float x, y;
|
||||||
float w, h;
|
float w, h;
|
||||||
|
|
||||||
GLRect();
|
Rect();
|
||||||
GLRect(float, float, float, float);
|
Rect(float, float, float, float);
|
||||||
GLRect(const SDL_Rect&);
|
Rect(const SDL_Rect&);
|
||||||
|
|
||||||
void set(float, float, float, float);
|
void set(float, float, float, float);
|
||||||
void setPoint(float, float);
|
void setPoint(float, float);
|
||||||
|
@ -19,4 +21,6 @@ class GLRect {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1,5 +1,7 @@
|
||||||
#include "rotationsmatrix.h"
|
#include "rotationsmatrix.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Rotationsmatrix::Rotationsmatrix() : Matrix(3,3) {
|
Rotationsmatrix::Rotationsmatrix() : Matrix(3,3) {
|
||||||
set(x_axis, 0.0f);
|
set(x_axis, 0.0f);
|
||||||
}
|
}
|
||||||
|
@ -90,3 +92,5 @@ Rotationsmatrix Rotationsmatrix::operator*(const Rotationsmatrix &p) {
|
||||||
Rotationsmatrix::~Rotationsmatrix() {
|
Rotationsmatrix::~Rotationsmatrix() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include "emath.h"
|
#include "emath.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
enum axis { x_axis=0, y_axis, z_axis };
|
enum axis { x_axis=0, y_axis, z_axis };
|
||||||
|
|
||||||
class Rotationsmatrix : public Matrix {
|
class Rotationsmatrix : public Matrix {
|
||||||
|
@ -28,4 +30,6 @@ class Rotationsmatrix : public Matrix {
|
||||||
Rotationsmatrix operator*(const Rotationsmatrix&);
|
Rotationsmatrix operator*(const Rotationsmatrix&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "sdlfuncs.h"
|
#include "sdlfuncs.h"
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Uint32 getPixel(SDL_Surface *surface, int x, int y)
|
Uint32 getPixel(SDL_Surface *surface, int x, int y)
|
||||||
{
|
{
|
||||||
int bpp = surface->format->BytesPerPixel;
|
int bpp = surface->format->BytesPerPixel;
|
||||||
|
@ -80,3 +82,5 @@ void mirrorSurfaceMiddleX(SDL_Surface *surface) {
|
||||||
}
|
}
|
||||||
SDL_UnlockSurface(surface);
|
SDL_UnlockSurface(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
|
@ -4,9 +4,13 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
|
namespace segl {
|
||||||
|
|
||||||
Uint32 getPixel(SDL_Surface *surface, int x, int y);
|
Uint32 getPixel(SDL_Surface *surface, int x, int y);
|
||||||
void setPixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
|
void setPixel(SDL_Surface *surface, int x, int y, Uint32 pixel);
|
||||||
void swapPixel(SDL_Surface *surface, int x1, int y1, int x2, int y2);
|
void swapPixel(SDL_Surface *surface, int x1, int y1, int x2, int y2);
|
||||||
void mirrorSurfaceMiddleX(SDL_Surface *surface);
|
void mirrorSurfaceMiddleX(SDL_Surface *surface);
|
||||||
|
|
||||||
|
} // namespace segl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
14
testprog.cpp
14
testprog.cpp
|
@ -1,14 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
#include "glsdlscreen.h"
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
GLSDLScreen screen;
|
|
||||||
|
|
||||||
screen.enableOpenGL(true);
|
|
||||||
screen.setVideoMode(640, 480, 32);
|
|
||||||
screen.apply();
|
|
||||||
|
|
||||||
// whee
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue