X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=dfbapi.c;h=3dfecda1460fe8c68ab1caf00f6ba9bd871acbc0;hp=eb74fa364933f53d4c3768fca4ba916da1c74557;hb=5a71cbde820d64c0bca211edcdc0b6af4498e727;hpb=40dfea76e1d7217b798999a5ffdca318ee951b81 diff --git a/dfbapi.c b/dfbapi.c index eb74fa3..3dfecda 100644 --- a/dfbapi.c +++ b/dfbapi.c @@ -11,14 +11,11 @@ /* two dimensional lattice */ -int d2_lattice_init(int *argc,char **argv,d2_lattice *d2_l,int x,int y) +int d2_lattice_init(int *argc,char **argv,d2_lattice *d2_l) { DFBSurfaceDescription surface_dsc; DFBFontDescription font_dsc; - d2_l->max_x=x; - d2_l->max_y=y; - DirectFBInit(argc,&argv); DirectFBCreate(&(d2_l->dfb)); d2_l->dfb->SetCooperativeLevel(d2_l->dfb,DFSCL_FULLSCREEN); @@ -48,15 +45,11 @@ int d2_lattice_init(int *argc,char **argv,d2_lattice *d2_l,int x,int y) } else return 1; } -int d3_lattice_init(int *argc,char **argv,d3_lattice *d3_l,int x,int y,int z) +int d3_lattice_init(int *argc,char **argv,d3_lattice *d3_l) { DFBSurfaceDescription surface_dsc; DFBFontDescription font_dsc; - d3_l->max_x=x; - d3_l->max_y=y; - d3_l->max_z=z; - DirectFBInit(argc,&argv); DirectFBCreate(&(d3_l->dfb)); d3_l->dfb->SetCooperativeLevel(d3_l->dfb,DFSCL_FULLSCREEN); @@ -100,28 +93,40 @@ int d3_lattice_release(d3_lattice *d3_l) return 1; } -int dx_lattice_get_color(unsigned char *status,unsigned char *r,unsigned char *g,unsigned char *b) +int dx_lattice_get_color(unsigned char *status,unsigned char *r,unsigned char *g,unsigned char *b,unsigned char mode) { - if((*status)&RED) + *g=0; + if(!mode) + { + if((*status)&RED) + { + *r=0xff; + *b=0; + } else + { + *r=0; + *b=0xff; + } + } else if(mode==1) { - *r=0xff; - *g=0; - *b=0; - } else + *r=*status; + *g=*status; + *b=0xff; + } else if(mode==2) { - *r=0; - *g=0; + *r=*status; *b=0xff; } return 1; } -int d2_lattice_draw(d2_lattice *d2_l,int x,int y,int arg_c,char **arg_v) +int d2_lattice_draw(d2_lattice *d2_l,int x,int y,int arg_c,char **arg_v,unsigned char mode) { int x_c,y_c; int i; unsigned char r,g,b,a; + unsigned char foobar; a=0xff; /* no alpha blending */ @@ -129,7 +134,17 @@ int d2_lattice_draw(d2_lattice *d2_l,int x,int y,int arg_c,char **arg_v) { for(y_c=0;y_cmax_y;y_c++) { - dx_lattice_get_color((*d2_l).status+x_c+y_c*d2_l->max_x,&r,&g,&b); + if(!mode) dx_lattice_get_color((*d2_l).status+x_c+y_c*d2_l->max_x,&r,&g,&b,mode); + if(mode==1) + { + foobar=(unsigned char)(*(d2_l->extra+x_c+y_c*d2_l->max_x)*255/MAX_EXTRA); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } + if(mode==2) + { + foobar=(*(unsigned char *)(d2_l->v_ptr+x_c+y_c*d2_l->max_x)); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } if(x_c==x && y_c==y) { r=0xff; @@ -169,10 +184,11 @@ int d2_lattice_draw(d2_lattice *d2_l,int x,int y,int arg_c,char **arg_v) return 1; } -int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v) +int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,unsigned char mode) { int x_c,y_c,z_c; int i; + unsigned char foobar; unsigned char r,g,b,a; a=0xff; /* no alpha blending */ @@ -182,7 +198,17 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v) { for(z_c=0;z_cmax_z;z_c++) { - dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b); + if(!mode) dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b,mode); + if(mode==1) + { + foobar=(unsigned char)(*(d3_l->extra+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)*255/MAX_EXTRA); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } + if(mode==2) + { + foobar=(*(unsigned char *)(d3_l->v_ptr+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } if(x_c==x && z_c==z) { r=0xff; @@ -202,7 +228,17 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v) { for(z_c=0;z_cmax_z;z_c++) { - dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b); + if(!mode) dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b,mode); + if(mode==1) + { + foobar=(unsigned char)(*(d3_l->extra+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)*255/MAX_EXTRA); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } + if(mode==2) + { + foobar=(*(unsigned char *)(d3_l->v_ptr+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } if(y_c==y && z_c==z) { r=0xff; @@ -222,7 +258,17 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v) { for(y_c=0;y_cmax_y;y_c++) { - dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b); + if(!mode) dx_lattice_get_color((*d3_l).status+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y,&r,&g,&b,mode); + if(mode==1) + { + foobar=(unsigned char)(*(d3_l->extra+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)*255/MAX_EXTRA); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } + if(mode==2) + { + foobar=(*(unsigned char *)(d3_l->v_ptr+x_c+y_c*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)); + dx_lattice_get_color(&foobar,&r,&g,&b,mode); + } if(x_c==x && y_c==y) { r=0xff; @@ -294,7 +340,7 @@ int d3_event_init(d3_lattice *d3_l) return 1; } -int scan_event(d3_lattice *d3_l,int *x,int *y,int *z,int *q,int *esc) +int scan_event(d3_lattice *d3_l,int *x,int *y,int *z,int *q,int *esc,int *switchmode) { DFBInputEvent ke; @@ -310,6 +356,7 @@ int scan_event(d3_lattice *d3_l,int *x,int *y,int *z,int *q,int *esc) if(ke.key_id==DIKI_PAGE_DOWN && *z!=d3_l->max_z-1) *z+=1; if(ke.key_id==DIKI_Q) *q=1; if(ke.key_id==DIKI_ESCAPE) *esc=1; + if(ke.key_id==DIKI_M) *switchmode=(*switchmode+1)%3; } return 1;