2222
2323import org .verapdf .cos .COSArray ;
2424import org .verapdf .cos .COSBase ;
25+ import org .verapdf .cos .COSObject ;
2526import org .verapdf .wcag .algorithms .entities .geometry .BoundingBox ;
2627import org .verapdf .wcag .algorithms .entities .geometry .Vertex ;
2728
2829import java .util .ArrayList ;
2930import java .util .Arrays ;
3031import java .util .List ;
32+ import java .util .logging .Level ;
33+ import java .util .logging .Logger ;
3134
3235/**
3336 * @author Maxim Plushchov
3437 */
3538public class Matrix implements Cloneable {
39+ private static final Logger LOGGER = Logger .getLogger (Matrix .class .getCanonicalName ());
3640
3741 private static final int SIZE = 6 ;
3842 private double [] matrixArray ;
@@ -47,22 +51,30 @@ public Matrix(double[] src) {
4751
4852 public Matrix (COSArray array ) {
4953 matrixArray = new double [SIZE ];
50- matrixArray [0 ] = array .at (0 ).getReal ();
51- matrixArray [1 ] = array .at (1 ).getReal ();
52- matrixArray [2 ] = array .at (2 ).getReal ();
53- matrixArray [3 ] = array .at (3 ).getReal ();
54- matrixArray [4 ] = array .at (4 ).getReal ();
55- matrixArray [5 ] = array .at (5 ).getReal ();
54+ for (int i = 0 ; i < SIZE ; i ++) {
55+ COSObject arg = array .at (i );
56+ Double d = (arg != null ) ? arg .getReal () : null ;
57+ if (d == null ) {
58+ matrixArray = new double [] {1 , 0 , 0 , 1 , 0 , 0 };
59+ LOGGER .log (Level .WARNING ,"Invalid matrix value. Defaulting to matrix [1,0,0,1,0,0]." );
60+ return ;
61+ }
62+ matrixArray [i ] = d ;
63+ }
5664 }
5765
5866 public Matrix (List <COSBase > arguments ) {
59- matrixArray = new double [SIZE ];
60- matrixArray [0 ] = arguments .get (0 ).getReal ();
61- matrixArray [1 ] = arguments .get (1 ).getReal ();
62- matrixArray [2 ] = arguments .get (2 ).getReal ();
63- matrixArray [3 ] = arguments .get (3 ).getReal ();
64- matrixArray [4 ] = arguments .get (4 ).getReal ();
65- matrixArray [5 ] = arguments .get (5 ).getReal ();
67+ matrixArray = new double [SIZE ];
68+ for (int i = 0 ; i < SIZE ; i ++) {
69+ COSBase arg = arguments .get (i );
70+ Double d = (arg != null ) ? arg .getReal () : null ;
71+ if (d == null ) {
72+ matrixArray = new double [] {1 , 0 , 0 , 1 , 0 , 0 };
73+ LOGGER .log (Level .WARNING ,"Invalid matrix value. Defaulting to matrix [1,0,0,1,0,0]." );
74+ return ;
75+ }
76+ matrixArray [i ] = d ;
77+ }
6678 }
6779
6880 public Matrix (double a , double b , double c , double d , double e , double f ) {
0 commit comments