From: Ronald H. <ron...@us...> - 2005-06-05 16:56:17
|
Update of /cvsroot/apophysis/2.10/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17725/Source Modified Files: Main.dfm Main.pas Log Message: compact format for copy/paste Index: Main.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Main.pas,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Main.pas 5 Jun 2005 06:52:05 -0000 1.5 --- Main.pas 5 Jun 2005 16:56:08 -0000 1.6 *************** *** 1289,1294 **** end; ! function FlameToXML(const cp1: TControlPoint; sheep: boolean): string; var t, i, j: integer; --- 1289,1323 ---- end; + function ColorToXmlCompact(cp1: TControlPoint): string; + var + i: integer; + begin + Result := ' <colors count="256" data="'; ! for i := 0 to 255 do begin ! Result := Result + IntToHex(0,2) ! + IntToHex(cp1.cmap[i, 0],2) ! + IntToHex(cp1.cmap[i, 1],2) ! + IntToHex(cp1.cmap[i, 2],2); ! end; ! Result := Result + '"/>'; ! end; ! ! ! function ColorToXml(cp1: TControlPoint): string; ! var ! i: integer; ! begin ! Result := ''; ! for i := 0 to 255 do begin ! Result := Result + ' <color index="' + IntToStr(i) + ! '" rgb="' + IntToStr(cp1.cmap[i, 0]) + ' ' + ! IntToStr(cp1.cmap[i, 1]) + ' ' + ! IntToStr(cp1.cmap[i, 2]) + '"/>' + #13#10; ! end; ! end; ! ! ! function FlameToXML(const cp1: TControlPoint; sheep: boolean; compact: boolean = false): string; var t, i, j: integer; *************** *** 1349,1360 **** end; { Write palette data } ! if not sheep then ! for i := 0 to 255 do ! begin ! FileList.Add(' <color index="' + IntToStr(i) + ! '" rgb="' + IntToStr(cp1.cmap[i, 0]) + ' ' + ! IntToStr(cp1.cmap[i, 1]) + ' ' + ! IntToStr(cp1.cmap[i, 2]) + '"/>'); ! end; FileList.Add('</flame>'); result := FileList.text; --- 1378,1387 ---- end; { Write palette data } ! if not sheep then begin ! if not compact then ! FileList.Add(ColorToXml(cp1)); ! FileList.Add(ColorToXmlcompact(cp1)); ! end; ! FileList.Add('</flame>'); result := FileList.text; *************** *** 3611,3615 **** txt: string; begin ! txt := Trim(FlameToXML(Maincp, false)); Clipboard.SetTextBuf(PChar(txt)); mnuPaste.enabled := true; --- 3638,3642 ---- txt: string; begin ! txt := Trim(FlameToXML(Maincp, false, true)); Clipboard.SetTextBuf(PChar(txt)); mnuPaste.enabled := true; *************** *** 3913,3916 **** --- 3940,3966 ---- 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); *************** *** 3979,3982 **** --- 4029,4036 ---- 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 Index: Main.dfm =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Main.dfm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Main.dfm 5 Jun 2005 06:52:05 -0000 1.5 --- Main.dfm 5 Jun 2005 16:56:08 -0000 1.6 *************** *** 3,7 **** Top = 128 Width = 574 ! Height = 575 Caption = 'Apophysis' Color = clBtnFace --- 3,7 ---- Top = 128 Width = 574 ! Height = 595 Caption = 'Apophysis' Color = clBtnFace *************** *** 28,32 **** Top = 28 Width = 4 ! Height = 474 end object ToolBar: TToolBar --- 28,32 ---- Top = 28 Width = 4 ! Height = 514 end object ToolBar: TToolBar *************** *** 262,266 **** Top = 28 Width = 160 ! Height = 474 Align = alLeft Columns = < --- 262,266 ---- Top = 28 Width = 160 ! Height = 514 Align = alLeft Columns = < *************** *** 281,285 **** Top = 28 Width = 402 ! Height = 474 Align = alClient BevelInner = bvLowered --- 281,285 ---- Top = 28 Width = 402 ! Height = 514 Align = alClient BevelInner = bvLowered *************** *** 292,296 **** Top = 1 Width = 400 ! Height = 472 Align = alClient AutoSize = True --- 292,296 ---- Top = 1 Width = 400 ! Height = 492 Align = alClient AutoSize = True *************** *** 304,308 **** object StatusBar: TStatusBar Left = 0 ! Top = 502 Width = 566 Height = 19 --- 304,308 ---- object StatusBar: TStatusBar Left = 0 ! Top = 542 Width = 566 Height = 19 *************** *** 322,326 **** Top = 56 Bitmap = { ! 494C010133003600040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 000000000000360000002800000040000000E0000000010020000000000000E0 0000000000000000000000000000000000000000000000000000000000000000 --- 322,326 ---- Top = 56 Bitmap = { ! 494C010133003600040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 000000000000360000002800000040000000E0000000010020000000000000E0 0000000000000000000000000000000000000000000000000000000000000000 *************** *** 2174,2178 **** C003000180018000C003001F80018000C003001F80018001C003001F80018001 C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001 ! C03FFFFF80018001FFFFFFFFFFFFFFFF} end object SmallImages: TImageList --- 2174,2179 ---- C003000180018000C003001F80018000C003001F80018001C003001F80018001 C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001 ! C03FFFFF80018001FFFFFFFFFFFFFFFF00000000000000000000000000000000 ! 000000000000} end object SmallImages: TImageList |