lasarus_compotents/ECC/ecdrawglyph.inc

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;