First commit of LuaGame with an OpenGL backend.
[luagame.git] / funcs_draw.cpp
blob5b555f51acf034a724efc66200e62a0d12f9792b
1 /*
2 Copyright (c)2006-2007 - Brett Lajzer
4 See LICENSE for license information.
5 */
7 #include <cmath>
8 #include <GL/gl.h>
9 #include <GL/glu.h>
10 #include <lua.hpp>
11 #include <SDL/SDL.h>
12 #include "globals.h"
13 #include "funcs_draw.h"
16 // direct drawing functions
19 //internal function for drawing circles and ellipses
20 void drawCircle(GLenum style, float x, float y, float rx, float ry, float r, float g, float b, float a){
21 glColor4f(r, g, b, a);
22 glDisable(GL_TEXTURE_RECTANGLE_ARB);
23 glPushMatrix();
24 glTranslatef(x, y, 0.0f);
26 glBegin(style);
27 for(double t = 0; t < 2*3.14159265358979; t += 0.05) {
28 glVertex2f(rx * cos(t), ry * sin(t));
30 glEnd();
32 glPopMatrix();
33 glColor3f(1.0f, 1.0f, 1.0f);
34 glEnable(GL_TEXTURE_RECTANGLE_ARB);
37 int l_draw_pixel(lua_State *L){
38 glColor4f(lua_tonumber(L,3)/255.0, lua_tonumber(L,4)/255.0, lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0);
39 glDisable(GL_TEXTURE_RECTANGLE_ARB);
41 glBegin(GL_POINTS);
42 glVertex2f((float)lua_tonumber(L,1), (float)lua_tonumber(L,2));
43 glEnd();
45 glColor3f(1.0f, 1.0f, 1.0f);
46 glEnable(GL_TEXTURE_RECTANGLE_ARB);
47 return 0;
50 int l_draw_line(lua_State *L){
51 float x1 = (float)lua_tonumber(L,1);
52 float y1 = (float)lua_tonumber(L,2);
53 float x2 = (float)lua_tonumber(L,3);
54 float y2 = (float)lua_tonumber(L,4);
56 glColor4f(lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0, lua_tonumber(L,8)/255.0);
57 glDisable(GL_TEXTURE_RECTANGLE_ARB);
59 glBegin(GL_LINES);
60 glVertex2f(x1,y1);
61 glVertex2f(x2,y2);
62 glEnd();
64 glColor3f(1.0f, 1.0f, 1.0f);
65 glEnable(GL_TEXTURE_RECTANGLE_ARB);
66 return 0;
69 int l_draw_rect(lua_State *L){
70 float x1 = (float)lua_tonumber(L,1);
71 float y1 = (float)lua_tonumber(L,2);
72 float x2 = (float)lua_tonumber(L,3);
73 float y2 = (float)lua_tonumber(L,4);
75 glColor4f(lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0, lua_tonumber(L,8)/255.0);
76 glDisable(GL_TEXTURE_RECTANGLE_ARB);
78 glBegin(GL_LINES);
79 glVertex2f(x1,y1);
80 glVertex2f(x1,y2);
82 glVertex2f(x1,y2);
83 glVertex2f(x2,y2);
85 glVertex2f(x2,y2);
86 glVertex2f(x2,y1);
88 glVertex2f(x2,y1);
89 glVertex2f(x1,y1);
90 glEnd();
92 glColor3f(1.0f, 1.0f, 1.0f);
93 glEnable(GL_TEXTURE_RECTANGLE_ARB);
94 return 0;
97 int l_draw_frect(lua_State *L){
98 float x1 = (float)lua_tonumber(L,1);
99 float y1 = (float)lua_tonumber(L,2);
100 float x2 = (float)lua_tonumber(L,3);
101 float y2 = (float)lua_tonumber(L,4);
103 glColor4f(lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0, lua_tonumber(L,8)/255.0);
104 glDisable(GL_TEXTURE_RECTANGLE_ARB);
106 glBegin(GL_QUADS);
107 glVertex2f(x1,y1);
108 glVertex2f(x1,y2);
109 glVertex2f(x2,y2);
110 glVertex2f(x2,y1);
111 glEnd();
113 glColor3f(1.0f, 1.0f, 1.0f);
114 glEnable(GL_TEXTURE_RECTANGLE_ARB);
115 return 0;
118 int l_draw_circle(lua_State *L){
119 drawCircle(GL_LINE_LOOP, (float)lua_tonumber(L,1), (float)lua_tonumber(L,2), (float)lua_tonumber(L,3), (float)lua_tonumber(L,3), lua_tonumber(L,4)/255.0, lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0);
120 return 0;
123 int l_draw_fcircle(lua_State *L){
124 drawCircle(GL_POLYGON, (float)lua_tonumber(L,1), (float)lua_tonumber(L,2), (float)lua_tonumber(L,3), (float)lua_tonumber(L,3), lua_tonumber(L,4)/255.0, lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0);
125 return 0;
128 int l_draw_ellipse(lua_State *L){
129 drawCircle(GL_LINE_LOOP, (float)lua_tonumber(L,1), (float)lua_tonumber(L,2), (float)lua_tonumber(L,3), (float)lua_tonumber(L,4), lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0, lua_tonumber(L,8)/255.0);
130 return 0;
133 int l_draw_fellipse(lua_State *L){
134 drawCircle(GL_POLYGON, (float)lua_tonumber(L,1), (float)lua_tonumber(L,2), (float)lua_tonumber(L,3), (float)lua_tonumber(L,4), lua_tonumber(L,5)/255.0, lua_tonumber(L,6)/255.0, lua_tonumber(L,7)/255.0, lua_tonumber(L,8)/255.0);
135 return 0;