Fixed Offset problems in editor and mutation form

This commit is contained in:
ronaldhordijk 2005-06-27 18:13:10 +00:00
parent 86c58ec2ec
commit fd1f481b0f

View File

@ -61,6 +61,7 @@ type
BucketHeight: Int64; BucketHeight: Int64;
BucketSize: Int64; BucketSize: Int64;
gutter_width: Integer; gutter_width: Integer;
max_gutter_width: Integer;
sample_density: extended; sample_density: extended;
@ -135,6 +136,7 @@ procedure TRenderer64.CreateCamera;
var var
scale: double; scale: double;
t0, t1: double; t0, t1: double;
t2, t3: double;
corner0, corner1: double; corner0, corner1: double;
shift: Integer; shift: Integer;
begin begin
@ -144,14 +146,17 @@ begin
ppuy := fcp.pixels_per_unit * scale; ppuy := fcp.pixels_per_unit * scale;
// todo field stuff // todo field stuff
shift := 0; shift := 0;
t0 := gutter_width / (oversample * ppux);
t1 := gutter_width / (oversample * ppuy); t0 := (gutter_width) / (oversample * ppux);
t1 := (gutter_width) / (oversample * ppuy);
t2 := (2 * max_gutter_width - gutter_width) / (oversample * ppux);
t3 := (2 * max_gutter_width - gutter_width) / (oversample * ppuy);
corner0 := fcp.center[0] - image_width / ppux / 2.0; corner0 := fcp.center[0] - image_width / ppux / 2.0;
corner1 := fcp.center[1] - image_height / ppuy / 2.0; corner1 := fcp.center[1] - image_height / ppuy / 2.0;
bounds[0] := corner0 - t0; bounds[0] := corner0 - t0;
bounds[1] := corner1 - t1 + shift; bounds[1] := corner1 - t1 + shift;
bounds[2] := corner0 + image_width / ppux + t0; bounds[2] := corner0 + image_width / ppux + t2;
bounds[3] := corner1 + image_height / ppuy + t1; //+ shift; bounds[3] := corner1 + image_height / ppuy + t3; //+ shift;
if abs(bounds[2] - bounds[0]) > 0.01 then if abs(bounds[2] - bounds[0]) > 0.01 then
size[0] := 1.0 / (bounds[2] - bounds[0]) size[0] := 1.0 / (bounds[2] - bounds[0])
else else
@ -238,9 +243,10 @@ procedure TRenderer64.InitBuffers;
const const
MaxFilterWidth = 25; MaxFilterWidth = 25;
begin begin
gutter_width := (MaxFilterWidth - oversample) div 2; max_gutter_width := (MaxFilterWidth - oversample) div 2;
BucketHeight := oversample * image_height + 2 * gutter_width; gutter_width := (filter_width - oversample) div 2;
Bucketwidth := oversample * image_width + 2 * gutter_width; BucketHeight := oversample * image_height + 2 * max_gutter_width;
Bucketwidth := oversample * image_width + 2 * max_gutter_width;
BucketSize := BucketWidth * BucketHeight; BucketSize := BucketWidth * BucketHeight;
if high(buckets) <> (BucketSize - 1) then begin if high(buckets) <> (BucketSize - 1) then begin
@ -255,9 +261,9 @@ begin
image_Width := fcp.Width; image_Width := fcp.Width;
CreateFilter; CreateFilter;
InitBuffers;
CreateCamera; CreateCamera;
InitBuffers;
CreateColorMap; CreateColorMap;
@ -516,7 +522,7 @@ begin
for ii := 0 to filter_width - 1 do begin for ii := 0 to filter_width - 1 do begin
for jj := 0 to filter_width - 1 do begin for jj := 0 to filter_width - 1 do begin
filterValue := filter[ii, jj]; filterValue := filter[ii, jj];
filterpos := bucketpos + ii * BucketWidth + jj; filterpos := bucketpos + (ii + gwo) * BucketWidth + jj + gwo;
ls := lsa[Min(1023, Buckets[filterpos].Count)]; ls := lsa[Min(1023, Buckets[filterpos].Count)];
@ -590,7 +596,7 @@ begin
Row[j] := RGB(bi, gi, ri);// + (ai shl 24); Row[j] := RGB(bi, gi, ri);// + (ai shl 24);
end; end;
Inc(bucketpos, 2 * gutter_width); Inc(bucketpos, 2 * max_gutter_width);
Inc(bucketpos, (oversample - 1) * BucketWidth); Inc(bucketpos, (oversample - 1) * BucketWidth);
end; end;
bm.PixelFormat := pf24bit; bm.PixelFormat := pf24bit;