Offer the border fill on the merge page, experimental, with every knob on it
A Border choice beside the projection — crop to the picture, or fill it — that redraws the preview filled so the invented pixels are seen before they are confirmed (FR-MRG-1), greyed with the reason when the model is not there. The job fills at half the composite's resolution in a display-ish space (white balance, matrix, gamma; invertible) and samples the result back into the linear DNG wherever no frame reached; the sidecar's merge line says border filled and with which knobs. Experimental because the fill is right in thin borders and wrong in deep corners, where the model's Places2 prior puts clouds in sky and water under grass; so its six knobs — working scale, edge erosion, coarse pass, band width, mirror depth, seam feather — are sliders under the choice, each committing a redraw, until the defaults are right.
This commit is contained in:
@@ -840,6 +840,17 @@ export component AppWindow inherits Window {
|
||||
in property <[MergeFrameRow]> merge-frames;
|
||||
in property <image> merge-preview;
|
||||
in property <int> merge-projection-selected: 0;
|
||||
in property <int> merge-border-selected: 0;
|
||||
in property <bool> merge-fill-available: false;
|
||||
in property <string> merge-fill-note: "";
|
||||
in property <bool> merge-preview-filled: false;
|
||||
// The fill's knobs (experimental; FR-MRG-4), in working pixels.
|
||||
in property <float> merge-fill-scale: 2;
|
||||
in property <float> merge-fill-erosion: 4;
|
||||
in property <float> merge-fill-coarse: 4;
|
||||
in property <float> merge-fill-band: 96;
|
||||
in property <float> merge-fill-mirror: 48;
|
||||
in property <float> merge-fill-feather: 48;
|
||||
in property <bool> merge-done: false;
|
||||
/// Merge the grid's selection: opens the page and starts the alignment.
|
||||
callback library-merge-selection();
|
||||
@@ -847,6 +858,9 @@ export component AppWindow inherits Window {
|
||||
callback merge-confirm();
|
||||
callback merge-abandon();
|
||||
callback merge-projection-picked(int);
|
||||
callback merge-border-picked(int);
|
||||
/// A fill knob turned: its name and the new value.
|
||||
callback merge-fill-knob(string, float);
|
||||
callback merge-close();
|
||||
|
||||
callback import-open();
|
||||
@@ -1312,10 +1326,22 @@ in property <bool> panel-visible: true;
|
||||
frames: root.merge-frames;
|
||||
preview: root.merge-preview;
|
||||
projection-selected: root.merge-projection-selected;
|
||||
border-selected: root.merge-border-selected;
|
||||
fill-available: root.merge-fill-available;
|
||||
fill-note: root.merge-fill-note;
|
||||
preview-filled: root.merge-preview-filled;
|
||||
fill-scale: root.merge-fill-scale;
|
||||
fill-erosion: root.merge-fill-erosion;
|
||||
fill-coarse: root.merge-fill-coarse;
|
||||
fill-band: root.merge-fill-band;
|
||||
fill-mirror: root.merge-fill-mirror;
|
||||
fill-feather: root.merge-fill-feather;
|
||||
done: root.merge-done;
|
||||
merge() => { root.merge-confirm(); }
|
||||
abandon() => { root.merge-abandon(); }
|
||||
projection-picked(i) => { root.merge-projection-picked(i); }
|
||||
border-picked(i) => { root.merge-border-picked(i); }
|
||||
fill-knob(name, value) => { root.merge-fill-knob(name, value); }
|
||||
close() => { root.merge-close(); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user