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.