added more "professional" way to "show transparency" :)
+ some bugfixes in renderMT and Fullscreen
This commit is contained in:
parent
53e8c17ac2
commit
37a2bc7ad7
@ -109,9 +109,6 @@ begin
|
|||||||
|
|
||||||
while Renderer <> nil do
|
while Renderer <> nil do
|
||||||
Application.ProcessMessages; // HandleThreadTermination kinda should be called here...(?)
|
Application.ProcessMessages; // HandleThreadTermination kinda should be called here...(?)
|
||||||
|
|
||||||
// Renderer.Free;
|
|
||||||
// Renderer := nil;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
assert(not assigned(renderer), 'Render thread is still running!?');
|
assert(not assigned(renderer), 'Render thread is still running!?');
|
||||||
@ -160,19 +157,6 @@ procedure TFullscreenForm.HandleThreadTermination(var Message: TMessage);
|
|||||||
var
|
var
|
||||||
bm: TBitmap;
|
bm: TBitmap;
|
||||||
begin
|
begin
|
||||||
if Assigned(Renderer) then begin
|
|
||||||
(*
|
|
||||||
if not Closing then begin
|
|
||||||
bm := TBitmap.Create;
|
|
||||||
bm.assign(Renderer.GetImage);
|
|
||||||
Image.SetBounds(imgLeft, imgTop, imgWidth, imgHeight);
|
|
||||||
Image.Picture.Graphic := bm;
|
|
||||||
bm.Free;
|
|
||||||
end;
|
|
||||||
*)
|
|
||||||
//Renderer.Free;
|
|
||||||
//Renderer := nil;
|
|
||||||
end;
|
|
||||||
RenderStop.Enabled := false;
|
RenderStop.Enabled := false;
|
||||||
RenderMore.Enabled := false;
|
RenderMore.Enabled := false;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ unit ImageMaker;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Graphics, ControlPoint, RenderTypes;
|
Windows, Graphics, ControlPoint, RenderTypes, PngImage;
|
||||||
|
|
||||||
type TPalette = record
|
type TPalette = record
|
||||||
logpal : TLogPalette;
|
logpal : TLogPalette;
|
||||||
@ -47,13 +47,13 @@ type
|
|||||||
|
|
||||||
procedure Progress(value: double);
|
procedure Progress(value: double);
|
||||||
|
|
||||||
function GetTransparentImage: TBitmap;
|
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
function GetImage: TBitmap;
|
function GetImage: TBitmap;
|
||||||
|
function GetTransparentImage: TPNGObject;
|
||||||
|
|
||||||
procedure SetCP(CP: TControlPoint);
|
procedure SetCP(CP: TControlPoint);
|
||||||
procedure Init;
|
procedure Init;
|
||||||
@ -74,7 +74,7 @@ type
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Math, SysUtils, PngImage, JPEG, Global, Types;
|
Math, SysUtils, JPEG, Global, Types;
|
||||||
|
|
||||||
{ TImageMaker }
|
{ TImageMaker }
|
||||||
|
|
||||||
@ -181,9 +181,9 @@ end;
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
function TImageMaker.GetImage: TBitmap;
|
function TImageMaker.GetImage: TBitmap;
|
||||||
begin
|
begin
|
||||||
if ShowTransparency then
|
// if ShowTransparency then
|
||||||
Result := GetTransparentImage
|
// Result := GetTransparentImage
|
||||||
else
|
// else
|
||||||
Result := FBitmap;
|
Result := FBitmap;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -312,8 +312,6 @@ begin
|
|||||||
//bucketpos := 0;
|
//bucketpos := 0;
|
||||||
by := 0;
|
by := 0;
|
||||||
for i := 0 to fcp.Height - 1 do begin
|
for i := 0 to fcp.Height - 1 do begin
|
||||||
// if FStop then
|
|
||||||
// Break;
|
|
||||||
bx := 0;
|
bx := 0;
|
||||||
Progress(i / fcp.Height);
|
Progress(i / fcp.Height);
|
||||||
AlphaRow := PByteArray(FAlphaBitmap.scanline[YOffset + i]);
|
AlphaRow := PByteArray(FAlphaBitmap.scanline[YOffset + i]);
|
||||||
@ -442,8 +440,7 @@ zero_alpha:
|
|||||||
Row[j].red := ri;
|
Row[j].red := ri;
|
||||||
Row[j].green := gi;
|
Row[j].green := gi;
|
||||||
Row[j].blue := bi;
|
Row[j].blue := bi;
|
||||||
|
AlphaRow[j] := ai;//?
|
||||||
AlphaRow[j] := ai; //?
|
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -531,49 +528,25 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
function TImageMaker.GetTransparentImage: TBitmap;
|
function TImageMaker.GetTransparentImage: TPngObject;
|
||||||
var
|
var
|
||||||
x,y: integer;
|
x, y: integer;
|
||||||
i,row: integer;
|
i, row: integer;
|
||||||
PngObject: TPngObject;
|
|
||||||
rowbm, rowpng: PByteArray;
|
rowbm, rowpng: PByteArray;
|
||||||
begin
|
begin
|
||||||
if assigned(FTransparentImage) then FTransparentImage.Free;
|
Result := TPngObject.Create;
|
||||||
|
Result.Assign(FBitmap);
|
||||||
FTransparentImage := TBitmap.Create;
|
|
||||||
|
|
||||||
FTransparentImage.Width := Fcp.Width;
|
|
||||||
FTransparentImage.Height := Fcp.Height;
|
|
||||||
|
|
||||||
FTransparentImage.Canvas.Brush.Color := $CCCCCC;
|
|
||||||
FTransparentImage.Canvas.FillRect(Rect(0, 0, Fcp.Width, Fcp.Height));
|
|
||||||
|
|
||||||
FTransparentImage.Canvas.Brush.Color := $FFFFFF;
|
|
||||||
for x := 0 to ((Fcp.Width - 1) div 8) do begin
|
|
||||||
for y := 0 to ((Fcp.Height - 1) div 8) do begin
|
|
||||||
if odd(x + y) then
|
|
||||||
FTransparentImage.Canvas.FillRect(Rect(x * 8, y * 8, x * 8 + 8, y * 8 + 8));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
PngObject := TPngObject.Create;
|
|
||||||
PngObject.Assign(FBitmap);
|
|
||||||
|
|
||||||
if fcp.Transparency then begin
|
if fcp.Transparency then begin
|
||||||
PngObject.CreateAlpha;
|
Result.CreateAlpha;
|
||||||
for i:= 0 to FAlphaBitmap.Height - 1 do begin
|
for i:= 0 to FAlphaBitmap.Height - 1 do begin
|
||||||
rowbm := PByteArray(FAlphaBitmap.scanline[i]);
|
rowbm := PByteArray(FAlphaBitmap.scanline[i]);
|
||||||
rowpng := PByteArray(PngObject.AlphaScanline[i]);
|
rowpng := PByteArray(Result.AlphaScanline[i]);
|
||||||
for row := 0 to FAlphaBitmap.Width - 1 do begin
|
for row := 0 to FAlphaBitmap.Width - 1 do begin
|
||||||
rowpng[row] := rowbm[row];
|
rowpng[row] := rowbm[row];
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PngObject.Draw(FTransparentImage.Canvas, FTransparentImage.Canvas.ClipRect);
|
|
||||||
PngObject.Free;
|
|
||||||
|
|
||||||
Result := FTransparentImage;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -232,16 +232,25 @@ object MainForm: TMainForm
|
|||||||
ImageIndex = 13
|
ImageIndex = 13
|
||||||
OnClick = mnuOptionsClick
|
OnClick = mnuOptionsClick
|
||||||
end
|
end
|
||||||
object ToolButton6: TToolButton
|
object tbShowAlpha: TToolButton
|
||||||
Left = 448
|
Left = 448
|
||||||
Top = 0
|
Top = 0
|
||||||
|
Hint = 'Show transparency'
|
||||||
|
Caption = 'tbShowAlpha'
|
||||||
|
ImageIndex = 37
|
||||||
|
Style = tbsCheck
|
||||||
|
OnClick = tbShowAlphaClick
|
||||||
|
end
|
||||||
|
object ToolButton6: TToolButton
|
||||||
|
Left = 471
|
||||||
|
Top = 0
|
||||||
Width = 8
|
Width = 8
|
||||||
Caption = 'ToolButton6'
|
Caption = 'ToolButton6'
|
||||||
ImageIndex = 42
|
ImageIndex = 42
|
||||||
Style = tbsSeparator
|
Style = tbsSeparator
|
||||||
end
|
end
|
||||||
object tbzoomwindow: TToolButton
|
object tbzoomwindow: TToolButton
|
||||||
Left = 456
|
Left = 479
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Zoom to rectangle'
|
Hint = 'Zoom to rectangle'
|
||||||
Caption = 'tbzoomwindow'
|
Caption = 'tbzoomwindow'
|
||||||
@ -251,7 +260,7 @@ object MainForm: TMainForm
|
|||||||
OnClick = tbzoomwindowClick
|
OnClick = tbzoomwindowClick
|
||||||
end
|
end
|
||||||
object tbzoomoutwindow: TToolButton
|
object tbzoomoutwindow: TToolButton
|
||||||
Left = 479
|
Left = 502
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Zoom out using rectangle'
|
Hint = 'Zoom out using rectangle'
|
||||||
Caption = 'tbzoomoutwindow'
|
Caption = 'tbzoomoutwindow'
|
||||||
@ -261,7 +270,7 @@ object MainForm: TMainForm
|
|||||||
OnClick = tbzoomoutwindowClick
|
OnClick = tbzoomoutwindowClick
|
||||||
end
|
end
|
||||||
object tbDrag: TToolButton
|
object tbDrag: TToolButton
|
||||||
Left = 502
|
Left = 525
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Translate image'
|
Hint = 'Translate image'
|
||||||
Caption = 'tbDrag'
|
Caption = 'tbDrag'
|
||||||
@ -272,7 +281,7 @@ object MainForm: TMainForm
|
|||||||
OnClick = tbDragClick
|
OnClick = tbDragClick
|
||||||
end
|
end
|
||||||
object tbRotate: TToolButton
|
object tbRotate: TToolButton
|
||||||
Left = 525
|
Left = 548
|
||||||
Top = 0
|
Top = 0
|
||||||
Hint = 'Rotate'
|
Hint = 'Rotate'
|
||||||
Caption = 'tbRotate'
|
Caption = 'tbRotate'
|
||||||
@ -309,7 +318,7 @@ object MainForm: TMainForm
|
|||||||
Align = alClient
|
Align = alClient
|
||||||
BevelInner = bvLowered
|
BevelInner = bvLowered
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
Color = clBlack
|
Color = clAppWorkSpace
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
OnResize = BackPanelResize
|
OnResize = BackPanelResize
|
||||||
object Image: TImage
|
object Image: TImage
|
||||||
@ -320,7 +329,6 @@ object MainForm: TMainForm
|
|||||||
Align = alClient
|
Align = alClient
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
PopupMenu = DisplayPopup
|
PopupMenu = DisplayPopup
|
||||||
Stretch = True
|
|
||||||
OnDblClick = ImageDblClick
|
OnDblClick = ImageDblClick
|
||||||
OnMouseDown = ImageMouseDown
|
OnMouseDown = ImageMouseDown
|
||||||
OnMouseMove = ImageMouseMove
|
OnMouseMove = ImageMouseMove
|
||||||
@ -347,7 +355,7 @@ object MainForm: TMainForm
|
|||||||
Left = 8
|
Left = 8
|
||||||
Top = 56
|
Top = 56
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
494C010135003600040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
494C010135003600040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
|
||||||
000000000000360000002800000040000000E0000000010020000000000000E0
|
000000000000360000002800000040000000E0000000010020000000000000E0
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
000000000000000000000000000000000000292B2F00000000002F3236000000
|
000000000000000000000000000000000000292B2F00000000002F3236000000
|
||||||
@ -661,7 +669,7 @@ object MainForm: TMainForm
|
|||||||
2400FFEBE000FFE4D20000000000FFE3D200FFD6BE00FFD4BB00FFD6BE00FFDA
|
2400FFEBE000FFE4D20000000000FFE3D200FFD6BE00FFD4BB00FFD6BE00FFDA
|
||||||
C400FFDECA00FFE1CF00000000000000000010408F000F1F60003F7FB0003F70
|
C400FFDECA00FFE1CF00000000000000000010408F000F1F60003F7FB0003F70
|
||||||
B0002060A0003070AF001F509F00205F9F0010408F004F8FBF001F509F002F60
|
B0002060A0003070AF001F509F00205F9F0010408F004F8FBF001F509F002F60
|
||||||
A0003F70AF000000000010206F0000000000000000000000000000000000FD9C
|
A0003F70AF000F103F0010206F0000000000000000000000000000000000FD9C
|
||||||
6900F98D5300F7854600F1824500EA834600E7834800F0854900FF8B4A00FF94
|
6900F98D5300F7854600F1824500EA834600E7834800F0854900FF8B4A00FF94
|
||||||
5000FFB37D0000000000000000000000000014131200251926002A2B2B004B44
|
5000FFB37D0000000000000000000000000014131200251926002A2B2B004B44
|
||||||
440097899500B49CB500B7A0B5006E61680086748C00A8B6D9005A5F7D001008
|
440097899500B49CB500B7A0B5006E61680086748C00A8B6D9005A5F7D001008
|
||||||
@ -676,8 +684,8 @@ object MainForm: TMainForm
|
|||||||
050000000000000000000000000014131200A8604200FFEBE000FFE4D200733C
|
050000000000000000000000000014131200A8604200FFEBE000FFE4D200733C
|
||||||
2400FFE3D200FFD6BE0000000000FFDAC500FFCAAB00FFC7A500FFC7A5000000
|
2400FFE3D200FFD6BE0000000000FFDAC500FFCAAB00FFC7A500FFC7A5000000
|
||||||
00000000000000000000000000000000000010408F0060A0CF004F8FBF003F70
|
00000000000000000000000000000000000010408F0060A0CF004F8FBF003F70
|
||||||
B00000000000103F800000000000000F20000F1F5F00104F900060A0CF008FBF
|
B0003070AF00103F80000F1F5F00000F20000F1F5F00104F900060A0CF008FBF
|
||||||
DF00102F70000000000010206F0000000000000000000000000000000000EBA5
|
DF00102F70000F103F0010206F0000000000000000000000000000000000EBA5
|
||||||
7C00E8A07600E79F7300E69D7300DF834D00DD7D4300DD733300E8733200FF9C
|
7C00E8A07600E79F7300E69D7300DF834D00DD7D4300DD733300E8733200FF9C
|
||||||
680000000000000000000000000000000000141312001610120094818B00C7B2
|
680000000000000000000000000000000000141312001610120094818B00C7B2
|
||||||
C6009C89920084718200776F7F005B4D5E0043304100493B5200505169001216
|
C6009C89920084718200776F7F005B4D5E0043304100493B5200505169001216
|
||||||
@ -685,7 +693,7 @@ object MainForm: TMainForm
|
|||||||
2400FFDECB00FFD0B50000000000FFDAC400FFCBAC00FFC6A500FFC6A5000000
|
2400FFDECB00FFD0B50000000000FFDAC400FFCBAC00FFC6A500FFC6A5000000
|
||||||
0000F5A7790000000000000000000000000010408F000F1F5F003F7FB0003F70
|
0000F5A7790000000000000000000000000010408F000F1F5F003F7FB0003F70
|
||||||
AF001F509F0010408F002F60A00010307F00609FCF003F70B0005F9FC0004F80
|
AF001F509F0010408F002F60A00010307F00609FCF003F70B0005F9FC0004F80
|
||||||
BF000F1050000F103F0010206F00000000000000000000000000000000000000
|
BF000F1050000F10500010206F00000000000000000000000000000000000000
|
||||||
000000000000000000000000000000000000DD7D4500E0713200F3915B000000
|
000000000000000000000000000000000000DD7D4500E0713200F3915B000000
|
||||||
00000000000000000000000000000000000014131200030804007B7E8100E9D9
|
00000000000000000000000000000000000014131200030804007B7E8100E9D9
|
||||||
E400BBA3B000AA95A70073616E0022252A000C0A0E0024161F002B303B001313
|
E400BBA3B000AA95A70073616E0022252A000C0A0E0024161F002B303B001313
|
||||||
@ -879,97 +887,97 @@ object MainForm: TMainForm
|
|||||||
E000F9E9E000F9EBE200F9ECE600F9EDE900F5ECE70000000000000000000000
|
E000F9E9E000F9EBE200F9ECE600F9EDE900F5ECE70000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000F0CAB400F4D5
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
C300C1AB9F00BEB2AB00FFFBF900FFFFFF00B5B5B500B5B5B500FFFFFF00FFFF
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
FF00B5B5B500B5B5B50000000000000000000000000000000000000000000000
|
A000A0A0A000A0A0A00000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000FFF0E700FFEA
|
0000000000000000000000000000000000000000000000000000FFF0E700FFEA
|
||||||
DD00FFE9DC00FFEBDF00FFEDE300FFEFE500FDEFE70000000000000000000000
|
DD00FFE9DC00FFEBDF00FFEDE300FFEFE500FDEFE70000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000EAB69700EFC2
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
A600C8A48F00C6AFA000FEF0E800FFF9F600B7B6B600B5B5B500FFFFFF00FFFF
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
FF00B5B5B500B5B5B500000000000000000000000000000000007B7B7B00FFFF
|
A000A0A0A000A0A0A000000000000000000000000000000000007B7B7B00FFFF
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FF00FFFFFF00FFFFFF0000000000000000000000000000000000FEEBE000FFE4
|
FF00FFFFFF00FFFFFF0000000000000000000000000000000000FEEBE000FFE4
|
||||||
D200FFE2D100FFE4D400FFE6D700FFE8DA00FCE6DA0000000000000000000000
|
D200FFE2D100FFE4D400FFE6D700FFE8DA00FCE6DA0000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000CE8D6600CE92
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
6E00F1BFA200F8D4BF00CEB6A800C9BBB300FFFAF600FFFEFD00B5B5B500B5B5
|
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
B500FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
000000000000FFFFFF0000000000000000000000000000000000FEE7D900FFDD
|
000000000000FFFFFF0000000000000000000000000000000000FEE7D900FFDD
|
||||||
C800FFDBC600FFDDC900FFDFCC00FFE0D000FCDFD00000000000000000000000
|
C800FFDBC600FFDDC900FFDFCC00FFE0D000FCDFD00000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000D4855500D48A
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
5D00EDAE8900F6C6AA00D9B7A200D3BFB300FFF5EF00FFFCFB00BCBEC000B4B7
|
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
B900FFFFFF00FEFFFF00000000000000000000000000000000007B7B7B000000
|
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000FFE4D300FFD6
|
FF0000000000FFFFFF0000000000000000000000000000000000FFE4D300FFD6
|
||||||
BE00FFD4BB00FFD6BE00FFDEC700FFE3CE00FCE2D00000000000000000000000
|
BE00FFD4BB00FFD6BE00FFDEC700FFE3CE00FCE2D00000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000D97D4500E089
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
5200DD906300E0A48100FED1B700FFE2D200D8CAC100D1CDCA00F6FBFE00EBF6
|
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FE00ABB5BC00B1B4B700000000000000000000000000000000007B7B7B000000
|
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000FFDFCD00FFD0
|
FF0000000000FFFFFF0000000000000000000000000000000000FFDFCD00FFD0
|
||||||
B500FFCDAF00FFD0B400F2CCB400EFD3C200ECD5C70000000000000000000000
|
B500FFCDAF00FFD0B400F2CCB400EFD3C200ECD5C70000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000D97D4500DD7C
|
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
|
||||||
4200E4895400EAA17600FDC6A600FFDCC700E3D0C400DCD6D300F2F9FE00DDF0
|
FF00A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FD009EB5C6009EB1BF00000000000000000000000000000000007B7B7B000000
|
FF00A0A0A000A0A0A000000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000FFDBC700FFCA
|
FF0000000000FFFFFF0000000000000000000000000000000000FFDBC700FFCA
|
||||||
AB00FFC7A500FFD4B20000000000000000000000000000000000000000000000
|
AB00FFC7A500FFD4B20000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000D97D4500DD7D
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
4200E6885100F19F6E00F8B89100F4C9B000FFE7DA00FFF8F300CFD9DF00AAC4
|
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
D600BCE1FA00BDE0FA00000000000000000000000000000000007B7B7B000000
|
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000FFDAC500FFCB
|
FF0000000000FFFFFF0000000000000000000000000000000000FFDAC500FFCB
|
||||||
AC00FFC6A500FFD3B20000000000F5A779000000000000000000000000000000
|
AC00FFC6A500FFD3B20000000000F5A779000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000D97D4500DD7D
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
4200E5885000F19F6E00FDB78F00FFCDAF00FFE3D300FFF6F000D5E2EA00A7C9
|
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
E000A5D6F8009FD2F700000000000000000000000000000000007B7B7B000000
|
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000FDE2D300FEDC
|
FF0000000000FFFFFF0000000000000000000000000000000000FDE2D300FEDC
|
||||||
C600FED9C300FEE3CD003D2F2800000000000000000000000000000000000000
|
C600FED9C300FEE3CD003D2F2800000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000DA7D4600DD7C
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
4100E6895200F19E6E00FDB88F00FFCDAF00FFE0CE00FDF2EC00E5F4FD00B3DD
|
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
F90078B6E10064A7DA00000000000000000000000000000000007B7B7B000000
|
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FFFFFF00FF000000FF000000FFFFFF00FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000000000000000
|
FF0000000000FFFFFF0000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000DA7F4800DE7F
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
4600E68C5600F0A17300FCBA9300FFCEB100FFE1D000FFF4ED00E2F2FD00A8D7
|
A000FFFFFF00FFFFFF00FFFFFF00FFFFFF00A0A0A000A0A0A000A0A0A000A0A0
|
||||||
F8006EB8EA0055A6E200000000000000000000000000000000007B7B7B000000
|
A000FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
||||||
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FF0000000000FFFFFF0000000000000000000000000000000000000000000000
|
FF0000000000FFFFFF0000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000DB834E00E087
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
5200E8956300F3A97E00FDC09C00FFD2B800FFE4D400FFF5EF00E4F3FD00AAD9
|
A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
F9006FBEF40059B1F200000000000000000000000000000000007B7B7B000000
|
FF00FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
000000000000FFFFFF0000000000000000000000000000000000000000000000
|
000000000000FFFFFF0000000000000000000000000000000000000000000000
|
||||||
00000000000000000000000000000000000000000000707A81002D3134002D31
|
00000000000000000000000000000000000000000000707A81002D3134002D31
|
||||||
34000B0C0D002D3134002D3134004F565B000000000000000000000000000000
|
34000B0C0D002D3134002D3134004F565B000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000DD8A5800E395
|
0000000000000000000000000000000000000000000000000000A0A0A000A0A0
|
||||||
6500ECA57A00F5B69200FDCAAB00FFD9C300FFE8DB00FFF7F200E8F5FD00B7DF
|
A000A0A0A000A0A0A000A0A0A000A0A0A000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FA0085C8F70063B6F200000000000000000000000000000000007B7B7B007B7B
|
FF00FFFFFF00FFFFFF00000000000000000000000000000000007B7B7B007B7B
|
||||||
7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B
|
7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B
|
||||||
7B007B7B7B007B7B7B0000000000000000000000000000000000000000000000
|
7B007B7B7B007B7B7B0000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
@ -2153,7 +2161,7 @@ object MainForm: TMainForm
|
|||||||
EDB6C00FC00F8000CDB2C00FC00F8000D9B5C00FC00F800FE5B7E01FE01F800F
|
EDB6C00FC00F8000CDB2C00FC00F8000D9B5C00FC00F800FE5B7E01FE01F800F
|
||||||
FD8FF03FF03F800FFE7FFFFFFFFF800FFFFF0000FFFFFFFFFFFF0000FC010001
|
FD8FF03FF03F800FFE7FFFFFFFFF800FFFFF0000FFFFFFFFFFFF0000FC010001
|
||||||
FE7F0000FC010001FE3F0000E0010001FE1F0000E0010001C00F000000010001
|
FE7F0000FC010001FE3F0000E0010001FE1F0000E0010001C00F000000010001
|
||||||
C007000000010001C003000000010001C003000000010805C007000000030001
|
C007000000010001C003000000010001C003000000010001C007000000030001
|
||||||
C00F000000070001FE1F0000000F0001FE3F0000003F0001FE7F0000007F0001
|
C00F000000070001FE1F0000000F0001FE3F0000003F0001FE7F0000007F0001
|
||||||
FFFF000001FF0001FFFF000003FF0001FFE7FFFFFFFFFFFFFFE7FFFF803FFFFF
|
FFFF000001FF0001FFFF000003FF0001FFE7FFFFFFFFFFFFFFE7FFFF803FFFFF
|
||||||
FFE7F81F803FE7FFE000F3CF803FE1FFE000EFEF803FE07FE3E7CFFF800FE01F
|
FFE7F81F803FE7FFE000F3CF803FE1FFE000EFEF803FE07FE3E7CFFF800FE01F
|
||||||
@ -2199,8 +2207,7 @@ object MainForm: TMainForm
|
|||||||
C003000F80018000C003000780018000C003000380018000C003000180018000
|
C003000F80018000C003000780018000C003000380018000C003000180018000
|
||||||
C003000180018000C003001F80018000C003001F80018001C003001F80018001
|
C003000180018000C003001F80018000C003001F80018001C003001F80018001
|
||||||
C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001
|
C0038FF180018001C007FFF980018001C00FFF7580018001C01FFF8F80018001
|
||||||
C03FFFFF80018001FFFFFFFFFFFFFFFF00000000000000000000000000000000
|
C03FFFFF80018001FFFFFFFFFFFFFFFF}
|
||||||
000000000000}
|
|
||||||
end
|
end
|
||||||
object SmallImages: TImageList
|
object SmallImages: TImageList
|
||||||
Left = 40
|
Left = 40
|
||||||
|
@ -28,7 +28,7 @@ uses
|
|||||||
ToolWin, StdCtrls, Classes, Messages, ExtCtrls, ImgList, controlpoint,
|
ToolWin, StdCtrls, Classes, Messages, ExtCtrls, ImgList, controlpoint,
|
||||||
Jpeg, SyncObjs, SysUtils, ClipBrd, Graphics, Math, Global,
|
Jpeg, SyncObjs, SysUtils, ClipBrd, Graphics, Math, Global,
|
||||||
Registry, RenderThread, Cmap, ExtDlgs, AppEvnts, ShellAPI,
|
Registry, RenderThread, Cmap, ExtDlgs, AppEvnts, ShellAPI,
|
||||||
LibXmlParser, LibXmlComps, Xform, XFormMan;
|
LibXmlParser, LibXmlComps, Xform, XFormMan, PngImage;
|
||||||
|
|
||||||
const
|
const
|
||||||
PixelCountMax = 32768;
|
PixelCountMax = 32768;
|
||||||
@ -37,7 +37,7 @@ const
|
|||||||
RS_XO = 2;
|
RS_XO = 2;
|
||||||
RS_VO = 3;
|
RS_VO = 3;
|
||||||
|
|
||||||
AppVersionString = 'Apophysis 2.05 pre-release 11';
|
AppVersionString = 'Apophysis 2.05 pre-release 12';
|
||||||
|
|
||||||
type
|
type
|
||||||
TMouseMoveState = (msUsual, msZoomWindow, msZoomOutWindow, msZoomWindowMove, msZoomOutWindowMove, msDrag, msDragMove, msRotate, msRotateMove);
|
TMouseMoveState = (msUsual, msZoomWindow, msZoomOutWindow, msZoomWindowMove, msZoomOutWindowMove, msDrag, msDragMove, msRotate, msRotateMove);
|
||||||
@ -174,6 +174,7 @@ type
|
|||||||
ToolButton6: TToolButton;
|
ToolButton6: TToolButton;
|
||||||
tbQualityBox: TComboBox;
|
tbQualityBox: TComboBox;
|
||||||
View1: TMenuItem;
|
View1: TMenuItem;
|
||||||
|
tbShowAlpha: TToolButton;
|
||||||
procedure tbzoomoutwindowClick(Sender: TObject);
|
procedure tbzoomoutwindowClick(Sender: TObject);
|
||||||
procedure mnuimageClick(Sender: TObject);
|
procedure mnuimageClick(Sender: TObject);
|
||||||
procedure mnuExitClick(Sender: TObject);
|
procedure mnuExitClick(Sender: TObject);
|
||||||
@ -268,15 +269,20 @@ type
|
|||||||
procedure tbQualityBoxKeyPress(Sender: TObject; var Key: Char);
|
procedure tbQualityBoxKeyPress(Sender: TObject; var Key: Char);
|
||||||
procedure tbQualityBoxSet(Sender: TObject);
|
procedure tbQualityBoxSet(Sender: TObject);
|
||||||
procedure ImageDblClick(Sender: TObject);
|
procedure ImageDblClick(Sender: TObject);
|
||||||
|
procedure tbShowAlphaClick(Sender: TObject);
|
||||||
|
|
||||||
private
|
private
|
||||||
Renderer: TRenderThread;
|
Renderer: TRenderThread;
|
||||||
|
|
||||||
FMouseMoveState: TMouseMoveState;
|
FMouseMoveState: TMouseMoveState;
|
||||||
FSelectRect: TRect;
|
FSelectRect: TRect;
|
||||||
FRotateAngle: double;
|
FRotateAngle: double;
|
||||||
FClickAngle: double; // --Z--
|
FClickAngle: double;
|
||||||
FViewBMP: Graphics.TBitmap;
|
FViewImage: TPngObject;
|
||||||
|
FViewPos: TPoint;
|
||||||
|
FViewScale: double;
|
||||||
|
|
||||||
|
procedure DrawImageView;
|
||||||
procedure DrawZoomWindow(ARect: TRect);
|
procedure DrawZoomWindow(ARect: TRect);
|
||||||
procedure DrawRotatelines(Angle: double);
|
procedure DrawRotatelines(Angle: double);
|
||||||
|
|
||||||
@ -1679,17 +1685,18 @@ end;
|
|||||||
{ ****************************** Display ************************************ }
|
{ ****************************** Display ************************************ }
|
||||||
|
|
||||||
procedure TMainForm.HandleThreadCompletion(var Message: TMessage);
|
procedure TMainForm.HandleThreadCompletion(var Message: TMessage);
|
||||||
var
|
|
||||||
bm: TBitmap;
|
|
||||||
begin
|
begin
|
||||||
if Assigned(Renderer) then begin
|
if not Assigned(Renderer) then exit;
|
||||||
bm := TBitmap.Create;
|
|
||||||
bm.assign(Renderer.GetImage);
|
if assigned(FViewImage) then FViewImage.Free;
|
||||||
Image.Picture.Graphic := bm;
|
FViewPos.X := 0;
|
||||||
Renderer.Free;
|
FViewPos.Y := 0;
|
||||||
Renderer := nil;
|
FViewScale := 1;
|
||||||
bm.Free;
|
FViewImage := Renderer.GetTransparentImage;
|
||||||
end;
|
DrawImageView;
|
||||||
|
|
||||||
|
Renderer.Free;
|
||||||
|
Renderer := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.HandleThreadTermination(var Message: TMessage);
|
procedure TMainForm.HandleThreadTermination(var Message: TMessage);
|
||||||
@ -1729,9 +1736,7 @@ begin
|
|||||||
MainCp.sample_density := defSampleDensity;
|
MainCp.sample_density := defSampleDensity;
|
||||||
Maincp.spatial_oversample := defOversample;
|
Maincp.spatial_oversample := defOversample;
|
||||||
Maincp.spatial_filter_radius := defFilterRadius;
|
Maincp.spatial_filter_radius := defFilterRadius;
|
||||||
|
MainCP.Transparency := true; // always generate transparency data
|
||||||
MainCP.Transparency := (PNGTransparency <> 0) and ShowTransparency;
|
|
||||||
|
|
||||||
StartTime := Now;
|
StartTime := Now;
|
||||||
Remainder := 1;
|
Remainder := 1;
|
||||||
try
|
try
|
||||||
@ -1964,6 +1969,7 @@ begin
|
|||||||
StopThread;
|
StopThread;
|
||||||
RedrawTimer.Enabled := True;
|
RedrawTimer.Enabled := True;
|
||||||
tbQualityBox.Text := FloatToStr(defSampleDensity);
|
tbQualityBox.Text := FloatToStr(defSampleDensity);
|
||||||
|
tbShowAlpha.Down := ShowTransparency;
|
||||||
UpdateWindows;
|
UpdateWindows;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2369,6 +2375,7 @@ begin
|
|||||||
FillVariantMenu;
|
FillVariantMenu;
|
||||||
|
|
||||||
tbQualityBox.Text := FloatToStr(defSampleDensity);
|
tbQualityBox.Text := FloatToStr(defSampleDensity);
|
||||||
|
tbShowAlpha.Down := ShowTransparency;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.FormShow(Sender: TObject);
|
procedure TMainForm.FormShow(Sender: TObject);
|
||||||
@ -2514,7 +2521,8 @@ begin
|
|||||||
if assigned(Renderer) then Renderer.Terminate;
|
if assigned(Renderer) then Renderer.Terminate;
|
||||||
if assigned(Renderer) then Renderer.WaitFor;
|
if assigned(Renderer) then Renderer.WaitFor;
|
||||||
if assigned(Renderer) then Renderer.Free;
|
if assigned(Renderer) then Renderer.Free;
|
||||||
maincp.free;
|
if assigned(FViewImage) then FViewImage.Free;
|
||||||
|
MainCP.free;
|
||||||
ParseCp.free;
|
ParseCp.free;
|
||||||
Favorites.Free;
|
Favorites.Free;
|
||||||
end;
|
end;
|
||||||
@ -2531,6 +2539,7 @@ begin
|
|||||||
StopThread;
|
StopThread;
|
||||||
if CanDrawOnResize then
|
if CanDrawOnResize then
|
||||||
reDrawTimer.Enabled := True;
|
reDrawTimer.Enabled := True;
|
||||||
|
DrawImageView;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.LoadXMLFlame(filename, name: string);
|
procedure TMainForm.LoadXMLFlame(filename, name: string);
|
||||||
@ -4017,6 +4026,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
msDrag:
|
msDrag:
|
||||||
begin
|
begin
|
||||||
|
if not assigned(FViewImage) then exit;
|
||||||
|
{
|
||||||
if not assigned(FViewBMP) then
|
if not assigned(FViewBMP) then
|
||||||
FViewBMP := TBitmap.Create;
|
FViewBMP := TBitmap.Create;
|
||||||
FViewBMP.Width := ClientWidth + 100;
|
FViewBMP.Width := ClientWidth + 100;
|
||||||
@ -4040,7 +4051,7 @@ begin
|
|||||||
DestRect.BottomRight.Y := DestRect.BottomRight.Y + 50;
|
DestRect.BottomRight.Y := DestRect.BottomRight.Y + 50;
|
||||||
|
|
||||||
FViewBMP.Canvas.CopyRect(DestRect, Image.Canvas, SourceRect);
|
FViewBMP.Canvas.CopyRect(DestRect, Image.Canvas, SourceRect);
|
||||||
|
}
|
||||||
FSelectRect.TopLeft := Point(x, y);
|
FSelectRect.TopLeft := Point(x, y);
|
||||||
FSelectRect.BottomRight := Point(x, y);
|
FSelectRect.BottomRight := Point(x, y);
|
||||||
FMouseMoveState := msDragMove;
|
FMouseMoveState := msDragMove;
|
||||||
@ -4058,11 +4069,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
|
procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
Y: Integer);
|
|
||||||
var
|
var
|
||||||
DestRect, SrcRect: TRect;
|
DestRect: TRect;
|
||||||
FOffs : TPoint;
|
dx, dy: integer;
|
||||||
begin
|
begin
|
||||||
case FMouseMoveState of
|
case FMouseMoveState of
|
||||||
msZoomWindowMove,
|
msZoomWindowMove,
|
||||||
@ -4074,18 +4084,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
msDragMove:
|
msDragMove:
|
||||||
begin
|
begin
|
||||||
FOffs.X := x - FSelectRect.TopLeft.x;
|
assert(assigned(FviewImage));
|
||||||
FOffs.Y := y - FSelectRect.TopLeft.Y;
|
|
||||||
|
assert(FViewScale <> 0);
|
||||||
|
FViewPos.X := FViewPos.X + round( (x - FSelectRect.Right) / FViewScale);
|
||||||
|
FViewPos.Y := FViewPos.Y + round( (y - FSelectRect.Bottom) / FViewScale);
|
||||||
FSelectRect.BottomRight := Point(x, y);
|
FSelectRect.BottomRight := Point(x, y);
|
||||||
|
|
||||||
DestRect := ClientRect;
|
DrawImageView;
|
||||||
|
|
||||||
SrcRect.Left := -FOffs.X + 50;
|
|
||||||
SrcRect.Right := ClientRect.Right - FOffs.X + 50;;
|
|
||||||
SrcRect.Top := - FOffs.Y + 50;
|
|
||||||
SrcRect.Bottom := ClientRect.Bottom - FOffs.Y + 50;
|
|
||||||
|
|
||||||
Image.Canvas.CopyRect(DestRect, FViewBMP.Canvas, SrcRect);
|
|
||||||
end;
|
end;
|
||||||
msRotateMove:
|
msRotateMove:
|
||||||
begin
|
begin
|
||||||
@ -4149,9 +4155,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
msDragMove:
|
msDragMove:
|
||||||
begin
|
begin
|
||||||
FViewBMP.Free;
|
|
||||||
FViewBMP := nil;
|
|
||||||
|
|
||||||
FSelectRect.BottomRight := Point(x, y);
|
FSelectRect.BottomRight := Point(x, y);
|
||||||
FMouseMoveState := msDrag;
|
FMouseMoveState := msDrag;
|
||||||
|
|
||||||
@ -4185,6 +4188,48 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TMainForm.DrawImageView;
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
bm: TBitmap;
|
||||||
|
r: TRect;
|
||||||
|
begin
|
||||||
|
bm := TBitmap.Create;
|
||||||
|
bm.Width := Image.Width;
|
||||||
|
bm.Height := Image.Height;
|
||||||
|
with bm.Canvas do begin
|
||||||
|
if ShowTransparency then begin
|
||||||
|
Brush.Color := $F0F0F0;
|
||||||
|
FillRect(Rect(0, 0, bm.Width, bm.Height));
|
||||||
|
Brush.Color := $C0C0C0;
|
||||||
|
for i := 0 to ((bm.Width - 1) shr 3) do begin
|
||||||
|
for j := 0 to ((bm.Height - 1) shr 3) do begin
|
||||||
|
if odd(i + j) then
|
||||||
|
FillRect(Rect(i shl 3, j shl 3, (i+1) shl 3, (j+1) shl 3));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
Brush.Color := MainCP.background[0] or (MainCP.background[1] shl 8) or (MainCP.background[2] shl 16);
|
||||||
|
FillRect(Rect(0, 0, bm.Width, bm.Height));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if assigned(FViewImage) then begin
|
||||||
|
FViewScale := Image.Width / FViewImage.Width;
|
||||||
|
|
||||||
|
r.Left := round(FViewScale * FViewPos.X);
|
||||||
|
r.Right := round(FViewScale * (FViewPos.X + FViewImage.Width));
|
||||||
|
r.Top := Image.Height div 2 + round(FViewScale * (FViewPos.Y - FViewImage.Height/2));
|
||||||
|
r.Bottom := Image.Height div 2 + round(FViewScale * (FViewPos.Y + FViewImage.Height/2));
|
||||||
|
|
||||||
|
FViewImage.Draw(bm.Canvas, r);
|
||||||
|
end;
|
||||||
|
Image.Picture.Graphic := bm;
|
||||||
|
Image.Refresh;
|
||||||
|
bm.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TMainForm.DrawRotateLines(Angle: double);
|
procedure TMainForm.DrawRotateLines(Angle: double);
|
||||||
var
|
var
|
||||||
@ -4364,5 +4409,14 @@ end;
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TMainForm.tbShowAlphaClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
DestRect: TRect;
|
||||||
|
bm: TBitmap;
|
||||||
|
begin
|
||||||
|
ShowTransparency := tbShowAlpha.Down;
|
||||||
|
|
||||||
|
DrawImageView;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -23,7 +23,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Graphics, Classes,
|
Windows, Graphics, Classes,
|
||||||
Controlpoint, RenderTypes, ImageMaker;
|
Controlpoint, RenderTypes, ImageMaker, PngImage;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@ -102,6 +102,7 @@ type
|
|||||||
procedure Render; virtual;
|
procedure Render; virtual;
|
||||||
|
|
||||||
function GetImage: TBitmap; virtual;
|
function GetImage: TBitmap; virtual;
|
||||||
|
function GetTransparentImage: TPngObject;
|
||||||
procedure UpdateImage(CP: TControlPoint);
|
procedure UpdateImage(CP: TControlPoint);
|
||||||
procedure SaveImage(const FileName: String);
|
procedure SaveImage(const FileName: String);
|
||||||
|
|
||||||
@ -251,13 +252,25 @@ end;
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
function TBaseRenderer.GetImage: TBitmap;
|
function TBaseRenderer.GetImage: TBitmap;
|
||||||
begin
|
begin
|
||||||
if FStop <> 0 then begin
|
if FStop > 0 then begin
|
||||||
|
assert(false);
|
||||||
FImageMaker.OnProgress := OnProgress;
|
FImageMaker.OnProgress := OnProgress;
|
||||||
FImageMaker.CreateImage;
|
FImageMaker.CreateImage;
|
||||||
end;
|
end;
|
||||||
Result := FImageMaker.GetImage;
|
Result := FImageMaker.GetImage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TBaseRenderer.GetTransparentImage: TPngObject;
|
||||||
|
begin
|
||||||
|
if FStop > 0 then begin
|
||||||
|
assert(false);
|
||||||
|
FImageMaker.OnProgress := OnProgress;
|
||||||
|
FImageMaker.CreateImage;
|
||||||
|
end;
|
||||||
|
Result := FImageMaker.GetTransparentImage;
|
||||||
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TBaseRenderer.UpdateImage(CP: TControlPoint);
|
procedure TBaseRenderer.UpdateImage(CP: TControlPoint);
|
||||||
begin
|
begin
|
||||||
@ -278,7 +291,7 @@ end;
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TBaseRenderer.SaveImage(const FileName: String);
|
procedure TBaseRenderer.SaveImage(const FileName: String);
|
||||||
begin
|
begin
|
||||||
if FStop <> 0 then begin
|
if FStop > 0 then begin
|
||||||
if Assigned(strOutput) then
|
if Assigned(strOutput) then
|
||||||
strOutput.Add(TimeToStr(Now) + Format(' : Creating image with quality = %f', [fcp.actual_density]));
|
strOutput.Add(TimeToStr(Now) + Format(' : Creating image with quality = %f', [fcp.actual_density]));
|
||||||
FImageMaker.OnProgress := OnProgress;
|
FImageMaker.OnProgress := OnProgress;
|
||||||
@ -476,7 +489,7 @@ begin
|
|||||||
SetPixels;
|
SetPixels;
|
||||||
RenderTime := Now - RenderTime;
|
RenderTime := Now - RenderTime;
|
||||||
|
|
||||||
if FStop >= 0 then begin
|
if FStop <= 0 then begin
|
||||||
if Assigned(strOutput) then begin
|
if Assigned(strOutput) then begin
|
||||||
if fcp.sample_density = fcp.actual_density then
|
if fcp.sample_density = fcp.actual_density then
|
||||||
strOutput.Add(TimeToStr(Now) + ' : Creating image')
|
strOutput.Add(TimeToStr(Now) + ' : Creating image')
|
||||||
|
@ -30,7 +30,6 @@ type
|
|||||||
|
|
||||||
protected
|
protected
|
||||||
Buckets: TBucket32Array;
|
Buckets: TBucket32Array;
|
||||||
// ColorMap: TColorMapArray;
|
|
||||||
|
|
||||||
function GetBits: integer; override;
|
function GetBits: integer; override;
|
||||||
function GetBucketsPtr: pointer; override;
|
function GetBucketsPtr: pointer; override;
|
||||||
@ -100,8 +99,6 @@ procedure TRenderer32MT.AddPointsToBuckets(const points: TPointsArray);
|
|||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
px, py: double;
|
px, py: double;
|
||||||
// R: double;
|
|
||||||
// V1, v2, v3: integer;
|
|
||||||
Bucket: PBucket32;
|
Bucket: PBucket32;
|
||||||
MapColor: PColorMapColor;
|
MapColor: PColorMapColor;
|
||||||
begin
|
begin
|
||||||
|
@ -24,7 +24,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, Windows, Messages, Graphics,
|
Classes, Windows, Messages, Graphics,
|
||||||
ControlPoint, Render,
|
ControlPoint, Render,
|
||||||
Global, RenderTypes,
|
Global, RenderTypes, PngImage,
|
||||||
Render64, Render64MT,
|
Render64, Render64MT,
|
||||||
Render48, Render48MT,
|
Render48, Render48MT,
|
||||||
Render32, Render32MT,
|
Render32, Render32MT,
|
||||||
@ -65,6 +65,7 @@ type
|
|||||||
|
|
||||||
procedure SetCP(CP: TControlPoint);
|
procedure SetCP(CP: TControlPoint);
|
||||||
function GetImage: TBitmap;
|
function GetImage: TBitmap;
|
||||||
|
function GetTransparentImage: TPngObject;
|
||||||
procedure SaveImage(const FileName: String);
|
procedure SaveImage(const FileName: String);
|
||||||
|
|
||||||
procedure Execute; override;
|
procedure Execute; override;
|
||||||
@ -126,6 +127,14 @@ begin
|
|||||||
Result := FRenderer.GetImage;
|
Result := FRenderer.GetImage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TRenderThread.GetTransparentImage: TPngObject;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
if assigned(FRenderer) then
|
||||||
|
Result := FRenderer.GetTransparentImage;
|
||||||
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TRenderThread.SetCP(CP: TControlPoint);
|
procedure TRenderThread.SetCP(CP: TControlPoint);
|
||||||
begin
|
begin
|
||||||
|
@ -307,7 +307,8 @@ function TVariationRadialBlur.ResetVariable(const Name: string): boolean;
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
if Name = var_a_name then begin
|
if Name = var_a_name then begin
|
||||||
angle := 0;
|
if angle <> 0 then angle := 0
|
||||||
|
else if angle = 0 then angle := 1;
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user