renderthread bugfixes

This commit is contained in:
zueuk 2006-09-06 12:36:16 +00:00
parent 0d6de238b2
commit f3662ecc7e
2 changed files with 124 additions and 61 deletions

View File

@ -1,5 +1,6 @@
{ {
Apophysis Copyright (C) 2001-2004 Mark Townsend Apophysis Copyright (C) 2001-2004 Mark Townsend
Apophysis Copyright (C) 2005-2006 Ronald Hordijk, Piotr Borys, Peter Sdobnov
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -41,6 +42,7 @@ type
procedure TimelimiterOnTimer(Sender: TObject); procedure TimelimiterOnTimer(Sender: TObject);
procedure RenderStopClick(Sender: TObject); procedure RenderStopClick(Sender: TObject);
procedure RenderMoreClick(Sender: TObject); procedure RenderMoreClick(Sender: TObject);
private private
Remainder, StartTime, t: double; Remainder, StartTime, t: double;
imgLeft, imgTop, imgLeft, imgTop,
@ -57,11 +59,14 @@ type
message WM_THREAD_COMPLETE; message WM_THREAD_COMPLETE;
procedure HandleThreadTermination(var Message: TMessage); procedure HandleThreadTermination(var Message: TMessage);
message WM_THREAD_TERMINATE; message WM_THREAD_TERMINATE;
public public
Calculate : boolean; Calculate : boolean;
cp: TControlPoint; cp: TControlPoint;
Zoom: double; Zoom: double;
center: array[0..1] of double; center: array[0..1] of double;
ActiveForm: TForm;
end; end;
var var
@ -69,10 +74,23 @@ var
implementation implementation
uses Main, Math, Global; uses
Main, Math, Global,
Tracer;
{$R *.DFM} {$R *.DFM}
procedure Trace1(const str: string);
begin
if TraceLevel >= 1 then
TraceForm.FullscreenTrace.Lines.Add('. ' + str);
end;
procedure Trace2(const str: string);
begin
if TraceLevel >= 2 then
TraceForm.FullscreenTrace.Lines.Add('. . ' + str);
end;
procedure TFullscreenForm.DrawFlame; procedure TFullscreenForm.DrawFlame;
var var
@ -104,6 +122,7 @@ begin
Remainder := 1; Remainder := 1;
if Assigned(Renderer) then begin // hmm... if Assigned(Renderer) then begin // hmm...
Trace2('Killing previous RenderThread #' + inttostr(Renderer.ThreadID));
Renderer.Terminate; Renderer.Terminate;
Renderer.WaitFor; Renderer.WaitFor;
@ -117,6 +136,7 @@ begin
Renderer.TargetHandle := Handle; Renderer.TargetHandle := Handle;
Renderer.OnProgress := OnProgress; Renderer.OnProgress := OnProgress;
Renderer.NrThreads := NrTreads; Renderer.NrThreads := NrTreads;
if TraceLevel > 0 then Renderer.Output := TraceForm.FullscreenTrace.Lines;
Renderer.SetCP(cp); Renderer.SetCP(cp);
if FullscreenTimeLimit > 0 then begin if FullscreenTimeLimit > 0 then begin
@ -135,18 +155,25 @@ procedure TFullscreenForm.HandleThreadCompletion(var Message: TMessage);
var var
bm: TBitmap; bm: TBitmap;
begin begin
Trace2(MsgComplete + IntToStr(message.LParam));
if not Assigned(Renderer) then begin
Trace2(MsgNotAssigned);
exit;
end;
if Renderer.ThreadID <> message.LParam then begin
Trace2(MsgAnotherRunning);
exit;
end;
if Assigned(Renderer) then if Assigned(Renderer) then
begin begin
bm := TBitmap.Create; bm := TBitmap.Create;
bm.assign(Renderer.GetImage); bm.assign(Renderer.GetImage);
Image.SetBounds(imgLeft, imgTop, imgWidth, imgHeight); Image.SetBounds(imgLeft, imgTop, imgWidth, imgHeight);
Image.Picture.Graphic := bm; Image.Picture.Graphic := bm;
// Canvas.StretchDraw(Rect(0, 0, ClientWidth, ClientHeight), bm);
//Renderer.Free;
//Renderer := nil;
bm.Free; bm.Free;
end; end;
RenderStop.Enabled := false; RenderStop.Enabled := false;
RenderMore.Enabled := true; RenderMore.Enabled := true;
@ -157,6 +184,16 @@ procedure TFullscreenForm.HandleThreadTermination(var Message: TMessage);
var var
bm: TBitmap; bm: TBitmap;
begin begin
Trace2(MsgTerminated + IntToStr(message.LParam));
if not Assigned(Renderer) then begin
Trace2(MsgNotAssigned);
exit;
end;
if Renderer.ThreadID <> message.LParam then begin
Trace2(MsgAnotherRunning);
exit;
end;
RenderStop.Enabled := false; RenderStop.Enabled := false;
RenderMore.Enabled := false; RenderMore.Enabled := false;
@ -202,6 +239,8 @@ end;
procedure TFullscreenForm.FormShow(Sender: TObject); procedure TFullscreenForm.FormShow(Sender: TObject);
begin begin
Trace1('--- Opening Fullscreen View ---');
if Image.Width < ClientWidth then if Image.Width < ClientWidth then
Image.Left := (ClientWidth - Image.Width) div 2; Image.Left := (ClientWidth - Image.Width) div 2;
if Image.Height < ClientHeight then if Image.Height < ClientHeight then
@ -229,13 +268,19 @@ begin
Renderer.WaitForMore := false; Renderer.WaitForMore := false;
Renderer.Resume; Renderer.Resume;
end; end;
Trace2('Form closing: killing RenderThread #' + inttostr(Renderer.ThreadID));
Renderer.Terminate; Renderer.Terminate;
Renderer.WaitFor; Renderer.WaitFor;
Trace2('Destroying RenderThread #' + IntToStr(Renderer.ThreadID));
Renderer.Free; Renderer.Free;
Renderer := nil; Renderer := nil;
end; end;
Trace1('--- Closing Fullscreen View ---');
Trace1('');
ShowTaskbar; ShowTaskbar;
ActiveForm.SetFocus;
end; end;
procedure TFullscreenForm.FormCreate(Sender: TObject); procedure TFullscreenForm.FormCreate(Sender: TObject);
@ -275,7 +320,7 @@ end;
procedure TFullscreenForm.RenderStopClick(Sender: TObject); procedure TFullscreenForm.RenderStopClick(Sender: TObject);
begin begin
if assigned(Renderer) then Renderer.Break; if assigned(Renderer) then Renderer.BreakRender;
end; end;
procedure TFullscreenForm.RenderMoreClick(Sender: TObject); procedure TFullscreenForm.RenderMoreClick(Sender: TObject);

View File

@ -290,6 +290,22 @@ object MainForm: TMainForm
Style = tbsCheck Style = tbsCheck
OnClick = tbRotateClick OnClick = tbRotateClick
end end
object ToolButton2: TToolButton
Left = 571
Top = 0
Width = 8
Caption = 'ToolButton2'
ImageIndex = 39
Style = tbsSeparator
end
object tbShowTrace: TToolButton
Left = 579
Top = 0
Hint = 'Show trace window'
Caption = 'tbShowTrace'
ImageIndex = 38
OnClick = tbShowTraceClick
end
end end
object ListView: TListView object ListView: TListView
Left = 0 Left = 0
@ -327,8 +343,10 @@ object MainForm: TMainForm
Width = 555 Width = 555
Height = 433 Height = 433
Align = alClient Align = alClient
AutoSize = True Anchors = []
Center = True
PopupMenu = DisplayPopup PopupMenu = DisplayPopup
Proportional = True
OnDblClick = ImageDblClick OnDblClick = ImageDblClick
OnMouseDown = ImageMouseDown OnMouseDown = ImageMouseDown
OnMouseMove = ImageMouseMove OnMouseMove = ImageMouseMove
@ -355,7 +373,7 @@ object MainForm: TMainForm
Left = 8 Left = 8
Top = 56 Top = 56
Bitmap = { Bitmap = {
494C010135003600040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 494C010135003600040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000E0000000010020000000000000E0 000000000000360000002800000040000000E0000000010020000000000000E0
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000292B2F00000000002F3236000000 000000000000000000000000000000000000292B2F00000000002F3236000000
@ -889,105 +907,105 @@ object MainForm: TMainForm
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000A0A0A000A0A0A00000000000000000000000000000000000000000000000 A000A0A0A000A0A0A0000000000000000000CC66000066666600666666006666
0000000000000000000000000000000000000000000000000000000000000000 6600666666006666660066666600666666006666660066666600666666006666
0000000000000000000000000000000000000000000000000000FFF0E700FFEA 6600666666009999990000000000000000000000000000000000FFF0E700FFEA
DD00FFE9DC00FFEBDF00FFEDE300FFEFE500FDEFE70000000000000000000000 DD00FFE9DC00FFEBDF00FFEDE300FFEFE500FDEFE70000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000A0A0A000A0A0A000000000000000000000000000000000007B7B7B00FFFF A000A0A0A000A0A0A0000000000000000000CC66000000000000000000000000
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000000000000000
FF00FFFFFF00FFFFFF0000000000000000000000000000000000FEEBE000FFE4 0000000000006666660000000000000000000000000000000000FEEBE000FFE4
D200FFE2D100FFE4D400FFE6D700FFE8DA00FCE6DA0000000000000000000000 D200FFE2D100FFE4D400FFE6D700FFE8DA00FCE6DA0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000 FF00A0A0A000A0A0A0000000000000000000CC66000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
000000000000FFFFFF0000000000000000000000000000000000FEE7D900FFDD 0000000000006666660000000000000000000000000000000000FEE7D900FFDD
C800FFDBC600FFDDC900FFDFCC00FFE0D000FCDFD00000000000000000000000 C800FFDBC600FFDDC900FFDFCC00FFE0D000FCDFD00000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000 FF00A0A0A000A0A0A0000000000000000000CC6600000000000000FF00000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 000000FF000000FF00000000000000FF00000000000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000FFE4D300FFD6 0000000000006666660000000000000000000000000000000000FFE4D300FFD6
BE00FFD4BB00FFD6BE00FFDEC700FFE3CE00FCE2D00000000000000000000000 BE00FFD4BB00FFD6BE00FFDEC700FFE3CE00FCE2D00000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000 FF00A0A0A000A0A0A0000000000000000000CC66000000000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000FFDFCD00FFD0 0000000000006666660000000000000000000000000000000000FFDFCD00FFD0
B500FFCDAF00FFD0B400F2CCB400EFD3C200ECD5C70000000000000000000000 B500FFCDAF00FFD0B400F2CCB400EFD3C200ECD5C70000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000 FF00A0A0A000A0A0A0000000000000000000CC6600000000000000FF000000FF
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF 00000000000000FF000000FF000000FF00000000000000FF0000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000FFDBC700FFCA 0000000000006666660000000000000000000000000000000000FFDBC700FFCA
AB00FFC7A500FFD4B20000000000000000000000000000000000000000000000 AB00FFC7A500FFD4B20000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000 A000FFFFFF00FFFFFF000000000000000000CC66000000000000000000000000
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000FFDAC500FFCB 0000000000006666660000000000000000000000000000000000FFDAC500FFCB
AC00FFC6A500FFD3B20000000000F5A779000000000000000000000000000000 AC00FFC6A500FFD3B20000000000F5A779000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000 A000FFFFFF00FFFFFF000000000000000000CC6600000000000000FF00000000
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF 000000FF000000FF00000000000000FF000000FF000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000FDE2D300FEDC 0000000000006666660000000000000000000000000000000000FDE2D300FEDC
C600FED9C300FEE3CD003D2F2800000000000000000000000000000000000000 C600FED9C300FEE3CD003D2F2800000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000 A000FFFFFF00FFFFFF000000000000000000CC66000000000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000000000000000 0000000000006666660000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0 A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000 A000FFFFFF00FFFFFF000000000000000000CC66000000000000000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 0000000000000000000000000000000000000000000000000000000000000000
FF0000000000FFFFFF0000000000000000000000000000000000000000000000 0000000000006666660000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000 FF00FFFFFF00FFFFFF000000000000000000CC660000CC660000CC660000CC66
0000000000000000000000000000000000000000000000000000000000000000 0000CC660000CC660000CC660000CC660000CC660000CC660000CC660000CC66
000000000000FFFFFF0000000000000000000000000000000000000000000000 0000CC660000CC66000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000707A81002D3134002D31 00000000000000000000000000000000000000000000707A81002D3134002D31
34000B0C0D002D3134002D3134004F565B000000000000000000000000000000 34000B0C0D002D3134002D3134004F565B000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000A0A0A000A0A0 0000000000000000000000000000000000000000000000000000A0A0A000A0A0
A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B007B7B FF00FFFFFF00FFFFFF000000000000000000CC66000000000000FFCC9900FFCC
7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B 9900FFCC9900FFCC9900FFCC9900FFCC9900FFCC9900FFCC9900FFCC99000000
7B007B7B7B007B7B7B0000000000000000000000000000000000000000000000 0000CC6600000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000CC660000CC660000CC660000CC66
0000CC660000CC660000CC660000CC660000CC660000CC660000CC660000CC66
0000CC660000CC660000CC660000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@ -2167,11 +2185,11 @@ object MainForm: TMainForm
FFE7F81F803FE7FFE000F3CF803FE1FFE000EFEF803FE07FE3E7CFFF800FE01F FFE7F81F803FE7FFE000F3CF803FE1FFE000EFEF803FE07FE3E7CFFF800FE01F
E5E7DFFF8007E007E6E7DFFF8003E003E767DFFF8001E007E7A7DFC38040E01F E5E7DFFF8007E007E6E7DFFF8003E003E767DFFF8001E007E7A7DFC38040E01F
E7C7CFE380E0E07F0007EFE381E0E1FF0007F39BFFF0E7FFE7FBF83FFFF8FFFF E7C7CFE380E0E07F0007EFE381E0E1FF0007F39BFFF0E7FFE7FBF83FFFF8FFFF
E7FDFFFFFFFCFFFFE7FFFFFFFFFEFFFFFFFFFFFFFFFF803FFFFF8001FFFF803F E7FDFFFFFFFCFFFFE7FFFFFFFFFEFFFFFFFFFFFFFFFF803FFFFF80010001803F
FFFF8001FFFF803FE0078001C003803FE0078001CFFB803FE0078001C00B803F FFFF80010001803FE00780010001803FE00780010001803FE00780010001803F
E0078001C00B803FE0078001C00B803FE0078001C00B807FE0078001C00B80FF E00780010001803FE00780010001803FE00780010001807FE0078001000180FF
E0078001C00B81FFE0078001C00BFFFFE0078001C003FF80FFFF8001C003FFFF E0078001000181FFE00780010001FFFFE00780010001FF80FFFF80014015FFFF
FFFF8001FFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFF001DFFBC000FFFF FFFF80010001FFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFF001DFFBC000FFFF
F80187FBC000FE7FFC0103FBC000E667BE0103E1C000E0079F0103C0C000C003 F80187FBC000FE7FFC0103FBC000E667BE0103E1C000E0079F0103C0C000C003
8F0103C0C000C003860187C0C000C0038061EFC0C000C00380F1EFE1C000E007 8F0103C0C000C003860187C0C000C0038061EFC0C000C00380F1EFE1C000E007
80F9EFF7C000E007807DF7EFC000E427803FF7EFC000FC3F801FFBDFC000FE7F 80F9EFF7C000E007807DF7EFC000E427803FF7EFC000FC3F801FFBDFC000FE7F
@ -2207,7 +2225,8 @@ object MainForm: TMainForm
C003000F80018000C003000780018000C003000380018000C003000180018000 C003000F80018000C003000780018000C003000380018000C003000180018000
C003000180018000C003001F80018000C003001F80018001C003001F80018001 C003000180018000C003001F80018000C003001F80018001C003001F80018001
C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001 C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001
C03FFFFF80018001FFFFFFFFFFFFFFFF} C03FFFFF80018001FFFFFFFFFFFFFFFF00000000000000000000000000000000
000000000000}
end end
object SmallImages: TImageList object SmallImages: TImageList
Left = 40 Left = 40
@ -2905,19 +2924,17 @@ object MainForm: TMainForm
object N6: TMenuItem object N6: TMenuItem
Caption = '-' Caption = '-'
end end
object mnuPopCopyUPR: TMenuItem object mnuPopFullscreen: TMenuItem
Caption = 'Copy as UPR' Caption = 'Fullscreen View'
Hint = Hint = 'Show the flame in fullscreen mode'
'Copies the IFS in Ultra Fractal paremeter format to the clipboar' + ImageIndex = 52
'd.' ShortCut = 114
ImageIndex = 23 OnClick = mnuFullScreenClick
ShortCut = 16451
OnClick = mnuCopyUPRClick
end end
end end
object RedrawTimer: TTimer object RedrawTimer: TTimer
Enabled = False Enabled = False
Interval = 20 Interval = 50
OnTimer = RedrawTimerTimer OnTimer = RedrawTimerTimer
Left = 104 Left = 104
Top = 56 Top = 56
@ -2944,6 +2961,7 @@ object MainForm: TMainForm
Normalize = False Normalize = False
OnStartTag = XMLScannerStartTag OnStartTag = XMLScannerStartTag
OnEmptyTag = XMLScannerEmptyTag OnEmptyTag = XMLScannerEmptyTag
OnContent = XmlScannerContent
Left = 72 Left = 72
Top = 120 Top = 120
end end