1.2 Π’Π΅ΠΊΡΡ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠ°
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ X ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠΊΠ½Π΅, Π½ΠΎ ΠΈ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΉ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈΠΌΠ΅ΡΡΠΈΠΌ ΡΠΈΠΏ TPixmap. ΠΠ°ΡΡΠ° ΡΠΎΠ»ΡΠΈΠ½ΠΎΠΉ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ - Π±ΠΈΡΠΎΠ²Π°Ρ.
1.2.1 ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅Π΅. ΠΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ (Graphic Context (GC)). Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° GC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ "ΡΠΈΡΡΡΡΠΈΡ " ΡΡΠ½ΠΊΡΠΈΠΉ X. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π²Π»ΠΈΡΡΡΠΈΡ Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²: ΡΠ΅ΠΊΡΡΠ°, Π»ΠΈΠ½ΠΈΠΉ, ΡΠΈΠ³ΡΡ ΠΈ Π΄Ρ. ΠΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ GC Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ XCreateGC(), ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ:
function XCreateGC(prDisplay: PDisplay; nDrawable: TDrawable; nValueMask: cardinal; prValues: PXGCValues): TGC; cdecl; external;
ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΈΠΏΠ° TDisplay, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° XOpenDisplay(); Π²ΡΠΎΡΠΎΠΉ - ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠΊΠ½Π° (ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ; ΡΡΠ΅ΡΠΈΠΉ - Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ GC Π·Π°Π΄Π°ΡΡΡΡ; ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - ΡΡΡΡΠΊΡΡΡΠ° ΡΠΈΠΏΠ° TXGCValues, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
TXGCValues = record
Xfunction: longint; {Renamed function to Xfunction}
plane_mask: cardinal;
foreground: cardinal;
background: cardinal;
line_width: longint;
line_style: longint;
cap_style: longint;
join_style: longint;
fill_style: longint;
fill_rule: longint;
arc_mode: longint;
tile: TPixmap;
stipple: TPixmap;
ts_x_origin: longint;
ts_y_origin: longint;
font: TFont;
subwindow_mode: longint;
graphics_exposures: TBool;
clip_x_origin: longint;
clip_y_origin: longint;
clip_mask: TPixmap;
dash_offset: longint;
dashes: char;
end;
PXGCValues = ^TXGCValues;
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½Ρ Π½ΠΈΠΆΠ΅. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π±ΠΈΡ Π² ΠΌΠ°ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ XCreateGC(). ΠΡΠΈ Π±ΠΈΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ X. ΠΡΠ»ΠΈ Π±ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²Π·ΡΡΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ XCreateGC() ΡΡΡΡΠΊΡΡΡΡ TXGCValues. ΠΡΠ»ΠΈ Π±ΠΈΡ ΡΠ±ΡΠΎΡΠ΅Π½, ΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π° Π°ΡΡΠΈΠ±ΡΡΠ°: ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΈ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°.
β¦
var
prGC: TGC;
rValues: TXGCValues;
prDisplay: PDisplay;
nScreenNum: integer;
β¦
rValues.foreground:= XBlackPixel (prDisplay, nScreenNum);
rValues.background:= XWhitePixel (prDisplay, nScreenNum);
β¦
prGC:= XCreateGC(prDisplay, XRootWindow (prDisplay, nScreenNum), (GCForeground OR GCBackground), @rValues);
ΠΡΠ·ΠΎΠ² XCreateGC() - Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ· ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ GC Ρ ΠΏΠΎΠΌΠΎΡΡΡ XCopyGC().
ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½, Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ XChangeGC(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
rValues.line_width:= 10;
XChangeGC (prDisplay, prGC, GCLineWidth, @rValues);
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΉ, ΡΠΈΡΡΠ΅ΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ GC, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° XGetGCValues().
1.2.2 Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ GC ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ Π½Π° Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΠ΅ΠΊΡΡΠ° ΡΡΠΎ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΡΡ, Π΄Π»Ρ Π»ΠΈΠ½ΠΈΠΉ - ΡΠ²Π΅Ρ ΠΈ ΡΠΎΠ»ΡΠΈΠ½Π° ΠΈ Ρ.Π΄. ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅, Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π·Π°Π΄Π°ΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ XChangeGC(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, X ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² GC.
ΠΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ ΠΈΡ .
Π Π΅ΠΆΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΏΠΎΠ»Π΅ Xfunction Π² ΡΡΡΡΠΊΡΡΡΠ΅ TXGCValues) ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²Π΅Ρ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ²Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π·Π°Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
GXclear 0x0 0 GXand 0x1 src AND dst GXandReverse 0x2 src AND NOT dst GXcopy 0x3 src GXandInverted 0x4 (NOT src) AND dst GXnoop 0x5 dst GXxor 0x6 src XOR dst GXor 0x7 src OR dst GXnor 0x8 (NOT src) AND (NOT dst) GXequiv 0x9 (NOT src) XOR dst GXinvert 0xa NOT dst GXorReverse 0xb src OR (NOT dst) GXcopyInverted 0xc NOT src GXorInverted 0xd (NOT src) OR dst GXnand 0xe (NOT src) OR (NOT dst) GXset 0xf 1ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Xfunction ΡΠ°Π²Π½ΠΎ GXcopy. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ XSetFunction().
ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π·Π°Π΄Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ N Π±ΠΈΡ. ΠΠΈΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΠΈΠ΄ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠΊΡΠ°Π½Ρ. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΏΠ»Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ XDisplayPlanes(). ΠΠΎΠ»Π΅ plane_mask ΡΡΡΡΠΊΡΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π² ΠΊΠ°ΠΊΠΈΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΠΈΠ΄Π΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ X. ΠΡΠ»ΠΈ Π±ΠΈΡ ΠΏΠΎΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΡΠΎ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΡΡΡ.
Π¦Π²Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈ ΡΠΎΠ½Π° (ΠΏΠΎΠ»Ρ foreground ΠΈ background) Π·Π°Π΄Π°ΡΡ ΡΠ²Π΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΈΠ½ΠΈΠΉ ΡΠ΅ΠΊΡΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ XSetForeground() ΠΈ XSetBackground() ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΡΡΠΈΠ±ΡΡΡ, Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ. Π¨Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΠΈΠ΄ ΠΏΡΡΠΌΡΡ , Π΄ΡΠ³ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ X Window.
1. ΠΠΎΠ»Π΅ line_width Π·Π°Π΄Π°Π΅Ρ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ . ΠΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠΌΡ, ΡΡΠΎ Π»ΠΈΠ½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΎΠ»ΡΠΈΠ½ΠΎΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈ ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²ΡΠ²ΠΎΠ΄Π°.
2. ΠΠΎΠ»Π΅ line_style ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ Π»ΠΈΠ½ΠΈΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ LineSolid - ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ;
β’ LineOnOffDash - ΠΏΡΠ½ΠΊΡΠΈΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ; ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΈΡ Π°ΠΌΠΈ Π½Π΅ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ;
β’ LineDoubleDash - ΠΏΡΠ½ΠΊΡΠΈΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ; ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΈΡ Π°ΠΌΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΎΠ½Π°.
3. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ cap_style ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΈΠ΄ Π»ΠΈΠ½ΠΈΠΈ Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΡΠΎΡΠΊΠ°Ρ , Π΅ΡΠ»ΠΈ Π΅Π΅ ΡΠΈΡΠΈΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ 1 ΠΏΠΈΠΊΡΠ΅Π»Ρ. ΠΠ° ΡΠΈΡ. 1.4 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠ½ΡΠ° Π»ΠΈΠ½ΠΈΠΈ.
Π ΠΈΡ. 1.4. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° cap_style Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
4. ΠΠΎΠ»Π΅ join_style ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π»ΠΈΠ½ΠΈΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ° ΡΠΈΡ. 1.5 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΡΠΈ ΡΠΎΠ»ΡΠΈΠ½Π΅ Π»ΠΈΠ½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅ΠΉ 1.
Π ΠΈΡ. 1.5. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° join_style Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
5. ΠΡΠ»ΠΈ Π»ΠΈΠ½ΠΈΡ ΠΏΡΠ½ΠΊΡΠΈΡΠ½Π°Ρ, ΡΠΎ ΠΏΠΎΠ»Π΅ dashes Π΄Π°Π΅Ρ Π΄Π»ΠΈΠ½Ρ ΠΏΡΠ½ΠΊΡΠΈΡΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠ² Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ .
6. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ dash_offset ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ΅ΡΡΠΎΡΠΊΠΈ ΠΏΡΠ½ΠΊΡΠΈΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ.
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π»ΠΈΠ½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° XSetLineAttributes().
Π¨ΡΠΈΡΡ. ΠΠΎΠ»Π΅ font ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°. ΠΠ°Π΄Π°ΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ XSetFont().
Π¨Π°Π±Π»ΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠΈΠ³ΡΡ. ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π΄Π²Π° ΡΡΠ°ΠΏΠ°. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Ρ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ²Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. Π’Π°ΠΊ, Π΄Π»Ρ Π»ΠΈΠ½ΠΈΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² Π½Π΅Π΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π΅ΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°.