web: the sim chips keep their legacy names
The name table is a reference for what each sim has to look like, not a renaming order: the ten PHOTO STYLE chips go back to PROVIPES, VELVIPES, CLASSIC CHRIPES, CLASSIC VIVIDIPES, CLASSIC NEGIPES, ASTIPES, ETERNIPES, ACRIPES, LC STREETLIFE CLASSIC and LC STREETLIFE VIVID. The comment above FILM_SIMS now says so outright — label on the left, the stock's colour and tone it must match on the right, and neither side moves the other. The grading is untouched: a sim is still colour and tone only, its `adjustments` stay neutral, and LC STREETLIFE VIVID keeps its +2 exposure as SIM_EXPOSURE_BIAS in colorUtils rather than as a knob.
This commit is contained in:
@@ -39,16 +39,19 @@ export const DEFAULT_ADJUSTMENTS: ColorAdjustments = {
|
||||
// because those are the user's knobs, not the stock's. A sim is a clean starting
|
||||
// point, never a baked recipe; any further look is added afterwards.
|
||||
//
|
||||
// Name → stock it stands for. The name IS the sim's identity and the tag it
|
||||
// exports as, so it is spelled as the stock is:
|
||||
// PROVIA Provia / Standard
|
||||
// VELVIA Velvia / Vivid
|
||||
// CLASSIC CHROME Classic Chrome
|
||||
// CLASSIC VIVID Velvia spliced with Classic Chrome at the blue row
|
||||
// CLASSIC NEGATIVE Classic Negative (Superia-like)
|
||||
// ASTIA Astia / Soft
|
||||
// ETERNA Eterna (cinema)
|
||||
// ACROS Acros (monochrome)
|
||||
// Name → the stock's colour and tone it must stand for. This table is the
|
||||
// REFERENCE ONLY: the string at the left is just the app's label for the chip
|
||||
// (the legacy 'PES' spelling), and what matters is that the sim behind it grades
|
||||
// the picture the way the stock at the right does. So a change to a label must
|
||||
// never touch the grading, and a change to a grading never renames the chip:
|
||||
// PROVIPES Provia / Standard
|
||||
// VELVIPES Velvia / Vivid
|
||||
// CLASSIC CHRIPES Classic Chrome
|
||||
// CLASSIC VIVIDIPES Velvia spliced with Classic Chrome at the blue row
|
||||
// CLASSIC NEGIPES Classic Negative (Superia-like)
|
||||
// ASTIPES Astia / Soft
|
||||
// ETERNIPES Eterna (cinema)
|
||||
// ACRIPES Acros (monochrome)
|
||||
// LC STREETLIFE CLASSIC Leica Authentic Classic
|
||||
// LC STREETLIFE VIVID Leica Vivid
|
||||
export interface FilmSim {
|
||||
@@ -59,20 +62,21 @@ export interface FilmSim {
|
||||
}
|
||||
|
||||
export const FILM_SIMS: FilmSim[] = [
|
||||
{ id: 'sim-provia', name: 'PROVIA', baseFilter: 'provia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-velvia', name: 'VELVIA', baseFilter: 'velvia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-chrome', name: 'CLASSIC CHROME', baseFilter: 'classic-chrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-vivid', name: 'CLASSIC VIVID', baseFilter: 'classic-vivid', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-neg', name: 'CLASSIC NEGATIVE', baseFilter: 'classic-neg', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-astia', name: 'ASTIA', baseFilter: 'astia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-eterna', name: 'ETERNA', baseFilter: 'eterna', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-acros', name: 'ACROS', baseFilter: 'monochrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-provia', name: 'PROVIPES', baseFilter: 'provia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-velvia', name: 'VELVIPES', baseFilter: 'velvia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-chrome', name: 'CLASSIC CHRIPES', baseFilter: 'classic-chrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-vivid', name: 'CLASSIC VIVIDIPES', baseFilter: 'classic-vivid', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-classic-neg', name: 'CLASSIC NEGIPES', baseFilter: 'classic-neg', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-astia', name: 'ASTIPES', baseFilter: 'astia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-eterna', name: 'ETERNIPES', baseFilter: 'eterna', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-acros', name: 'ACRIPES', baseFilter: 'monochrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
// The rangefinder digital look (M/Q/SL) is not a film stock, so it ships as its own
|
||||
// pair instead of one look that has to compromise. Both are still colour and
|
||||
// tone only: CLASSIC is Leica Authentic (the matrix carries the channel
|
||||
// separation and the warm European cast, nothing else), VIVID is Leica Vivid
|
||||
// (the same separation opened up — again in the matrix, not as an exposure or
|
||||
// saturation knob).
|
||||
// (the same separation opened up — again in the matrix, with the one
|
||||
// brightness step the stock owns folded in through SIM_EXPOSURE_BIAS in
|
||||
// colorUtils, never as an `adjustments` value).
|
||||
{ id: 'sim-leica', name: 'LC STREETLIFE CLASSIC', baseFilter: 'leica', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
{ id: 'sim-leica-vivid', name: 'LC STREETLIFE VIVID', baseFilter: 'leica-vivid', adjustments: { ...DEFAULT_ADJUSTMENTS } },
|
||||
];
|
||||
|
||||
@@ -864,7 +864,7 @@ export function Workspace() {
|
||||
|
||||
const reset = useCallback(() => {
|
||||
remember();
|
||||
// Back to the startup look, exactly like the phone: the PROVIA sim, every
|
||||
// Back to the startup look, exactly like the phone: the PROVIPES sim, every
|
||||
// knob neutral, no frame/crop, no rotation, both marks off and restyled.
|
||||
restoreLook(defaultLook());
|
||||
setOpenParam(null);
|
||||
@@ -1824,7 +1824,7 @@ export function Workspace() {
|
||||
const toggleMono = () => {
|
||||
remember();
|
||||
if (monoOn) {
|
||||
const back = monoPrev.current ?? { baseFilter: 'provia' as Recipe['baseFilter'], simId: 'sim-provia', name: 'PROVIA' };
|
||||
const back = monoPrev.current ?? { baseFilter: 'provia' as Recipe['baseFilter'], simId: 'sim-provia', name: 'PROVIPES' };
|
||||
setRecipe((prev) => ({ ...prev, baseFilter: back.baseFilter, name: back.name, isCustom: true }));
|
||||
setSimId(back.simId);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user