mirror of https://github.com/x64dbg/btparser
87 lines
1.8 KiB
Plaintext
87 lines
1.8 KiB
Plaintext
1:
|
|
2:
|
|
3:
|
|
4:
|
|
5:
|
|
6:
|
|
7:
|
|
8:
|
|
9: typedef struct point_s { double X ; double Y ; } POINT ;
|
|
10:
|
|
11: string GetByteSize ( int wordSize )
|
|
12: {
|
|
13: string s ;
|
|
14: SPrintf ( s , "%d" , 2 * wordSize ) ;
|
|
15: return s ;
|
|
16: }
|
|
17:
|
|
18: struct ESRI_SHAPE {
|
|
19: SetBackColor ( cLtGreen ) ;
|
|
20: struct HEADER {
|
|
21: BigEndian ( ) ;
|
|
22: int fileCode ;
|
|
23: int unused [ 5 ] ;
|
|
24: int fileLength < read = GetByteSize > ;
|
|
25: LittleEndian ( ) ;
|
|
26: int version ;
|
|
27: enum ShapeEnum {
|
|
28: NullShape ,
|
|
29: Point ,
|
|
30: PolyLine = 3 ,
|
|
31: Polygon = 5 ,
|
|
32: MultiPoint = 5 ,
|
|
33: PointZ = 11 ,
|
|
34: PolyLineZ = 13 ,
|
|
35: PolygonZ = 15 } shapeType ;
|
|
36: double Xmin ;
|
|
37: double Ymin ;
|
|
38: double Xmax ;
|
|
39: double Ymax ;
|
|
40: double Zmin ;
|
|
41: double Zmax ;
|
|
42: double Mmin ;
|
|
43: double Mmax ;
|
|
44: } header ;
|
|
45: SetBackColor ( cLtGray ) ;
|
|
46: struct RECORD {
|
|
47: BigEndian ( ) ;
|
|
48: int recordNumber ;
|
|
49: int contentLength < read = GetByteSize > ;
|
|
50: LittleEndian ( ) ;
|
|
51: enum ShapeTypeEnum {
|
|
52: NullShapeType ,
|
|
53: PointType ,
|
|
54: PolyLineType = 3 ,
|
|
55: PolygonType = 5 ,
|
|
56: MultiPointType = 8 ,
|
|
57: PointZType = 11 ,
|
|
58: PolyLineZType = 13 ,
|
|
59: PolygonZType = 15 ,
|
|
60: MultiPointZType = 18 ,
|
|
61: PointMType = 21 ,
|
|
62: PolyLineMType = 23 ,
|
|
63: PolygonMType = 25 ,
|
|
64: MultiPointMType = 28 ,
|
|
65: MultiPatchType = 31 } shapeType ;
|
|
66: if ( shapeType == 1 )
|
|
67: {
|
|
68: POINT location ;
|
|
69: }
|
|
70: else if ( shapeType == 3 )
|
|
71: {
|
|
72: double box [ 4 ] ;
|
|
73: int numParts ;
|
|
74: int numPoints ;
|
|
75: int parts [ numParts ] ;
|
|
76: POINT points [ numPoints ] ;
|
|
77: }
|
|
78: else if ( shapeType == 5 )
|
|
79: {
|
|
80: double box [ 4 ] ;
|
|
81: int numParts ;
|
|
82: int numPoints ;
|
|
83: int parts [ numParts ] ;
|
|
84: POINT points [ numPoints ] ;
|
|
85: }
|
|
86: } record [ 10000 ] < optimize = false > ;
|
|
87: } esri_shape ; tok_eof |