< prev index next >
src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java
Print this page
*** 242,252 ****
public Region clipRegion;
public Shape usrClip;
protected Region devClip; // Actual physical drawable in pixels
- private final int devScale; // Actual physical scale factor
private int resolutionVariantHint;
// cached state for text rendering
private boolean validFontInfo;
private FontInfo fontInfo;
--- 242,251 ----
*** 266,277 ****
public SunGraphics2D(SurfaceData sd, Color fg, Color bg, Font f) {
surfaceData = sd;
foregroundColor = fg;
backgroundColor = bg;
-
- transform = new AffineTransform();
stroke = defaultStroke;
composite = defaultComposite;
paint = foregroundColor;
imageComp = CompositeType.SrcOverNoEa;
--- 265,274 ----
*** 285,311 ****
strokeHint = SunHints.INTVAL_STROKE_DEFAULT;
resolutionVariantHint = SunHints.INTVAL_RESOLUTION_VARIANT_DEFAULT;
interpolationType = AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
! validateColor();
!
! devScale = sd.getDefaultScale();
! if (devScale != 1) {
! transform.setToScale(devScale, devScale);
invalidateTransform();
}
font = f;
if (font == null) {
font = defaultFont;
}
setDevClip(sd.getBounds());
invalidatePipe();
}
protected Object clone() {
try {
SunGraphics2D g = (SunGraphics2D) super.clone();
g.transform = new AffineTransform(this.transform);
if (hints != null) {
--- 282,316 ----
strokeHint = SunHints.INTVAL_STROKE_DEFAULT;
resolutionVariantHint = SunHints.INTVAL_RESOLUTION_VARIANT_DEFAULT;
interpolationType = AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
! transform = getDefaultTransform();
! if (!transform.isIdentity()) {
invalidateTransform();
}
+ validateColor();
+
font = f;
if (font == null) {
font = defaultFont;
}
setDevClip(sd.getBounds());
invalidatePipe();
}
+ private AffineTransform getDefaultTransform() {
+ GraphicsConfiguration gc = getDeviceConfiguration();
+ if (gc == null) {
+ return new AffineTransform();
+ }
+ AffineTransform gcTx = gc.getDefaultTransform();
+ return gcTx != null ? gcTx : new AffineTransform();
+ }
+
protected Object clone() {
try {
SunGraphics2D g = (SunGraphics2D) super.clone();
g.transform = new AffineTransform(this.transform);
if (hints != null) {
*** 1608,1622 ****
* @see TransformChain
* @see AffineTransform
*/
@Override
public void setTransform(AffineTransform Tx) {
! if ((constrainX | constrainY) == 0 && devScale == 1) {
transform.setTransform(Tx);
} else {
! transform.setTransform(devScale, 0, 0, devScale, constrainX,
! constrainY);
transform.concatenate(Tx);
}
invalidateTransform();
}
--- 1613,1626 ----
* @see TransformChain
* @see AffineTransform
*/
@Override
public void setTransform(AffineTransform Tx) {
! if ((constrainX | constrainY) == 0) {
transform.setTransform(Tx);
} else {
! transform.setToTranslation(constrainX, constrainY);
transform.concatenate(Tx);
}
invalidateTransform();
}
*** 1672,1688 ****
* @see #transform
* @see #setTransform
*/
@Override
public AffineTransform getTransform() {
! if ((constrainX | constrainY) == 0 && devScale == 1) {
return new AffineTransform(transform);
}
! final double invScale = 1.0 / devScale;
! AffineTransform tx = new AffineTransform(invScale, 0, 0, invScale,
! -constrainX * invScale,
! -constrainY * invScale);
tx.concatenate(transform);
return tx;
}
/**
--- 1676,1690 ----
* @see #transform
* @see #setTransform
*/
@Override
public AffineTransform getTransform() {
! if ((constrainX | constrainY) == 0) {
return new AffineTransform(transform);
}
! AffineTransform tx
! = AffineTransform.getTranslateInstance(-constrainX, -constrainY);
tx.concatenate(transform);
return tx;
}
/**
< prev index next >