diff --git a/2.10/Changes.txt b/2.10/Changes.txt
index 59b5178..9f25cde 100644
--- a/2.10/Changes.txt
+++ b/2.10/Changes.txt
@@ -9,6 +9,7 @@
+ Added form to modify the image after rendering.
+ B1199407 'Use current' gradient option bug
+ Add zoom out functionality on main form
++ compact format for copy/paste
2.02g
+ Delphi2005 Project
diff --git a/2.10/Source/Main.dfm b/2.10/Source/Main.dfm
index bc41658..dce105d 100644
--- a/2.10/Source/Main.dfm
+++ b/2.10/Source/Main.dfm
@@ -2,7 +2,7 @@ object MainForm: TMainForm
Left = 411
Top = 128
Width = 574
- Height = 575
+ Height = 595
Caption = 'Apophysis'
Color = clBtnFace
Font.Charset = ANSI_CHARSET
@@ -27,7 +27,7 @@ object MainForm: TMainForm
Left = 160
Top = 28
Width = 4
- Height = 474
+ Height = 514
end
object ToolBar: TToolBar
Left = 0
@@ -261,7 +261,7 @@ object MainForm: TMainForm
Left = 0
Top = 28
Width = 160
- Height = 474
+ Height = 514
Align = alLeft
Columns = <
item
@@ -280,7 +280,7 @@ object MainForm: TMainForm
Left = 164
Top = 28
Width = 402
- Height = 474
+ Height = 514
Align = alClient
BevelInner = bvLowered
BevelOuter = bvNone
@@ -291,7 +291,7 @@ object MainForm: TMainForm
Left = 1
Top = 1
Width = 400
- Height = 472
+ Height = 492
Align = alClient
AutoSize = True
PopupMenu = DisplayPopup
@@ -303,7 +303,7 @@ object MainForm: TMainForm
end
object StatusBar: TStatusBar
Left = 0
- Top = 502
+ Top = 542
Width = 566
Height = 19
Panels = <
@@ -321,7 +321,7 @@ object MainForm: TMainForm
Left = 8
Top = 56
Bitmap = {
- 494C010133003600040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
+ 494C010133003600040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000E0000000010020000000000000E0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -2173,7 +2173,8 @@ object MainForm: TMainForm
C003000F80018000C003000780018000C003000380018000C003000180018000
C003000180018000C003001F80018000C003001F80018001C003001F80018001
C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001
- C03FFFFF80018001FFFFFFFFFFFFFFFF}
+ C03FFFFF80018001FFFFFFFFFFFFFFFF00000000000000000000000000000000
+ 000000000000}
end
object SmallImages: TImageList
Left = 40
diff --git a/2.10/Source/Main.pas b/2.10/Source/Main.pas
index 4648154..2de87b1 100644
--- a/2.10/Source/Main.pas
+++ b/2.10/Source/Main.pas
@@ -1288,8 +1288,37 @@ begin
end;
end;
+function ColorToXmlCompact(cp1: TControlPoint): string;
+var
+ i: integer;
+begin
+ Result := ' ';
+end;
+
+
+function ColorToXml(cp1: TControlPoint): string;
+var
+ i: integer;
+begin
+ Result := '';
+ for i := 0 to 255 do begin
+ Result := Result + ' ' + #13#10;
+ end;
+end;
+
+
+function FlameToXML(const cp1: TControlPoint; sheep: boolean; compact: boolean = false): string;
var
t, i, j: integer;
FileList: TStringList;
@@ -1348,14 +1377,12 @@ begin
end;
end;
{ Write palette data }
- if not sheep then
- for i := 0 to 255 do
- begin
- FileList.Add(' ');
- end;
+ if not sheep then begin
+ if not compact then
+ FileList.Add(ColorToXml(cp1));
+ FileList.Add(ColorToXmlcompact(cp1));
+ end;
+
FileList.Add('');
result := FileList.text;
finally
@@ -3610,7 +3637,7 @@ procedure TMainForm.mnuCopyClick(Sender: TObject);
var
txt: string;
begin
- txt := Trim(FlameToXML(Maincp, false));
+ txt := Trim(FlameToXML(Maincp, false, true));
Clipboard.SetTextBuf(PChar(txt));
mnuPaste.enabled := true;
btnPaste.enabled := true;
@@ -3912,6 +3939,29 @@ begin
end;
end;
+procedure ParseCompactcolors(cp: TControlPoint; count: integer; data: string);
+ function HexChar(c: Char): Byte;
+ begin
+ case c of
+ '0'..'9': Result := Byte(c) - Byte('0');
+ 'a'..'f': Result := (Byte(c) - Byte('a')) + 10;
+ 'A'..'F': Result := (Byte(c) - Byte('A')) + 10;
+ else
+ Result := 0;
+ end;
+ end;
+var
+ i: integer;
+begin
+ Assert(Count = 256,'only 256 color Colormaps are supported at the moment');
+ Assert((Count * 8) = Length(data),'Data size MisMatch');
+ for i := 0 to Count -1 do begin
+ Parsecp.cmap[i][0] := 16 * HexChar(Data[i*8 + 3]) + HexChar(Data[i*8 + 4]);
+ Parsecp.cmap[i][1] := 16 * HexChar(Data[i*8 + 5]) + HexChar(Data[i*8 + 6]);
+ Parsecp.cmap[i][2] := 16 * HexChar(Data[i*8 + 7]) + HexChar(Data[i*8 + 8]);
+ end;
+end;
+
procedure TMainForm.XMLScannerEmptyTag(Sender: TObject; TagName: string;
Attributes: TAttrList);
var
@@ -3978,6 +4028,10 @@ begin
Parsecp.cmap[i][1] := StrToInt(Tokens[1]);
Parsecp.cmap[i][2] := StrToInt(Tokens[2]);
end;
+ if TagName = 'colors' then
+ begin
+ ParseCompactcolors(Parsecp, StrToInt(Attributes.value('count')), Attributes.value('data'));
+ end;
if TagName = 'symmetry' then
begin
i := StrToInt(Attributes.value('kind'));