aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/tinygl-0.4-ugfx/src/api.c
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/tinygl-0.4-ugfx/src/api.c')
-rw-r--r--3rdparty/tinygl-0.4-ugfx/src/api.c667
1 files changed, 667 insertions, 0 deletions
diff --git a/3rdparty/tinygl-0.4-ugfx/src/api.c b/3rdparty/tinygl-0.4-ugfx/src/api.c
new file mode 100644
index 00000000..11764a1e
--- /dev/null
+++ b/3rdparty/tinygl-0.4-ugfx/src/api.c
@@ -0,0 +1,667 @@
+#include "zgl.h"
+#include <stdio.h>
+/* glVertex */
+
+void glVertex4f(float x,float y,float z,float w)
+{
+ GLParam p[5];
+
+ p[0].op=OP_Vertex;
+ p[1].f=x;
+ p[2].f=y;
+ p[3].f=z;
+ p[4].f=w;
+
+ gl_add_op(p);
+}
+
+void glVertex2f(float x,float y)
+{
+ glVertex4f(x,y,0,1);
+}
+
+void glVertex3f(float x,float y,float z)
+{
+ glVertex4f(x,y,z,1);
+}
+
+void glVertex3fv(float *v)
+{
+ glVertex4f(v[0],v[1],v[2],1);
+}
+
+/* glNormal */
+
+void glNormal3f(float x,float y,float z)
+{
+ GLParam p[4];
+
+ p[0].op=OP_Normal;
+ p[1].f=x;
+ p[2].f=y;
+ p[3].f=z;
+
+ gl_add_op(p);
+}
+
+void glNormal3fv(float *v)
+{
+ glNormal3f(v[0],v[1],v[2]);
+}
+
+/* glColor */
+
+void glColor4f(float r,float g,float b,float a)
+{
+ GLParam p[8];
+
+ p[0].op=OP_Color;
+ p[1].f=r;
+ p[2].f=g;
+ p[3].f=b;
+ p[4].f=a;
+ /* direct convertion to integer to go faster if no shading */
+ p[5].ui = (unsigned int) (r * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) +
+ ZB_POINT_RED_MIN);
+ p[6].ui = (unsigned int) (g * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) +
+ ZB_POINT_GREEN_MIN);
+ p[7].ui = (unsigned int) (b * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) +
+ ZB_POINT_BLUE_MIN);
+ gl_add_op(p);
+}
+
+void glColor4fv(float *v)
+{
+ GLParam p[8];
+
+ p[0].op=OP_Color;
+ p[1].f=v[0];
+ p[2].f=v[1];
+ p[3].f=v[2];
+ p[4].f=v[3];
+ /* direct convertion to integer to go faster if no shading */
+ p[5].ui = (unsigned int) (v[0] * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) +
+ ZB_POINT_RED_MIN);
+ p[6].ui = (unsigned int) (v[1] * (ZB_POINT_GREEN_MAX - ZB_POINT_GREEN_MIN) +
+ ZB_POINT_GREEN_MIN);
+ p[7].ui = (unsigned int) (v[2] * (ZB_POINT_BLUE_MAX - ZB_POINT_BLUE_MIN) +
+ ZB_POINT_BLUE_MIN);
+ gl_add_op(p);
+}
+
+void glColor3f(float x,float y,float z)
+{
+ glColor4f(x,y,z,1);
+}
+
+void glColor3fv(float *v)
+{
+ glColor4f(v[0],v[1],v[2],1);
+}
+
+
+/* TexCoord */
+
+void glTexCoord4f(float s,float t,float r,float q)
+{
+ GLParam p[5];
+
+ p[0].op=OP_TexCoord;
+ p[1].f=s;
+ p[2].f=t;
+ p[3].f=r;
+ p[4].f=q;
+
+ gl_add_op(p);
+}
+
+void glTexCoord2f(float s,float t)
+{
+ glTexCoord4f(s,t,0,1);
+}
+
+void glTexCoord2fv(float *v)
+{
+ glTexCoord4f(v[0],v[1],0,1);
+}
+
+void glEdgeFlag(int flag)
+{
+ GLParam p[2];
+
+ p[0].op=OP_EdgeFlag;
+ p[1].i=flag;
+
+ gl_add_op(p);
+}
+
+/* misc */
+
+void glShadeModel(int mode)
+{
+ GLParam p[2];
+
+ gl_assert(mode == GL_FLAT || mode == GL_SMOOTH);
+
+ p[0].op=OP_ShadeModel;
+ p[1].i=mode;
+
+ gl_add_op(p);
+}
+
+void glCullFace(int mode)
+{
+ GLParam p[2];
+
+ gl_assert(mode == GL_BACK ||
+ mode == GL_FRONT ||
+ mode == GL_FRONT_AND_BACK);
+
+ p[0].op=OP_CullFace;
+ p[1].i=mode;
+
+ gl_add_op(p);
+}
+
+void glFrontFace(int mode)
+{
+ GLParam p[2];
+
+ gl_assert(mode == GL_CCW || mode == GL_CW);
+
+ mode = (mode != GL_CCW);
+
+ p[0].op=OP_FrontFace;
+ p[1].i=mode;
+
+ gl_add_op(p);
+}
+
+void glPolygonMode(int face,int mode)
+{
+ GLParam p[3];
+
+ gl_assert(face == GL_BACK ||
+ face == GL_FRONT ||
+ face == GL_FRONT_AND_BACK);
+ gl_assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL);
+
+ p[0].op=OP_PolygonMode;
+ p[1].i=face;
+ p[2].i=mode;
+
+ gl_add_op(p);
+}
+
+
+/* glEnable / glDisable */
+
+void glEnable(int cap)
+{
+ GLParam p[3];
+
+ p[0].op=OP_EnableDisable;
+ p[1].i=cap;
+ p[2].i=1;
+
+ gl_add_op(p);
+}
+
+void glDisable(int cap)
+{
+ GLParam p[3];
+
+ p[0].op=OP_EnableDisable;
+ p[1].i=cap;
+ p[2].i=0;
+
+ gl_add_op(p);
+}
+
+/* glBegin / glEnd */
+
+void glBegin(int mode)
+{
+ GLParam p[2];
+
+ p[0].op=OP_Begin;
+ p[1].i=mode;
+
+ gl_add_op(p);
+}
+
+void glEnd(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_End;
+
+ gl_add_op(p);
+}
+
+/* matrix */
+
+void glMatrixMode(int mode)
+{
+ GLParam p[2];
+
+ p[0].op=OP_MatrixMode;
+ p[1].i=mode;
+
+ gl_add_op(p);
+}
+
+void glLoadMatrixf(const float *m)
+{
+ GLParam p[17];
+ int i;
+
+ p[0].op=OP_LoadMatrix;
+ for(i=0;i<16;i++) p[i+1].f=m[i];
+
+ gl_add_op(p);
+}
+
+void glLoadIdentity(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_LoadIdentity;
+
+ gl_add_op(p);
+}
+
+void glMultMatrixf(const float *m)
+{
+ GLParam p[17];
+ int i;
+
+ p[0].op=OP_MultMatrix;
+ for(i=0;i<16;i++) p[i+1].f=m[i];
+
+ gl_add_op(p);
+}
+
+void glPushMatrix(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_PushMatrix;
+
+ gl_add_op(p);
+}
+
+void glPopMatrix(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_PopMatrix;
+
+ gl_add_op(p);
+}
+
+void glRotatef(float angle,float x,float y,float z)
+{
+ GLParam p[5];
+
+ p[0].op=OP_Rotate;
+ p[1].f=angle;
+ p[2].f=x;
+ p[3].f=y;
+ p[4].f=z;
+
+ gl_add_op(p);
+}
+
+void glTranslatef(float x,float y,float z)
+{
+ GLParam p[4];
+
+ p[0].op=OP_Translate;
+ p[1].f=x;
+ p[2].f=y;
+ p[3].f=z;
+
+ gl_add_op(p);
+}
+
+void glScalef(float x,float y,float z)
+{
+ GLParam p[4];
+
+ p[0].op=OP_Scale;
+ p[1].f=x;
+ p[2].f=y;
+ p[3].f=z;
+
+ gl_add_op(p);
+}
+
+
+void glViewport(int x,int y,int width,int height)
+{
+ GLParam p[5];
+
+ p[0].op=OP_Viewport;
+ p[1].i=x;
+ p[2].i=y;
+ p[3].i=width;
+ p[4].i=height;
+
+ gl_add_op(p);
+}
+
+void glFrustum(double left,double right,double bottom,double top,
+ double xnear,double farv)
+{
+ GLParam p[7];
+
+ p[0].op=OP_Frustum;
+ p[1].f=left;
+ p[2].f=right;
+ p[3].f=bottom;
+ p[4].f=top;
+ p[5].f=xnear;
+ p[6].f=farv;
+
+ gl_add_op(p);
+}
+
+/* lightening */
+
+void glMaterialfv(int mode,int type,float *v)
+{
+ GLParam p[7];
+ int i,n;
+
+ gl_assert(mode == GL_FRONT || mode == GL_BACK || mode==GL_FRONT_AND_BACK);
+
+ p[0].op=OP_Material;
+ p[1].i=mode;
+ p[2].i=type;
+ n=4;
+ if (type == GL_SHININESS) n=1;
+ for(i=0;i<4;i++) p[3+i].f=v[i];
+ for(i=n;i<4;i++) p[3+i].f=0;
+
+ gl_add_op(p);
+}
+
+void glMaterialf(int mode,int type,float v)
+{
+ GLParam p[7];
+ int i;
+
+ p[0].op=OP_Material;
+ p[1].i=mode;
+ p[2].i=type;
+ p[3].f=v;
+ for(i=0;i<3;i++) p[4+i].f=0;
+
+ gl_add_op(p);
+}
+
+void glColorMaterial(int mode,int type)
+{
+ GLParam p[3];
+
+ p[0].op=OP_ColorMaterial;
+ p[1].i=mode;
+ p[2].i=type;
+
+ gl_add_op(p);
+}
+
+void glLightfv(int light,int type,float *v)
+{
+ GLParam p[7];
+ int i;
+
+ p[0].op=OP_Light;
+ p[1].i=light;
+ p[2].i=type;
+ /* TODO: 3 composants ? */
+ for(i=0;i<4;i++) p[3+i].f=v[i];
+
+ gl_add_op(p);
+}
+
+
+void glLightf(int light,int type,float v)
+{
+ GLParam p[7];
+ int i;
+
+ p[0].op=OP_Light;
+ p[1].i=light;
+ p[2].i=type;
+ p[3].f=v;
+ for(i=0;i<3;i++) p[4+i].f=0;
+
+ gl_add_op(p);
+}
+
+void glLightModeli(int pname,int param)
+{
+ GLParam p[6];
+ int i;
+
+ p[0].op=OP_LightModel;
+ p[1].i=pname;
+ p[2].f=(float)param;
+ for(i=0;i<4;i++) p[3+i].f=0;
+
+ gl_add_op(p);
+}
+
+void glLightModelfv(int pname,float *param)
+{
+ GLParam p[6];
+ int i;
+
+ p[0].op=OP_LightModel;
+ p[1].i=pname;
+ for(i=0;i<4;i++) p[2+i].f=param[i];
+
+ gl_add_op(p);
+}
+
+/* clear */
+
+void glClear(int mask)
+{
+ GLParam p[2];
+
+ p[0].op=OP_Clear;
+ p[1].i=mask;
+
+ gl_add_op(p);
+}
+
+void glClearColor(float r,float g,float b,float a)
+{
+ GLParam p[5];
+
+ p[0].op=OP_ClearColor;
+ p[1].f=r;
+ p[2].f=g;
+ p[3].f=b;
+ p[4].f=a;
+
+ gl_add_op(p);
+}
+
+void glClearDepth(double depth)
+{
+ GLParam p[2];
+
+ p[0].op=OP_ClearDepth;
+ p[1].f=depth;
+
+ gl_add_op(p);
+}
+
+
+/* textures */
+
+void glTexImage2D( int target, int level, int components,
+ int width, int height, int border,
+ int format, int type, void *pixels)
+{
+ GLParam p[10];
+
+ p[0].op=OP_TexImage2D;
+ p[1].i=target;
+ p[2].i=level;
+ p[3].i=components;
+ p[4].i=width;
+ p[5].i=height;
+ p[6].i=border;
+ p[7].i=format;
+ p[8].i=type;
+ p[9].p=pixels;
+
+ gl_add_op(p);
+}
+
+
+void glBindTexture(int target,int texture)
+{
+ GLParam p[3];
+
+ p[0].op=OP_BindTexture;
+ p[1].i=target;
+ p[2].i=texture;
+
+ gl_add_op(p);
+}
+
+void glTexEnvi(int target,int pname,int param)
+{
+ GLParam p[8];
+
+ p[0].op=OP_TexEnv;
+ p[1].i=target;
+ p[2].i=pname;
+ p[3].i=param;
+ p[4].f=0;
+ p[5].f=0;
+ p[6].f=0;
+ p[7].f=0;
+
+ gl_add_op(p);
+}
+
+void glTexParameteri(int target,int pname,int param)
+{
+ GLParam p[8];
+
+ p[0].op=OP_TexParameter;
+ p[1].i=target;
+ p[2].i=pname;
+ p[3].i=param;
+ p[4].f=0;
+ p[5].f=0;
+ p[6].f=0;
+ p[7].f=0;
+
+ gl_add_op(p);
+}
+
+void glPixelStorei(int pname,int param)
+{
+ GLParam p[3];
+
+ p[0].op=OP_PixelStore;
+ p[1].i=pname;
+ p[2].i=param;
+
+ gl_add_op(p);
+}
+
+/* selection */
+
+void glInitNames(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_InitNames;
+
+ gl_add_op(p);
+}
+
+void glPushName(unsigned int name)
+{
+ GLParam p[2];
+
+ p[0].op=OP_PushName;
+ p[1].i=name;
+
+ gl_add_op(p);
+}
+
+void glPopName(void)
+{
+ GLParam p[1];
+
+ p[0].op=OP_PopName;
+
+ gl_add_op(p);
+}
+
+void glLoadName(unsigned int name)
+{
+ GLParam p[2];
+
+ p[0].op=OP_LoadName;
+ p[1].i=name;
+
+ gl_add_op(p);
+}
+
+void
+glPolygonOffset(GLfloat factor, GLfloat units)
+{
+ GLParam p[3];
+ p[0].op = OP_PolygonOffset;
+ p[1].f = factor;
+ p[2].f = units;
+ gl_add_op(p);
+}
+
+/* Special Functions */
+
+void glCallList(unsigned int list)
+{
+ GLParam p[2];
+
+ p[0].op=OP_CallList;
+ p[1].i=list;
+
+ gl_add_op(p);
+}
+
+void glFlush(void)
+{
+ /* nothing to do */
+}
+
+void glHint(int target,int mode)
+{
+ GLParam p[3];
+
+ p[0].op=OP_Hint;
+ p[1].i=target;
+ p[2].i=mode;
+
+ gl_add_op(p);
+}
+
+/* Non standard functions */
+
+void glDebug(int mode)
+{
+ GLContext *c=gl_get_context();
+ c->print_flag=mode;
+}
+