📄 switch.c
字号:
#include<gnome.h>#include"switch.h"#include"main.h"#include"sg.h"#define Sw_Num 17#define DB_REQ 1#define FB_REQ 2#define DBJ 0xaa#define FBJ 0x55#define NUL1 0 GnomeCanvasItem *sw1_DB; GnomeCanvasItem *sw1_FB; GnomeCanvasItem *sw3_DB; GnomeCanvasItem *sw3_FB; GnomeCanvasItem *sw5_DB; GnomeCanvasItem *sw5_FB; GnomeCanvasItem *sw7_DB; GnomeCanvasItem *sw7_FB; GnomeCanvasItem *sw9_DB; GnomeCanvasItem *sw9_FB; GnomeCanvasItem *sw11_DB; GnomeCanvasItem *sw11_FB; GnomeCanvasItem *sw13_DB; GnomeCanvasItem *sw13_FB; GnomeCanvasItem *sw15_DB; GnomeCanvasItem *sw15_FB; GnomeCanvasItem *sw17_DB; GnomeCanvasItem *sw17_FB; GnomeCanvasItem *sw19_DB; GnomeCanvasItem *sw19_FB; GnomeCanvasItem *sw2_DB; GnomeCanvasItem *sw2_FB; GnomeCanvasItem *sw4_DB; GnomeCanvasItem *sw4_FB; GnomeCanvasItem *sw6_DB; GnomeCanvasItem *sw6_FB; GnomeCanvasItem *sw8_DB; GnomeCanvasItem *sw8_FB; GnomeCanvasItem *sw10_DB; GnomeCanvasItem *sw10_FB; GnomeCanvasItem *sw12_DB; GnomeCanvasItem *sw12_FB; GnomeCanvasItem *sw14_DB; GnomeCanvasItem *sw14_FB; int SwNode_StatTab[Sw_Num][10]={/*道岔静态表*/ 0x4000,11,10,38,0x4001,0x2005,0x8001,NUL1,0x4001,0x2005, /* C1 */ 0x4001,11,12,32,0x4000,0x801a,0x2006,0x4000,NUL1,0x2006, /* C3 */ 0x4002,11,17,32,0x4003,0x2007,0x8004,NUL1,0x4003,0x2007, /* C5 */ 0x4003,11,19,26,0x4002,0x8003,0x2008,0x4002,NUL1,0x2008, /* C7 */ 0x4004,12,17,26,0x4005,0x2008,0x8007,NUL1,0x4005,0x2008, /* C9 */ 0x4005,12,19,32,0x4004,0x8002,0x2007,0x4004,NUL1,0x2007, /* C11 */ 0x4006,12,24,32,0x4007,0x2009,0x8009,NUL1,0x4007,0x2009, /* C13 */ 0x4007,12,26,38,004006,0x8006,0x200a,0x4006,NUL1,0x200a, /* C15 */ 0x4008,2,24,26,NUL1,0x200b,0x800c,NUL1,0x800d,0x200b, /* C17 */ 0x4009,3,30,38,NUL1,0x200c,0x800e,NUL1,0x800f,0x200c, /* C19 */ 0x400a,12,65,38,0x400b,0x2016,0x2014,0x400b,NUL1,0x2014, /* C2 */ 0x400b,12,63,32,0x400a,0x2016,0x8011,NUL1,0x400a,0x2015, /* C4 */ 0x400c,11,65,32,0x400d,0x8012,0x2015,0x400d,NUL1,0x2015, /* C6 */ 0x400d,11,63,38,0x400c,0x2014,0x8010,NUL1,0x400c,0x2014, /* C8 */ 0x400e,0,59,38,NUL1,0x8013,0x2016,0x8017,NUL1,0x2016, /* C10 */ 0x400f,1,59,32,NUL1,0x8015,0x2017,0x4010,NUL1,0x2017, /* C12 */ 0x4010,1,54,26,NUL1,0x8016,0x400f,0x8018,NUL1,0x2017 /* C14 */ };int Show_Sw(GtkWidget * canvas){ aw=(struct area_window *)shmat(shmid_win, 0, 0); /* initialize account info in shared memory */ int i,dir=0,type=0; int Dyn_Code,temp1,temp2; double sx,sy; gchar*cor; if(Sw_Num<=1) return 0; for(i=0;i<Sw_Num;i++){ type= SwNode_StatTab[i][1];/*道岔类型*/ Dyn_Code=aw->SwNode_DynTab[i][1]; if(type<4){ sx= SwNode_StatTab[i][2]*10.0; sy= SwNode_StatTab[i][3]*10.0; if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ; else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[3]; else dir=3; Draw_Sw(sx,sy,dir,type,canvas,cor,i); } else if(type==11){ sx= SwNode_StatTab[i][2]*10.0; sy= SwNode_StatTab[i][3]*10.0; temp1=SwNode_StatTab[i][7]; temp2=SwNode_StatTab[i][8]; if((temp1==NUL1)&&(temp2!=NUL1)) type=2; else if((temp1!=NUL1)&&(temp2==NUL1)) type=0; if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ; else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[6]; else dir=3; Draw_Sw(sx,sy,dir,type,canvas,cor,i); } else if(type==12){ sx= SwNode_StatTab[i][2]*10.0; sy= SwNode_StatTab[i][3]*10.0; temp1=SwNode_StatTab[i][7]; temp2=SwNode_StatTab[i][8]; if((temp1==NUL1)&&(temp2!=NUL1)) type=3; else if((temp1!=NUL1)&&(temp2==NUL1)) type=1; if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ; else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[6]; else dir=3; Draw_Sw(sx,sy,dir,type,canvas,cor,i); } } return 1;}int Draw_Sw(double swx,double swy,int direct,int itype,GtkWidget * canvas,gchar*cor,int j){ GnomeCanvasGroup *group; GnomeCanvasPoints *point1; GnomeCanvasPoints *point2; GnomeCanvasPoints *point3; GnomeCanvasPoints *point4; group=gnome_canvas_root(GNOME_CANVAS(canvas)); double s1x,s1y,s2x,s2y,s3x,s3y/*c1x,c1y,c2x,c2y,c3x,c3y,c4x,c4y,c5x,c5y,c6x,c6y*/; s1x=swx; s1y=swy; if(itype==0){ s2x=s1x-7; s2y=s1y; s3x=s1x-3; s3y=s1y+9; if(value==FALSE){ point1=gnome_canvas_points_new(2); point1->coords[0]=s1x; point1->coords[1]=s1y; point1->coords[2]=s2x; point1->coords[3]=s2y; gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point1,"fill_color", "black","width_units",4.0, "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]=s1x; point2->coords[1]=s1y; point2->coords[2]=s3x; point2->coords[3]=s3y; gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point2,"fill_color", "black","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2); } if(j==1){ if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/ point3=gnome_canvas_points_new(2); point3->coords[0]=s1x; point3->coords[1]=s1y; point3->coords[2]=s2x; point3->coords[3]=s2y; sw3_DB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point3,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3); point4=gnome_canvas_points_new(2); point4->coords[0]=s1x; point4->coords[1]=s1y; point4->coords[2]=s3x; point4->coords[3]=s3y; sw3_FB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point4,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point4); if(direct==DB_REQ){ gnome_canvas_item_show(sw3_DB); gnome_canvas_item_hide(sw3_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw3_FB); gnome_canvas_item_hide(sw3_DB); } } if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/ { if(direct==DB_REQ){ gnome_canvas_item_show(sw3_DB); gnome_canvas_item_hide(sw3_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw3_FB); gnome_canvas_item_hide(sw3_DB); } } }if(j==14){ if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/ point3=gnome_canvas_points_new(2); point3->coords[0]=s1x; point3->coords[1]=s1y; point3->coords[2]=s2x; point3->coords[3]=s2y; sw10_DB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point3,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3); point4=gnome_canvas_points_new(2); point4->coords[0]=s1x; point4->coords[1]=s1y; point4->coords[2]=s3x; point4->coords[3]=s3y; sw10_FB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point4,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point4); if(direct==DB_REQ){ gnome_canvas_item_show(sw10_DB); gnome_canvas_item_hide(sw10_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw10_FB); gnome_canvas_item_hide(sw10_DB); } } if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/ { if(direct==DB_REQ){ gnome_canvas_item_show(sw10_DB); gnome_canvas_item_hide(sw10_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw10_FB); gnome_canvas_item_hide(sw10_DB); } } } if(j==3){ if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/ point3=gnome_canvas_points_new(2); point3->coords[0]=s1x; point3->coords[1]=s1y; point3->coords[2]=s2x; point3->coords[3]=s2y; sw7_DB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point3,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3); point4=gnome_canvas_points_new(2); point4->coords[0]=s1x; point4->coords[1]=s1y; point4->coords[2]=s3x; point4->coords[3]=s3y; sw7_FB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point4,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point4); if(direct==DB_REQ){ gnome_canvas_item_show(sw7_DB); gnome_canvas_item_hide(sw7_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw7_FB); gnome_canvas_item_hide(sw7_DB); } } if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/ { if(direct==DB_REQ){ gnome_canvas_item_show(sw7_DB); gnome_canvas_item_hide(sw7_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw7_FB); gnome_canvas_item_hide(sw7_DB); } } }if(j==12){ if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/ point3=gnome_canvas_points_new(2); point3->coords[0]=s1x; point3->coords[1]=s1y; point3->coords[2]=s2x; point3->coords[3]=s2y; sw6_DB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point3,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3); point4=gnome_canvas_points_new(2); point4->coords[0]=s1x; point4->coords[1]=s1y; point4->coords[2]=s3x; point4->coords[3]=s3y; sw6_FB= gnome_canvas_item_new(group,gnome_canvas_line_get_type(), "points",point4,"fill_color", "blue","width_units",4.0, "join_style", GDK_CAP_BUTT,"line_style", GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point4); if(direct==DB_REQ){ gnome_canvas_item_show(sw6_DB); gnome_canvas_item_hide(sw6_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw6_FB); gnome_canvas_item_hide(sw6_DB); } } if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/ { if(direct==DB_REQ){ gnome_canvas_item_show(sw6_DB); gnome_canvas_item_hide(sw6_FB); } if(direct==FB_REQ){ gnome_canvas_item_show(sw6_FB); gnome_canvas_item_hide(sw6_DB); } } } } else if(itype==1){ s2x=s1x-7; s2y=s1y; s3x=s1x-3; s3y=s1y-9; if(value==FALSE){ point1=gnome_canvas_points_new(2); point1->coords[0]=s1x;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -