888 lines
25 KiB
PHP
888 lines
25 KiB
PHP
{****************************************************
|
|
This file is part of the Eye Candy Controls (EC-C)
|
|
This is *include* file, belongs to ectypes.pas
|
|
|
|
Copyright (C) 2013 Vojtěch Čihák, Czech Republic
|
|
|
|
This library is free software.
|
|
|
|
See the file COPYING.LGPL.txt,
|
|
included in this distribution,
|
|
for details about the license.
|
|
****************************************************}
|
|
|
|
procedure TCanvasHelper.DrawGlyph(ARect: TRect; AGlyphDesign: TGlyphDesign);
|
|
var aEvenH, aEvenW, x, y, x2, y2: SmallInt;
|
|
|
|
procedure DrawArrowDown(ATop: SmallInt; ASize: SmallInt = 4);
|
|
var i: SmallInt;
|
|
begin
|
|
for i := 4 - ASize to 2 do
|
|
begin
|
|
Line(x + i, ATop, x2 - i, ATop);
|
|
inc(ATop);
|
|
end;
|
|
if aEvenW = 1
|
|
then Line(x + 3, ATop, x2 - 3, ATop)
|
|
else Pixels[x + 3, ATop] := Pen.Color;
|
|
end;
|
|
|
|
procedure DrawArrowLeft(ALeft: SmallInt; ASize: SmallInt = 4);
|
|
var i: SmallInt;
|
|
begin
|
|
if aEvenH = 1
|
|
then Line(ALeft, y + 3, aLeft, y2 - 3)
|
|
else Pixels[ALeft, y + 3] := Pen.Color;
|
|
for i := 2 downto 4 - ASize do
|
|
begin
|
|
inc(ALeft);
|
|
Line(ALeft, y + i, ALeft, y2 - i);
|
|
end;
|
|
end;
|
|
|
|
procedure DrawArrowRight(ALeft: SmallInt; ASize: SmallInt = 4);
|
|
var i: SmallInt;
|
|
begin
|
|
for i := 4 - ASize to 2 do
|
|
begin
|
|
Line(ALeft, y + i, ALeft, y2 - i);
|
|
inc(ALeft);
|
|
end;
|
|
if aEvenH = 1
|
|
then Line(ALeft, y + 3, aLeft, y2 - 3)
|
|
else Pixels[ALeft, y + 3] := Pen.Color;
|
|
end;
|
|
|
|
procedure DrawArrowUp(ATop: SmallInt; ASize: SmallInt = 4);
|
|
var i: SmallInt;
|
|
begin
|
|
if aEvenW = 1
|
|
then Line(x + 3, ATop, x2 - 3, ATop)
|
|
else Pixels[x + 3, ATop] := Pen.Color;
|
|
for i := 2 downto 4 - ASize do
|
|
begin
|
|
inc(ATop);
|
|
Line(x + i, ATop, x2 - i, ATop);
|
|
end;
|
|
end;
|
|
|
|
procedure DrawArrowUL(ATop: SmallInt);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x + 1;
|
|
Line(i, ATop, x2 - 1, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 2, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 3, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 4, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 5, ATop);
|
|
if aEvenW = 1 then inc(ATop);
|
|
Pixels[i, ATop] := Pen.Color;
|
|
end;
|
|
|
|
procedure DrawArrowUR(ATop: SmallInt);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x2 - 1;
|
|
Line(x + 1, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 2, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 3, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 4, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 5, ATop, i, ATop);
|
|
if aEvenW = 1 then inc(ATop);
|
|
dec(i);
|
|
Pixels[i, ATop] := Pen.Color;
|
|
end;
|
|
|
|
procedure DrawArrowDL(ATop: SmallInt);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x + 1;
|
|
Pixels[i, ATop + 1] := Pen.Color;
|
|
if aEvenW = 1 then inc(ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 5, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 4, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 3, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 2, ATop);
|
|
inc(ATop);
|
|
Line(i, ATop, x2 - 1, ATop);
|
|
end;
|
|
|
|
procedure DrawArrowDR(ATop: SmallInt);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x2 - 1;
|
|
Pixels[i - 1, ATop + 1] := Pen.Color;
|
|
if aEvenW = 1 then inc(ATop);
|
|
inc(ATop);
|
|
Line(x + 5, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 4, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 3, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 2, ATop, i, ATop);
|
|
inc(ATop);
|
|
Line(x + 1, ATop, i, ATop);
|
|
end;
|
|
|
|
procedure DrawArrowBDown(ATop: SmallInt; ASharpOdd: Boolean = True);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x;
|
|
Line(i, ATop, i, ATop + 2);
|
|
inc(i);
|
|
Line(i, ATop, i, ATop + 3);
|
|
inc(i);
|
|
Line(i, ATop + 1, i, ATop + 4);
|
|
inc(i);
|
|
if (aEvenW = 1) or ASharpOdd
|
|
then Line(i, ATop + 2, i, ATop + 5)
|
|
else Line(i, ATop + 2, i, ATop + 4);
|
|
inc(i);
|
|
if aEvenW = 1 then
|
|
begin
|
|
Line(i, ATop + 2, i, ATop + 5);
|
|
inc(i);
|
|
end;
|
|
Line(i, ATop + 1, i, ATop + 4);
|
|
inc(i);
|
|
Line(i, ATop, i, ATop + 3);
|
|
inc(i);
|
|
Line(i, ATop, i, ATop + 2);
|
|
end;
|
|
|
|
procedure DrawArrowBLeft(ALeft: SmallInt; ASharpOdd: Boolean = True);
|
|
var j: SmallInt;
|
|
begin
|
|
j := y;
|
|
Line(ALeft + 3, j, ALeft + 5, j);
|
|
inc(j);
|
|
Line(ALeft + 2, j, ALeft + 5, j);
|
|
inc(j);
|
|
Line(ALeft + 1, j, ALeft + 4, j);
|
|
inc(j);
|
|
if (aEvenH = 1) or ASharpOdd
|
|
then Line(ALeft, j, ALeft + 3, j)
|
|
else Line(ALeft + 1, j, ALeft + 3, j);
|
|
inc(j);
|
|
if aEvenH = 1 then
|
|
begin
|
|
Line(ALeft, j, ALeft + 3, j);
|
|
inc(j);
|
|
end;
|
|
Line(ALeft + 1, j, ALeft + 4, j);
|
|
inc(j);
|
|
Line(ALeft + 2, j, ALeft + 5, j);
|
|
inc(j);
|
|
Line(ALeft + 3, j, ALeft + 5, j);
|
|
end;
|
|
|
|
procedure DrawArrowBRight(ALeft: SmallInt; ASharpOdd: Boolean = True);
|
|
var j: SmallInt;
|
|
begin
|
|
j := y;
|
|
Line(ALeft, j, ALeft + 2, j);
|
|
inc(j);
|
|
Line(ALeft, j, ALeft + 3, j);
|
|
inc(j);
|
|
Line(ALeft + 1, j, ALeft + 4, j);
|
|
inc(j);
|
|
if (aEvenH = 1) or ASharpOdd
|
|
then Line(ALeft + 2, j, ALeft + 5, j)
|
|
else Line(ALeft + 2, j, ALeft + 4, j);
|
|
inc(j);
|
|
if aEvenH = 1 then
|
|
begin
|
|
Line(ALeft + 2, j, ALeft + 5, j);
|
|
inc(j);
|
|
end;
|
|
Line(ALeft + 1, j, ALeft + 4, j);
|
|
inc(j);
|
|
Line(ALeft, j, ALeft + 3, j);
|
|
inc(j);
|
|
Line(ALeft, j, ALeft + 2, j);
|
|
end;
|
|
|
|
procedure DrawArrowBUp(ATop: SmallInt; ASharpOdd: Boolean = True);
|
|
var i: SmallInt;
|
|
begin
|
|
i := x;
|
|
Line(i, ATop + 3, i, ATop + 5);
|
|
inc(i);
|
|
Line(i, ATop + 2, i, ATop + 5);
|
|
inc(i);
|
|
Line(i, ATop + 1, i, ATop + 4);
|
|
inc(i);
|
|
if (aEvenW = 1) or ASharpOdd
|
|
then Line(i, ATop, i, ATop + 3)
|
|
else Line(i, ATop + 1, i, ATop + 3);
|
|
inc(i);
|
|
if aEvenW = 1 then
|
|
begin
|
|
Line(i, ATop, i, ATop + 3);
|
|
inc(i);
|
|
end;
|
|
Line(i, ATop + 1, i, ATop + 4);
|
|
inc(i);
|
|
Line(i, ATop + 2, i, ATop + 5);
|
|
inc(i);
|
|
Line(i, ATop + 3, i, ATop + 5);
|
|
end;
|
|
|
|
begin
|
|
Pen.Style:=psSolid;
|
|
Pen.Width:=1;
|
|
case AGlyphDesign of
|
|
egdSizeArrUp:
|
|
begin
|
|
x := ARect.Left + 1;
|
|
x2 := ARect.Right - 1;
|
|
y2 := (ARect.Bottom+ARect.Top) div 2 + (x2 - x) div 4;
|
|
while x<x2 do
|
|
begin
|
|
Line(x, y2, x2, y2);
|
|
inc(x);
|
|
dec(x2);
|
|
dec(y2);
|
|
end;
|
|
end;
|
|
egdSizeArrRight:
|
|
begin
|
|
y := ARect.Top + 1;
|
|
y2 := ARect.Bottom - 1;
|
|
x2 := (ARect.Right+ARect.Left) div 2 - (y2 - y) div 4;
|
|
while y<y2 do
|
|
begin
|
|
Line(x2, y, x2, y2);
|
|
inc(y);
|
|
dec(y2);
|
|
inc(x2);
|
|
end;
|
|
end;
|
|
egdSizeArrDown:
|
|
begin
|
|
x := ARect.Left + 1;
|
|
x2 := ARect.Right - 1;
|
|
y2 := (ARect.Bottom+ARect.Top) div 2 - (x2 - x) div 4 + 1;
|
|
while x<x2 do
|
|
begin
|
|
Line(x, y2, x2, y2);
|
|
inc(x);
|
|
dec(x2);
|
|
inc(y2);
|
|
end;
|
|
end;
|
|
egdSizeArrLeft:
|
|
begin
|
|
y := ARect.Top + 1;
|
|
y2 := ARect.Bottom - 1;
|
|
x2 := (ARect.Right+ARect.Left) div 2 + (y2 - y) div 4;
|
|
while y<y2 do
|
|
begin
|
|
Line(x2, y, x2, y2);
|
|
inc(y);
|
|
dec(y2);
|
|
dec(x2);
|
|
end;
|
|
end;
|
|
egdRectBeveled:
|
|
begin
|
|
Frame3D(ARect, 1, bvLowered);
|
|
FillRect(ARect);
|
|
end;
|
|
egdRectFramed:
|
|
begin
|
|
Pen.Color := clBtnText;
|
|
Rectangle(ARect);
|
|
end;
|
|
egdWinRectClr:
|
|
begin
|
|
Pen.Color := clBtnText;
|
|
Frame(ARect);
|
|
y := ARect.Top + 1;
|
|
Line(ARect.Left + 1, y, ARect.Left + 3, y);
|
|
Line(ARect.Right - 3, y, ARect.Right - 1, y);
|
|
inc(y);
|
|
Line(ARect.Left + 1, y, ARect.Right - 1, y);
|
|
FillRect(ARect.Left + 2, y + 2 , ARect.Right - 2, ARect.Bottom - 2);
|
|
end;
|
|
egdWinRoundClr:
|
|
begin
|
|
Pen.Color := clBtnText;
|
|
InflateRect(ARect, -1, -1);
|
|
Frame(ARect);
|
|
x := ARect.Left - 1;
|
|
Line(x, ARect.Top, x, ARect.Bottom);
|
|
x := ARect.Right;
|
|
Line(x, ARect.Top, x, ARect.Bottom);
|
|
y := ARect.Top - 1;
|
|
Line(ARect.Left, y, ARect.Right, y);
|
|
y := ARect.Bottom;
|
|
Line(ARect.Left, y, ARect.Right, y);
|
|
FillRect(ARect.Left + 2, ARect.Top + 5, ARect.Right - 2, ARect.Bottom - 2);
|
|
Brush.Color := clBtnText;
|
|
y := ARect.Top + 2;
|
|
FillRect(ARect.Left + 2, y, ARect.Right - 2, y + 2);
|
|
end;
|
|
egdWindowRect:
|
|
begin
|
|
Frame(ARect);
|
|
y := ARect.Top + 1;
|
|
Line(ARect.Left + 1, y, ARect.Left + 3, y);
|
|
Line(ARect.Right - 3, y, ARect.Right - 1, y);
|
|
inc(y);
|
|
Line(ARect.Left + 1, y, ARect.Right - 1, y);
|
|
y := (ARect.Bottom + ARect.Top + 2) div 2;
|
|
Line(ARect.Left + 3, y, ARect.Right - 3, y);
|
|
dec(y, 2);
|
|
Line(ARect.Left + 3, y, ARect.Right - 3, y);
|
|
inc(y, 4);
|
|
if y < ARect.Bottom then Line(ARect.Left + 3, y, ARect.Right - 3, y);
|
|
end;
|
|
egdWindowRound:
|
|
begin
|
|
InflateRect(ARect, -1, -1);
|
|
Frame(ARect);
|
|
x := ARect.Left - 1;
|
|
Line(x, ARect.Top, x, ARect.Bottom);
|
|
x := ARect.Right;
|
|
Line(x, ARect.Top, x, ARect.Bottom);
|
|
y := ARect.Top - 1;
|
|
Line(ARect.Left, y, ARect.Right, y);
|
|
y := ARect.Bottom;
|
|
Line(ARect.Left, y, ARect.Right, y);
|
|
y := ARect.Top + 2;
|
|
FillRect(ARect.Left + 2, y, ARect.Right - 2, y + 2);
|
|
y := (ARect.Bottom + ARect.Top + 1) div 2;
|
|
Line(ARect.Left + 2, y, ARect.Right - 2, y);
|
|
inc(y, 2);
|
|
if y < ARect.Bottom then Line(ARect.Left + 2, y, ARect.Right - 2, y);
|
|
end;
|
|
otherwise
|
|
x := ARect.Right - ARect.Left;
|
|
y := ARect.Bottom - ARect.Top;
|
|
aEvenW := (x + 1) mod 2;
|
|
aEvenH := (y + 1) mod 2;
|
|
x := ARect.Left + (x - 7) div 2;
|
|
y := ARect.Top + (y - 7) div 2;
|
|
x2 := x + 7 + aEvenW;
|
|
y2 := y + 7 + aEvenH;
|
|
case AGlyphDesign of
|
|
egdNone: ;
|
|
egdArrowDec:
|
|
begin
|
|
if aEvenH = 1 then inc(y);
|
|
Line(x, y, x2, y);
|
|
inc(y);
|
|
Line(x, y, x2, y);
|
|
inc(y);
|
|
Line(x + 1, y, x2 - 1, y);
|
|
inc(y);
|
|
Line(x + 1, y, x2 - 1, y);
|
|
inc(y);
|
|
Line(x + 2, y, x2 - 2, y);
|
|
inc(y);
|
|
Line(x + 2, y, x2 - 2, y);
|
|
inc(y);
|
|
if aEvenW = 1
|
|
then Line(x + 3, y, x2 - 3, y)
|
|
else Pixels[x + 3, y] := Pen.Color;
|
|
end;
|
|
egdArrowInc:
|
|
begin
|
|
if aEvenW = 1
|
|
then Line(x + 3, y, x2 - 3, y)
|
|
else Pixels[x + 3, y] := Pen.Color;
|
|
inc(y);
|
|
Line(x + 2, y, x2 - 2, y);
|
|
inc(y);
|
|
Line(x + 2, y, x2 - 2, y);
|
|
inc(y);
|
|
Line(x + 1, y, x2 - 1, y);
|
|
inc(y);
|
|
Line(x + 1, y, x2 - 1, y);
|
|
inc(y);
|
|
Line(x, y, x2, y);
|
|
inc(y);
|
|
Line(x, y, x2, y);
|
|
end;
|
|
egdArrowUp: DrawArrowUp(y + 1 + aEvenH);
|
|
egdArrowRight: DrawArrowRight(x + 2 + aEvenW);
|
|
egdArrowDown: DrawArrowDown(y + 2);
|
|
egdArrowLeft: DrawArrowLeft(x + 1 + aEvenW);
|
|
egdArrowUR: DrawArrowUR(y + 1);
|
|
egdArrowDR: DrawArrowDR(y);
|
|
egdArrowDL: DrawArrowDL(y);
|
|
egdArrowUL: DrawArrowUL(y + 1);
|
|
egdArrowsUU:
|
|
begin
|
|
DrawArrowUp(y - 1 + aEvenH);
|
|
DrawArrowUp(y + 3 + aEvenH);
|
|
end;
|
|
egdArrowsRR:
|
|
begin
|
|
DrawArrowRight(x + aEvenW);
|
|
DrawArrowRight(x + 4 + aEvenW);
|
|
end;
|
|
egdArrowsDD:
|
|
begin
|
|
DrawArrowDown(y);
|
|
DrawArrowDown(y + 4);
|
|
end;
|
|
egdArrowsLL:
|
|
begin
|
|
DrawArrowLeft(x - 1 + aEvenW);
|
|
DrawArrowLeft(x + 3 + aEvenW);
|
|
end;
|
|
egdArrowsUD:
|
|
begin
|
|
DrawArrowUp(y - 1);
|
|
DrawArrowDown(y + 4 + aEvenH);
|
|
end;
|
|
egdArrowsMiddle:
|
|
begin
|
|
DrawArrowDown(y - 1);
|
|
FillRect(x, y + 3, x2, y + 4 + aEvenH);
|
|
DrawArrowUp(y + 4 + aEvenH);
|
|
end;
|
|
egdArrowsLR:
|
|
begin
|
|
DrawArrowLeft(x - 1);
|
|
DrawArrowRight(x + 4 + aEvenW);
|
|
end;
|
|
egdArrowsHMiddle:
|
|
begin
|
|
DrawArrowRight(x - 1);
|
|
FillRect(x + 3, y, x + 4 + aEvenW, y2);
|
|
DrawArrowLeft(x + 4 + aEvenW);
|
|
end;
|
|
egdArrowsMax:
|
|
begin
|
|
FillRect(x, y - 1, x2, y + aEvenH);
|
|
DrawArrowUp(y + aEvenH);
|
|
DrawArrowUp(y + 4 + aEvenH);
|
|
end;
|
|
egdArrowMax:
|
|
begin
|
|
FillRect(x, y + 1, x2, y + 2 + aEvenH);
|
|
DrawArrowUp(y + 2 + aEvenH);
|
|
end;
|
|
egdArrowMin:
|
|
begin
|
|
DrawArrowDown(y + 1);
|
|
FillRect(x, y + 5, x2, y + 6 + aEvenH);
|
|
end;
|
|
egdArrowsMin:
|
|
begin
|
|
DrawArrowDown(y - 1);
|
|
DrawArrowDown(y + 3);
|
|
FillRect(x, y + 7, x2, y + 8 + aEvenH);
|
|
end;
|
|
egdArrowsHMax:
|
|
begin
|
|
DrawArrowRight(x - 1);
|
|
DrawArrowRight(x + 3);
|
|
FillRect(x + 7, y, x + 8 + aEvenW, y2);
|
|
end;
|
|
egdArrowHMax:
|
|
begin
|
|
DrawArrowRight(x + 1);
|
|
FillRect(x + 5, y, x + 6 + aEvenW, y2);
|
|
end;
|
|
egdArrowHMin:
|
|
begin
|
|
FillRect(x + 1, y, x + 2 + aEvenW, y2);
|
|
DrawArrowLeft(x + 2 + aEvenW);
|
|
end;
|
|
egdArrowsHMin:
|
|
begin
|
|
FillRect(x - 1, y, x + aEvenW, y2);
|
|
DrawArrowLeft(x + aEvenW);
|
|
DrawArrowLeft(x + 4 + aEvenW);
|
|
end;
|
|
egdArrowsUDHor:
|
|
begin
|
|
Line(x - 3, y + 2, x + 4, y + 2); {Down}
|
|
Line(x - 2, y + 3, x + 3, y + 3);
|
|
Line(x - 1, y + 4, x + 2, y + 4);
|
|
Pixels[x, y + 5] := Pen.Color;
|
|
Pixels[x2 - 1, y2 - 6] := Pen.Color; {Up}
|
|
Line(x2 - 2, y2 - 5, x2 + 1, y2 - 5);
|
|
Line(x2 - 3, y2 - 4, x2 + 2, y2 - 4);
|
|
Line(x2 - 4, y2 - 3, x2 + 3, y2 - 3);
|
|
end;
|
|
egdArrowsURDL_S:
|
|
begin
|
|
Pixels[x + 1, y - 1] := Pen.Color; {Up}
|
|
Line(x, y, x + 3, y);
|
|
Line(x - 1, y + 1, x + 4, y + 1);
|
|
Line(x - 2, y + 2, x + 4 + aEvenW, y + 2);
|
|
Line(x2 - 4 - aEvenW, y2 - 3, x2 + 2, y2 - 3); {Down}
|
|
Line(x2 - 4, y2 - 2, x2 + 1, y2 - 2);
|
|
Line(x2 - 3, y2 - 1, x2 , y2 - 1);
|
|
Pixels[x2 - 2, y2] := Pen.Color;
|
|
Line(x2 - 2, y - 3, x2 - 2, y + 3 + aEvenH); {Right}
|
|
Line(x2 - 1, y - 2, x2 - 1, y + 3);
|
|
Line(x2, y - 1, x2, y + 2);
|
|
Pixels[x2 + 1, y] := Pen.Color;
|
|
Line(x + 1, y2 - 3 - aEvenH, x + 1, y2 + 3); {Left}
|
|
Line(x, y2 - 3, x, y2 + 2);
|
|
Line(x - 1, y2 - 2, x - 1, y2 + 1);
|
|
Pixels[x - 2, y2 - 1] := Pen.Color;
|
|
end;
|
|
egdArrowsURDL_M:
|
|
begin
|
|
DrawArrowUp(y - 4);
|
|
Line(x2 - 3, y + 1, x2 - 3, y2 - 1);
|
|
Line(x2 - 2, y + 1, x2 - 2, y2 - 1);
|
|
Line(x2 - 1, y + 2, x2 - 1, y2 - 2);
|
|
if aEvenH = 1
|
|
then Line(x2, y + 3, x2, y2 - 3)
|
|
else Pixels[x2, y + 3] := Pen.Color;
|
|
DrawArrowDown(y2);
|
|
Line(x + 2, y + 1, x + 2, y2 - 1);
|
|
Line(x + 1, y + 1, x + 1, y2 - 1);
|
|
Line(x, y + 2, x, y2 - 2);
|
|
if aEvenH = 1
|
|
then Line(x - 1, y + 3, x - 1, y2 - 3)
|
|
else Pixels[x - 1, y + 3] := Pen.Color;
|
|
end;
|
|
egdArrowURDL_L:
|
|
begin
|
|
DrawArrowUp(y - 4);
|
|
DrawArrowRight(x2);
|
|
DrawArrowDown(y2);
|
|
DrawArrowLeft(x - 4);
|
|
end;
|
|
egdArrowURDL_XL:
|
|
begin
|
|
DrawArrowUp(y - 5);
|
|
DrawArrowRight(x2 + 1);
|
|
DrawArrowDown(y2 + 1);
|
|
DrawArrowLeft(x - 5);
|
|
end;
|
|
egdArrowsUL_DR:
|
|
begin
|
|
dec(x);
|
|
dec(x2);
|
|
DrawArrowUL(y);
|
|
inc(x, 2);
|
|
inc(x2, 2);
|
|
DrawArrowDR(y2 - 6);
|
|
end;
|
|
egdArrowsUR_DL:
|
|
begin
|
|
inc(x);
|
|
inc(x2);
|
|
DrawArrowUR(y);
|
|
dec(x, 2);
|
|
dec(x2, 2);
|
|
DrawArrowDL(y2 - 6);
|
|
end;
|
|
egdArrsB_Min:
|
|
begin
|
|
DrawArrowBDown(y - 2, False);
|
|
DrawArrowBDown(y + 2);
|
|
FillRect(x, y2, x2, y2 + 2);
|
|
end;
|
|
egdArrB_Min:
|
|
begin
|
|
DrawArrowBDown(y);
|
|
FillRect(x, y2 - 2, x2, y2);
|
|
end;
|
|
egdArrsB_DD:
|
|
begin
|
|
DrawArrowBDown(y, False);
|
|
DrawArrowBDown(y + 4);
|
|
end;
|
|
egdArrB_Down: DrawArrowBDown(y + 2);
|
|
egdArrsB_Middle:
|
|
begin
|
|
DrawArrowBDown(y - 3);
|
|
FillRect(x, y + 3, x2, y2 - 3);
|
|
DrawArrowBUp(y2 - 2);
|
|
end;
|
|
egdArrsB_UD:
|
|
begin
|
|
DrawArrowBUp(y - 2);
|
|
DrawArrowBDown(y2 - 3);
|
|
end;
|
|
egdArrB_Up: DrawArrowBUp(y + 1);
|
|
egdArrsB_UU:
|
|
begin
|
|
DrawArrowBUp(y2 - 8);
|
|
DrawArrowBUp(y2 - 4, False);
|
|
end;
|
|
egdArrB_Max:
|
|
begin
|
|
FillRect(x, y, x2, y + 2);
|
|
DrawArrowBUp(y2 - 5);
|
|
end;
|
|
egdArrsB_Max:
|
|
begin
|
|
FillRect(x, y - 2, x2, y);
|
|
DrawArrowBUp(y2 - 7);
|
|
DrawArrowBUp(y2 - 3, False);
|
|
end;
|
|
egdArrsB_HMin:
|
|
begin
|
|
FillRect(x - 2, y, x, y2);
|
|
DrawArrowBLeft(x2 - 7);
|
|
DrawArrowBLeft(x2 - 3, False);
|
|
end;
|
|
egdArrB_HMin:
|
|
begin
|
|
FillRect(x, y, x + 2, y2);
|
|
DrawArrowBLeft(x2 - 5);
|
|
end;
|
|
egdArrsB_LL:
|
|
begin
|
|
DrawArrowBLeft(x - 1);
|
|
DrawArrowBLeft(x + 3, False);
|
|
end;
|
|
egdArrB_Left: DrawArrowBLeft(x + 1);
|
|
egdArrsB_HMiddle:
|
|
begin
|
|
DrawArrowBRight(x - 2);
|
|
DrawArrowBLeft(x2 - 3);
|
|
end;
|
|
egdArrsB_LR:
|
|
begin
|
|
DrawArrowBLeft(x - 2);
|
|
DrawArrowBRight(x2 -3);
|
|
end;
|
|
egdArrB_Right: DrawArrowBRight(x + 2);
|
|
egdArrsB_RR:
|
|
begin
|
|
DrawArrowBRight(x - 1, False);
|
|
DrawArrowBRight(x + 3);
|
|
end;
|
|
egdArrB_HMax:
|
|
begin
|
|
DrawArrowBRight(x);
|
|
FillRect(x2 - 2, y, x2, y2);
|
|
end;
|
|
egdArrsB_HMax:
|
|
begin
|
|
DrawArrowBRight(x - 2, False);
|
|
DrawArrowBRight(x + 2);
|
|
FillRect(x2, y, x2 + 2, y2);
|
|
end;
|
|
egdArrC_Min:
|
|
begin
|
|
DrawArrowDown(y + 1, 5);
|
|
Line(x - 1, y + 6, x2 + 1, y + 6);
|
|
end;
|
|
egdArrC_DD:
|
|
begin
|
|
DrawArrowDown(y2 - 8, 5);
|
|
DrawArrowDown(y2 - 3, 5);
|
|
end;
|
|
egdArrC_Down:
|
|
begin
|
|
DrawArrowDown(y + 2, 5);
|
|
end;
|
|
egdArrC_Middle:
|
|
begin
|
|
DrawArrowDown(y - 2 + aEvenH, 5);
|
|
if aEvenH = 0 then Line(x - 1, y + 3, x2 + 1, y + 3);
|
|
DrawArrowUp(y2 - 3 - aEvenH, 5);
|
|
end;
|
|
egdArrC_UD:
|
|
begin
|
|
DrawArrowUp(y - 2, 5);
|
|
DrawArrowDown(y2 - 3, 5);
|
|
end;
|
|
egdArrC_LR:
|
|
begin
|
|
DrawArrowLeft(x - 2, 5);
|
|
DrawArrowRight(x2 - 3, 5);
|
|
end;
|
|
egdArrC_Up:
|
|
begin
|
|
DrawArrowUp(y + 1, 5);
|
|
end;
|
|
egdArrC_UU:
|
|
begin
|
|
DrawArrowUp(y2 - 9, 5);
|
|
DrawArrowUp(y2 - 4, 5);
|
|
end;
|
|
egdArrC_Max:
|
|
begin
|
|
Line(x - 1, y + aEvenH, x2 + 1, y + aEvenH);
|
|
DrawArrowUp(y + 1 + aEvenH, 5);
|
|
end;
|
|
egdArrC_URDL:
|
|
begin
|
|
DrawArrowUp(y - 7, 5);
|
|
DrawArrowRight(x2 + 2, 5);
|
|
DrawArrowDown(y2 + 2, 5);
|
|
DrawArrowLeft(x - 7, 5);
|
|
end;
|
|
egdPlayPause:
|
|
begin
|
|
FillRect(x, y, x + 3, y2);
|
|
FillRect(x2 - 3, y, x2, y2);
|
|
end;
|
|
egdPlayUpDown:
|
|
begin
|
|
DrawArrowUp(y - 2);
|
|
FillRect(x, y + 3, x2, y2 - 3);
|
|
DrawArrowDown(y2 - 2);
|
|
end;
|
|
egdPlayStop: FillRect(x, y, x2, y2);
|
|
egdPlayEject:
|
|
begin
|
|
DrawArrowUp(y);
|
|
FillRect(x, y + 5, x2, y2 - 1);
|
|
end;
|
|
egdPlayEjectD:
|
|
begin
|
|
FillRect(x, y + 1, x2, y2 - 5);
|
|
DrawArrowDown(y2 - 4);
|
|
end;
|
|
egdMathBigMinus:
|
|
begin
|
|
if aEvenW = 1 then
|
|
begin
|
|
if aEvenH = 0 then dec(y);
|
|
FillRect(x, y + 3, x2, y + 5);
|
|
end else
|
|
FillRect(x - 1, y + 2, x2 + 1, y + 5);
|
|
end;
|
|
egdMathMinus:
|
|
begin
|
|
if aEvenW = 1 then
|
|
begin
|
|
if aEvenH = 0 then dec(y);
|
|
FillRect(x + 1, y + 3, x2 - 1, y + 5);
|
|
end else
|
|
FillRect(x, y + 2, x2, y + 5);
|
|
end;
|
|
egdMathEqual:
|
|
begin
|
|
FillRect(x, y + 1, x2, y + 3);
|
|
FillRect(x, y2 - 3, x2, y2 - 1);
|
|
end;
|
|
egdMathPlusMinus:
|
|
begin
|
|
dec(y, 2);
|
|
if aEvenW = 1 then
|
|
begin
|
|
FillRect(x + 1, y + 3, x2 - 1, y + 5);
|
|
FillRect(x + 3, y + 1, x + 5, y + 7);
|
|
FillRect(x + 1, y + 8, x2 - 1, y + 10);
|
|
end else
|
|
begin
|
|
if aEvenH = 1 then inc(y);
|
|
FillRect(x, y + 2, x2, y + 5);
|
|
FillRect(x + 2, y, x + 5, y + 7);
|
|
FillRect(x, y + 8, x2, y + 10);
|
|
end;
|
|
end;
|
|
egdMathPlus:
|
|
begin
|
|
if aEvenW = 1 then
|
|
begin
|
|
if aEvenH = 0 then dec(y);
|
|
FillRect(x + 1, y + 3, x2 - 1, y + 5);
|
|
FillRect(x + 3, y + 1, x + 5, y + 7);
|
|
end else
|
|
begin
|
|
FillRect(x, y + 2, x2, y + 5);
|
|
FillRect(x + 2, y, x + 5, y + 7);
|
|
end;
|
|
end;
|
|
egdMathBigPlus:
|
|
begin
|
|
if aEvenW = 1 then
|
|
begin
|
|
if aEvenH = 0 then dec(y);
|
|
FillRect(x, y + 3, x2, y + 5);
|
|
FillRect(x + 3, y, x + 5, y + 8);
|
|
end else
|
|
begin
|
|
FillRect(x - 1, y + 2, x2 + 1, y + 5);
|
|
FillRect(x + 2, y - 1, x + 5, y + 8);
|
|
end;
|
|
end;
|
|
egdCombo:
|
|
begin
|
|
dec(x);
|
|
FillRect(x, y - 1, x2 + 1, y + 1);
|
|
inc(y, 2);
|
|
dec(x2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
end;
|
|
egdList:
|
|
begin
|
|
dec(y);
|
|
if aEvenH = 1 then
|
|
begin
|
|
Line(x, y, x2, y);
|
|
inc(y);
|
|
end;
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
end;
|
|
egdFramedList:
|
|
begin
|
|
Frame(x - 1, y - 2, x2 + 1, y + 9);
|
|
inc(x);
|
|
dec(x2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
inc(y, 2);
|
|
Line(x, y, x2, y);
|
|
end;
|
|
egdGrid:
|
|
begin
|
|
if aEvenH = 1 then dec(ARect.Bottom);
|
|
Frame(ARect);
|
|
x := ARect.Left + 3;
|
|
Line(x, ARect.Top + 1, x, ARect.Bottom - 1);
|
|
y := ARect.Top + 2;
|
|
while y < (ARect.Bottom - 2) do
|
|
begin
|
|
Line(ARect.Left + 1, y, ARect.Right - 1, y);
|
|
inc(y, 2);
|
|
end;
|
|
if (ARect.Right - ARect.Left) > 15 then
|
|
begin
|
|
x := x + (ARect.Right - x - 1) div 2;
|
|
Line(x, ARect.Top + 1, x, ARect.Bottom - 1);
|
|
end;
|
|
end;
|
|
end; { case }
|
|
end; { case }
|
|
end;
|
|
|