Support for post render changes added

This commit is contained in:
ronaldhordijk 2005-05-01 08:01:31 +00:00
parent 3d97bf58d4
commit b472bd5f01
4 changed files with 53 additions and 12 deletions

View File

@ -69,6 +69,7 @@ type
procedure SetCP(CP: TControlPoint); procedure SetCP(CP: TControlPoint);
function GetImage: TBitmap; virtual; abstract; function GetImage: TBitmap; virtual; abstract;
procedure Render; virtual; abstract; procedure Render; virtual; abstract;
procedure UpdateImage(CP: TControlPoint); virtual;
procedure Stop; procedure Stop;
property OnProgress: TOnProgress property OnProgress: TOnProgress
@ -109,6 +110,7 @@ type
function GetImage: TBitmap; function GetImage: TBitmap;
procedure Render; procedure Render;
procedure RenderMaxMem(MaxMem: Int64); procedure RenderMaxMem(MaxMem: Int64);
procedure UpdateImage(CP: TControlPoint);
procedure Stop; procedure Stop;
@ -248,6 +250,12 @@ begin
FCP := Cp.Clone; FCP := Cp.Clone;
end; end;
///////////////////////////////////////////////////////////////////////////////
procedure TBaseRenderer.UpdateImage(CP: TControlPoint);
begin
end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
procedure TBaseRenderer.Stop; procedure TBaseRenderer.Stop;
begin begin
@ -289,6 +297,12 @@ begin
Render; Render;
end; end;
///////////////////////////////////////////////////////////////////////////////
procedure TRenderer.UpdateImage(CP: TControlPoint);
begin
end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
end. end.

View File

@ -461,6 +461,8 @@ begin
end; end;
end; end;
bm.PixelFormat := pf32bit;
ls := 0; ls := 0;
ai := 0; ai := 0;
bucketpos := 0; bucketpos := 0;

View File

@ -68,8 +68,8 @@ type
ColorMap: TColorMapArray; ColorMap: TColorMapArray;
bg: array[0..2] of extended; bg: array[0..2] of extended;
vib_gam_n: Integer; // vib_gam_n: Integer;
vibrancy: double; // vibrancy: double;
gamma: double; gamma: double;
bounds: array[0..3] of extended; bounds: array[0..3] of extended;
@ -101,6 +101,7 @@ type
procedure Render; override; procedure Render; override;
procedure UpdateImage(CP: TControlPoint); override;
end; end;
implementation implementation
@ -234,8 +235,10 @@ end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
procedure TRenderer64.InitBuffers; procedure TRenderer64.InitBuffers;
const
MaxFilterWidth = 25;
begin begin
gutter_width := (filter_width - oversample) div 2; gutter_width := (MaxFilterWidth - oversample) div 2;
BucketHeight := oversample * image_height + 2 * gutter_width; BucketHeight := oversample * image_height + 2 * gutter_width;
Bucketwidth := oversample * image_width + 2 * gutter_width; Bucketwidth := oversample * image_width + 2 * gutter_width;
BucketSize := BucketWidth * BucketHeight; BucketSize := BucketWidth * BucketHeight;
@ -258,9 +261,9 @@ begin
CreateColorMap; CreateColorMap;
vibrancy := 0; // vibrancy := 0;
gamma := 0; gamma := 0;
vib_gam_n := 0; // vib_gam_n := 0;
bg[0] := 0; bg[0] := 0;
bg[1] := 0; bg[1] := 0;
bg[2] := 0; bg[2] := 0;
@ -473,7 +476,7 @@ begin
for i := 1 to 1024 do begin for i := 1 to 1024 do begin
lsa[i] := (k1 * log10(1 + fcp.White_level * i * k2)) / (fcp.White_level * i); lsa[i] := (k1 * log10(1 + fcp.White_level * i * k2)) / (fcp.White_level * i);
end; end;
(*
if filter_width > 1 then begin if filter_width > 1 then begin
for i := 0 to BucketWidth * BucketHeight - 1 do begin for i := 0 to BucketWidth * BucketHeight - 1 do begin
if Buckets[i].count = 0 then if Buckets[i].count = 0 then
@ -487,6 +490,8 @@ begin
Buckets[i].Count := Round(Buckets[i].Count * ls); Buckets[i].Count := Round(Buckets[i].Count * ls);
end; end;
end; end;
*)
bm.PixelFormat := pf32bit;
ls := 0; ls := 0;
ai := 0; ai := 0;
@ -510,10 +515,12 @@ begin
filterValue := filter[ii, jj]; filterValue := filter[ii, jj];
filterpos := bucketpos + ii * BucketWidth + jj; filterpos := bucketpos + ii * BucketWidth + jj;
fp[0] := fp[0] + filterValue * Buckets[filterpos].Red; ls := lsa[Min(1023, Buckets[filterpos].Count)];
fp[1] := fp[1] + filterValue * Buckets[filterpos].Green;
fp[2] := fp[2] + filterValue * Buckets[filterpos].Blue; fp[0] := fp[0] + filterValue * ls * Buckets[filterpos].Red;
fp[3] := fp[3] + filterValue * Buckets[filterpos].Count; fp[1] := fp[1] + filterValue * ls * Buckets[filterpos].Green;
fp[2] := fp[2] + filterValue * ls * Buckets[filterpos].Blue;
fp[3] := fp[3] + filterValue * ls * Buckets[filterpos].Count;
end; end;
end; end;
@ -623,6 +630,17 @@ begin
CreateBMFromBuckets; CreateBMFromBuckets;
end; end;
///////////////////////////////////////////////////////////////////////////////
procedure TRenderer64.UpdateImage(CP: TControlPoint);
begin
FCP.background := cp.background;
FCP.spatial_filter_radius := cp.spatial_filter_radius;
CreateFilter;
CreateBMFromBuckets;
end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
end. end.

View File

@ -52,6 +52,7 @@ type
procedure SetCP(CP: TControlPoint); procedure SetCP(CP: TControlPoint);
function GetImage: TBitmap; function GetImage: TBitmap;
procedure Execute; override; procedure Execute; override;
function GetRenderer: TBaseRenderer;
procedure Terminate; procedure Terminate;
@ -179,6 +180,12 @@ begin
FMaxMem := Value; FMaxMem := Value;
end; end;
/////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
end. function TRenderThread.GetRenderer: TBaseRenderer;
begin
Result := FRenderer;
FRenderer := nil;
end;
///////////////////////////////////////////////////////////////////////////////end.
end.