RSC - format of classifier of GIS Panorama ver. 7.2.(rsc.rfh):
Class: GIS files, Status: Almost Complete, Last change: 12.11.2020 19:01:48
//set encoding oem
set encoding ansi
type
TRSCSign array[4]of Char,<0;
TRscHdr0 struc
TRSCSign Sign
ulong FSize
ulong Ver //?
ends
data
0 TRscHdr0 Hdr0
assert (Hdr0.Sign='RSC')and(Hdr0.FSize=FileSize)and(Hdr0.Ver=0x0702);
descr ('RSC - format of classifier of the GIS Panorama ver. 7.2.',NL)
descr (' Partially reconstructed by me (AX) using Panorama API data structures',NL)
type bit
TBit num+(1)
TBit1 num+(1)
TBit2 num+(2)
TBit3 num+(3)
TBit4 num+(4)
TBit8 num+(8)
TBit11 num+(11)
TBit20 num+(20)
TBit23 num+(23)
TDoubleHi struc
TBit20 M
TBit11 P
TBit1 S //Sign 1->Neg
ends
TFloat struc
TBit23 M
TBit8 P
TBit1 S //Sign 1->Neg
ends: displ=(@.S,' 1.',HEX(@.M*2,6),'*2^',INT(@.P-0x7F));
type
TDouble struc
ulong Lo
TDoubleHi Hi
ends: displ=(@.Hi.S,' 1.',HEX(@.Hi.M,5),HEX(@.Lo,8),'*2^',INT(@.Hi.P-0x3FF));
type
u1 num+(1):displ=(INT(@))
u2 num+(2):displ=(INT(@))
TRSCDate array[8]of Char;
TRSCName32 array[32]of Char,<0;
TRSCName16 array[16]of Char,<0;
include rsc_gdi.rfi
type
TObjLoc enum u1 (
OL_LINE = 0, // Tøýõùývù
OL_SQUARE = 1, // ¦ûþ•ðôýþù
OL_MARK = 2, // Tþ¢õ¢ývù
OL_TEXT = 3, // ¦þôÿø¸¹
OL_VECTOR = 4, // Tõúªþ¨ývù
OL_PATTERN = 5) // +ðñûþý
TObjRec struc
ulong Sz
long ExCode
long i1
long i2
char LocCh
array[11]of Char,<0; sExCode
array[3]of ulong X
ulong SemC1
ulong X5
TRSCName32 Name
TObjLoc Loc
u1 Layer
u1 Scale //Scalable sign
u1 Direct
Byte GenLvl
Byte Yb1
Byte Yb2
Byte Yb3
long SemC1a //¦þô ¸õüðýªøúø, ÿ¨ø úþªþ¨þü òvñø¨ðõª¸ ôðýýð ÷ðÿø¸¹ (ôû ¸õ¨øù)
array[5]of ulong Y
raw[] Rest
ends:[@:Size=@.Sz]
TObjSec(Sz,Cnt) array[@:Cnt]of(TObjRec):[@:Size=@:Sz]
TSegRec struc
ulong Sz
TRSCName32 Name
TRSCName16 Key
sint N1
sint Order //¦þ¨ ôþú
word SemCnt
array[@.SemCnt]of long SemTbl //Semantics of the layer
raw[] Rest
ends:[@:Size=@.Sz]
TSegSec(Sz,Cnt) array[@:Cnt]of(TSegRec):[@:Size=@:Sz]
TParRec struc
ulong Sz
u2 N
TImgFnInfo F
raw[] Rest
ends:[@:Size=@.Sz]
TParSec(Sz,Cnt) array[@:Cnt]of(TParRec):[@:Size=@:Sz]
TSEMTYPE enum int ( // TL¦- ¦=L++=L- T+¦L=TL¦L
TUNDEFINED = -1, // ¦ýð¢õýøõ ýõ º¸ªðýþòûõýþ
TSTRING = 0, // Tøüòþû¹ý𠸪¨þúð
TNUMBER = 1, // +ø¸ûþòþõ ÷ýð¢õýøõ
TANYFILE = 9, // Lü ¯ðùûð ÷ð¨õóø¸ª¨ø¨þòðýýþóþ ªøÿð
TBMPFILE = 10, // Lü ¯ðùûð BMP
TOLEFILE = 11, // Lü ¯ðùûð,þñ¨ðñðªvòðõüþóþ OLE-¸õ¨òõ¨þü
TREFER = 12, // T¸vûúð ýð ÿ¨þø÷òþû¹ývù þñ·õúª úð¨ªv
// (ºýøúðû¹ývù ýþüõ¨ þñ·õúªð)
TMAPFILE = 13, // Lü ¯ðùûð-ÿð¸ÿþ¨ªð ¨ðùþýð
TTXTFILE = 14, // Lü ªõú¸ªþòþóþ ¯ðùûð
TPCXFILE = 15, // Lü ¯ðùûð PCX
TCODE = 16, // ¦ýð¢õýøõ ò òøôõ ¢ø¸ûþòþóþ úþôð
// ø÷ úûð¸¸ø¯øúðªþ¨ð ÷ýð¢õýøù
TDATE = 17, // ¦ýð¢õýøõ ôðªv ò ¢ø¸ûþòþü òøôõ (++++¦¦--)
TANGLE = 18, // Lóûþòð òõûø¢øýð ò ¨ðôøðýð¿
TTIME = 19, // ¦ýð¢õýøõ ò¨õüõýø ò ¢ø¸ûþòþü òøôõ (++¦¦TT)
TFONT = 20, // Lü °¨ø¯ªð ("Arial", "Courier"...)
TCOLOR = 21 // +ø¸ûþòþõ ÷ýð¢õýøõ ¡òõªð ò RGB
// TLAST = 21 // T+¦-=-- +¦L=LãL T¦LT¦L ¦+-+T
)
TSemRec struc
long Code
TSEMTYPE DT
word Y
TRSCName32 Name
TRSCName16 Key
ulong X0
ulong X1
word Len
word Prec
ulong ClsFileOfs
long ClsCnt
ulong X5
ulong X6
raw[] Rest
ends:[@:Size=0x54]
TSemSec(Sz,Cnt) array[@:Cnt]of(TSemRec):[@:Size=@:Sz]
TTxtRec struc
TRSCName32 Name
TRSCName32 Name1
long N
ulong F
ends
TTxtSec(Sz,Cnt) array[@:Cnt]of TTxtRec
TLimRec struc
ulong Sz
long ExCode
long Loc
long l2
long Sem1 //¦þô ÿõ¨òþù ¸õü.
u2 Cnt1
u2 C1
long Sem2
u2 Cnt2
u2 C2
array[@.Cnt1]of TDouble Lim1
array[@.Cnt2]of TDouble Lim2
/* array[@.Cnt1]of case @@.Cnt2 of
0: u1
else array[@@@.Cnt2]of u1
endc PosInCode*/
array[@.Cnt2 when (@.Cnt2>0) exc 1]of array[@@.Cnt1]of u1 PosInCode
raw[] Rest
ends:[@:Size=@.Sz]
TLimSec(Sz,Cnt) array[@:Cnt]of(TLimRec)//:[@:Size=@:Sz]
TPalRec struc
array[256]of TColor PalTbl
array[32]of Char,0; Name
ends
TPalSec(Sz,Cnt) array[@:Cnt]of(TPalRec):[@:Size=@:Sz]
TPosRec struc
ulong Sz
long ExCode
TObjLoc Loc
byte B0 //in fact Loc takes 4 bytes
u2 W0 //
u2 RqSemCnt
u2 SemCnt
array[@.RqSemCnt]of Long RqSem
array[@.SemCnt]of Long Sem
raw[] Rest
ends:[@:Size=@.Sz]
TPosSec(Sz,Cnt) array[@:Cnt]of(TPosRec):[@:Size=@:Sz]
TSecStart(Sz,Cnt) struc
TRSCSign Sign
case @.Sign of
'OBJ': TObjSec(@@:Sz,@@:Cnt)
'SEG': TSegSec(@@:Sz,@@:Cnt)
'PAR': TParSec(@@:Sz,@@:Cnt) //+ªþñ¨ðöõýøõ þñ·õúªþò
'PRN': TParSec(@@:Sz,@@:Cnt) //+ªþñ¨ðöõýøõ þñ·õúªþò ÿ¨ø ÿõ¢ðªø
'SEM': TSemSec(@@:Sz,@@:Cnt)
'TXT': TTxtSec(@@:Sz,@@:Cnt)
'LIM': TLimSec(@@:Sz,@@:Cnt)
'PAL': TPalSec(@@:Sz,@@:Cnt) //¦ðûøª¨v
'POS': TPosSec(@@:Sz,@@:Cnt)
endc data
raw[] at 0; rest
ends:[@:Size=@:Sz+4]
PSecStart(Sz,Cnt) ^TSecStart(@:Sz,@:Cnt) NEAR=ulong,REF=@-4;:displ=(@^.Sign,'{',@,'}')
TSecInfo struc
PSecStart Ofs
ulong Sz
long Cnt
ends:[@.Ofs:Sz=@.Sz,@.Ofs:Cnt=@.Cnt]
TRscHdr struc
ulong X3
ulong X4
long X5
long Language
long ObjCnt
TRSCDate Date
TRSCName32 RSCType
TRSCName32 Name
array[8]of Byte Code
long Scale
long X8
array[13] of TSecInfo SecInfo
ends
data
Hdr0:Size; TRscHdr Hdr
Other specifications.
FlexT home page,
Author`s home page.