1- import { toZero , is2DMatrix , identity } from './utils.js' ;
1+ import { is2DMatrix , identity } from './utils.js' ;
22import { EnumToken } from '../types.js' ;
33import { eq } from '../../parser/utils/eq.js' ;
44import { getNumber } from '../../syntax/color/color.js' ;
@@ -30,38 +30,38 @@ function parseMatrix(mat) {
3030function matrix ( values ) {
3131 const matrix = identity ( ) ;
3232 if ( values . length === 6 ) {
33- matrix [ 0 ] [ 0 ] = values [ 0 ] ;
34- matrix [ 0 ] [ 1 ] = values [ 1 ] ;
35- matrix [ 1 ] [ 0 ] = values [ 2 ] ;
36- matrix [ 1 ] [ 1 ] = values [ 3 ] ;
37- matrix [ 3 ] [ 0 ] = values [ 4 ] ;
38- matrix [ 3 ] [ 1 ] = values [ 5 ] ;
33+ matrix [ 0 * 4 + 0 ] = values [ 0 ] ;
34+ matrix [ 0 * 4 + 1 ] = values [ 1 ] ;
35+ matrix [ 1 * 4 + 0 ] = values [ 2 ] ;
36+ matrix [ 1 * 4 + 1 ] = values [ 3 ] ;
37+ matrix [ 3 * 4 + 0 ] = values [ 4 ] ;
38+ matrix [ 3 * 4 + 1 ] = values [ 5 ] ;
3939 }
4040 else if ( values . length === 16 ) {
41- matrix [ 0 ] [ 0 ] = values [ 0 ] ;
42- matrix [ 0 ] [ 1 ] = values [ 1 ] ;
43- matrix [ 0 ] [ 2 ] = values [ 2 ] ;
44- matrix [ 0 ] [ 3 ] = values [ 3 ] ;
45- matrix [ 1 ] [ 0 ] = values [ 4 ] ;
46- matrix [ 1 ] [ 1 ] = values [ 5 ] ;
47- matrix [ 1 ] [ 2 ] = values [ 6 ] ;
48- matrix [ 1 ] [ 3 ] = values [ 7 ] ;
49- matrix [ 2 ] [ 0 ] = values [ 8 ] ;
50- matrix [ 2 ] [ 1 ] = values [ 9 ] ;
51- matrix [ 2 ] [ 2 ] = values [ 10 ] ;
52- matrix [ 2 ] [ 3 ] = values [ 11 ] ;
53- matrix [ 3 ] [ 0 ] = values [ 12 ] ;
54- matrix [ 3 ] [ 1 ] = values [ 13 ] ;
55- matrix [ 3 ] [ 2 ] = values [ 14 ] ;
56- matrix [ 3 ] [ 3 ] = values [ 15 ] ;
41+ matrix [ 0 * 4 + 0 ] = values [ 0 ] ;
42+ matrix [ 0 * 4 + 1 ] = values [ 1 ] ;
43+ matrix [ 0 * 4 + 2 ] = values [ 2 ] ;
44+ matrix [ 0 * 4 + 3 ] = values [ 3 ] ;
45+ matrix [ 1 * 4 + 0 ] = values [ 4 ] ;
46+ matrix [ 1 * 4 + 1 ] = values [ 5 ] ;
47+ matrix [ 1 * 4 + 2 ] = values [ 6 ] ;
48+ matrix [ 1 * 4 + 3 ] = values [ 7 ] ;
49+ matrix [ 2 * 4 + 0 ] = values [ 8 ] ;
50+ matrix [ 2 * 4 + 1 ] = values [ 9 ] ;
51+ matrix [ 2 * 4 + 2 ] = values [ 10 ] ;
52+ matrix [ 2 * 4 + 3 ] = values [ 11 ] ;
53+ matrix [ 3 * 4 + 0 ] = values [ 12 ] ;
54+ matrix [ 3 * 4 + 1 ] = values [ 13 ] ;
55+ matrix [ 3 * 4 + 2 ] = values [ 14 ] ;
56+ matrix [ 3 * 4 + 3 ] = values [ 15 ] ;
5757 }
5858 else {
5959 return null ;
6060 }
6161 return matrix ;
6262}
6363function serialize ( matrix ) {
64- matrix = matrix . map ( t => toZero ( t . slice ( ) ) ) ;
64+ matrix = matrix . slice ( ) ;
6565 // @ts -ignore
6666 if ( eq ( matrix , identity ( ) ) ) {
6767 return {
@@ -75,12 +75,12 @@ function serialize(matrix) {
7575 typ : EnumToken . FunctionTokenType ,
7676 val : 'matrix' ,
7777 chi : [
78- matrix [ 0 ] [ 0 ] ,
79- matrix [ 0 ] [ 1 ] ,
80- matrix [ 1 ] [ 0 ] ,
81- matrix [ 1 ] [ 1 ] ,
82- matrix [ 3 ] [ 0 ] ,
83- matrix [ 3 ] [ 1 ]
78+ matrix [ 0 * 4 + 0 ] ,
79+ matrix [ 0 * 4 + 1 ] ,
80+ matrix [ 1 * 4 + 0 ] ,
81+ matrix [ 1 * 4 + 1 ] ,
82+ matrix [ 3 * 4 + 0 ] ,
83+ matrix [ 3 * 4 + 1 ]
8484 ] . reduce ( ( acc , t ) => {
8585 if ( acc . length > 0 ) {
8686 acc . push ( { typ : EnumToken . CommaTokenType } ) ;
@@ -96,7 +96,7 @@ function serialize(matrix) {
9696 return {
9797 typ : EnumToken . FunctionTokenType ,
9898 val : 'matrix3d' ,
99- chi : matrix . flat ( ) . reduce ( ( acc , curr ) => {
99+ chi : matrix . reduce ( ( acc , curr ) => {
100100 if ( acc . length > 0 ) {
101101 acc . push ( { typ : EnumToken . CommaTokenType } ) ;
102102 }
0 commit comments