From b472bd5f0119c0c86100116bc8827f62c3cb76ec Mon Sep 17 00:00:00 2001 From: ronaldhordijk Date: Sun, 1 May 2005 08:01:31 +0000 Subject: [PATCH] Support for post render changes added --- 2.10/Source/Render.pas | 14 +++++++++++++ 2.10/Source/Render32.pas | 2 ++ 2.10/Source/Render64.pas | 38 ++++++++++++++++++++++++++---------- 2.10/Source/RenderThread.pas | 11 +++++++++-- 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/2.10/Source/Render.pas b/2.10/Source/Render.pas index 8637990..48bd404 100644 --- a/2.10/Source/Render.pas +++ b/2.10/Source/Render.pas @@ -69,6 +69,7 @@ type procedure SetCP(CP: TControlPoint); function GetImage: TBitmap; virtual; abstract; procedure Render; virtual; abstract; + procedure UpdateImage(CP: TControlPoint); virtual; procedure Stop; property OnProgress: TOnProgress @@ -109,6 +110,7 @@ type function GetImage: TBitmap; procedure Render; procedure RenderMaxMem(MaxMem: Int64); + procedure UpdateImage(CP: TControlPoint); procedure Stop; @@ -248,6 +250,12 @@ begin FCP := Cp.Clone; end; +/////////////////////////////////////////////////////////////////////////////// +procedure TBaseRenderer.UpdateImage(CP: TControlPoint); +begin + +end; + /////////////////////////////////////////////////////////////////////////////// procedure TBaseRenderer.Stop; begin @@ -289,6 +297,12 @@ begin Render; end; +/////////////////////////////////////////////////////////////////////////////// +procedure TRenderer.UpdateImage(CP: TControlPoint); +begin + +end; + /////////////////////////////////////////////////////////////////////////////// end. diff --git a/2.10/Source/Render32.pas b/2.10/Source/Render32.pas index 0049169..0499781 100644 --- a/2.10/Source/Render32.pas +++ b/2.10/Source/Render32.pas @@ -461,6 +461,8 @@ begin end; end; + bm.PixelFormat := pf32bit; + ls := 0; ai := 0; bucketpos := 0; diff --git a/2.10/Source/Render64.pas b/2.10/Source/Render64.pas index 5f98960..806412d 100644 --- a/2.10/Source/Render64.pas +++ b/2.10/Source/Render64.pas @@ -68,8 +68,8 @@ type ColorMap: TColorMapArray; bg: array[0..2] of extended; - vib_gam_n: Integer; - vibrancy: double; +// vib_gam_n: Integer; +// vibrancy: double; gamma: double; bounds: array[0..3] of extended; @@ -101,6 +101,7 @@ type procedure Render; override; + procedure UpdateImage(CP: TControlPoint); override; end; implementation @@ -234,8 +235,10 @@ end; /////////////////////////////////////////////////////////////////////////////// procedure TRenderer64.InitBuffers; +const + MaxFilterWidth = 25; begin - gutter_width := (filter_width - oversample) div 2; + gutter_width := (MaxFilterWidth - oversample) div 2; BucketHeight := oversample * image_height + 2 * gutter_width; Bucketwidth := oversample * image_width + 2 * gutter_width; BucketSize := BucketWidth * BucketHeight; @@ -258,9 +261,9 @@ begin CreateColorMap; - vibrancy := 0; +// vibrancy := 0; gamma := 0; - vib_gam_n := 0; +// vib_gam_n := 0; bg[0] := 0; bg[1] := 0; bg[2] := 0; @@ -473,7 +476,7 @@ begin for i := 1 to 1024 do begin lsa[i] := (k1 * log10(1 + fcp.White_level * i * k2)) / (fcp.White_level * i); end; - +(* if filter_width > 1 then begin for i := 0 to BucketWidth * BucketHeight - 1 do begin if Buckets[i].count = 0 then @@ -487,6 +490,8 @@ begin Buckets[i].Count := Round(Buckets[i].Count * ls); end; end; +*) + bm.PixelFormat := pf32bit; ls := 0; ai := 0; @@ -510,10 +515,12 @@ begin filterValue := filter[ii, jj]; filterpos := bucketpos + ii * BucketWidth + jj; - fp[0] := fp[0] + filterValue * Buckets[filterpos].Red; - fp[1] := fp[1] + filterValue * Buckets[filterpos].Green; - fp[2] := fp[2] + filterValue * Buckets[filterpos].Blue; - fp[3] := fp[3] + filterValue * Buckets[filterpos].Count; + ls := lsa[Min(1023, Buckets[filterpos].Count)]; + + fp[0] := fp[0] + filterValue * ls * Buckets[filterpos].Red; + 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; @@ -623,6 +630,17 @@ begin CreateBMFromBuckets; end; +/////////////////////////////////////////////////////////////////////////////// +procedure TRenderer64.UpdateImage(CP: TControlPoint); +begin + FCP.background := cp.background; + FCP.spatial_filter_radius := cp.spatial_filter_radius; + + CreateFilter; + + CreateBMFromBuckets; +end; + /////////////////////////////////////////////////////////////////////////////// end. diff --git a/2.10/Source/RenderThread.pas b/2.10/Source/RenderThread.pas index 04c220d..1340745 100644 --- a/2.10/Source/RenderThread.pas +++ b/2.10/Source/RenderThread.pas @@ -52,6 +52,7 @@ type procedure SetCP(CP: TControlPoint); function GetImage: TBitmap; procedure Execute; override; + function GetRenderer: TBaseRenderer; procedure Terminate; @@ -179,6 +180,12 @@ begin FMaxMem := Value; end; -/////////////////////////////////////////////////////////////////////////////// -end. +////////////////////////////////////////////////////////////////////////////// +function TRenderThread.GetRenderer: TBaseRenderer; +begin + Result := FRenderer; + FRenderer := nil; +end; +///////////////////////////////////////////////////////////////////////////////end. +end.