📄 switch.c
字号:
#include<gnome.h>#include"switch.h"#include"sg.h"#define Sw_Num 17#define DB_REQ 1#define FB_REQ 2#define DBJ 0xaa#define FBJ 0x55#define NUL1 0int SwNode_StatTab[Sw_Num][9]={/*道岔静态表*/ 0x4000,2,10,38,0,0x2005,0x8001,NUL1,0x4001, /* C1 */ 0x4001,0,12,32,0,0x801a,0x8002,0x4000,NUL1, /* C3 */ 0x4002,2,17,32,0,0x2007,0x8004,NUL1,0x4003, /* C5 */ 0x4003,0,19,26,0,0x8003,0x2008,0x4002,NUL1, /* C7 */ 0x4004,3,17,26,0,0x0000,0x8008,NUL1,0x4005, /* C9 */ 0x4005,1,19,32,0,0x8002,0x2007,0x4005,NUL1, /* C11 */ 0x4006,3,24,32,0,0x2009,0x8009,NUL1,0x4007, /* C13 */ 0x4007,1,26,38,0,0x8006,0x200a,0x4006,NUL1, /* C15 */ 0x4008,2,24,26,0,0x200b,0x800c,NUL1,0x800d, /* C17 */ 0x4009,3,30,38,0,0x200c,0x800e,NUL1,0x800f, /* C19 */ 0x400a,1,65,38,0,0x2017,0x2015,0x400b,NUL1, /* C2 */ 0x400b,3,63,32,0,0x2016,0x8001,NUL1,0x400a, /* C4 */ 0x400c,0,65,32,0,0x8012,0x2016,0x400d,NUL1, /* C6 */ /*0x400d???? */ 0x400d,2,63,38,0,0x2015,0x8010,NUL1,0x400c, /* C8 */ 0x400e,0,59,38,0,0x8013,0x2017,0x8017,NUL1, /* C10 */ 0x400f,1,59,32,0,0x8015,0x2018,0x4010,NUL1, /* C12 */ 0x4010,1,54,26,0,0x801b,NUL1,0x8018,0x400f /* C14 */ }; int SwNode_DynTab[Sw_Num][5]={/* 道岔动态表*/ 0x4000,0xaa,0xaa,0x55,0xaa, /* C1 */ 0x4001,0xaa,0xaa,0x55,0xaa, /* C3 */ 0x4002,0x55,0xaa,0x55,0xaa, /* C5 */ 0x4003,0xaa,0xaa,0x55,0xaa, /* C7 */ 0x4004,0xaa,0xaa,0x55,0xaa, /* C9 */ 0x4005,0x55,0xaa,0x55,0xaa, /* C11*/ 0x4006,0x55,0xaa,0x55,0xaa, /* C13*/ 0x4007,0x55,0xaa,0x55,0xaa, /* C15*/ 0x4008,0xaa,0xaa,0x55,0xaa, /*C17*/ 0x4009,0xaa,0xaa,0x55,0xaa, /*C19*/ 0x400a,0xaa,0xaa,0x55,0xaa, /* C2*/ 0x400b,0x55,0xaa,0x55,0xaa, /* C4*/ 0x400c,0x55,0xaa,0x55,0xaa, /* C6*/ 0x400d,0xaa,0xaa,0x55,0xaa, /*C8 */ 0x400e,0x55,0xaa,0x55,0xaa, /*C10*/ 0x400f,0x55,0xaa,0x55,0xaa, /*C12*/ 0x4010,0x55,0xaa,0x55,0xaa /*C14*/ };int Show_Sw(GtkWidget * canvas){ int i,dir=0,type=0; unsigned char Dyn_Code; 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=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); } else if(type==11){ 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[6]; else dir=3; Draw_Sw(sx,sy,dir,0,canvas,cor); } else if(type==12){ 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[6]; else dir=3; Draw_Sw(sx,sy,dir,3,canvas,cor); } } return 1;}int Draw_Sw(double swx,double swy,int direct,int itype,GtkWidget * canvas,gchar*cor){ GnomeCanvasGroup *group; GnomeCanvasPoints *point1; GnomeCanvasPoints *point2; GnomeCanvasPoints *point3; GnomeCanvasPoints *point4; GnomeCanvasItem *line1; GnomeCanvasItem *line2; 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; } else if(itype==1){ s2x=s1x-7; s2y=s1y; s3x=s1x-3; s3y=s1y-9; } else if(itype==2){ s2x=s1x+7; s2y=s1y; s3x=s1x+3; s3y=s1y-9; } else if(itype==3){ s2x=s1x+7; s2y=s1y; s3x=s1x+3; s3y=s1y+9; } point1=gnome_canvas_points_new(2); point1->coords[0]=s1x; point1->coords[1]=s1y; point1->coords[2]=s2x; point1->coords[3]=s2y; line1= 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; line2= 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(direct==DB_REQ){ point3=gnome_canvas_points_new(2); point3->coords[0]=s1x; point3->coords[1]=s1y; point3->coords[2]=s2x; point3->coords[3]=s2y; 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); /* c1x=s2x-2.0; c1y=s2y-2.0; c2x=s2x+2.0; c2y=s2y+2.0; gnome_canvas_item_new(group, gnome_canvas_ellipse_get_type(), "x1",c1x,"y1",c1y,"x2",c2x,"y2",c2y,"fill_color",cor, NULL);*/ } else if(direct==FB_REQ){ point4=gnome_canvas_points_new(2); point4->coords[0]=s1x; point4->coords[1]=s1y; point4->coords[2]=s3x; point4->coords[3]=s3y; 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); /* c3x=s3x-2.0; c3y=s3y-2.0; c4x=s3x+2.0; c4y=s3y+2.0; gnome_canvas_item_new(group, gnome_canvas_ellipse_get_type(), "x1",c3x,"y1",c3y,"x2",c4x,"y2",c4y,"fill_color",cor, NULL);*/ } /* c5x=swx-2.0; c5y=swy-2.0; c6x=swx+2.0; c6y=swy+2.0; gnome_canvas_item_new(group, gnome_canvas_ellipse_get_type(), "x1",c5x,"y1",c5y,"x2",c6x,"y2",c6y,"fill_color",cor, NULL);*/ return 1; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -