android: add the CLASSIC VIVIDIPES sim and the FX MONOCHROME switch
Straight off PLAN-WEB-TO-ANDROID.md: the sim keeps Classic Chrome's blue row verbatim and takes Velvia's red and green rows, so skies stay muted while everything else reads loud, and it carries Chrome's shadow pull. MONOCHROME is a switch, not a look: it swaps the base filter for the mono stock and swaps right back, leaving adjustments untouched so a knob turned while it is on survives the round trip. It goes through commit(), so UNDO undoes it.
This commit is contained in:
@@ -764,6 +764,29 @@ export default function App() {
|
||||
lastStepRef.current = 0;
|
||||
setUndoDepth(0);
|
||||
};
|
||||
// FX's MONOCHROME switch: not a look of its own — it swaps the base filter for
|
||||
// the mono stock and swaps right back. Adjustments are never touched, so a knob
|
||||
// turned while it is on survives the round trip.
|
||||
const monoOn = selectedRecipe?.baseFilter === 'monochrome';
|
||||
const monoPrevRef = useRef<Recipe | null>(null);
|
||||
|
||||
const handleToggleMono = () => {
|
||||
commit(true, () => {
|
||||
if (selectedRecipe?.baseFilter === 'monochrome') {
|
||||
const back = monoPrevRef.current ?? filmSimToRecipe(FILM_SIMS.find((f) => f.id === 'sim-provia')!);
|
||||
monoPrevRef.current = null;
|
||||
setSelectedRecipe(back);
|
||||
} else {
|
||||
monoPrevRef.current = selectedRecipe;
|
||||
setSelectedRecipe({
|
||||
...(selectedRecipe ?? filmSimToRecipe(FILM_SIMS[0])),
|
||||
id: 'mono',
|
||||
name: 'MONOCHROME',
|
||||
baseFilter: 'monochrome',
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
const applyLook = (l: Look) => {
|
||||
setSelectedRecipe(l.recipe);
|
||||
setAdjustments(l.adjustments);
|
||||
@@ -1963,6 +1986,8 @@ export default function App() {
|
||||
openParam={openParamKey}
|
||||
onOpenParamChange={setOpenParamKey}
|
||||
currentBaseFilter={selectedRecipe?.baseFilter}
|
||||
monoOn={monoOn}
|
||||
onToggleMono={handleToggleMono}
|
||||
onCreateRecipe={handleCreateRecipe}
|
||||
editingRecipe={editingRecipe}
|
||||
onCloseEdit={() => setEditingRecipe(null)}
|
||||
|
||||
Reference in New Issue
Block a user