⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgbk.h

📁 linux下的人机对话编程
💻 H
字号:
/*#include<gnome.h>#include"sg.h"#include"popmenu.h"#include"main.h"*/ int Show_Leg(GtkWidget * canvas){   int dir,h,i,idlamp;    double px,py;    gchar* cr,*cr1,*cr2;    unsigned char a,b,temp;     if(Sg_Num<=1) return 0;    for(i=0;i<25;i++){     idlamp=SgNode_StatTab[i][0];      b=SgNode_StatTab[i][1];      temp=aw->SgNode_DynTab[i][1];      px=SgNode_StatTab[i][2];      py=SgNode_StatTab[i][3];                 if((b==0xe8)||(b==0xdc)||(b==0xd0)||(b==0xe8)||(b==0xd8)||(b==0xe4)||(b==0xec)	  ||(b==0xd4)||(b==0xe0)){      /*单灯*/ 	a=b&0x01;	if(a==0x01) h=1;/*有腿*/	else h=0;/*无腿*/	a=b&0x04;	if(a==0x04) dir=1;/* <-- */	else dir=0;/*<--> */	if(temp==0x01) cr=color[1];	else cr=color[2];	DrawSignalSing(px,py,cr,dir,h,canvas,idlamp);                   }      else if((b==0x78)||(b==0x7e)){     /*双灯*/	a=b&0x04;	h=0;	if(a==0x04) dir=1; /*<--*/	else dir=0; /*-->*/	cr1=cr2=color[4];	if(temp==0x15) cr1=color[5];	else if(temp==0x0d){	  cr1=color[5];	  cr2=color[5];	  	}	else if(temp==0x03) cr1=color[2];	else if(temp==0x01) cr1=color[0];	 		else if(temp==0x05) cr1=color[5];		      	DrawSignalDouble(px,py,cr1,cr2,dir,h,canvas,idlamp);      }            else if((b==0x83)||(b==0x87)||(b==0xbb)){  /*三灯*/	a=b&0x01;	if(a==0x01) h=1;	else h=0;	a=b&0x04;	if(a==0x04) dir=1;/*<--*/	else dir=0; /*-->*/	if((temp==0x36)||(temp==0x37)) cr1=color[5];	else if(temp==0x67){	  cr1=color[5];	  cr2=color[3];	}	else if((temp==0x26)||(temp==0x27)) cr1=color[3];	else if(temp==0x23){	  cr1=color[3];	  cr2=color[3];	}	else if(temp==0x0b){	  cr1=color[0];	  cr2=color[2];	}	else if((temp==0x02)||(temp==0x03)) cr1=color[0];	DrawSignalDouble(px,py,cr1,cr2,dir,h,canvas,idlamp,i);      }	        }   return 1;} int  DrawSignalSing(double x,double y,gchar *cor,int dir,int h,GtkWidget * canvas,int idlamp,int i){  GnomeCanvasGroup *group;   GnomeCanvasPoints *point1;  GnomeCanvasPoints *point2;  GnomeCanvasItem *line1;  GnomeCanvasItem *line2; GnomeCanvasItem *singlelamp;   group=gnome_canvas_root(GNOME_CANVAS(canvas));  gdouble p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,p5x,p5y,p6x,p6y,p7x,p7y,p8x,p8y;    if((dir==0)&&(h==0)){      p1x=x+0.0;    p1y=y+5.0;    p2x=x+0.0;    p2y=y-5.0;    p3x=x+0.0;    p3y=y-8.0;    p4x=x+0.0;    p4y=p3y-10.0;    p5x=x+3.0;    p5y=p4y;    p6x=p5x;    p6y=p5y+10.0;    p7x=p5x+10.0;    p7y=p4y;    p8x=p7x;    p8y=p6y;      point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;     gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p4x;   point2->coords[3]=p4y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2);   } else  if((dir==1)&&(h==0)){     p1x=x;     p1y=y-5;     p2x=x;     p2y=y+5;     p3x=x;     p3y=y+8;     p4x=x;     p4y=p3y+10;     p5x=p3x-3;     p5y=p3y;     p6x=p5x;     p6y=p4y;     p7x=p5x-10;     p7y=p5y;     p8x=p7x;     p8y=p4y;     point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p4x;   point2->coords[3]=p4y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2);    }  return 1;}int  DrawSignalDouble(double x,double y,gchar *cor1,gchar *cor2,int dir,int h,GtkWidget * canvas,int idlamp,int i){ GnomeCanvasGroup *group;  GnomeCanvasPoints *point1;  GnomeCanvasPoints *point2;  GnomeCanvasPoints *point3;  GnomeCanvasItem *line1;  GnomeCanvasItem *line2;  GnomeCanvasItem *line3;  GnomeCanvasItem *doublelamp;   group=gnome_canvas_root(GNOME_CANVAS(canvas));  gdouble p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,p5x,p5y,p6x,p6y,p7x,p7y,p8x,p8y,p9x,p9y,p10x,p10y,p11x,p11y,p12x,p12y;   if((dir==0)&&(h==0)){     p1x=x;     p1y=y+5;     p2x=x;     p2y=y-5;     p3x=x;     p3y=y-8;     p4x=x;     p4y=p3y-10;     p5x=p3x+3;     p5y=p4y;     p6x=p5x;     p6y=p3y;     p7x=p5x+10;     p7y=p5y;     p8x=p7x;     p8y=p3y;     p9x=p7x+10;     p9y=p7y;     p10x=p9x;     p10y=p3y;     point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p4x;   point2->coords[3]=p4y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2);  }  if((dir==1)&&(h==0)){     p1x=x;     p1y=y-5;     p2x=x;     p2y=y+5;     p3x=x;     p3y=y+8;     p4x=x;     p4y=p3y+10;     p5x=p3x-3;     p5y=p3y;     p6x=p5x;     p6y=p4y;     p7x=p5x-10;     p7y=p5y;     p8x=p7x;     p8y=p4y;     p9x=p7x-10;     p9y=p3y;     p10x=p9x;     p10y=p4y;            point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p4x;   point2->coords[3]=p4y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2);  }  if((dir==0)&&(h==1)){/*画三灯-->*/     p1x=x;     p1y=y+5;     p2x=x;     p2y=y-5;     p3x=x;     p3y=y-8;     p4x=x;     p4y=p3y-5;     p5x=x;     p5y=p3y-10;     p6x=p5x+7;     p6y=p5y;     p7x=p6x;     p7y=p6y+5;     p8x=p7x;     p8y=p6y+10;     p9x=p6x+10;     p9y=p5y;     p10x=p9x;     p10y=p3y;     p11x=p9x+10;     p11y=p9y;     p12x=p11x;     p12y=p10y;             point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p5x;   point2->coords[3]=p5y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2); point3=gnome_canvas_points_new(2);   point3->coords[0]=p4x;   point3->coords[1]=p4y;   point3->coords[2]=p7x;   point3->coords[3]=p7y; line3= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point3,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3);  } if((dir==1)&&(h==1)){/*画三灯-->*/     p1x=x;     p1y=y-5;     p2x=x;     p2y=y+5;     p3x=x;     p3y=y+8;     p4x=x;     p4y=p3y+5;     p5x=x;     p5y=p3y+10;     p6x=p5x-7;     p6y=p5y;     p7x=p6x;     p7y=p6y-5;     p8x=p7x;     p8y=p6y-10;     p9x=p8x-10;     p9y=p3y;     p10x=p9x;     p10y=p5y;     p11x=p9x-10;     p11y=p3y;     p12x=p11x;     p12y=p10y;        point1=gnome_canvas_points_new(2);   point1->coords[0]=p1x;   point1->coords[1]=p1y;   point1->coords[2]=p2x;   point1->coords[3]=p2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "white","width_units",0.7,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=p3x;   point2->coords[1]=p3y;   point2->coords[2]=p5x;   point2->coords[3]=p5y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2); point3=gnome_canvas_points_new(2);   point3->coords[0]=p4x;   point3->coords[1]=p4y;   point3->coords[2]=p7x;   point3->coords[3]=p7y; line3= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point3,"fill_color", "white","width_units",0.6,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3);  }  return 1;}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -