StMapType

Top  Previous  Next

 

unit StMAPType;

 

{$REALCOMPATIBILITY ON}

 

interface

 

Uses

Windows, SysUtils, Graphics, Messages, Classes, Controls,

Forms, StdCtrls, ExtCtrls, Dialogs, Printers, Szamok, NewGeom;

 

Type

 

TActionMode = (amNone, amDrawing, amPaning, amZooming, amPainting,

                amSelect,

                amInsertPoint, amDeletePoint, amMovePoint,

                amChangePoint, amDeleteSelected, amMoveSelected, amRotateSelected,

                amNewBeginPoint, amMagnifySelected,  amSelectArea,

                amDistance);

 

TDrawMode = (dmNone, dmPoint, dmLine, dmText, dmKey, dmRectangle,

              dmPolyline, dmPolygon, dmCircle, dmEllipse, dmArc,

              dmChord, dmSpline, dmBspline, dmBlock,

              dmFreeHand);

 

TMove     = (elLeft,elRight,elUp,elDown);

 

TRajzelemStream = array[1..14] of TMemoryStream;   // TDrawMode indexe szerint

                 // 1..4 : Pont,vonal, felirat,jelkulcs

                 //    5 : Téglalap/3SZÖG (a 4. csúcs= 3. csúcs

                 //    6 : Polyline       12: Spline

                 //    7 : Polygon        13: BSpline

                 //    8 : kör            14: Blokk

                 //    9 : ellipszis      11: Cikk

                 //   10 : ív

 

 

TLreteg         = Array[0..255] of boolean;

 

TVisibleRajzelem= (vPont, vVonal, vFelirat, vJelkulcs, vKitolto, vTavolsag,

                  vPontszam, vMeretek, vKijeloltek, vCsakKijeloltek, vToroltek,

                  vCsakToroltek, vGrafikusAdatok);

TVisibleSet     = set of TVisibleRajzelem;

 

TAlakzatmod = (pNone,pKeres,pRajzol,pKijelol,pTorol,pAtemel,pMozgat);

TFeliratmod = (szSzovegkeres,szSzimpla,szEltolas,szVonalra,szSzogben,szNormal,

              szAtemel);

TTavmod     = (tmNormal,tmSzogben);

 

{mire keresünk a Keresesek rutinban?}

TKeresesMod = (kmPont, kmVonal, kmFelirat, kmJelkulcs, kmHRSZ);

TSearchMod = Set of TKeresesMod;

 

TRajzmodType = (

        rmNincs,         // 0

        rmPont,

        rmVonal,

        rmFelirat,

        rmJelkulcs,

        rmKitolto,       // 5

        rmPolyline,

        rmPolygon,

        rmNegyszog,

        rmEllipszis,

        rmKoriv,         // 10

        rmFeliratVonalra,

        rmBSpline,

        rmFreeHand,

        rmObjectum,

        rmTorol,         // 15

        rmKijelol,

        rmAblakkijelol,

        rmPoligonkijelol,

        rmPontAtrak,

        rmVonalAtemel,   // 20

        rmPontbeillesztes,

        rmTer,

        rmTermanual,

        rmTavmeres,

        rmHRSZker,      // 25

        rmForgatas,

        rmVonalosztas,

        rmVetites,

        rmMetszes,

        rmIvmetszes,    // 30

        rmMeroleges,

        rmBemeres,

        rmKituzes,

        rmTajekozas,

        rmElometszes,   // 35

        rmHatrametszes,

        rmOldalmetszes,

        rmPolarispont,

        rmBeillesztett,

        rmTajekozott1,  // 40

        rmTajekozott2,

        rmHRSZ,

        rmTRKSQL,

        rmTransform,

        rmInfo,         // 45

        rmHelp,

        rmFerdeNegyszog

        );

 

Type

 

TdsType = (Table,Query,SProc);

 

{ A kijelölt elemekkel végzendő műveletek }

Tjelolesmod= (jmNincs,    {nincs művelet}

             jmAll,      {Minden jelzőbit = 1}

             jmAllDel,   {Minden jelzőbit = 0}

             jmUndo,     {Kijelölés törlése = jelzo 7. bit = 0}

             jmTorles,   {törlésre jelölés = 0. bit = 1}

             jmReaktiv,  {Töröltek reaktiválása = 0. bit = 0}

             jmInvers,   {Jelölést ellentétesre vált = 7. bit = not 7. bit}

             jmJelDel,   {Kijelöltek törlése > 7. bit ha 1 másolás 0. bit-be}

             jmFilter,   {Filter SQL kijelolése = 4. bit = 1}

             jmDelFilter,{Filter SQL törlése    = 4. bit = 0}

             jmActReteg  {Aktuális réteg kijelölése}

             );

 

TMunkaterulet = record

irszam : string[4];

kozseg : string[20];

dir    : string[80];

terkep : string[80];

end;

 

{   jelzo : bitek:

         7.  kiválasztott (alakzat vagy group kijelöléseknél)

         6.  Uj alakzat (az utolsó mentés óta)

         5.  Grafikusan módosított

         4.  Filterben szereplő (homogén térképen szines terület)

         3.  Betranszformáláshoz kijelölve (részlet beillesztés alaptérképbe)

         2.  területszámitáshoz, objektumizáláshoz kijelölt

         1.  Lock = zárolt, nem módosítható!

         0.  törlésre jelölt rekord

}

 

 

TPointRecord = record

ID     : Longint;

x,y,z  : real;

jelzo  : byte;

end;

 

// Vonalzó

TMapRuler = record

P1,P2   : TPoint2d;

Scale   : double;

end;

{------------ StellaMAP adatrekordok ------------------}

 

TPontrecord = packed record    {Térkép pontok *.trk adatbázisa}

reteg  : byte;

No     : Longint;

x,y,z  : real48;

pkod   : Smallint;           {-1 = Infópont, -2 = Jelkulcs}

info   : Longint;            {Infokód v. Jelkulcskód}

obj    : word;               {Objektum kód}

jelzo  : byte;

end;

 

TVonalrecord = packed record   {Térkép vonalak *.lin adatbázisa}

reteg  : byte;

x1,y1,z1 : real48;

x2,y2,z2 : real48;

vastag : byte;               {Ha vastagság és vonaltipus = 0, akkor}

tipus  : word;               {a réteg alapértelmezése él}

obj1   : word;               {Objektum kód a vonal két oldalán}

obj2   : word;

jelzo  : byte;

end;

 

TSzovegrecord = packed record {Térkép feliratok *.szv adatbázisa}

reteg  : byte;

x,y    : real48;

kozsegkod : word;            {Jelenleg az irányítószám}

szoveg : string[20];

font   : byte;               {Windows font megjelölés}

szeles : byte;

stilus : byte;               {normál,vastag,dőlt, ...}

szog   : smallint;

obj    : word;               {Objektum kód}

jelzo  : byte;

end;

 

TJelkulcsRecord = packed record {Térkép jelkulcsok *.jlk adatbázisa}

kod    : word;

reteg  : byte;

x,y    : real;

meret  : word;               {a méret szorzó 100-szorosa}

szog   : word;

obj    : word;               {Objektum kód}

jelzo  : byte;

end;

 

TTeglaRecord = packed record

reteg  : byte;

koord  : TTeglalap;

jelzo  : byte;

end;

 

TKorRecord = packed record

reteg  : byte;

koord  : TKor;

Brush  : TBrush;

jelzo  : byte;

end;

 

TEllipszisRecord = packed record

reteg  : byte;

koord  : TKor;

jelzo  : byte;

end;

 

TKitoltorecord = packed record {Térkép kitöltők *.ktm adatbázisa}

kod    : word;               {kod=0, akkor a szin él, ha kod=1,akkor minta}

x,y    : real;

szin   : TColor;             {szin vagy kitöltő minta sorszáma}

end;

 

TRetegRecord = packed record           {Térkép rétegek *.rtg adatbázisa}

retegszam   : byte;

retegnev    : string[20];

pontszin    : TColor;

vonalszin   : TColor;

vonalvastag : Smallint;

vonalstylus : byte;

szovegszin  : TColor;

fontnev     : string[20];

fontmeret   : byte;

fontstylus  : byte;

vedett      : boolean;

end;

 

TMapLayer   = packed record

ID          : byte;

Name        : string[20];

pontszin    : TColor;

vonalszin   : TColor;

vonalvastag : Smallint;

vonalstylus : byte;

szovegszin  : TColor;

fontnev     : string[20];

fontmeret   : byte;

Active      : Boolean;

Homogen     : Boolean;

Vedett      : boolean;

Visible     : boolean;

end;

 

TMapLayers = array[0..255] of TMapLayer;

 

TFontrecord = packed record

fontkod  : byte;

fontnev  : string[20];

end;

 

{JELKULCS.JLK file:

HEADER : 1000 jelkulcs táblázata

DATA   : Jelkulcs adatok:

          pont : 1,x1,y1,x2,y2,szin,vastag;

          vonal: 2,x1,y1,x2,y2,szin,vastag;

          kor  : 3,x1,y1,x2,y2,szin,vastag;

          fest : 4,x1,y1,x2,y2,szin,vastag;

}

TJelkulcsHeader = record

jkkod  : longint;

jkcim  : longint;

jkdb   : byte;        {Jelkulcs rajzelemek száma}

jknev  : string[20];

end;

 

TJkRecord = record

kod    : word;

x1,y1  : Smallint;

x2,y2  : Smallint;

szin   : TColor;

vastag : byte;

end;

 

TBrushBitmap = record   {Kitöltő minta}

   Mintanev   : string[20];

   minta      : Array[0..7,0..7] of TColor;

end;

 

 

{------------ ITR adatrekordok ------------------}

 

{ *.PT file-ban}

ITRPontHeader = record

dummy  : array[1..18] of char;

end;

 

ITRPontRecord = record          {Hossza : 39}

azonosito : byte;

x,y,z     : Longint;

No        : Longint;

valami    : Longint;

pkod      : Word;

vonalszam : byte;

reteg     : byte;

reteg1    : byte;

a         : Longint;

b         : Longint;

dummy     : array[1..5] of char;

end;

 

{ *.el file-ban}

 

ITRVonalHeader = record

dummy  : array[1..18] of char;

end;

 

ITRVonalRecord = record         {Hossz = 44}

   azonosito: word;            {1=élő, 0=törölt vonal}

   vonal1   : word;            {előlről csatlakozó vonal sorszáma}

   valami1  : Longint;         { FF 00 }

   vonal2   : word;            {hátulról csatlakozó vonal sorszáma}

   valami2  : Longint;         { FF FF }

   y1       : Longint;

   x1       : Longint;

   y2       : Longint;

   x2       : Longint;

   reteg    : byte;

   reteg1   : byte;

   stylus   : Array[1..8] of byte;    { FF FF FF FF FF FF FF FF }

   sorveg   : Longint;                { 00 00 00 C0 }

end;

 

{ *.TX file-ban}

ITRTextHeader = record

dummy  : array[1..18] of char;

end;

 

ITRTextRecord = record     {rekord hossz = 53}

   azonosito : byte;

   y1        : Longint;

   x1        : Longint;

   reteg     : byte;

   szovtip   : byte;

   toll      : byte;

   dummi1    : Array[1..3] of char;

   szog      : word;

   dummi2    : Array[1..4] of char;

   text      : Array[1..11] of char;

   a         : Longint;

   b         : Longint;

   c1        : Longint;

   c2        : Longint;

   d         : byte;

   e         : Longint;

end;

 

{ *.si jelkulcsadatok }

ITRJelkulcsHeader = record

dummy  : array[1..18] of char;

end;

 

ITRJelkulcsRecord = record     {rekord hossz = 21}

azonosito : byte;

valami    : word;

y,x       : Longint;

toll      : byte;

a1        : byte;

reteg     : byte;

jkkod     : byte;

jkszog    : word;

dummy     : array[1..4] of char;

end;

 

{ *.lay Rétegparaméterek }

ITRRetegHeader = record

dummy  : array[1..18] of char;

end;

 

ITRRetegRecord = record    {rekord hossz = 31}

reteg       : byte;

retegnev    : Array[1..12] of char;

dummy       : array[1..18] of char;

end;

 

TPrinterParam = record

fejlec    : String;

peldany   : integer;

meretarany: longint;

lapx,lapy : integer;

paspx,paspy : real;   {Printer torzítás}

szines    : boolean;

vonalvastag:integer;

pBetumeret: real;     {Printer betűméret szorzó}

keretezes : boolean;  {Feliratok}

laphelyzet: TPrinterOrientation;

sablon    : byte;     {Sablon tipusa 0=Nincs sablon; 1..255 = sablon tipus}

ablak     : TRect;    {Térképablak}

end;

 

TPlotterParams = record

PlotterNev  : string[30];

PlotterHead : string[80];

PlotterEnd  : string[80];

Aspectx     : real;

Aspecty     : real;

end;

 

{ A nyitott ablakok adattömbje }

 

PMapConfig = ^TMapConfig;

TMapConfig = record

Demo     : boolean;        {Demó verzió = True}

Belepett : word;           {Ennyiszer lépett be a programba}

adatbazisjelszo: string[10];

Cld      : TForm;

nev      : string[30];     {Jogos felhasználó neve}

cim      : string[30];     {Jogos felhasználó címe}

globaldir: String[120];

localdir : String[120];

filenev  : String[120];

filetipus: String[3];

retegfile: string[120];

viewfile : string[120];

aktmunkater : integer;     {Aktuális munkaterület = ha -1 akkor nincs}

munkater : TMunkaterulet;  {Aktuális munkaterület}

kezelo   : word;

kepernyo : TRect;

alapszin : TColor;         {Térkép alapszine}

valtozott: boolean;

aktreteg : byte;

aktjelkulcs: word;

pontszin : TColor;

pontmeret: integer;

pontszam : longint;

vonalszam: longint;

szovegszam  :longint;

jelkulcsszam:longint;

kitoltoszam :longint;

objectszam  : longint;

kozepkereszt: boolean;     {Kép középkeresztje}

orkereszt   : boolean;

orkereszttav: double;

orkeresztszin:TColor;

orkeresztStilus:byte;      {0..3 = rácsozat,pontrács,keresztek,szaggatott vonal}

rmod     : TRajzmodType;          {rajzmód}

nagyitas : real;

imagenagyitas: real;       // Háttérkép nagyítása

origox   : real;

origoy   : real;

minx     : real;

maxx     : real;

miny     : real;

maxy     : real;

sulypont : TPoint2D;       {A térképi elemek súlypontja térkép koordináták}

nkeret   : TRect;          {nagyító keret}

pontlatszik   : boolean;   {láthatóságok...}

vonallatszik  : boolean;

jelkulcslatszik:boolean;

szoveglatszik : boolean;

kitoltolatszik: boolean;

pontszamlatszik:boolean;

infolatszik   : boolean;

tavlatszik    : boolean;

kijelolesek   : boolean;  {Kijelölt elemek látszonak}

toroltek      : boolean;  {Törölt elemek látszonak}

csakkijeloltek: boolean;  {Kijelölt elemek látszonak}

csaktoroltek  : boolean;  {Törölt elemek látszonak}

aspx,aspy     : real;     {Képernyő torzitás}

tentativtures : real;     {rárántási távolság}

jelkulcsmeret : real;

pr            : TPrinterParam;

texteditor    : string[80];

TEXTkenyszer  : boolean;

FixText       : TFont;

printing      : boolean;           {True = nyomtatás folyamatban}

tavmod        : TTavmod;

Homogenrajz   : boolean;

PlotterParams : TPlotterParams;    {Plotter paraméterek}

end;

 

// Project leíró (*.dp)

TDigitProject = record

   FileName    : string[80];

   ProjectName : string[80];

   Comment     : string[80];

   ImageFile   : string[80];

   MapFile     : string[80];

   Syncronized : boolean;

   ImageCent   : TPoint2d;

   ImageZoom   : double;

   ImageBright : integer;

   ImageCantrast: integer;

   ImageMono   : boolean;

   ImageNegativ: boolean;

   ImageRotAngle : double;

   MapCent     : TPoint2d;

   MapZoom     : double;

   MapRotAngle : double;

end;

 

TPolygonRecord = record

PointsCount: longint;

Points     : Tpontrecord;

mentes     : boolean;

kesz       : boolean;

end;

 

// Project file (*.map)

// Consist of Header+Layers' definition+draw elements

// + external image file (ImageFile)

TMapHeader = packed record

   Version     : byte;            // 0

   MapType     : string[9];       // 'StellaMap'

   MapTitle    : string[32];

   Comment     : string[80];

   ImageFile   : string[80];

   MapFile     : string[80];

   PointCount  : integer;

   LineCount   : integer;

   TextCount   : integer;

   SignCount   : integer;

   ObjectCount : integer;

   ImageCent   : TPoint2d;

   ImageZoom   : double;

   ImageBright : integer;

   ImageCantrast: integer;

   ImageMono   : boolean;

   ImageNegativ: boolean;

   ImageRotAngle : double;

   MapCent     : TPoint2d;

   MapZoom     : double;

   MapRotAngle : double;

   dummy       : array[1..165] of char;

end;

 

Var demovar : boolean;

   TerkepUjrarajzolas: boolean;   {Térkép rajzolás folyamatban}

 

   prec   : TPontrecord;

   vrec   : TVonalrecord;

   szrec  : TSzovegrecord;

   jrec   : TJelkulcsRecord;

   krec   : TKorRecord;

 

   oldprec   : TPontrecord;

   oldvrec   : TVonalrecord;

   oldszrec  : TSzovegrecord;

   oldjrec   : TJelkulcsRecord;

   rrec      : TRetegrecord;

   frec      : TFontrecord;

   oldTeglalap,teglalap: TTeglalap;

   vanpont,vanvonal,vanszoveg,vanjelkulcs: boolean;

   UndoPointers: array[1..4] of longint;

   {A rajzelem streameken mutatja, honnan tettünk le uj elemeket.

   Undo-kor innen a streamek végéig törölni kell}

 

   jelkHeader : TJelkulcsHeader;

   jelkData   : TJkRecord;

   PrinterParam : TPrinterParam;    {Printer beállitás paraméteret}

 

   aspX,aspY : real;

   kiugras   : boolean;

   Megjelenit: boolean;

 

Const rajzelemekstring: Array[1..4] of string[8] =

         ('Pont','Vonal','Felirat','Jelkulcs');

 

const

crCentrum    = 910;

crKicsinyito = 911;

crNagyito    = 912;

crKez        = 913;

crKereszt    = 914;

crKeret      = 915;

crEllipszis  = 916;

crNegyszog   = 917;

crTav        = 918;

crHelp       = 920;

 

AkcioFelirat : Array[0..6] of string[18] =

            ('Nincs Akció','Keresés','Rajzolás','Kijelölés','Törlés',

             'Átemelés','Mozgatás');

 

Const

RajzmodFelirat : Array[0..46] of string[18] =

       ('Nincs','Pont','Vonal','Felirat',

        'Jelkulcs','Kitöltő','Polyline','Polygon','Négyszög',

        'Ellipszis','Köriv','FeliratVonalra','BSpline','Szabadkézi',

        'Objectum','Töröl','Kijelol','Ablakkijelöl','Poligonkijelol',

        'Pontátrak','Vonalátemel','Pontbeillesztés','Terület',

        'Területmérés','Távmérés','HRSZkeresés','Forgatás','Vonalosztas',

        'Vetítés','Metszés','Ívmetszés','Merőleges','Bemérés',

        'Kitűzés','Tájékozás','Előmetszés','Hátrametszés','Oldalmetszés',

        'Polárispont','Beillesztett','Tájékozott1','Tájékozott2',

        'HRSZ','TérképSQL','Betranszformálás','Infó','Help');

 

Const DefaultLayer : array[0..255,0..1] of integer = (

       (clBlack,1),(clWhite,1),(clWhite,1),(clWhite,1),(clWhite,1),(clFuchsia,8),(clWhite,1),(clWhite,1),(clWhite,1),(clLime,1),

       (clYellow,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),

       (clred,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2),(clWhite,2)

       );

 

implementation

 

end.