Príklady vytvárania grafických objektov
Príklad nelineárneho získavania farby objektu
Vstupný parameter je index farby logickej palety importovaného súboru. Funkcia vráti index farby z logickej palety používanej v systéme D2000.
function OutputColor(x:integer) return integer is c:integer:=Abs(x); w:integer:=c mod 10; odtien:integer; begin case w is when 0 => odtien := 4; when 1 => odtien := 2; when 2 => odtien := 5; when 3 => odtien := 3; when 4 => odtien := 7; when 5 => odtien := 8; when 6 => odtien := 9; when 7 => odtien := 11; when 8 => odtien := 14; when 9 => odtien := 15; when others => odtien := 4; end case; -- case c is when 0.. 9 => return colorTable1(c); when 10.. 39 => return CLR_RED (odtien); when 40.. 69 => return CLR_YELLOW (odtien); when 70..119 => return CLR_GREEN (odtien); when 120..139 => return CLR_CYAN (odtien); when 140..189 => return CLR_BLUE (odtien); when 190..229 => return CLR_PINK (odtien); when 230..249 => return CLR_RED (odtien);< when 250..255 => return colorTable2(c); when others => return CLR_BLUE(1); end case; end OutputColor;
Objekt typu Čiara
Vytvorenie | : CreateObj(cLine) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary |
Príklad:
procedure Create_Line(x1,y1,x2, y2:long_float;color,linestyle,thickness:integer) is begin CreateObj(cLine); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); -- ObjAction(closeObject); end;
Špeciálny objekt typu Čiara alebo Viacnásobná prerušovaná čiara
Vytvára sa objekt typu Čiara, ktorý (ak má rovnaké atribúty ako predošlé čiary vytvorené týmto parametrom) sa skombinuje s predošlými čiarami do jedného objektu typu Viacnásobná čiara alebo Viacnásobná prerušovaná čiara. Jedná sa o optimalizačnú funkciu na zmenšenie počtu vytváraných objektov a tým aj zmenšenie priestoru potrebného na uloženie schémy (priveľká schéma sa nedá celá uložiť). Príkladom využitia môže byť šrafovanie objektov vo formáte Autocad-u.
Vytvorenie | : CreateObj(cLineCombined) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary |
Príklad:
procedure Create_CombinedLine(x1,y1,x2, y2:long_float; color,linestyle,thickness:integer) is
begin CreateObj(cLineCombined); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); -- ObjAction(closeObject); end;
Objekt typu Viacnásobná čiara alebo Mnohouholník
Vytvorenie | : CreateObj(cPLine) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary | |
: zalomenie čiary |
Príklad:
procedure Create_Polyline( posArr : TLong_Float_Arr; color, linestyle, thickness : integer) is pos : integer := posArr'first; begin CreateObj(cPLine); -- while pos <= posArr'last-1 loop Set_float2 (cPosXY, posArr(pos), posArr(pos+1)); pos:= pos+2;end loop; Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Špeciálny objekt typu Viacnásobná čiara alebo Mnohouholník
Vytvorenie | : CreateObj(cPLineAdd) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary | |
: zalomenie čiary |
Príklad:
procedure Create_PLineItem( x1, y1, x2 , y2 : long_float; color, linestyle, thickness : integer) is begin CreateObj(cPLineAdd); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); end;
V predošlom príklade mal objekt typu Viacnásobná čiara pri vytváraní k dispozícii všetky pozičné body. Tento objekt sa líši tým, že poznáme iba dáta jednej z čiar objektu a ani nevieme, či je to prvá čiara. Vytváranie je definované ako pridaj sériu parametrov do vytváraného objektu typu viacnásobná čiara, ak má okrem pozičných ostatné parametre totožné. Ak v čase pridávania nie je vytváraný objekt typu Viacnásobná čiara, tak ho založ podľa parametrov tohto objektu.
Séria jednotlivých čiar má byť ukončená nasledovne:
Ukončenie:
procedure CLose_PLine is begin objAction(closeObject); end;
Objekt typu Viacnásobná prerušovaná čiara
Vytvorenie | : CreateObj(cDLine) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary | |
: zalomenie čiary |
Príklad:
procedure Create_Polyline( posArr : TLong_Float_Arr; color, linestyle, thickness : integer) is pos : integer := posArr'first; begin CreateObj(cPLine); -- while pos <= posArr'last-1 loop Set_float2 (cPosXY, posArr(pos),posArr(pos+1)); pos:= pos+2; end loop; Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Objekt typu Oblúk
Vytvorenie | : CreateObj(cArc) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary | |
: zalomenie čiary | |
: polomer | |
: počiatočný uhol | |
: koncový uhol |
Príklad:
procedure Create_Arc(x,y,radius,stangle,endangle:long_float; color,linestyle,thickness:integer) is begin CreateObj(cArc); -- Set_float2 (cPosXY, x, y); Set_float (cCircleRadial, radius*gr_scall); Set_float (cCircleAngleRadStart, stangle); Set_float (cCircleAngleRadEnd, endangle); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); -- objAction(closeObject); end;
Objekt typu Trojbodový oblúk
Vytvorenie | : CreateObj(c3Arc) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary |
Príklad:
procedure Create_3Arc ( x1,y1,x2,y2,x3,y3:long_float; color, linestyle, thickness : integer) is begin CreateObj(cBox); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_float2 (cPosXY, x3, y3); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Objekt typu Obdĺžnik
Vytvorenie | : CreateObj(cBox) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: zalomenie čiary | |
: farba výplne | |
: výplňový vzor |
Príklad:
procedure Create_Box ( x1,y1,x2,y2:long_float; color, linestyle, thickness : integer) is begin CreateObj(cBox); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Objekt typu Mnohouholník
Vytvorenie | : CreateObj(cPAngle) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: zalomenie čiary | |
: farba výplne | |
: výplňový vzor |
Príklad:
procedure Create_Polygon ( posArr : TLong_Float_Arr; color, linestyle, thickness : integer) is pos : integer := posArr'first; begin CreateObj(cPAngle); -- while pos <= posArr'last-1 loop Set_float2 (cPosXY, posArr(pos),posArr(pos+1)); pos:= pos+2; end loop; Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Objekt typu Kruh
Vytvorenie | : CreateObj(cCircle) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: farba výplne | |
: výplňový vzor | |
: polomer |
Príklad:
procedure Create_Circle(x,y,radius : long_float;color,linestyle,thickness:integer) is begin CreateObj(cCircle); -- Set_float2 (cPosXY, x, y); Set_float (cCircleRadial, radius*gr_scall); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); -- objAction(closeObject); end;
Objekt typu Kruhová výseč
Vytvorenie | : CreateObj(cPiArc) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: ukončenie čiary | |
: farba výplne | |
: výplňový vzor | |
: polomer | |
: počiatočný uhol | |
: koncový uhol |
Príklad:
procedure Create_PiArc(x,y,radius,stangle,endangle:long_float; color,linestyle,thickness:integer) is begin CreateObj(cPiArc); -- Set_float2 (cPosXY, x, y); Set_float (cCircleRadial, radius*gr_scall); Set_float (cCircleAngleRadStart, stangle); Set_float (cCircleAngleRadEnd, endangle); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, thickness); -- objAction(closeObject); end;
Objekt typu Elipsa
Elipsa daná obdĺžnikom, definovaným dvoma bodmi:
Vytvorenie | : CreateObj(cElipse) |
Parametre | : pozičné |
: farba čiary | |
: štýl čiary | |
: hrúbka čiary | |
: zalomenie čiary | |
: farba výplne | |
: výplňový vzor |
Príklad:
procedure Create_Elipse ( x1,y1,x2,y2:long_float; color, linestyle, thickness : integer) is begin CreateObj(cElipse); -- Set_float2 (cPosXY, x1, y1); Set_float2 (cPosXY, x2, y2); Set_integer(cLineColorIdx, color); Set_integer(cLineStyle, linestyle); Set_integer(clineWidth, 1); -- objAction(closeObject); end;
Objekt typu Text
Text začínajúci na zadanej pozícii.
Vytvorenie | : CreateObj(cText) |
Parametre | : pozičné |
: farba textu | |
: text | |
: umiestnenie textu | |
: centrovanie pre text v obdĺžniku |
Príklad:
procedure Create_Text (x,y:long_float; color:integer; text_in:string) is begin CreateObj(cText); -- Set_float2 (cPosXY, x, y); Set_integer(cTextColorIdx, color); Set_string (cTextText, text_in); -- objAction(closeObject); end;
Objekt typu Skupina objektov
Objekt typu Skupina objektov zlučuje následne vytvorené objekty do jednej skupiny (až do uzatvorenia skupiny). T.j. objekt sa vytvorí, odpamätáva si následne vytvárané objekty a na pokyn closeGroup, resp. closeAll, sa zapíše do zoznamu vytvorených objektov.
Vytvorenie | : CreateObj(cGroup) |
procedure Create_Group is begin CreateObj(cGroup); end;
Séria jednotlivých čiar má byť ukončená nasledovne.
Ukončenie:
procedure CLose_Group is begin objAction(closeGroup); end;
Pridať komentár