@@ -339,20 +339,27 @@ class CanvasExtraState {
339339 return clone ;
340340 }
341341
342- updateRectMinMax ( transform , rect ) {
343- const p1 = [ rect [ 0 ] , rect [ 1 ] ] ;
344- Util . applyTransform ( p1 , transform ) ;
345- const p2 = [ rect [ 2 ] , rect [ 3 ] ] ;
346- Util . applyTransform ( p2 , transform ) ;
347- const p3 = [ rect [ 0 ] , rect [ 3 ] ] ;
348- Util . applyTransform ( p3 , transform ) ;
349- const p4 = [ rect [ 2 ] , rect [ 1 ] ] ;
350- Util . applyTransform ( p4 , transform ) ;
351-
352- this . minX = Math . min ( this . minX , p1 [ 0 ] , p2 [ 0 ] , p3 [ 0 ] , p4 [ 0 ] ) ;
353- this . minY = Math . min ( this . minY , p1 [ 1 ] , p2 [ 1 ] , p3 [ 1 ] , p4 [ 1 ] ) ;
354- this . maxX = Math . max ( this . maxX , p1 [ 0 ] , p2 [ 0 ] , p3 [ 0 ] , p4 [ 0 ] ) ;
355- this . maxY = Math . max ( this . maxY , p1 [ 1 ] , p2 [ 1 ] , p3 [ 1 ] , p4 [ 1 ] ) ;
342+ updateRectMinMax ( [ m0 , m1 , m2 , m3 , m4 , m5 ] , [ r0 , r1 , r2 , r3 ] ) {
343+ const m0r0m4 = m0 * r0 + m4 ;
344+ const m0r2m4 = m0 * r2 + m4 ;
345+ const m1r0m5 = m1 * r0 + m5 ;
346+ const m1r2m5 = m1 * r2 + m5 ;
347+ const m2r1 = m2 * r1 ;
348+ const m2r3 = m2 * r3 ;
349+ const m3r1 = m3 * r1 ;
350+ const m3r3 = m3 * r3 ;
351+ const a0 = m0r0m4 + m2r1 ;
352+ const a1 = m0r2m4 + m2r3 ;
353+ const a2 = m0r0m4 + m2r3 ;
354+ const a3 = m0r2m4 + m2r1 ;
355+ const b0 = m1r0m5 + m3r1 ;
356+ const b1 = m1r2m5 + m3r3 ;
357+ const b2 = m1r0m5 + m3r3 ;
358+ const b3 = m1r2m5 + m3r1 ;
359+ this . minX = Math . min ( this . minX , a0 , a1 , a2 , a3 ) ;
360+ this . maxX = Math . max ( this . maxX , a0 , a1 , a2 , a3 ) ;
361+ this . minY = Math . min ( this . minY , b0 , b1 , b2 , b3 ) ;
362+ this . maxY = Math . max ( this . maxY , b0 , b1 , b2 , b3 ) ;
356363 }
357364
358365 getPathBoundingBox ( pathType = PathType . FILL , transform = null ) {
@@ -2275,7 +2282,7 @@ class CanvasGraphics {
22752282 this . baseTransform = getCurrentTransform ( this . ctx ) ;
22762283
22772284 if ( bbox ) {
2278- this . current . updateRectMinMax ( getCurrentTransform ( this . ctx ) , bbox ) ;
2285+ this . current . updateRectMinMax ( this . baseTransform , bbox ) ;
22792286 const [ x0 , y0 , x1 , y1 ] = bbox ;
22802287 const clip = new Path2D ( ) ;
22812288 clip . rect ( x0 , y0 , x1 - x0 , y1 - y0 ) ;
0 commit comments