Two enhancements to the Pattern Editor Image tab (pattern_editor.html #imagePane, backed by js/pattern-editor/tools/image-converter.js).
1. Zoom out beyond the image, with a specified fill level
Today #imageScale (10–500%; ImageConverterState.scale clamped 0.1–5.0) maps the arena region onto the source image. When the arena region extends past the image bounds, the out-of-image area isn't well defined.
Request
- Allow scaling out further so the arena samples a region larger than the source image (the image occupies only part of the arena).
- Fill everything beyond the image edges at a user-specified level — 0–15 (GS16) / 0–1 (GS2). Add a "Fill level" control next to Scale; default 0 (dark).
- Likely: extend the Scale range and relax the 0.1 lower clamp; sample-out-of-bounds returns the fill level (respected by both GS2 and GS16 quantization).
Acceptance: load a small image, zoom out so it covers ~50% of the arena → surrounding pixels render at the chosen fill level; live preview + generated .pat match; GS2 and GS16 both honor it.
2. Contrast correction: alpha (gain) + gamma
Add simple pre-quantization tone controls in createGrayscaleSource / generatePattern:
- Alpha (contrast/gain), Gamma correction applied to the 0–255 grayscale before quantization to GS2/GS16.
- Two sliders with identity defaults (alpha 1.0, gamma 1.0 = no-op), live preview on
#imagePreviewCanvas.
Acceptance: adjusting alpha/gamma updates the preview and the generated pattern; identity values reproduce current output.
Notes
- Consider MATLAB-host parity if there's an equivalent image path there.
- Reuse the existing
#imagePreviewCanvas render for live feedback.
Related: Pattern Editor tracking #6.
Two enhancements to the Pattern Editor Image tab (
pattern_editor.html#imagePane, backed byjs/pattern-editor/tools/image-converter.js).1. Zoom out beyond the image, with a specified fill level
Today
#imageScale(10–500%;ImageConverterState.scaleclamped 0.1–5.0) maps the arena region onto the source image. When the arena region extends past the image bounds, the out-of-image area isn't well defined.Request
Acceptance: load a small image, zoom out so it covers ~50% of the arena → surrounding pixels render at the chosen fill level; live preview + generated
.patmatch; GS2 and GS16 both honor it.2. Contrast correction: alpha (gain) + gamma
Add simple pre-quantization tone controls in
createGrayscaleSource/generatePattern:#imagePreviewCanvas.Acceptance: adjusting alpha/gamma updates the preview and the generated pattern; identity values reproduce current output.
Notes
#imagePreviewCanvasrender for live feedback.Related: Pattern Editor tracking #6.