diff options
Diffstat (limited to 'src/nativewindow')
5 files changed, 28 insertions, 26 deletions
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java index efe9409ac..d235a2a29 100644 --- a/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java +++ b/src/nativewindow/classes/com/jogamp/nativewindow/awt/JAWTWindow.java @@ -277,14 +277,17 @@ public abstract class JAWTWindow implements NativeWindow, OffscreenLayerSurface, * </p> */ @Override - public void setSurfaceScale(final int[] pixelScale) { + public int[] setSurfaceScale(final int[] result, final int[] pixelScale) { SurfaceScaleUtils.validateReqPixelScale(reqPixelScale, pixelScale, DEBUG ? getClass().getSimpleName() : null); + if( null != result ) { + System.arraycopy(reqPixelScale, 0, result, 0, 2); + } + return result; } @Override public final int[] getSurfaceScale(final int[] result) { - // 0 != drawable -> locked at least once ! - System.arraycopy(0 != drawable ? hasPixelScale : reqPixelScale, 0, result, 0, 2); + System.arraycopy(hasPixelScale, 0, result, 0, 2); return result; } diff --git a/src/nativewindow/classes/javax/media/nativewindow/ScalableSurface.java b/src/nativewindow/classes/javax/media/nativewindow/ScalableSurface.java index 024f22bc9..f6101034b 100644 --- a/src/nativewindow/classes/javax/media/nativewindow/ScalableSurface.java +++ b/src/nativewindow/classes/javax/media/nativewindow/ScalableSurface.java @@ -30,7 +30,7 @@ package javax.media.nativewindow; /** * Adding mutable surface pixel scale property to implementing class, usually to a {@link NativeSurface} implementation, - * see {@link #setSurfaceScale(int[])}. + * see {@link #setSurfaceScale(int[], int[])}. */ public interface ScalableSurface { /** Setting surface-pixel-scale of {@value}, results in same pixel- and window-units. */ @@ -39,7 +39,8 @@ public interface ScalableSurface { public static final int AUTOMAX_PIXELSCALE = 0; /** - * Request a pixel scale in x- and y-direction for the associated {@link NativeSurface}. + * Request a pixel scale in x- and y-direction for the associated {@link NativeSurface} + * and return the validated requested value, see below. * <p> * Default pixel scale request for both directions is {@link #AUTOMAX_PIXELSCALE}. * </p> @@ -49,31 +50,24 @@ public interface ScalableSurface { * </p> * <p> * The <i>requested</i> pixel scale will be validated against platform limits before native scale-setup, - * i.e. clipped to {@link #IDENTITY_PIXELSCALE} if not supported or the platform maximum. + * i.e. clipped to {@link #IDENTITY_PIXELSCALE} if not supported or clipped to the platform maximum. * </p> * <p> * The actual <i>realized</i> pixel scale values of the {@link NativeSurface} * can be queried via {@link #getSurfaceScale(int[])} or * computed via <code>surface.{@link NativeSurface#convertToPixelUnits(int[]) convertToPixelUnits}(new int[] { 1, 1 })</code> * </p> - * + * @param result int[2] storage for the result, maybe null * @param pixelScale <i>requested</i> surface pixel scale int[2] values for x- and y-direction. + * @return the passed storage containing the validated requested pixelSize for chaining, if storage is not null */ - public void setSurfaceScale(final int[] pixelScale); + public int[] setSurfaceScale(final int[] result, final int[] pixelScale); /** - * Returns the pixel scale of the associated {@link NativeSurface}. - * <p> - * In case the {@link NativeSurface} is not yet realized, method returns the - * requested pixel scale as validated via {@link #setSurfaceScale(int[])} - * if called earlier or the implementation default, usually {@link #AUTOMAX_PIXELSCALE}. - * </p> - * <p> - * In case the {@link NativeSurface} is already realized, method returns the - * actual used pixel scale. - * </p> + * Returns the current pixel scale of the associated {@link NativeSurface}. + * * @param result int[2] storage for the result - * @return the passed storage for chaining + * @return the passed storage containing the current pixelSize for chaining */ public int[] getSurfaceScale(final int[] result); } diff --git a/src/nativewindow/classes/jogamp/nativewindow/SurfaceScaleUtils.java b/src/nativewindow/classes/jogamp/nativewindow/SurfaceScaleUtils.java index 22e67ecff..4586812e1 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/SurfaceScaleUtils.java +++ b/src/nativewindow/classes/jogamp/nativewindow/SurfaceScaleUtils.java @@ -95,7 +95,7 @@ public class SurfaceScaleUtils { * Validate the given requested pixelScale value pair, i.e. clip it to the * limits of {@link ScalableSurface#AUTOMAX_PIXELSCALE} and {@link #getPlatformMaxPixelScale(int[])} * <p> - * To be used by {@link ScalableSurface#setSurfaceScale(int[])} implementations. + * To be used by {@link ScalableSurface#setSurfaceScale(int[], int[])} implementations. * </p> * * @param result int[2] storage for result diff --git a/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java b/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java index 1a8772988..96862cbd6 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java +++ b/src/nativewindow/classes/jogamp/nativewindow/WrappedSurface.java @@ -104,7 +104,7 @@ public class WrappedSurface extends ProxySurfaceImpl implements ScalableSurface /** * {@inheritDoc} * <p> - * {@link WrappedSurface}'s implementation uses the {@link #setSurfaceScale(int[]) given pixelScale} directly. + * {@link WrappedSurface}'s implementation uses the {@link #setSurfaceScale(int[], int[]) given pixelScale} directly. * </p> */ @Override @@ -117,7 +117,7 @@ public class WrappedSurface extends ProxySurfaceImpl implements ScalableSurface /** * {@inheritDoc} * <p> - * {@link WrappedSurface}'s implementation uses the {@link #setSurfaceScale(int[]) given pixelScale} directly. + * {@link WrappedSurface}'s implementation uses the {@link #setSurfaceScale(int[], int[]) given pixelScale} directly. * </p> */ @Override @@ -147,9 +147,13 @@ public class WrappedSurface extends ProxySurfaceImpl implements ScalableSurface * </p> */ @Override - public final void setSurfaceScale(final int[] pixelScale) { + public final int[] setSurfaceScale(final int[] result, final int[] pixelScale) { hasPixelScale[0] = pixelScale[0]; hasPixelScale[1] = pixelScale[1]; + if( null != result ) { + System.arraycopy(hasPixelScale, 0, result, 0, 2); + } + return result; } @Override diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java index 3d88049b2..695fdac88 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java @@ -114,9 +114,9 @@ public class MacOSXJAWTWindow extends JAWTWindow implements MutableSurface { } @Override - public void setSurfaceScale(final int[] pixelScale) { - super.setSurfaceScale(pixelScale); - if( 0 != drawable ) { // locked at least once ! + public int[] setSurfaceScale(final int[] result, final int[] pixelScale) { + super.setSurfaceScale(result, pixelScale); + if( 0 != getWindowHandle() ) { // locked at least once ! final int hadPixelScaleX = getPixelScaleX(); updatePixelScale(); @@ -132,6 +132,7 @@ public class MacOSXJAWTWindow extends JAWTWindow implements MutableSurface { }); } } + return result; } @Override |