fixed nlsop for packaging ..
[physik/nlsop.git] / dfbapi.c
index b9b2656..b922cc4 100644 (file)
--- a/dfbapi.c
+++ b/dfbapi.c
@@ -97,7 +97,7 @@ int d3_lattice_release(d3_lattice *d3_l)
 int dx_lattice_get_color(unsigned char *status,unsigned char *r,unsigned char *g,unsigned char *b,unsigned char mode)
 {
  *g=0;
- if(!mode)
+ if((!mode)||mode==3)
  {
   if((*status)&RED)
   {
@@ -185,10 +185,10 @@ int d2_lattice_draw(d2_lattice *d2_l,int x,int y,int arg_c,char **arg_v,unsigned
  return 1;
 }
 
-int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,unsigned char mode,int max_extra)
+int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,unsigned char mode,int max_extra,u32 *p1,u32 max1,u32 *p2,u32 max2)
 {
  int x_c,y_c,z_c;
- int i;
+ int i,sum;
  unsigned char foobar;
  unsigned char r,g,b,a;
 
@@ -199,7 +199,23 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,un
  {
   for(z_c=0;z_c<d3_l->max_z;z_c++)
   {
-   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)||mode==3)
+   {
+    sum=0;
+    for(i=-2;i<=2;i++)
+     if(*(d3_l->status+x_c+((y_c+i+d3_l->max_y)%d3_l->max_y)*d3_l->max_x+z_c*d3_l->max_x*d3_l->max_y)&RED) sum+=0xff;
+    g=0; b=0;
+    r=(unsigned char)(sum/5);
+   }
+   if(mode==3)
+   {
+    if(d3_l->max_x*p1[z_c]/max1==x_c)
+    {
+     r=0xff;
+     g=0xff;
+     b=0xff;
+    }
+   }
    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);
@@ -229,7 +245,16 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,un
  {
   for(z_c=0;z_c<d3_l->max_z;z_c++)
   {
-   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)||mode==3) 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==3)
+   {
+    if((int)(d3_l->max_y*(1.0*p2[z_c]/max2))==y_c)
+    {
+     r=0xff;
+     g=0xff;
+     b=0xff;
+    }
+   }
    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);
@@ -259,7 +284,7 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,un
  {
   for(y_c=0;y_c<d3_l->max_y;y_c++)
   {
-   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)||mode==3) 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);
@@ -296,32 +321,12 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v,un
  d3_l->p_surface->DrawRectangle(d3_l->p_surface,
                                 d3_l->info_x,d3_l->info_y,
                                 d3_l->info_w,d3_l->info_h);
- /* old style
- d3_l->p_surface->DrawLine(d3_l->p_surface,
-                           d3_l->info_x+d3_l->info_w/2,
-                           d3_l->info_y,
-                           d3_l->info_x+d3_l->info_w/2,
-                           d3_l->info_y+d3_l->info_h);
- */
  d3_l->p_surface->SetColor(d3_l->p_surface,0x80,0x80,0xff,0xff);
  for(i=1;i<=arg_c;i++)
- {
-  // if(i<13)
-  // {
    d3_l->p_surface->DrawString(d3_l->p_surface,arg_v[i],-1,
                                d3_l->info_x+d3_l->fakt_x,
                                d3_l->info_y+2*d3_l->fakt_y+d3_l->font_h+(i-1)*d3_l->font_h,
                                DSTF_LEFT);
-  // } else
-  // {
-  /* old style
-    d3_l->p_surface->DrawString(d3_l->p_surface,arg_v[i],-1,
-                                d3_l->info_x+d3_l->info_w/2+d3_l->fakt_x,
-                                d3_l->info_y+2*d3_l->fakt_y+d3_l->font_h+(i%13-1)*d3_l->font_h,
-                                DSTF_LEFT);
-  */
-  // }
- }
 
  /* now we flip all to surface */
  d3_l->p_surface->Flip(d3_l->p_surface,NULL,0);
@@ -359,17 +364,27 @@ int scan_event(d3_lattice *d3_l,int *x,int *y,int *z,int *q,int *esc,int *switch
   if(ke.key_id==DIKI_DOWN && *y!=d3_l->max_y-1) *y+=1;
   if(ke.key_id==DIKI_PAGE_UP && *z!=0) *z-=1;
   if(ke.key_id==DIKI_PAGE_DOWN && *z!=d3_l->max_z-1) *z+=1;
+  if(ke.key_id==DIKI_END && *z<=d3_l->max_z-10) *z+=10;
+  if(ke.key_id==DIKI_HOME && *z>=10) *z-=10;
   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;
+  if(ke.key_id==DIKI_M) *switchmode=(*switchmode+1)%4;
   if(ke.key_id==DIKI_1) *bmp=1;
   if(ke.key_id==DIKI_2) *bmp=2;
   if(ke.key_id==DIKI_3) *bmp=3;
   if(ke.key_id==DIKI_4) *bmp=4;
   if(ke.key_id==DIKI_5) *bmp=5;
+  if(ke.key_id==DIKI_6) *bmp=6;
+  if(ke.key_id==DIKI_7) *bmp=7;
+  if(ke.key_id==DIKI_8) *bmp=8;
+  if(ke.key_id==DIKI_9) *bmp=9;
+  if(ke.key_id==DIKI_W) *bmp=10;
+  if(ke.key_id==DIKI_E) *bmp=11;
+  if(ke.key_id==DIKI_R) *bmp=12;
   if(ke.key_id==DIKI_A) *ac_distr=1;
   if(ke.key_id==DIKI_C) *ac_distr=2;
   if(ke.key_id==DIKI_B) *ac_distr=3;
+  if(ke.key_id==DIKI_X) *ac_distr=4;
  }
 
  return 1;