fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 2.96 kB
Source Map (JSON)
{"version":3,"file":"HueRotation.min.mjs","names":[],"sources":["../../../src/filters/HueRotation.ts"],"sourcesContent":["import { cos } from '../util/misc/cos';\nimport { sin } from '../util/misc/sin';\nimport {\n ColorMatrix,\n type ColorMatrixOwnProps,\n colorMatrixDefaultValues,\n} from './ColorMatrix';\nimport type { TWebGLPipelineState, T2DPipelineState } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\n\nexport type HueRotationOwnProps = ColorMatrixOwnProps & {\n rotation: number;\n};\n\nexport type HueRotationSerializedProps = {\n rotation: number;\n};\n\nexport const hueRotationDefaultValues: HueRotationOwnProps = {\n ...colorMatrixDefaultValues,\n rotation: 0,\n};\n\n/**\n * HueRotation filter class\n * @example\n * const filter = new HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class HueRotation extends ColorMatrix<\n 'HueRotation',\n HueRotationOwnProps,\n HueRotationSerializedProps\n> {\n /**\n * HueRotation value, from -1 to 1.\n */\n declare rotation: HueRotationOwnProps['rotation'];\n\n static type = 'HueRotation';\n\n static defaults = hueRotationDefaultValues;\n\n calculateMatrix() {\n const rad = this.rotation * Math.PI,\n cosine = cos(rad),\n sine = sin(rad),\n aThird = 1 / 3,\n aThirdSqtSin = Math.sqrt(aThird) * sine,\n OneMinusCos = 1 - cosine;\n this.matrix = [\n cosine + OneMinusCos / 3,\n aThird * OneMinusCos - aThirdSqtSin,\n aThird * OneMinusCos + aThirdSqtSin,\n 0,\n 0,\n aThird * OneMinusCos + aThirdSqtSin,\n cosine + aThird * OneMinusCos,\n aThird * OneMinusCos - aThirdSqtSin,\n 0,\n 0,\n aThird * OneMinusCos - aThirdSqtSin,\n aThird * OneMinusCos + aThirdSqtSin,\n cosine + aThird * OneMinusCos,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n ];\n }\n\n isNeutralState() {\n return this.rotation === 0;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n this.calculateMatrix();\n super.applyTo(options);\n }\n\n toObject() {\n return {\n type: this.type,\n rotation: this.rotation,\n };\n }\n}\n\nclassRegistry.setClass(HueRotation);\n"],"mappings":"uVAkBA,MAAa,EAAgD,CAAA,GACxD,EACH,SAAU,EAAA,CAYZ,IAAa,EAAb,cAAiC,CAAA,CAc/B,iBAAA,CACE,IAAM,EAAM,KAAK,SAAW,KAAK,GAC/B,EAAS,EAAI,EAAA,CACb,EAAO,EAAI,EAAA,CACX,EAAS,EAAI,EACb,EAAe,KAAK,KAAK,EAAA,CAAU,EACnC,EAAc,EAAI,EACpB,KAAK,OAAS,CACZ,EAAS,EAAc,EACvB,EAAS,EAAc,EACvB,EAAS,EAAc,EACvB,EACA,EACA,EAAS,EAAc,EACvB,EAAS,EAAS,EAClB,EAAS,EAAc,EACvB,EACA,EACA,EAAS,EAAc,EACvB,EAAS,EAAc,EACvB,EAAS,EAAS,EAClB,EACA,EACA,EACA,EACA,EACA,EACA,EAAA,CAIJ,gBAAA,CACE,OAAO,KAAK,WAAa,EAG3B,QAAQ,EAAA,CACN,KAAK,iBAAA,CACL,MAAM,QAAQ,EAAA,CAGhB,UAAA,CACE,MAAO,CACL,KAAM,KAAK,KACX,SAAU,KAAK,SAAA,GAAA,EAAA,EA/CZ,OAAO,cAAA,CAAA,EAAA,EAEP,WAAW,EAAA,CAkDpB,EAAc,SAAS,EAAA,CAAA,OAAA,KAAA"}