Ship HDF EFFECT to PRO only, and clean the build for Play
Rename LIGHT GLOW to HDF EFFECT and gate it behind PRO: LITE renders the chip greyed out with a PRO tag and cannot open its slider; restoration of older settings that carry hdf > 0 still blocks export in LITE. Play/licence pass: - drop unused permissions (ACTIVITY_RECOGNITION, READ_MEDIA_AUDIO/VIDEO, SYSTEM_ALERT_WINDOW) and requestLegacyExternalStorage - rename the Leica sims to LC STREETLIFE CLASSIC/VIVID, drop the brand from comments; fix app name text, canvaskit copyright, LICENSE owner - remove expo-image-picker and expo-sensors (no JS import), delete dead exports (computeMatrixTint, cinemaSeasonName, base64 helpers, formatCoordinate) - versionCode 3 / versionName 1.2.1, drop the personal email from About - add docs/privacy-policy.html for the Play listing Size: R8 + shrinkResources + bundle compression + ABI trim, 161 MB -> 76 MB.
This commit is contained in:
+3
-23
@@ -139,8 +139,8 @@ export function getSkiaColorMatrix(baseFilter: BaseFilter, adj: ColorAdjustments
|
||||
0, 0, 0, 1, 0,
|
||||
];
|
||||
} else if (baseFilter === 'leica') {
|
||||
// LEITZ STREETLIFE CLASSIC — the Leica character rather than a saturation
|
||||
// push. What makes a Leica file read as one is the separation BETWEEN the
|
||||
// LC STREETLIFE CLASSIC — the rangefinder character rather than a saturation
|
||||
// push. What makes this file read as one is the separation BETWEEN the
|
||||
// hues, so the deepening lives in the off-diagonal terms, not in a global
|
||||
// chroma gain:
|
||||
// - the three rows sum to 1.00/1.00/0.995, so greys stay exactly grey and
|
||||
@@ -158,7 +158,7 @@ export function getSkiaColorMatrix(baseFilter: BaseFilter, adj: ColorAdjustments
|
||||
0, 0, 0, 1, 0,
|
||||
];
|
||||
} else if (baseFilter === 'leica-vivid') {
|
||||
// LEITZ STREETLIFE VIVID — the same Leica channel separation pushed into the
|
||||
// LC STREETLIFE VIVID — the same slanted channel separation pushed into the
|
||||
// digital era: ~20% of chroma gain (still well under Velvia's 39%, so it
|
||||
// sparkles instead of shouting) on the same warm R>G>B bias CLASSIC has, so
|
||||
// VIVID is a brighter read of one look rather than a second, neutral one.
|
||||
@@ -285,26 +285,6 @@ export function applyExposureGain(matrix: number[], evStops: number): number[] {
|
||||
return multiplyMatrices(gainMat, matrix);
|
||||
}
|
||||
|
||||
// Compute a tint color + opacity from the matrix for camera overlay preview
|
||||
// Applies the matrix to white (1,1,1,1) to see what color cast the filter creates
|
||||
export function computeMatrixTint(matrix: number[]): { r: number; g: number; b: number; a: number } {
|
||||
const apply = (r: number, g: number, b: number, a: number) => {
|
||||
const row = (offset: number) =>
|
||||
matrix[offset + 0] * r + matrix[offset + 1] * g + matrix[offset + 2] * b + matrix[offset + 3] * a + matrix[offset + 4];
|
||||
return { r: row(0), g: row(5), b: row(10), a: row(15) };
|
||||
};
|
||||
|
||||
// Apply matrix to neutral white to get the filter's color cast
|
||||
const white = apply(1, 1, 1, 1);
|
||||
// Clamp and compute perceived intensity to determine opacity
|
||||
const clamp = (v: number) => Math.max(0, Math.min(1, v));
|
||||
const intensity = (white.r + white.g + white.b) / 3;
|
||||
// Opacity is higher when the filter deviates from neutral
|
||||
const deviation = Math.abs(white.r - intensity) + Math.abs(white.g - intensity) + Math.abs(white.b - intensity);
|
||||
const opacity = Math.min(0.35, deviation * 2.5);
|
||||
return { r: clamp(white.r), g: clamp(white.g), b: clamp(white.b), a: opacity };
|
||||
}
|
||||
|
||||
// 4x5 Matrix multiplication utility: A * B
|
||||
function multiplyMatrices(a: number[], b: number[]): number[] {
|
||||
const result = new Array(20).fill(0);
|
||||
|
||||
Reference in New Issue
Block a user