@hyperframes/core 0.7.71 → 0.7.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/colorGrading.d.ts +1649 -62
- package/dist/colorGrading.d.ts.map +1 -1
- package/dist/colorGrading.js +457 -19
- package/dist/colorGrading.js.map +1 -1
- package/dist/colorGradingCurves.d.ts +9 -0
- package/dist/colorGradingCurves.d.ts.map +1 -0
- package/dist/colorGradingCurves.js +141 -0
- package/dist/colorGradingCurves.js.map +1 -0
- package/dist/colorLuts.d.ts +1 -0
- package/dist/colorLuts.d.ts.map +1 -1
- package/dist/colorLuts.js +4 -4
- package/dist/colorLuts.js.map +1 -1
- package/dist/figma/motionEase.js +1 -1
- package/dist/figma/motionEase.js.map +1 -1
- package/dist/generated/position-edits-render-inline.js +1 -1
- package/dist/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/hyperframe.runtime.iife.js +35 -33
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mediaGradeAnalyzer.d.ts +65 -0
- package/dist/mediaGradeAnalyzer.d.ts.map +1 -0
- package/dist/mediaGradeAnalyzer.js +259 -0
- package/dist/mediaGradeAnalyzer.js.map +1 -0
- package/dist/parsers/springEase.d.ts +4 -1
- package/dist/parsers/springEase.d.ts.map +1 -1
- package/dist/parsers/springEase.js +29 -1
- package/dist/parsers/springEase.js.map +1 -1
- package/dist/runtime/analytics.d.ts +1 -1
- package/dist/runtime/analytics.d.ts.map +1 -1
- package/dist/runtime/analytics.js.map +1 -1
- package/dist/runtime/types.d.ts +2 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/wiggleEase.d.ts +12 -0
- package/dist/runtime/wiggleEase.d.ts.map +1 -0
- package/dist/runtime/wiggleEase.js +52 -0
- package/dist/runtime/wiggleEase.js.map +1 -0
- package/package.json +12 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorGrading.d.ts","sourceRoot":"","sources":["../src/colorGrading.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,
|
|
1
|
+
{"version":3,"file":"colorGrading.d.ts","sourceRoot":"","sources":["../src/colorGrading.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EAIzB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAK5B,wBAAwB,EACzB,MAAM,6CAA6C,CAAC;AAErD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAK1D,4EAA4E;AAC5E,eAAO,MAAM,gCAAgC,wCAAwC,CAAC;AACtF;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,6BAA6B,CAAC;AAE9E,eAAO,MAAM,iCAAiC,wBAAwB,CAAC;AAEvE,eAAO,MAAM,4BAA4B,WAA4B,CAAC;AAEtE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,eAAe,GACf,cAAc,GACd,WAAW,GACX,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,cAAc,GACd,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAejF,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CACzD,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,MAAM,CACjD,sBAAsB,EACtB,QAAQ,CAAC,wBAAwB,CAAC,CACnC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AACtF,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,MAAM,CAAC,sBAAsB,EAAE,SAAS,iBAAiB,EAAE,CAAC,CAC7D,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,MAAM,CAAC,yBAAyB,EAAE,SAAS,eAAe,EAAE,CAAC,CAC9D,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,MAAM,CACjD,sBAAsB,EACtB,SAAS,iBAAiB,EAAE,CAC7B,CAAC;AACF,MAAM,MAAM,iCAAiC,GAAG,MAAM,CACpD,yBAAyB,EACzB,SAAS,eAAe,EAAE,CAC3B,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE;QACH,GAAG,CAAC,EAAE,sBAAsB,CAAC;QAC7B,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,IAAI,CAAC,EAAE,uBAAuB,CAAC;KAChC,CAAC;IACF,UAAU,EAAE,iCAAiC,CAAC;CAC/C;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QACH,GAAG,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACtC,UAAU,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC9C,IAAI,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;KACzC,CAAC;IACF,UAAU,EAAE,QAAQ,CAAC,iCAAiC,CAAC,CAAC;CACzD;AAGD,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAYjF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAqEjF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,WAAW,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACjD,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,GAAG,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,4BAA4B,GAAG,MAAM,CAAC;CAC3D;AAED,eAAO,MAAM,+BAA+B,6JAC8B,CAAC;AAE3E,eAAO,MAAM,yBAAyB,+BACoC,CAAC;AAE3E,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,8BAA8B,CAAC;IACxC,MAAM,CAAC,EAAE,8BAA8B,CAAC;IACxC,SAAS,CAAC,EAAE,iCAAiC,CAAC;IAC9C,WAAW,CAAC,EAAE,SAAS,iCAAiC,EAAE,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,4BAA4B,GAAG,MAAM,CAAC;CAC1D;AAED,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;IACtE,MAAM,EAAE,8BAA8B,CAAC;IACvC,MAAM,EAAE,8BAA8B,CAAC;IACvC,SAAS,EAAE,iCAAiC,CAAC;IAC7C,WAAW,EAAE,SAAS,iCAAiC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsF5B,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhE,eAAO,MAAM,4BAA4B,iIAC+B,CAAC;AAEzE,eAAO,MAAM,2BAA2B,gDAC8B,CAAC;AAEvE,eAAO,MAAM,2BAA2B,6CAC8B,CAAC;AAEvE,eAAO,MAAM,+BAA+B,uDACiC,CAAC;AAE9E,eAAO,MAAM,4BAA4B,2HAC+B,CAAC;AAEzE,eAAO,MAAM,4BAA4B,8pCAC+B,CAAC;AAkCzE,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAoLnE,CAAC;AAiEF,eAAO,MAAM,mCAAmC,8PAmBO,CAAC;AAExD,MAAM,MAAM,6BAA6B,GAAG,CAAC,OAAO,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;AA2HjG,eAAO,MAAM,+BAA+B,wBAE3C,CAAC;AAEF,eAAO,MAAM,8BAA8B,wBAE1C,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,sCAAsC,EAAE,QAAQ,CAC3D,MAAM,CAAC,6BAA6B,EAAE,qBAAqB,CAAC,CAyE7D,CAAC;AAEF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUzC,CAAC;AAEX,MAAM,MAAM,4BAA4B,GACtC,CAAC,OAAO,sCAAsC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAgBlE,yEAAyE;AACzE,wBAAgB,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA5Te,MAAM;aAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA2Bd,MAAM;qBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAexB,MAAM;aAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmQpB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnB,MAAM;iBAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwI7E;AAED,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAsD1F;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,iCAAiC,CAAC,KAAK,CAAC,GAC5C,MAAM,CAeR;AAoOD,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,yBAAyB,GACnC,OAAO,CAsBT;AAOD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAwDnF;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,yBAAyB,GACnC,sBAAsB,GAAG,IAAI,CAE/B;AAQD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAI/F;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAIT;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,SAAS,iCAAiC,EAAE,GACxD,OAAO,CAMT;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAAG,cAAc,GAAG,IAAI,GACxD,MAAM,CAsBR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GACvC,OAAO,IAAI,wBAAwB,CAgBrC;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,wBAAwB,GAAG,IAAI,GACvC,OAAO,IAAI,wBAAwB,CAIrC"}
|
package/dist/colorGrading.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_MAX_CUBE_LUT_SIZE } from "./colorLuts.js";
|
|
2
|
-
import { COLOR_GRADING_ADJUST_KEYS, COLOR_GRADING_COLOR_SPACE, COLOR_GRADING_DETAIL_KEYS, COLOR_GRADING_EFFECT_KEYS, COLOR_GRADING_LUT_KEYS, COLOR_GRADING_TOP_LEVEL_KEYS, } from "@hyperframes/parsers/color-grading-contract";
|
|
2
|
+
import { COLOR_GRADING_ADJUST_KEYS, COLOR_GRADING_ADVANCED_LIMITS, COLOR_GRADING_COLOR_SPACE, COLOR_GRADING_CONTRACT_VERSION, COLOR_GRADING_CURVE_KEYS, COLOR_GRADING_DETAIL_KEYS, COLOR_GRADING_EFFECT_KEYS, COLOR_GRADING_HUE_CURVE_KEYS, COLOR_GRADING_LUT_KEYS, COLOR_GRADING_MAX_CURVE_POINTS, COLOR_GRADING_MAX_SECONDARIES, COLOR_GRADING_TOP_LEVEL_KEYS, COLOR_GRADING_WHEEL_KEYS, } from "@hyperframes/parsers/color-grading-contract";
|
|
3
|
+
export { compileHfColorCurve, compileHfHueCurve, HF_COLOR_CURVE_MAX_POINTS, } from "./colorGradingCurves.js";
|
|
3
4
|
export const HF_COLOR_GRADING_ATTR = "data-color-grading";
|
|
4
5
|
// Runtime <-> studio contract attributes. The runtime grading engine writes
|
|
5
6
|
// them; studio editing/soft-reload code reads them. Single owner — never
|
|
@@ -191,6 +192,9 @@ export const HF_COLOR_GRADING_PALETTES = [
|
|
|
191
192
|
},
|
|
192
193
|
];
|
|
193
194
|
export const HF_COLOR_GRADING_ADJUST_KEYS = COLOR_GRADING_ADJUST_KEYS;
|
|
195
|
+
export const HF_COLOR_GRADING_WHEEL_KEYS = COLOR_GRADING_WHEEL_KEYS;
|
|
196
|
+
export const HF_COLOR_GRADING_CURVE_KEYS = COLOR_GRADING_CURVE_KEYS;
|
|
197
|
+
export const HF_COLOR_GRADING_HUE_CURVE_KEYS = COLOR_GRADING_HUE_CURVE_KEYS;
|
|
194
198
|
export const HF_COLOR_GRADING_DETAIL_KEYS = COLOR_GRADING_DETAIL_KEYS;
|
|
195
199
|
export const HF_COLOR_GRADING_EFFECT_KEYS = COLOR_GRADING_EFFECT_KEYS;
|
|
196
200
|
const VINTAGE_WASH_ADJUST = {
|
|
@@ -363,22 +367,46 @@ const ADJUST_LIMITS = {
|
|
|
363
367
|
vibrance: { min: -1, max: 1 },
|
|
364
368
|
saturation: { min: -1, max: 1 },
|
|
365
369
|
};
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
const TONAL_WHEEL_DEFAULT = {
|
|
371
|
+
hue: 0,
|
|
372
|
+
amount: 0,
|
|
373
|
+
level: 0,
|
|
374
|
+
};
|
|
375
|
+
const WHEEL_LIMITS = {
|
|
376
|
+
amount: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
377
|
+
level: COLOR_GRADING_ADVANCED_LIMITS.signedUnit,
|
|
378
|
+
};
|
|
379
|
+
const RGB_CURVE_IDENTITY = [
|
|
380
|
+
[0, 0],
|
|
381
|
+
[1, 1],
|
|
382
|
+
];
|
|
383
|
+
const HUE_CURVE_IDENTITY = [];
|
|
384
|
+
const HUE_CURVE_LIMITS = {
|
|
385
|
+
hueVsHue: COLOR_GRADING_ADVANCED_LIMITS.secondaryHueShift,
|
|
386
|
+
hueVsSaturation: COLOR_GRADING_ADVANCED_LIMITS.signedUnit,
|
|
387
|
+
hueVsLuma: COLOR_GRADING_ADVANCED_LIMITS.signedUnit,
|
|
374
388
|
};
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
389
|
+
const SECONDARY_HUE_DEFAULT = {
|
|
390
|
+
center: 0,
|
|
391
|
+
range: 180,
|
|
392
|
+
softness: 0,
|
|
393
|
+
};
|
|
394
|
+
const SECONDARY_SOFT_RANGE_DEFAULT = {
|
|
395
|
+
min: 0,
|
|
396
|
+
max: 1,
|
|
397
|
+
softness: 0.05,
|
|
398
|
+
};
|
|
399
|
+
const DETAIL_LIMITS = {
|
|
400
|
+
vignette: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
401
|
+
vignetteMidpoint: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
402
|
+
vignetteRoundness: COLOR_GRADING_ADVANCED_LIMITS.signedUnit,
|
|
403
|
+
vignetteFeather: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
404
|
+
grain: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
405
|
+
grainSize: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
406
|
+
grainRoughness: COLOR_GRADING_ADVANCED_LIMITS.unit,
|
|
381
407
|
};
|
|
408
|
+
const UNIT_LIMIT = COLOR_GRADING_ADVANCED_LIMITS.unit;
|
|
409
|
+
const EFFECT_LIMIT_OVERRIDES = COLOR_GRADING_ADVANCED_LIMITS.effects;
|
|
382
410
|
export const HF_COLOR_GRADING_ACTIVE_EFFECT_KEYS = [
|
|
383
411
|
"blur",
|
|
384
412
|
"pixelate",
|
|
@@ -399,6 +427,120 @@ export const HF_COLOR_GRADING_ACTIVE_EFFECT_KEYS = [
|
|
|
399
427
|
"crosshatch",
|
|
400
428
|
"kuwahara",
|
|
401
429
|
];
|
|
430
|
+
const EFFECT_FAMILIES = [
|
|
431
|
+
{
|
|
432
|
+
id: "essentials",
|
|
433
|
+
label: "Essentials",
|
|
434
|
+
description: "Common optical, focus, and privacy-oriented primitives.",
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
id: "retro-glitch",
|
|
438
|
+
label: "Retro & Glitch",
|
|
439
|
+
description: "Tape, film, CRT, channel separation, and digital disruption.",
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
id: "print",
|
|
443
|
+
label: "Print",
|
|
444
|
+
description: "Halftone, limited-ink, dither, and screen-print rendering.",
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
id: "art",
|
|
448
|
+
label: "Art",
|
|
449
|
+
description: "ASCII, engraved, crosshatched, and painterly rendering.",
|
|
450
|
+
},
|
|
451
|
+
];
|
|
452
|
+
const EFFECT_METADATA = {
|
|
453
|
+
blur: {
|
|
454
|
+
family: "essentials",
|
|
455
|
+
label: "Blur",
|
|
456
|
+
description: "Defocus or soften a full media layer.",
|
|
457
|
+
},
|
|
458
|
+
pixelate: {
|
|
459
|
+
family: "essentials",
|
|
460
|
+
label: "Pixelate",
|
|
461
|
+
description: "Turn a media layer into a block mosaic.",
|
|
462
|
+
},
|
|
463
|
+
bloom: {
|
|
464
|
+
family: "essentials",
|
|
465
|
+
label: "Bloom",
|
|
466
|
+
description: "Add thresholded glow around bright image regions.",
|
|
467
|
+
},
|
|
468
|
+
chromaBleed: {
|
|
469
|
+
family: "retro-glitch",
|
|
470
|
+
label: "Chroma Softening",
|
|
471
|
+
description: "Smear color like low-bandwidth video.",
|
|
472
|
+
},
|
|
473
|
+
tapeDamage: {
|
|
474
|
+
family: "retro-glitch",
|
|
475
|
+
label: "Tape Damage",
|
|
476
|
+
description: "Add moving tracking errors and tape noise.",
|
|
477
|
+
},
|
|
478
|
+
filmArtifacts: {
|
|
479
|
+
family: "retro-glitch",
|
|
480
|
+
label: "Film Artifacts",
|
|
481
|
+
description: "Add deterministic dust and film wear.",
|
|
482
|
+
},
|
|
483
|
+
scanlines: {
|
|
484
|
+
family: "retro-glitch",
|
|
485
|
+
label: "Scanlines",
|
|
486
|
+
description: "Overlay configurable horizontal display lines.",
|
|
487
|
+
},
|
|
488
|
+
crtCurvature: {
|
|
489
|
+
family: "retro-glitch",
|
|
490
|
+
label: "CRT Curvature",
|
|
491
|
+
description: "Warp media toward curved CRT geometry.",
|
|
492
|
+
},
|
|
493
|
+
chromaticAberration: {
|
|
494
|
+
family: "retro-glitch",
|
|
495
|
+
label: "Channel Separation",
|
|
496
|
+
description: "Offset color channels by angle.",
|
|
497
|
+
},
|
|
498
|
+
digitalGlitch: {
|
|
499
|
+
family: "retro-glitch",
|
|
500
|
+
label: "Digital Glitch",
|
|
501
|
+
description: "Compose tears, blocks, and color splits.",
|
|
502
|
+
},
|
|
503
|
+
halftone: {
|
|
504
|
+
family: "print",
|
|
505
|
+
label: "Halftone",
|
|
506
|
+
description: "Render source color through a print-dot raster.",
|
|
507
|
+
},
|
|
508
|
+
twoInkPrint: {
|
|
509
|
+
family: "print",
|
|
510
|
+
label: "Two-Ink Print",
|
|
511
|
+
description: "Reduce media to a two-ink print treatment.",
|
|
512
|
+
},
|
|
513
|
+
dither: {
|
|
514
|
+
family: "print",
|
|
515
|
+
label: "Ordered Dither",
|
|
516
|
+
description: "Quantize media into an ordered limited palette.",
|
|
517
|
+
},
|
|
518
|
+
monoScreen: {
|
|
519
|
+
family: "print",
|
|
520
|
+
label: "Mono Screen",
|
|
521
|
+
description: "Build monochrome dot, shape, or line artwork.",
|
|
522
|
+
},
|
|
523
|
+
ascii: {
|
|
524
|
+
family: "art",
|
|
525
|
+
label: "ASCII",
|
|
526
|
+
description: "Render media as configurable procedural glyph cells.",
|
|
527
|
+
},
|
|
528
|
+
engraving: {
|
|
529
|
+
family: "art",
|
|
530
|
+
label: "Engraving",
|
|
531
|
+
description: "Translate luminance into directional engraved lines.",
|
|
532
|
+
},
|
|
533
|
+
crosshatch: {
|
|
534
|
+
family: "art",
|
|
535
|
+
label: "Crosshatch",
|
|
536
|
+
description: "Translate media into layered hand-hatched lines.",
|
|
537
|
+
},
|
|
538
|
+
kuwahara: {
|
|
539
|
+
family: "art",
|
|
540
|
+
label: "Kuwahara Paint",
|
|
541
|
+
description: "Apply edge-preserving painterly smoothing.",
|
|
542
|
+
},
|
|
543
|
+
};
|
|
402
544
|
export const HF_COLOR_GRADING_EFFECT_PRESETS = HF_COLOR_GRADING_PRESETS.filter((preset) => HF_COLOR_GRADING_ACTIVE_EFFECT_KEYS.some((key) => preset.effects[key] > 0.0001));
|
|
403
545
|
export const HF_COLOR_GRADING_GRADE_PRESETS = HF_COLOR_GRADING_PRESETS.filter((preset) => !HF_COLOR_GRADING_EFFECT_PRESETS.includes(preset));
|
|
404
546
|
/** Useful one-click values. Sub-controls not listed here keep their normalized defaults. */
|
|
@@ -500,7 +642,7 @@ const MULTIPASS_EFFECT_KEYS = new Set(["blur", "bloom", "kuwahara"]);
|
|
|
500
642
|
/** Agent-readable view of the canonical grading and effect contracts. */
|
|
501
643
|
export function getHfColorGradingCapabilities() {
|
|
502
644
|
return {
|
|
503
|
-
version:
|
|
645
|
+
version: COLOR_GRADING_CONTRACT_VERSION,
|
|
504
646
|
targetTags: ["img", "video"],
|
|
505
647
|
colorSpace: HF_COLOR_GRADING_COLOR_SPACE,
|
|
506
648
|
intensity: { identity: 1, min: 0, max: 1 },
|
|
@@ -520,6 +662,72 @@ export function getHfColorGradingCapabilities() {
|
|
|
520
662
|
identity: ADJUST_ZERO[key],
|
|
521
663
|
...ADJUST_LIMITS[key],
|
|
522
664
|
})),
|
|
665
|
+
wheels: {
|
|
666
|
+
zones: HF_COLOR_GRADING_WHEEL_KEYS,
|
|
667
|
+
controls: {
|
|
668
|
+
hue: {
|
|
669
|
+
identity: 0,
|
|
670
|
+
unit: "degrees",
|
|
671
|
+
wrap: true,
|
|
672
|
+
min: COLOR_GRADING_ADVANCED_LIMITS.hueDegrees.min,
|
|
673
|
+
maxExclusive: COLOR_GRADING_ADVANCED_LIMITS.hueDegrees.max,
|
|
674
|
+
},
|
|
675
|
+
amount: { identity: 0, ...WHEEL_LIMITS.amount },
|
|
676
|
+
level: { identity: 0, ...WHEEL_LIMITS.level },
|
|
677
|
+
},
|
|
678
|
+
},
|
|
679
|
+
curves: {
|
|
680
|
+
channels: HF_COLOR_GRADING_CURVE_KEYS,
|
|
681
|
+
input: { min: 0, max: 1 },
|
|
682
|
+
output: { min: 0, max: 1 },
|
|
683
|
+
minPoints: 2,
|
|
684
|
+
maxPoints: COLOR_GRADING_MAX_CURVE_POINTS,
|
|
685
|
+
implicitEndpoints: true,
|
|
686
|
+
endpointsCountTowardMax: true,
|
|
687
|
+
},
|
|
688
|
+
hueCurves: {
|
|
689
|
+
channels: HF_COLOR_GRADING_HUE_CURVE_KEYS.map((key) => ({
|
|
690
|
+
key,
|
|
691
|
+
input: { min: 0, maxExclusive: 360, unit: "degrees", wrap: true },
|
|
692
|
+
output: HUE_CURVE_LIMITS[key],
|
|
693
|
+
})),
|
|
694
|
+
minPoints: 3,
|
|
695
|
+
maxPoints: COLOR_GRADING_MAX_CURVE_POINTS,
|
|
696
|
+
},
|
|
697
|
+
secondaries: {
|
|
698
|
+
max: COLOR_GRADING_MAX_SECONDARIES,
|
|
699
|
+
hue: {
|
|
700
|
+
center: {
|
|
701
|
+
min: COLOR_GRADING_ADVANCED_LIMITS.hueDegrees.min,
|
|
702
|
+
maxExclusive: COLOR_GRADING_ADVANCED_LIMITS.hueDegrees.max,
|
|
703
|
+
unit: "degrees",
|
|
704
|
+
wrap: true,
|
|
705
|
+
},
|
|
706
|
+
range: { ...COLOR_GRADING_ADVANCED_LIMITS.secondaryHueRange, unit: "degrees" },
|
|
707
|
+
softness: { ...COLOR_GRADING_ADVANCED_LIMITS.secondaryHueSoftness, unit: "degrees" },
|
|
708
|
+
rangePlusSoftnessMax: COLOR_GRADING_ADVANCED_LIMITS.secondaryHueCombinedMax,
|
|
709
|
+
},
|
|
710
|
+
saturation: {
|
|
711
|
+
min: { ...UNIT_LIMIT },
|
|
712
|
+
max: { ...UNIT_LIMIT },
|
|
713
|
+
relation: "min < max",
|
|
714
|
+
softness: { ...COLOR_GRADING_ADVANCED_LIMITS.secondarySoftRangeSoftness },
|
|
715
|
+
},
|
|
716
|
+
luma: {
|
|
717
|
+
min: { ...UNIT_LIMIT },
|
|
718
|
+
max: { ...UNIT_LIMIT },
|
|
719
|
+
relation: "min < max",
|
|
720
|
+
softness: { ...COLOR_GRADING_ADVANCED_LIMITS.secondarySoftRangeSoftness },
|
|
721
|
+
},
|
|
722
|
+
correction: {
|
|
723
|
+
hueShift: { ...COLOR_GRADING_ADVANCED_LIMITS.secondaryHueShift, unit: "degrees" },
|
|
724
|
+
saturation: { ...COLOR_GRADING_ADVANCED_LIMITS.signedUnit },
|
|
725
|
+
luma: { ...COLOR_GRADING_ADVANCED_LIMITS.signedUnit },
|
|
726
|
+
temperature: { ...COLOR_GRADING_ADVANCED_LIMITS.signedUnit },
|
|
727
|
+
tint: { ...COLOR_GRADING_ADVANCED_LIMITS.signedUnit },
|
|
728
|
+
},
|
|
729
|
+
},
|
|
730
|
+
effectFamilies: EFFECT_FAMILIES,
|
|
523
731
|
finishing: HF_COLOR_GRADING_DETAIL_KEYS.map((key) => ({
|
|
524
732
|
key,
|
|
525
733
|
identity: DETAIL_DEFAULTS[key],
|
|
@@ -529,6 +737,7 @@ export function getHfColorGradingCapabilities() {
|
|
|
529
737
|
const apply = HF_COLOR_GRADING_EFFECT_APPLY_DEFAULTS[key];
|
|
530
738
|
return {
|
|
531
739
|
key,
|
|
740
|
+
...EFFECT_METADATA[key],
|
|
532
741
|
apply: { ...apply },
|
|
533
742
|
supportsPalette: PALETTE_EFFECT_KEYS.has(key),
|
|
534
743
|
renderLane: MULTIPASS_EFFECT_KEYS.has(key) ? "multipass" : "single-pass",
|
|
@@ -578,6 +787,195 @@ function readLimitedValue(value, limit) {
|
|
|
578
787
|
return 0;
|
|
579
788
|
return clamp(parsed, limit.min, limit.max);
|
|
580
789
|
}
|
|
790
|
+
function wrapDegrees(value, fallback = 0) {
|
|
791
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
792
|
+
if (!Number.isFinite(parsed))
|
|
793
|
+
return fallback;
|
|
794
|
+
return ((parsed % 360) + 360) % 360;
|
|
795
|
+
}
|
|
796
|
+
function smoothstep(min, max, value) {
|
|
797
|
+
const normalized = clamp((value - min) / (max - min), 0, 1);
|
|
798
|
+
return normalized * normalized * (3 - 2 * normalized);
|
|
799
|
+
}
|
|
800
|
+
function softRangeMask(value, min, max, softness) {
|
|
801
|
+
if (value < min) {
|
|
802
|
+
return softness <= 0 ? 0 : smoothstep(min - softness, min, value);
|
|
803
|
+
}
|
|
804
|
+
if (value > max) {
|
|
805
|
+
return softness <= 0 ? 0 : 1 - smoothstep(max, max + softness, value);
|
|
806
|
+
}
|
|
807
|
+
return 1;
|
|
808
|
+
}
|
|
809
|
+
/**
|
|
810
|
+
* Mirrors the runtime shader's HSL-secondary qualifier for Studio mattes and
|
|
811
|
+
* other non-WebGL verification surfaces.
|
|
812
|
+
*/
|
|
813
|
+
export function calculateHfColorGradingSecondaryMask(hue, saturation, luma, key) {
|
|
814
|
+
const hueDistance = Math.abs(((((hue - key.hue.center + 540) % 360) + 360) % 360) - 180);
|
|
815
|
+
const hueMask = key.hue.range < 179.999 && saturation < 0.001
|
|
816
|
+
? 0
|
|
817
|
+
: hueDistance <= key.hue.range
|
|
818
|
+
? 1
|
|
819
|
+
: key.hue.softness <= 0
|
|
820
|
+
? 0
|
|
821
|
+
: 1 - smoothstep(key.hue.range, key.hue.range + key.hue.softness, hueDistance);
|
|
822
|
+
return (hueMask *
|
|
823
|
+
softRangeMask(saturation, key.saturation.min, key.saturation.max, key.saturation.softness) *
|
|
824
|
+
softRangeMask(luma, key.luma.min, key.luma.max, key.luma.softness));
|
|
825
|
+
}
|
|
826
|
+
function normalizeWheels(value) {
|
|
827
|
+
const wheels = isRecord(value) ? value : {};
|
|
828
|
+
return HF_COLOR_GRADING_WHEEL_KEYS.reduce((result, key) => {
|
|
829
|
+
const wheel = isRecord(wheels[key]) ? wheels[key] : {};
|
|
830
|
+
result[key] = {
|
|
831
|
+
hue: wrapDegrees(wheel.hue, TONAL_WHEEL_DEFAULT.hue),
|
|
832
|
+
amount: readLimitedValue(wheel.amount ?? TONAL_WHEEL_DEFAULT.amount, WHEEL_LIMITS.amount),
|
|
833
|
+
level: readLimitedValue(wheel.level ?? TONAL_WHEEL_DEFAULT.level, WHEEL_LIMITS.level),
|
|
834
|
+
};
|
|
835
|
+
return result;
|
|
836
|
+
}, {
|
|
837
|
+
shadows: { ...TONAL_WHEEL_DEFAULT },
|
|
838
|
+
midtones: { ...TONAL_WHEEL_DEFAULT },
|
|
839
|
+
highlights: { ...TONAL_WHEEL_DEFAULT },
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
function normalizeCurvePoint(value) {
|
|
843
|
+
if (!Array.isArray(value) || value.length !== 2)
|
|
844
|
+
return null;
|
|
845
|
+
const input = Number(value[0]);
|
|
846
|
+
const output = Number(value[1]);
|
|
847
|
+
return Number.isFinite(input) && Number.isFinite(output)
|
|
848
|
+
? [clamp(input, 0, 1), clamp(output, 0, 1)]
|
|
849
|
+
: null;
|
|
850
|
+
}
|
|
851
|
+
function hasDuplicateCurveInputs(points) {
|
|
852
|
+
return points.some((point, index) => index > 0 && point[0] === points[index - 1]?.[0]);
|
|
853
|
+
}
|
|
854
|
+
function completeCurveEndpoints(points) {
|
|
855
|
+
if ((points[0]?.[0] ?? 0) > 0)
|
|
856
|
+
points.unshift([0, 0]);
|
|
857
|
+
if ((points.at(-1)?.[0] ?? 1) < 1)
|
|
858
|
+
points.push([1, 1]);
|
|
859
|
+
}
|
|
860
|
+
function normalizeCurve(value) {
|
|
861
|
+
if (!Array.isArray(value) || value.length < 2)
|
|
862
|
+
return RGB_CURVE_IDENTITY;
|
|
863
|
+
const points = [];
|
|
864
|
+
for (const valuePoint of value) {
|
|
865
|
+
const point = normalizeCurvePoint(valuePoint);
|
|
866
|
+
if (!point)
|
|
867
|
+
return RGB_CURVE_IDENTITY;
|
|
868
|
+
points.push(point);
|
|
869
|
+
}
|
|
870
|
+
points.sort((a, b) => a[0] - b[0]);
|
|
871
|
+
if (hasDuplicateCurveInputs(points))
|
|
872
|
+
return RGB_CURVE_IDENTITY;
|
|
873
|
+
completeCurveEndpoints(points);
|
|
874
|
+
if (points.length > COLOR_GRADING_MAX_CURVE_POINTS)
|
|
875
|
+
return RGB_CURVE_IDENTITY;
|
|
876
|
+
return points;
|
|
877
|
+
}
|
|
878
|
+
function normalizeCurves(value) {
|
|
879
|
+
const curves = isRecord(value) ? value : {};
|
|
880
|
+
return HF_COLOR_GRADING_CURVE_KEYS.reduce((result, key) => {
|
|
881
|
+
result[key] = normalizeCurve(curves[key]);
|
|
882
|
+
return result;
|
|
883
|
+
}, {
|
|
884
|
+
master: RGB_CURVE_IDENTITY,
|
|
885
|
+
red: RGB_CURVE_IDENTITY,
|
|
886
|
+
green: RGB_CURVE_IDENTITY,
|
|
887
|
+
blue: RGB_CURVE_IDENTITY,
|
|
888
|
+
});
|
|
889
|
+
}
|
|
890
|
+
function normalizeHueCurvePoint(value, limit) {
|
|
891
|
+
if (!Array.isArray(value) || value.length !== 2)
|
|
892
|
+
return null;
|
|
893
|
+
const hue = Number(value[0]);
|
|
894
|
+
const delta = Number(value[1]);
|
|
895
|
+
return Number.isFinite(hue) && Number.isFinite(delta)
|
|
896
|
+
? [wrapDegrees(hue), clamp(delta, limit.min, limit.max)]
|
|
897
|
+
: null;
|
|
898
|
+
}
|
|
899
|
+
function normalizeHueCurve(value, limit) {
|
|
900
|
+
if (!Array.isArray(value) || value.length < 3 || value.length > COLOR_GRADING_MAX_CURVE_POINTS) {
|
|
901
|
+
return HUE_CURVE_IDENTITY;
|
|
902
|
+
}
|
|
903
|
+
const points = [];
|
|
904
|
+
for (const candidate of value) {
|
|
905
|
+
const point = normalizeHueCurvePoint(candidate, limit);
|
|
906
|
+
if (!point)
|
|
907
|
+
return HUE_CURVE_IDENTITY;
|
|
908
|
+
points.push(point);
|
|
909
|
+
}
|
|
910
|
+
points.sort((a, b) => a[0] - b[0]);
|
|
911
|
+
return hasDuplicateCurveInputs(points) ? HUE_CURVE_IDENTITY : points;
|
|
912
|
+
}
|
|
913
|
+
function normalizeHueCurves(value) {
|
|
914
|
+
const curves = isRecord(value) ? value : {};
|
|
915
|
+
return HF_COLOR_GRADING_HUE_CURVE_KEYS.reduce((result, key) => {
|
|
916
|
+
result[key] = normalizeHueCurve(curves[key], HUE_CURVE_LIMITS[key]);
|
|
917
|
+
return result;
|
|
918
|
+
}, {
|
|
919
|
+
hueVsHue: HUE_CURVE_IDENTITY,
|
|
920
|
+
hueVsSaturation: HUE_CURVE_IDENTITY,
|
|
921
|
+
hueVsLuma: HUE_CURVE_IDENTITY,
|
|
922
|
+
});
|
|
923
|
+
}
|
|
924
|
+
function normalizeSoftRange(value) {
|
|
925
|
+
const range = isRecord(value) ? value : {};
|
|
926
|
+
const first = readLimitedValue(range.min ?? SECONDARY_SOFT_RANGE_DEFAULT.min, UNIT_LIMIT);
|
|
927
|
+
const second = readLimitedValue(range.max ?? SECONDARY_SOFT_RANGE_DEFAULT.max, UNIT_LIMIT);
|
|
928
|
+
return {
|
|
929
|
+
min: Math.min(first, second),
|
|
930
|
+
max: Math.max(first, second),
|
|
931
|
+
softness: readLimitedValue(range.softness ?? SECONDARY_SOFT_RANGE_DEFAULT.softness, COLOR_GRADING_ADVANCED_LIMITS.secondarySoftRangeSoftness),
|
|
932
|
+
};
|
|
933
|
+
}
|
|
934
|
+
function normalizeSecondaryHue(value) {
|
|
935
|
+
const hue = isRecord(value) ? value : {};
|
|
936
|
+
const range = readLimitedValue(hue.range ?? SECONDARY_HUE_DEFAULT.range, COLOR_GRADING_ADVANCED_LIMITS.secondaryHueRange);
|
|
937
|
+
return {
|
|
938
|
+
center: wrapDegrees(hue.center, SECONDARY_HUE_DEFAULT.center),
|
|
939
|
+
range,
|
|
940
|
+
softness: readLimitedValue(hue.softness ?? SECONDARY_HUE_DEFAULT.softness, {
|
|
941
|
+
min: COLOR_GRADING_ADVANCED_LIMITS.secondaryHueSoftness.min,
|
|
942
|
+
max: COLOR_GRADING_ADVANCED_LIMITS.secondaryHueCombinedMax - range,
|
|
943
|
+
}),
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
function normalizeSecondaryCorrection(value) {
|
|
947
|
+
return {
|
|
948
|
+
hueShift: readLimitedValue(value.hueShift ?? 0, COLOR_GRADING_ADVANCED_LIMITS.secondaryHueShift),
|
|
949
|
+
saturation: readLimitedValue(value.saturation ?? 0, COLOR_GRADING_ADVANCED_LIMITS.signedUnit),
|
|
950
|
+
luma: readLimitedValue(value.luma ?? 0, COLOR_GRADING_ADVANCED_LIMITS.signedUnit),
|
|
951
|
+
temperature: readLimitedValue(value.temperature ?? 0, COLOR_GRADING_ADVANCED_LIMITS.signedUnit),
|
|
952
|
+
tint: readLimitedValue(value.tint ?? 0, COLOR_GRADING_ADVANCED_LIMITS.signedUnit),
|
|
953
|
+
};
|
|
954
|
+
}
|
|
955
|
+
function normalizeSecondary(value) {
|
|
956
|
+
if (!isRecord(value) || !isRecord(value.key) || !isRecord(value.correction))
|
|
957
|
+
return null;
|
|
958
|
+
return {
|
|
959
|
+
enabled: value.enabled !== false,
|
|
960
|
+
key: {
|
|
961
|
+
hue: normalizeSecondaryHue(value.key.hue),
|
|
962
|
+
saturation: normalizeSoftRange(value.key.saturation),
|
|
963
|
+
luma: normalizeSoftRange(value.key.luma),
|
|
964
|
+
},
|
|
965
|
+
correction: normalizeSecondaryCorrection(value.correction),
|
|
966
|
+
};
|
|
967
|
+
}
|
|
968
|
+
function normalizeSecondaries(value) {
|
|
969
|
+
if (!Array.isArray(value))
|
|
970
|
+
return [];
|
|
971
|
+
const result = [];
|
|
972
|
+
for (const candidate of value.slice(0, COLOR_GRADING_MAX_SECONDARIES)) {
|
|
973
|
+
const secondary = normalizeSecondary(candidate);
|
|
974
|
+
if (secondary)
|
|
975
|
+
result.push(secondary);
|
|
976
|
+
}
|
|
977
|
+
return result;
|
|
978
|
+
}
|
|
581
979
|
function normalizePresetId(value) {
|
|
582
980
|
if (value == null)
|
|
583
981
|
return null;
|
|
@@ -641,6 +1039,9 @@ export function resolveHfColorGradingVariables(raw, variables) {
|
|
|
641
1039
|
return raw;
|
|
642
1040
|
}
|
|
643
1041
|
}
|
|
1042
|
+
if (Array.isArray(raw)) {
|
|
1043
|
+
return raw.map((value) => resolveHfColorGradingVariables(value, variables));
|
|
1044
|
+
}
|
|
644
1045
|
if (!isRecord(raw))
|
|
645
1046
|
return raw;
|
|
646
1047
|
const resolved = {};
|
|
@@ -685,6 +1086,10 @@ export function normalizeHfColorGrading(raw) {
|
|
|
685
1086
|
preset: presetId,
|
|
686
1087
|
intensity: clampUnit(grading.intensity, preset?.intensity ?? 1),
|
|
687
1088
|
adjust,
|
|
1089
|
+
wheels: normalizeWheels(grading.wheels),
|
|
1090
|
+
curves: normalizeCurves(grading.curves),
|
|
1091
|
+
hueCurves: normalizeHueCurves(grading.hueCurves),
|
|
1092
|
+
secondaries: normalizeSecondaries(grading.secondaries),
|
|
688
1093
|
details,
|
|
689
1094
|
effects,
|
|
690
1095
|
palette: normalizePalette(grading.palette),
|
|
@@ -697,12 +1102,34 @@ export function normalizeHfColorGrading(raw) {
|
|
|
697
1102
|
export function normalizeHfColorGradingWithVariables(raw, variables) {
|
|
698
1103
|
return normalizeHfColorGrading(resolveHfColorGradingVariables(raw, variables));
|
|
699
1104
|
}
|
|
1105
|
+
function hasWheelGrade(wheels) {
|
|
1106
|
+
return HF_COLOR_GRADING_WHEEL_KEYS.some((key) => Math.abs(wheels[key].amount) > 0.0001 || Math.abs(wheels[key].level) > 0.0001);
|
|
1107
|
+
}
|
|
1108
|
+
export function hasHfColorGradingRgbCurveValues(curves) {
|
|
1109
|
+
return HF_COLOR_GRADING_CURVE_KEYS.some((key) => curves[key].some(([input, output]) => Math.abs(input - output) > 0.0001));
|
|
1110
|
+
}
|
|
1111
|
+
export function hasHfColorGradingHueCurveValues(curves) {
|
|
1112
|
+
return HF_COLOR_GRADING_HUE_CURVE_KEYS.some((key) => curves[key].some(([, delta]) => Math.abs(delta) > 0.0001));
|
|
1113
|
+
}
|
|
1114
|
+
export function hasHfColorGradingSecondaryValues(secondaries) {
|
|
1115
|
+
return secondaries.some((secondary) => secondary.enabled &&
|
|
1116
|
+
Object.values(secondary.correction).some((value) => Math.abs(value) > 0.0001));
|
|
1117
|
+
}
|
|
700
1118
|
export function serializeHfColorGrading(grading) {
|
|
701
1119
|
const normalized = normalizeHfColorGrading(grading);
|
|
702
1120
|
if (!normalized)
|
|
703
1121
|
return "";
|
|
704
|
-
const { enabled: _enabled, palette, ...serializable } = normalized;
|
|
705
|
-
return JSON.stringify(
|
|
1122
|
+
const { enabled: _enabled, wheels, curves, hueCurves, secondaries, palette, ...serializable } = normalized;
|
|
1123
|
+
return JSON.stringify({
|
|
1124
|
+
...serializable,
|
|
1125
|
+
...(hasWheelGrade(wheels) ? { wheels } : {}),
|
|
1126
|
+
...(hasHfColorGradingRgbCurveValues(curves) ? { curves } : {}),
|
|
1127
|
+
...(hasHfColorGradingHueCurveValues(hueCurves) ? { hueCurves } : {}),
|
|
1128
|
+
// Preserve a keyed secondary even before it changes pixels so Studio and
|
|
1129
|
+
// CLI can author its qualifier and correction in separate transactions.
|
|
1130
|
+
...(secondaries.length > 0 ? { secondaries } : {}),
|
|
1131
|
+
...(palette ? { palette } : {}),
|
|
1132
|
+
});
|
|
706
1133
|
}
|
|
707
1134
|
export function isHfColorGradingActive(grading) {
|
|
708
1135
|
if (!grading?.enabled)
|
|
@@ -716,6 +1143,17 @@ export function isHfColorGradingActive(grading) {
|
|
|
716
1143
|
return false;
|
|
717
1144
|
if (grading.lut && grading.lut.intensity !== 0)
|
|
718
1145
|
return true;
|
|
719
|
-
return HF_COLOR_GRADING_ADJUST_KEYS.some((key) => Math.abs(grading.adjust[key]) > 0.0001)
|
|
1146
|
+
return (HF_COLOR_GRADING_ADJUST_KEYS.some((key) => Math.abs(grading.adjust[key]) > 0.0001) ||
|
|
1147
|
+
(grading.wheels ? hasWheelGrade(grading.wheels) : false) ||
|
|
1148
|
+
(grading.curves ? hasHfColorGradingRgbCurveValues(grading.curves) : false) ||
|
|
1149
|
+
(grading.hueCurves ? hasHfColorGradingHueCurveValues(grading.hueCurves) : false) ||
|
|
1150
|
+
(grading.secondaries ? hasHfColorGradingSecondaryValues(grading.secondaries) : false));
|
|
1151
|
+
}
|
|
1152
|
+
export function hasHfColorGradingAuthoredValues(grading) {
|
|
1153
|
+
if (!grading)
|
|
1154
|
+
return false;
|
|
1155
|
+
if (grading.secondaries?.length)
|
|
1156
|
+
return true;
|
|
1157
|
+
return isHfColorGradingActive(grading);
|
|
720
1158
|
}
|
|
721
1159
|
//# sourceMappingURL=colorGrading.js.map
|