📄 teradial.pas
字号:
5: case SubStyleToUse of
1,
2,
3,
4:
begin
ActiveCorners[1] := False;
ActiveCorners[4] := False;
end;
5,
6,
7,
8:
begin
ActiveCorners[2] := False;
ActiveCorners[3] := False;
end;
9,
10,
11,
12:
begin
ActiveCorners[1] := False;
ActiveCorners[2] := False;
end;
13,
14,
15,
16:
begin
ActiveCorners[3] := False;
ActiveCorners[4] := False;
end;
end;
6: case SubStyleToUse of
1,
2:
begin
ActiveCorners[1] := False;
ActiveCorners[2] := False;
ActiveCorners[4] := False;
end;
3,
4:
begin
ActiveCorners[1] := False;
ActiveCorners[2] := False;
ActiveCorners[3] := False;
end;
5,
6:
begin
ActiveCorners[1] := False;
ActiveCorners[3] := False;
ActiveCorners[4] := False;
end;
7,
8:
begin
ActiveCorners[2] := False;
ActiveCorners[3] := False;
ActiveCorners[4] := False;
end;
end;
7: case SubStyleToUse of
1,
2,
3,
4:
begin
ActiveCorners[1] := False;
ActiveCorners[2] := False;
ActiveCorners[4] := False;
end;
5,
6,
7,
8:
begin
ActiveCorners[1] := False;
ActiveCorners[2] := False;
ActiveCorners[3] := False;
end;
9,
10,
11,
12:
begin
ActiveCorners[1] := False;
ActiveCorners[3] := False;
ActiveCorners[4] := False;
end;
13,
14,
15,
16:
begin
ActiveCorners[2] := False;
ActiveCorners[3] := False;
ActiveCorners[4] := False;
end;
end;
end;
inherited;
Data.DirtyRects.CheckBounds := True;
Data.DirtyRects.Bounds := Rect(0, 0, Data.Width, Data.Height);
end;
function TRadialTransition.CalcTotalFrames(Data: TTETransitionData): Longint;
begin
Result := 0;
MaxFrames := ((CornerPoints[3].x + 1) * 2) + ((CornerPoints[3].y + 1) * 2);
case StyleToUse of
1: Result := MaxFrames;
2: if IsSmooth
then Result := MaxFrames div 2
else Result := MaxFrames;
3: begin
Result := MaxFrames div 4;
if IsSmooth and (SubStyleToUse in [5, 6, 7, 8]) then
Inc(Result);
end;
4: case SubStyleToUse of
1,
2,
3,
4: Result := MaxFrames - CornerPoints[3].y;
5,
6,
7,
8: Result := MaxFrames - CornerPoints[3].x;
end;
5: case SubStyleToUse of
1,
2,
3,
4,
5,
6,
7,
8: if IsSmooth
then Result := (MaxFrames - CornerPoints[3].y) div 2
else Result := MaxFrames - CornerPoints[3].y;
9,
10,
11,
12,
13,
14,
15,
16: if IsSmooth
then Result := (MaxFrames - CornerPoints[3].x) div 2
else Result := MaxFrames - CornerPoints[3].x;
end;
6: Result := MaxFrames div 2 + 0;
7: if IsSmooth
then Result := MaxFrames div 4
else Result := MaxFrames div 2;
end;
end;
function TRadialTransition.CountOfSubStyles(StyleValue: Word): Word;
begin
if StyleValue = 0
then Result := 0
else
begin
Result := 1;
case StyleValue of
1: Result := 8;
2: Result := 8;
3: Result := 8;
4: Result := 8;
5: Result := 16;
6: Result := 8;
7: Result := 16;
end;
end;
end;
procedure TRadialTransition.MaskFrame(MaskBmp: TBitmap; CurrentFrame, Step,
LastExecutedFrame: Longint; Data: TTETransitionData; Draw, CalcDirtyRects:
Boolean);
begin
Data.UpdateRect := Rect(0, 0, 0, 0);
case StyleToUse of
1: case SubStyleToUse of
1: Style1_1Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style1_2Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style1_3Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style1_4Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style1_5Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style1_6Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style1_7Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style1_8Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
2: case SubStyleToUse of
1: Style2_1Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style2_2Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style2_3Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style2_4Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style2_5Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style2_6Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style2_7Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style2_8Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
3: case SubStyleToUse of
1: Style3_1Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style3_2Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style3_3Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style3_4Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style3_5Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style3_6Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style3_7Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style3_8Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
4: case SubStyleToUse of
1: Style4_1Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style4_2Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style4_3Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style4_4Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style4_5Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style4_6Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style4_7Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style4_8Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
5: case SubStyleToUse of
1: Style5_1Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style5_2Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style5_3Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style5_4Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style5_5Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style5_6Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style5_7Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style5_8Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
9: Style5_9Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
10: Style5_10Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
11: Style5_11Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
12: Style5_12Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
13: Style5_13Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
14: Style5_14Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
15: Style5_15Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
16: Style5_16Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
6: case SubStyleToUse of
1: Style6_1Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style6_2Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style6_3Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style6_4Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style6_5Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style6_6Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style6_7Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style6_8Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
7: case SubStyleToUse of
1: Style7_1Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
2: Style7_2Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
3: Style7_3Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
4: Style7_4Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
5: Style7_5Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
6: Style7_6Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
7: Style7_7Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
8: Style7_8Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
9: Style7_9Frame (MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
10: Style7_10Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
11: Style7_11Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
12: Style7_12Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
13: Style7_13Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
14: Style7_14Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
15: Style7_15Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
16: Style7_16Frame(MaskBmp, Data, CurrentFrame, Step, Draw, CalcDirtyRects);
end;
end;
end;
procedure TRadialTransition.DrawMask(Origin: TPoint; MaskBmp: TBitmap;
Data: TTETransitionData; Position, Step: Longint;
Draw, CalcDirtyRects: Boolean);
procedure GetPoints(Position: Longint; var x, y: Integer);
begin
if Position < CornerPositions[2]
then
begin
x := Position - 2;
y := CornerPoints[2].y;
end
else if Position < CornerPositions[3]
then
begin
x := CornerPoints[2].x;
y := Position - CornerPositions[2] - 1;
end
else if Position < CornerPositions[4]
then
begin
x := CornerPositions[4] - Position - 1;
y := CornerPoints[3].y;
end
else
begin
x := CornerPoints[4].x;
y := CornerPoints[4].y + CornerPositions[4] - Position;
end;
end;
procedure AddPointToRect(const Point: TPoint; var UpdateRect: TRect);
begin
if IsRectEmpty(UpdateRect)
then UpdateRect := Rect(Point.x, Point.y, Point.x + 1, Point.y + 1)
else
begin
if Point.x < UpdateRect.Left then
UpdateRect.Left := Point.x;
if Point.x >= UpdateRect.Right then
UpdateRect.Right := Point.x + 1;
if Point.y < UpdateRect.Top then
UpdateRect.Top := Point.y;
if Point.y >= UpdateRect.Bottom then
UpdateRect.Bottom := Point.y + 1;
end;
end;
var
xDst,
yDst,
xDst2,
yDst2: Integer;
PrevPosition: Longint;
Points: array[0..5] of TPoint;
Count: Integer;
DirtyRect: TRect;
begin
DirtyRect := Rect(0, 0, 0, 0);
if Step = 1 then
begin
GetPoints(Position, xDst, yDst);
AddPointToRect(Origin, DirtyRect);
AddPointToRect(Point(xDst, yDst), DirtyRect);
if Draw then
begin
MaskBmp.Canvas.MoveTo(Origin.x, Origin.y);
MaskBmp.Canvas.LineTo(xDst, yDst);
end;
end
else
begin
PrevPosition := Position - Step + 1;
if PrevPosition < 1
then Inc(PrevPosition, MaxFrames)
else if PrevPosition > MaxFrames then
Dec(PrevPosition, MaxFrames);
GetPoints(PrevPosition, xDst , yDst );
GetPoints(Position , xDst2, yDst2);
Points[0] := Origin;
AddPointToRect(Points[0], DirtyRect);
Points[1] := Point(xDst, yDst);
AddPointToRect(Points[1], DirtyRect);
Count := 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -