modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java

Print this page

        

*** 1679,1691 **** * that the fill never looks scaled. For example, a tile-imaged based background will look stretched * if we were to render a scaled shape. Instead, we produce a new shape based on the scaled size and * then fill that shape without additional transforms. */ private Shape resizeShape(float topOffset, float rightOffset, float bottomOffset, float leftOffset) { // The bounds of the shape, before any centering / scaling takes place final RectBounds bounds = shape.getBounds(); ! if (scaleShape) { // First we need to modify the transform to scale the shape so that it will fit // within the insets. SCRATCH_AFFINE.setToIdentity(); SCRATCH_AFFINE.translate(leftOffset, topOffset); // width & height are the width and height of the region. w & h are the width and height --- 1679,1697 ---- * that the fill never looks scaled. For example, a tile-imaged based background will look stretched * if we were to render a scaled shape. Instead, we produce a new shape based on the scaled size and * then fill that shape without additional transforms. */ private Shape resizeShape(float topOffset, float rightOffset, float bottomOffset, float leftOffset) { + return resizeShape(shape, scaleShape, centerShape, width, height, topOffset, rightOffset, bottomOffset, leftOffset); + } + + public static Shape resizeShape(Shape shape, boolean scale, boolean center, + float width, float height, + float topOffset, float rightOffset, float bottomOffset, float leftOffset) { // The bounds of the shape, before any centering / scaling takes place final RectBounds bounds = shape.getBounds(); ! if (scale) { // First we need to modify the transform to scale the shape so that it will fit // within the insets. SCRATCH_AFFINE.setToIdentity(); SCRATCH_AFFINE.translate(leftOffset, topOffset); // width & height are the width and height of the region. w & h are the width and height
*** 1693,1707 **** final float w = width - leftOffset - rightOffset; final float h = height - topOffset - bottomOffset; SCRATCH_AFFINE.scale(w / bounds.getWidth(), h / bounds.getHeight()); // If we also need to center it, we need to adjust the transform so as to place // the shape in the center of the bounds ! if (centerShape) { SCRATCH_AFFINE.translate(-bounds.getMinX(), -bounds.getMinY()); } return SCRATCH_AFFINE.createTransformedShape(shape); ! } else if (centerShape) { // We are only centering. In this case, what we want is for the // original shape to be centered. If there are offsets (insets) // then we must pre-scale about the center to account for it. final float boundsWidth = bounds.getWidth(); final float boundsHeight = bounds.getHeight(); --- 1699,1713 ---- final float w = width - leftOffset - rightOffset; final float h = height - topOffset - bottomOffset; SCRATCH_AFFINE.scale(w / bounds.getWidth(), h / bounds.getHeight()); // If we also need to center it, we need to adjust the transform so as to place // the shape in the center of the bounds ! if (center) { SCRATCH_AFFINE.translate(-bounds.getMinX(), -bounds.getMinY()); } return SCRATCH_AFFINE.createTransformedShape(shape); ! } else if (center) { // We are only centering. In this case, what we want is for the // original shape to be centered. If there are offsets (insets) // then we must pre-scale about the center to account for it. final float boundsWidth = bounds.getWidth(); final float boundsHeight = bounds.getHeight();