diff --git a/programs/demos/gears/trunk/ProcessTab.h b/programs/demos/gears/trunk/ProcessTab.h deleted file mode 100644 index dd5e94f433..0000000000 --- a/programs/demos/gears/trunk/ProcessTab.h +++ /dev/null @@ -1,2 +0,0 @@ -#define TYPEWIN(D,C,B,A,Y,RR,GG,BB) (D<<31)|(C<<30)|(B<<29)|(A<<28)|(Y<<24)|\ -(RR<<16)|(GG<<8)|BB diff --git a/programs/demos/gears/trunk/main.cpp b/programs/demos/gears/trunk/main.cpp index 499aed12dc..58dfa003fe 100644 --- a/programs/demos/gears/trunk/main.cpp +++ b/programs/demos/gears/trunk/main.cpp @@ -1,9 +1,9 @@ /* -Пример взят из набора примеров библиотеки Mesa + Пример взят из набора примеров библиотеки Mesa -iadn -http://www.iadn.narod.ru -iadn@bk.ru + iadn + http://www.iadn.narod.ru + iadn@bk.ru */ /* @@ -12,39 +12,39 @@ iadn@bk.ru * Brian Paul */ +/* + * Newlib port by maxcodehack + */ + #include -#include //TinyGL +#include // TinyGL #include #include #include "SysCall.h" -#include "ProcessTab.h" int Fps (long x, long y); -extern "C"{ -int main(void); -} struct { - int x,y; - int dx,dy; - } win; + int x,y; + int dx,dy; +} win; #define KEY_ESC 1 #define KEY_F 33 -char *title1 = "TinyGL in KolibriOS"; -char *title2 = "F full screen"; -char *title3 = "ESC - exit"; +char *title = "Gears (F - full screen, ESC - exit)"; char *fps = "FPS:"; unsigned char FullScreen = 0; -unsigned char skin = 3; +unsigned char skin = 0x34; + +oskey_t key; proc_info* pri; KOSGLContext cgl; -static GLfloat view_rotx=20.0, view_roty=30.0, view_rotz=0.0; +static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; static GLint gear1, gear2, gear3; static GLfloat angle = 0.0; @@ -64,169 +64,169 @@ static GLuint count = 1; static void gear( GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth ) { - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; - r0 = inner_radius; - r1 = outer_radius - tooth_depth/2.0; - r2 = outer_radius + tooth_depth/2.0; + r0 = inner_radius; + r1 = outer_radius - tooth_depth/2.0; + r2 = outer_radius + tooth_depth/2.0; - da = 2.0*M_PI / teeth / 4.0; + da = 2.0*M_PI / teeth / 4.0; - glShadeModel( GL_FLAT ); + glShadeModel( GL_FLAT ); - glNormal3f( 0.0, 0.0, 1.0 ); + glNormal3f( 0.0, 0.0, 1.0 ); - /* draw front face */ - glBegin( GL_QUAD_STRIP ); - for (i=0;i<=teeth;i++) { - angle = i * 2.0*M_PI / teeth; - glVertex3f( r0*cos(angle), r0*sin(angle), width*0.5 ); - glVertex3f( r1*cos(angle), r1*sin(angle), width*0.5 ); - glVertex3f( r0*cos(angle), r0*sin(angle), width*0.5 ); - glVertex3f( r1*cos(angle+3*da), r1*sin(angle+3*da), width*0.5 ); - } - glEnd(); + /* draw front face */ + glBegin( GL_QUAD_STRIP ); + for (i=0;i<=teeth;i++) { + angle = i * 2.0*M_PI / teeth; + glVertex3f( r0*cos(angle), r0*sin(angle), width*0.5 ); + glVertex3f( r1*cos(angle), r1*sin(angle), width*0.5 ); + glVertex3f( r0*cos(angle), r0*sin(angle), width*0.5 ); + glVertex3f( r1*cos(angle+3*da), r1*sin(angle+3*da), width*0.5 ); + } + glEnd(); - /* draw front sides of teeth */ - glBegin( GL_QUADS ); - da = 2.0*M_PI / teeth / 4.0; - for (i=0;iwidth, pri->height-20); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0, (GLfloat)pri->width/pri->height, 1.0, 60.0); - glTranslatef( 0.0, 0.0, 20.0 ); - glMatrixMode(GL_MODELVIEW); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + get_proc_info((char*)pri); + glViewport(0, 0, pri->width, pri->height-20); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45.0, (GLfloat)pri->width/pri->height, 1.0, 60.0); + glTranslatef( 0.0, 0.0, 20.0 ); + glMatrixMode(GL_MODELVIEW); + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); } void disabletgl() @@ -243,119 +243,109 @@ void kos_text(int x, int y, int color, const char* text, int len) void Title() { kos_text(300,8,0x10ffffff,fps,strlen(fps)); - kos_text(180,8,0x00ffffff,title2,strlen(title2)); - kos_text(600,8,0x00ffffff,title3,strlen(title3)); + /*kos_text(180,8,0x90ffffff,title2,strlen(title2)); + kos_text(600,8,0x90ffffff,title3,strlen(title3));*/ } -void kol_wnd_define(unsigned x, unsigned y, unsigned w, unsigned h, unsigned cs, unsigned b, char *t) -{ -asm volatile ("int $0x40"::"a"(0), "b"(x*65536+w), "c"(y*65536+h), "d"(cs), "D"(t), "S"(b) ); -} - -void draw_window(void) +void draw_window() { // start redraw begin_draw(); // define&draw window - kol_wnd_define(win.x,win.y,win.dx,win.dy,TYPEWIN(0,0,0,1,skin,0,0,0),0,title1); + sys_create_window(win.x, win.y, win.dx, win.dy, title, 0, /*TYPEWIN(0,0,0,1,skin,0,0,0)*/skin); // end redraw end_draw(); // display string Title(); } -int kos_get_key() +int main() { - unsigned short __ret; - asm volatile("int $0x40":"=a"(__ret):"0"(2)); - if(!(__ret & 0xFF)) return (__ret>>8)&0xFF; else return 0; -} - -int main(void) -{ - - win.x = 100; - win.y = 100; - win.dx = 400; - win.dy = 400; - - draw_window(); - - cgl = kosglCreateContext( 0, 0); - kosglMakeCurrent( 0, 20, win.dx, win.dy-20, cgl); - - init(); - - pri = new proc_info; - SysCall(66,1,1); - - reshape(); - -do{ - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef( view_rotx, 1.0, 0.0, 0.0 ); - glRotatef( view_roty, 0.0, 1.0, 0.0 ); - glRotatef( view_rotz, 0.0, 0.0, 1.0 ); - - glPushMatrix(); - glTranslatef( -2.0, -2.0, 0.0 ); - glRotatef( angle, 0.0, 0.0, 1.0 ); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef( 4.1, -2.0, 0.0 ); - glRotatef( -2.0*angle-9.0, 0.0, 0.0, 1.0 ); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef( -2.1, 4.2, 0.0 ); - glRotatef( -2.0*angle-25.0, 0.0, 0.0, 1.0 ); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); - - kosglSwapBuffers(); - - angle += 0.01 + 0.3* Fps (330,8); - - switch(SysCall(11)) - { - case 1: draw_window(); - reshape(); - break; - - case 2: - switch(kos_get_key()){ - - case KEY_F: - if(!FullScreen){ - skin=0; - SysCall(67,0,0,SysCall(14)>>16,SysCall(14)&0xffff); - draw_window(); - reshape(); - FullScreen = 1; - } - else{ - skin=3; - draw_window(); - SysCall(67,win.x,win.y,win.dx,win.dy); - reshape(); - FullScreen = 0; - }; - break; - - case KEY_ESC: disabletgl(); - return 0;} - break; - - case 3: disabletgl(); - return 0; - } -}while(1); + win.x = 100; + win.y = 100; + win.dx = 400; + win.dy = 400; + + draw_window(); + + cgl = kosglCreateContext( 0, 0); + kosglMakeCurrent( 0, 0, win.dx, win.dy, cgl); + + init(); + + pri = new proc_info; + SysCall(66,1,1); + + reshape(); + + do { + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + + glPushMatrix(); + glRotatef( view_rotx, 1.0, 0.0, 0.0 ); + glRotatef( view_roty, 0.0, 1.0, 0.0 ); + glRotatef( view_rotz, 0.0, 0.0, 1.0 ); + + glPushMatrix(); + glTranslatef( -2.0, -2.0, 0.0 ); + glRotatef( angle, 0.0, 0.0, 1.0 ); + glCallList(gear1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef( 4.1, -2.0, 0.0 ); + glRotatef( -2.0*angle-9.0, 0.0, 0.0, 1.0 ); + glCallList(gear2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef( -2.1, 4.2, 0.0 ); + glRotatef( -2.0*angle-25.0, 0.0, 0.0, 1.0 ); + glCallList(gear3); + glPopMatrix(); + + glPopMatrix(); + + kosglSwapBuffers(); + + angle += 0.01 + 0.3 * Fps (330, 8); + + switch(check_os_event()) + { + case 1: + draw_window(); + reshape(); + break; + + case 2: + key = get_key(); + switch(key.code) { + case KEY_F: + if(!FullScreen){ + skin=0x01; + SysCall(67,0,0,SysCall(14)>>16,SysCall(14)&0xffff); + draw_window(); + reshape(); + FullScreen = 1; + } + else{ + skin=0x34; + draw_window(); + SysCall(67,win.x,win.y,win.dx,win.dy); + reshape(); + FullScreen = 0; + }; + break; + + case KEY_ESC: + disabletgl(); + return 0; + } + break; + + case 3: + disabletgl(); + return 0; + } + } while(1); }