Engine: - preprocess() accepts conversion_mode (bw/grayscale/color), invert, mask_regions - B&W: full pipeline → binary; Grayscale: skip threshold → 8-bit; Color: skip grayscale → BGR - routes.py forces VTracer for non-binary modes, sets colormode appropriately - potrace_trace() accepts turnpolicy param mapped to potrace constants - 27 new tests in test_modes.py (modes, invert, masks, params, vectorization) App: - Mode selector tabs (B&W | Grayscale | Color) in ImportConvert - Invert toggle (B&W only) - ParameterSliders rewritten: grouped sections, 10+ mode-aware controls - Debounce reduced from 300ms to 100ms - Preview background changed to white - Preset JSONs updated with turnpolicy, color_precision, layer_difference defaults Tests: 126 app + 234 engine = 360 total, all pass. Zero TypeScript errors.
43 lines
688 B
CSS
43 lines
688 B
CSS
/* Import & Convert (View 1) layout */
|
|
|
|
.container {
|
|
display: flex;
|
|
gap: 24px;
|
|
padding: 24px;
|
|
min-height: calc(100svh - 80px);
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.sidebar {
|
|
flex: 0 0 340px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
max-height: calc(100svh - 80px);
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.main {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 1px solid var(--border);
|
|
border-radius: 8px;
|
|
min-height: 400px;
|
|
background: #ffffff;
|
|
padding: 16px;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.container {
|
|
flex-direction: column;
|
|
padding: 16px;
|
|
}
|
|
|
|
.sidebar {
|
|
flex: none;
|
|
width: 100%;
|
|
}
|
|
}
|