syntax = "proto3"; package graphicData; option java_package = "club.joylink.bjrtss.ats.verify.protos"; option java_outer_classname = "LayoutGraphicsProto"; message RtssGraphicStorage { Canvas canvas = 1; repeated Link links = 2; repeated IscsFan iscsFans = 3; repeated Platform Platforms = 4; repeated Station stations = 5; repeated Rect rects = 6; repeated Train train = 7; repeated Signal signals = 8; repeated Turnout turnouts = 9; repeated Section section = 10; repeated Polygon polygons = 11; repeated TrainWindow trainWindows = 12; repeated AxleCounting axleCountings = 13; repeated Separator separators = 14; repeated SectionLink sectionLinks = 15; repeated AxleCountingSection axleCountingSections = 16; repeated LogicSection logicSections = 17; } message Canvas { // 画布宽 int32 width = 1; // 画布高 int32 height = 2; // 背景色 string backgroundColor = 3; // 视口变换 Transform viewportTransform = 4; } message Point { // x坐标 float x = 1; // y坐标 float y = 2; } //变换 message Transform { // 位移 Point position = 1; // 缩放 Point scale = 2; // 旋转弧度 float rotation = 3; // 歪斜 Point skew = 4; } //子元素变换 message ChildTransform { // 子元素名称 string name = 1; // 子元素变换 Transform transform = 2; } // 公共属性 message CommonInfo { string id = 1; string graphicType = 2; Transform transform = 3; repeated ChildTransform childTransforms = 4; } message Link { CommonInfo common = 1; string code = 2; bool curve = 3; // 是否曲线 int32 segmentsCount = 4; // 曲线分段数 int32 lineWidth = 5; // 线宽 string lineColor = 6; // 线色 repeated Point points = 7; // 点坐标列表 } message Rect { CommonInfo common = 1; string code = 2; int32 lineWidth = 3; // 线宽 string lineColor = 4; // 线色 float width = 5; //宽度 float height = 6; //高度 int32 radius = 7; //圆角半径 Point point = 8; // 画第一个点的坐标 } message Polygon { CommonInfo common = 1; string code = 2; int32 lineWidth = 3; // 线宽 string lineColor = 4; // 线色 repeated Point points = 5; // 点坐标列表 } message Platform { CommonInfo common = 1; string code = 2; bool hasdoor = 3; // 是否有屏蔽门 string direction = 4; // 行驶方向--屏蔽门上下 } message Station { CommonInfo common = 1; string code = 2; bool hasControl = 3; // 是否有控制 bool concentrationStations = 4; //是否集中站 // string kilometerCode = 5; //公里标 KilometerSystem kilometerSystem = 6; //公里标 } message TrainWindow { CommonInfo common = 1; string code = 2; string sectionId = 3; } message AxleCounting { CommonInfo common = 1; string code = 2; KilometerSystem kilometerSystem = 3; //公里标 repeated RelatedRef axleCountingRef = 4; // 关联的设备 int32 indexNumber = 5; //计轴的索引编号 } message Train { CommonInfo common = 1; string code = 2; } message IscsFan { CommonInfo common = 1; string code = 2; } message Turnout { CommonInfo common = 1; string code = 2; repeated Point pointA = 6; // A端坐标列表 repeated Point pointB = 7; // B端坐标列表 repeated Point pointC = 8; // C端坐标列表 RelatedRef paRef = 9; // 道岔A端关联的设备 RelatedRef pbRef = 10; // 道岔B端关联的设备 RelatedRef pcRef = 11; // 道岔C端关联的设备 // KilometerSystem kilometerSystem = 12; // 道岔公里标 repeated KilometerSystem kilometerSystem = 13; // 道岔公里标 } message KilometerSystem { int64 kilometer = 1; string coordinateSystem = 2; } message Signal { CommonInfo common = 1; string code = 2; bool mirror = 3; // int64 kilometer = 4; // string coordinateSystem = 5; KilometerSystem kilometerSystem = 6; } /** 物理区段(包含岔区和非岔区) */ message Section { enum SectionType { Physical = 0; TurnoutPhysical = 2; } CommonInfo common = 1; string code = 2; // 编号 repeated Point points = 3; // 点列表 RelatedRef paRef = 4; // 区段A端关联的设备(非岔区) RelatedRef pbRef = 5; // 区段B端关联的设备(非岔区) SectionType sectionType = 6; // 区段类型 repeated string axleCountings = 7; // 区段对应的计轴 int32 index = 8; // 索引 } message KilometerPoint { Point point = 1; int64 kilometer = 2; string stName = 3; } //关联设备 message RelatedRef { enum DeviceType { Section = 0; Turnout = 1; TrainWindow = 2; AxleCounting = 3; SectionLink = 4; } enum DevicePort { A = 0; B = 1; C = 2; } DeviceType deviceType = 1; //关联的设备类型 string id = 2; //关联的设备ID DevicePort devicePort = 3; //关联的设备端口 } //与道岔的位置关系 message TurnoutPosRef { string id = 1; //道岔的ID int32 position = 2; //道岔的正反为,0是正位,1是反位 } message Separator { // 分隔符 CommonInfo common = 1; string code = 2; string separatorType = 3; } message SimpleRef{ enum DeviceType { Turnout = 0; AxleCounting = 1; } DeviceType deviceType = 1; string id = 2; } message SectionLink { CommonInfo common = 1; string code = 2; repeated Point points = 3; bool up = 4; SimpleRef aSimRef = 5; SimpleRef bSimRef = 6; RelatedRef aRef = 7; RelatedRef bRef = 8; } message AxleCountingSection { // 计轴区段 CommonInfo common = 1; string code = 2; repeated Point points = 3; RelatedRef paRef = 4; // 区段A端关联的设备 RelatedRef pbRef = 5; // 区段B端关联的设备 repeated TurnoutPosRef turnoutPos = 6; //关联道岔的正反位 int32 indexNumber = 7; //区段的索引编号 } message LogicSection { // 逻辑区段 CommonInfo common = 1; string code = 2; repeated Point points = 3; string axleSectionId = 4; // 关联的计轴区段Id int32 indexNumber = 5; // 索引编号 string turnoutId = 6; // 关联的岔芯对应的道岔id }