Merge
This commit is contained in:
commit
c52c77ca91
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -608,6 +608,13 @@ public class OSXOffScreenSurfaceData extends OSXSurfaceData // implements Raster
|
|||||||
fImageInfoInt.put(kNeedToSyncFromJavaPixelsIndex, 1); // the pixels will change
|
fImageInfoInt.put(kNeedToSyncFromJavaPixelsIndex, 1); // the pixels will change
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void syncFromCustom() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncToCustom() {
|
||||||
|
|
||||||
|
}
|
||||||
// /**
|
// /**
|
||||||
// * Invoked when the raster's contents will be taken (via the Raster.getDataBuffer() method)
|
// * Invoked when the raster's contents will be taken (via the Raster.getDataBuffer() method)
|
||||||
// */
|
// */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -34,9 +34,6 @@
|
|||||||
#import <JavaNativeFoundation/JavaNativeFoundation.h>
|
#import <JavaNativeFoundation/JavaNativeFoundation.h>
|
||||||
|
|
||||||
#import "BufImgSurfaceData.h"
|
#import "BufImgSurfaceData.h"
|
||||||
#import "ThreadUtilities.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//#define DEBUG 1
|
//#define DEBUG 1
|
||||||
#if defined DEBUG
|
#if defined DEBUG
|
||||||
@ -195,10 +192,9 @@ IMAGE_SURFACE_INLINE void customPixelsFromJava(JNIEnv *env, ImageSDOps *isdo)
|
|||||||
PRINT(" customPixelsFromJava")
|
PRINT(" customPixelsFromJava")
|
||||||
|
|
||||||
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
||||||
JNFCallVoidMethod([ThreadUtilities getJNIEnv], sdo->sdObject, jm_syncFromCustom); // AWT_THREADING Safe (known object)
|
JNFCallVoidMethod(env, sdo->sdObject, jm_syncFromCustom); // AWT_THREADING Safe (known object)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
IMAGE_SURFACE_INLINE void copyBits(jint w, jint h, jint javaPixelsBytesPerRow, Pixel8bit *pixelsSrc, jint dstPixelsBytesPerRow, Pixel8bit *pixelsDst)
|
IMAGE_SURFACE_INLINE void copyBits(jint w, jint h, jint javaPixelsBytesPerRow, Pixel8bit *pixelsSrc, jint dstPixelsBytesPerRow, Pixel8bit *pixelsDst)
|
||||||
{
|
{
|
||||||
PRINT(" copyBits")
|
PRINT(" copyBits")
|
||||||
@ -427,7 +423,7 @@ IMAGE_SURFACE_INLINE void customPixelsToJava(JNIEnv *env, ImageSDOps *isdo)
|
|||||||
PRINT(" customPixelsToJava")
|
PRINT(" customPixelsToJava")
|
||||||
|
|
||||||
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
||||||
JNFCallVoidMethod([ThreadUtilities getJNIEnv], sdo->sdObject, jm_syncToCustom); // AWT_THREADING Safe (known object)
|
JNFCallVoidMethod(env, sdo->sdObject, jm_syncToCustom); // AWT_THREADING Safe (known object)
|
||||||
}
|
}
|
||||||
|
|
||||||
IMAGE_SURFACE_INLINE void removeAlphaPre_32bit(jint w, jint h, jint javaPixelsBytesPerRow, jint javaPixelBytes, Pixel32bit *pixelsSrc)
|
IMAGE_SURFACE_INLINE void removeAlphaPre_32bit(jint w, jint h, jint javaPixelsBytesPerRow, jint javaPixelBytes, Pixel32bit *pixelsSrc)
|
||||||
@ -995,9 +991,9 @@ static void imageDataProvider_UnholdJavaPixels(void *info, const void *data, siz
|
|||||||
{
|
{
|
||||||
PRINT("imageDataProvider_UnholdJavaPixels")
|
PRINT("imageDataProvider_UnholdJavaPixels")
|
||||||
|
|
||||||
ImageSDOps* isdo = (ImageSDOps*)info;
|
// Currently do nothing
|
||||||
unholdJavaPixels([ThreadUtilities getJNIEnv], isdo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void imageDataProvider_FreeTempPixels(void *info, const void *data, size_t size)
|
static void imageDataProvider_FreeTempPixels(void *info, const void *data, size_t size)
|
||||||
{
|
{
|
||||||
PRINT("imageDataProvider_FreeTempPixels")
|
PRINT("imageDataProvider_FreeTempPixels")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -1559,31 +1559,14 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
|
|||||||
decodeRLE4(imSize, padding, values, bdata);
|
decodeRLE4(imSize, padding, values, bdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void decodeRLE4(int imSize,
|
private boolean copyRLE4ScanlineToDst(int lineNo,
|
||||||
int padding,
|
byte[] val,
|
||||||
byte[] values,
|
|
||||||
byte[] bdata) throws IOException {
|
byte[] bdata) throws IOException {
|
||||||
byte[] val = new byte[width];
|
// Return value
|
||||||
int count = 0, l = 0;
|
boolean isSuccess = false;
|
||||||
int value;
|
|
||||||
boolean flag = false;
|
|
||||||
int lineNo = isBottomUp ? height - 1 : 0;
|
|
||||||
int lineStride =
|
|
||||||
((MultiPixelPackedSampleModel)sampleModel).getScanlineStride();
|
|
||||||
int finished = 0;
|
|
||||||
|
|
||||||
while (count != imSize) {
|
// Reusing the code to copy 1 row of pixels or scanline to required
|
||||||
|
// destination buffer.
|
||||||
value = values[count++] & 0xFF;
|
|
||||||
if (value == 0) {
|
|
||||||
|
|
||||||
|
|
||||||
// Absolute mode
|
|
||||||
switch(values[count++] & 0xFF) {
|
|
||||||
|
|
||||||
case 0:
|
|
||||||
// End-of-scanline marker
|
|
||||||
// End-of-scanline marker
|
|
||||||
if (lineNo >= sourceRegion.y &&
|
if (lineNo >= sourceRegion.y &&
|
||||||
lineNo < sourceRegion.y + sourceRegion.height) {
|
lineNo < sourceRegion.y + sourceRegion.height) {
|
||||||
if (noTransform) {
|
if (noTransform) {
|
||||||
@ -1597,8 +1580,10 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
|
|||||||
processImageUpdate(bi, 0, lineNo,
|
processImageUpdate(bi, 0, lineNo,
|
||||||
destinationRegion.width, 1, 1, 1,
|
destinationRegion.width, 1, 1, 1,
|
||||||
new int[]{0});
|
new int[]{0});
|
||||||
finished++;
|
isSuccess = true;
|
||||||
} else if ((lineNo - sourceRegion.y) % scaleY == 0) {
|
} else if ((lineNo - sourceRegion.y) % scaleY == 0) {
|
||||||
|
int lineStride =
|
||||||
|
((MultiPixelPackedSampleModel)sampleModel).getScanlineStride();
|
||||||
int currentLine = (lineNo - sourceRegion.y) / scaleY +
|
int currentLine = (lineNo - sourceRegion.y) / scaleY +
|
||||||
destinationRegion.y;
|
destinationRegion.y;
|
||||||
int pos = currentLine * lineStride;
|
int pos = currentLine * lineStride;
|
||||||
@ -1617,8 +1602,41 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
|
|||||||
processImageUpdate(bi, 0, currentLine,
|
processImageUpdate(bi, 0, currentLine,
|
||||||
destinationRegion.width, 1, 1, 1,
|
destinationRegion.width, 1, 1, 1,
|
||||||
new int[]{0});
|
new int[]{0});
|
||||||
finished++;
|
isSuccess = true;
|
||||||
}
|
}
|
||||||
|
// Ensure to reset the scanline buffer once the copy is complete.
|
||||||
|
for(int scIndex = 0; scIndex < width; scIndex++) {
|
||||||
|
val[scIndex] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void decodeRLE4(int imSize,
|
||||||
|
int padding,
|
||||||
|
byte[] values,
|
||||||
|
byte[] bdata) throws IOException {
|
||||||
|
byte[] val = new byte[width];
|
||||||
|
int count = 0, l = 0;
|
||||||
|
int value;
|
||||||
|
boolean flag = false;
|
||||||
|
int lineNo = isBottomUp ? height - 1 : 0;
|
||||||
|
int finished = 0;
|
||||||
|
|
||||||
|
// Ensure the image has sufficient data before proceeding to decode
|
||||||
|
while ((count + 1) < imSize) {
|
||||||
|
|
||||||
|
value = values[count++] & 0xFF;
|
||||||
|
if (value == 0) {
|
||||||
|
|
||||||
|
// Absolute mode
|
||||||
|
switch(values[count++] & 0xFF) {
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
// End-of-scanline marker
|
||||||
|
// Copy the decoded scanline to destination
|
||||||
|
if (copyRLE4ScanlineToDst(lineNo, val, bdata)) {
|
||||||
|
finished++;
|
||||||
}
|
}
|
||||||
processImageProgress(100.0F * finished / destinationRegion.height);
|
processImageProgress(100.0F * finished / destinationRegion.height);
|
||||||
lineNo += isBottomUp ? -1 : 1;
|
lineNo += isBottomUp ? -1 : 1;
|
||||||
@ -1633,21 +1651,61 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
|
|||||||
case 1:
|
case 1:
|
||||||
// End-of-RLE marker
|
// End-of-RLE marker
|
||||||
flag = true;
|
flag = true;
|
||||||
|
|
||||||
|
// Check if the last decoded scanline was copied to
|
||||||
|
// destination bitmap
|
||||||
|
if (l != 0) {
|
||||||
|
// Copy the decoded scanline to destination
|
||||||
|
if (copyRLE4ScanlineToDst(lineNo, val, bdata)) {
|
||||||
|
finished++;
|
||||||
|
}
|
||||||
|
processImageProgress(100.0F * finished / destinationRegion.height);
|
||||||
|
lineNo += isBottomUp ? -1 : 1;
|
||||||
|
l = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
// delta or vector marker
|
// delta or vector marker
|
||||||
|
if ((count + 1) < imSize) {
|
||||||
int xoff = values[count++] & 0xFF;
|
int xoff = values[count++] & 0xFF;
|
||||||
int yoff = values[count] & 0xFF;
|
int yoff = values[count++] & 0xFF;
|
||||||
// Move to the position xoff, yoff down
|
|
||||||
|
// Check if the yOffset shifts the decoding to another
|
||||||
|
// row. In such cases, the decoded pixels in scanline
|
||||||
|
// buffer-val must be copied to the destination image.
|
||||||
|
if (yoff != 0) {
|
||||||
|
// Copy the decoded scanline to destination
|
||||||
|
if (copyRLE4ScanlineToDst(lineNo, val, bdata)) {
|
||||||
|
finished++;
|
||||||
|
}
|
||||||
|
processImageProgress(100.0F * finished
|
||||||
|
/ destinationRegion.height);
|
||||||
|
lineNo += isBottomUp ? -yoff : yoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move to the position (xoff, yoff). Since l-is used
|
||||||
|
// to index into the scanline buffer, the accumulated
|
||||||
|
// offset is limited to the width of the scanline
|
||||||
l += xoff + yoff*width;
|
l += xoff + yoff*width;
|
||||||
|
l %= width;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
int end = values[count-1] & 0xFF;
|
int end = values[count-1] & 0xFF;
|
||||||
for (int i=0; i<end; i++) {
|
byte readByte = 0;
|
||||||
val[l++] = (byte)(((i & 1) == 0) ? (values[count] & 0xf0) >> 4
|
// Ensure to check if the source index-count, does not
|
||||||
: (values[count++] & 0x0f));
|
// exceed the source image size
|
||||||
|
for (int i = 0; (i < end) && (count < imSize); i++) {
|
||||||
|
readByte = (byte)(((i & 1) == 0) ?
|
||||||
|
(values[count] & 0xf0) >> 4 :
|
||||||
|
(values[count++] & 0x0f));
|
||||||
|
// Ensure to check if scanline index-l, does not
|
||||||
|
// exceed the scanline buffer size (width of image)
|
||||||
|
if (l < width) {
|
||||||
|
val[l++] = readByte;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// When end is odd, the above for loop does not
|
// When end is odd, the above for loop does not
|
||||||
@ -1665,11 +1723,15 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Encoded mode
|
// Encoded mode
|
||||||
|
// Ensure to check if the source index-count, does not
|
||||||
|
// exceed the source image size
|
||||||
|
if (count < imSize) {
|
||||||
int alternate[] = { (values[count] & 0xf0) >> 4,
|
int alternate[] = { (values[count] & 0xf0) >> 4,
|
||||||
values[count] & 0x0f };
|
values[count] & 0x0f };
|
||||||
for (int i=0; (i < value) && (l < width); i++) {
|
for (int i=0; (i < value) && (l < width); i++) {
|
||||||
val[l++] = (byte)alternate[i & 1];
|
val[l++] = (byte)alternate[i & 1];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -567,7 +567,7 @@ public final class TIFFField implements Cloneable {
|
|||||||
("Type is TIFF_RATIONAL or TIFF_SRATIONAL and count < 1");
|
("Type is TIFF_RATIONAL or TIFF_SRATIONAL and count < 1");
|
||||||
} else if (type == TIFFTag.TIFF_IFD_POINTER && count != 1) {
|
} else if (type == TIFFTag.TIFF_IFD_POINTER && count != 1) {
|
||||||
throw new IllegalArgumentException
|
throw new IllegalArgumentException
|
||||||
("Type is TIFF_IFD_POINTER count != 1");
|
("Type is TIFF_IFD_POINTER and count != 1");
|
||||||
} else if(data == null) {
|
} else if(data == null) {
|
||||||
throw new NullPointerException("data == null!");
|
throw new NullPointerException("data == null!");
|
||||||
}
|
}
|
||||||
@ -698,6 +698,11 @@ public final class TIFFField implements Cloneable {
|
|||||||
* data type for the supplied {@code TIFFTag}.
|
* data type for the supplied {@code TIFFTag}.
|
||||||
* @throws IllegalArgumentException if {@code count < 0}.
|
* @throws IllegalArgumentException if {@code count < 0}.
|
||||||
* @see #TIFFField(TIFFTag,int,int,Object)
|
* @see #TIFFField(TIFFTag,int,int,Object)
|
||||||
|
* @throws IllegalArgumentException if {@code count < 1}
|
||||||
|
* and {@code type} is {@code TIFF_RATIONAL} or
|
||||||
|
* {@code TIFF_SRATIONAL}.
|
||||||
|
* @throws IllegalArgumentException if {@code count != 1}
|
||||||
|
* and {@code type} is {@code TIFF_IFD_POINTER}.
|
||||||
*/
|
*/
|
||||||
public TIFFField(TIFFTag tag, int type, int count) {
|
public TIFFField(TIFFTag tag, int type, int count) {
|
||||||
this(tag, type, count, createArrayForType(type, count));
|
this(tag, type, count, createArrayForType(type, count));
|
||||||
@ -885,11 +890,26 @@ public final class TIFFField implements Cloneable {
|
|||||||
* @throws IllegalArgumentException if {@code dataType} is not
|
* @throws IllegalArgumentException if {@code dataType} is not
|
||||||
* one of the {@code TIFFTag.TIFF_*} data type constants.
|
* one of the {@code TIFFTag.TIFF_*} data type constants.
|
||||||
* @throws IllegalArgumentException if {@code count < 0}.
|
* @throws IllegalArgumentException if {@code count < 0}.
|
||||||
|
* @throws IllegalArgumentException if {@code count < 1}
|
||||||
|
* and {@code type} is {@code TIFF_RATIONAL} or
|
||||||
|
* {@code TIFF_SRATIONAL}.
|
||||||
|
* @throws IllegalArgumentException if {@code count != 1}
|
||||||
|
* and {@code type} is {@code TIFF_IFD_POINTER}.
|
||||||
*/
|
*/
|
||||||
public static Object createArrayForType(int dataType, int count) {
|
public static Object createArrayForType(int dataType, int count) {
|
||||||
|
|
||||||
if(count < 0) {
|
if(count < 0) {
|
||||||
throw new IllegalArgumentException("count < 0!");
|
throw new IllegalArgumentException("count < 0!");
|
||||||
|
} else if ((dataType == TIFFTag.TIFF_RATIONAL
|
||||||
|
|| dataType == TIFFTag.TIFF_SRATIONAL)
|
||||||
|
&& count < 1) {
|
||||||
|
throw new IllegalArgumentException
|
||||||
|
("Type is TIFF_RATIONAL or TIFF_SRATIONAL and count < 1");
|
||||||
|
} else if (dataType == TIFFTag.TIFF_IFD_POINTER && count != 1) {
|
||||||
|
throw new IllegalArgumentException
|
||||||
|
("Type is TIFF_IFD_POINTER and count != 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (dataType) {
|
switch (dataType) {
|
||||||
case TIFFTag.TIFF_BYTE:
|
case TIFFTag.TIFF_BYTE:
|
||||||
case TIFFTag.TIFF_SBYTE:
|
case TIFFTag.TIFF_SBYTE:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -48,13 +48,13 @@ public class SynthSplitPaneUI extends BasicSplitPaneUI
|
|||||||
* Keys to use for forward focus traversal when the JComponent is
|
* Keys to use for forward focus traversal when the JComponent is
|
||||||
* managing focus.
|
* managing focus.
|
||||||
*/
|
*/
|
||||||
private static Set<KeyStroke> managingFocusForwardTraversalKeys;
|
private Set<KeyStroke> managingFocusForwardTraversalKeys;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Keys to use for backward focus traversal when the JComponent is
|
* Keys to use for backward focus traversal when the JComponent is
|
||||||
* managing focus.
|
* managing focus.
|
||||||
*/
|
*/
|
||||||
private static Set<KeyStroke> managingFocusBackwardTraversalKeys;
|
private Set<KeyStroke> managingFocusBackwardTraversalKeys;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Style for the JSplitPane.
|
* Style for the JSplitPane.
|
||||||
|
77
jdk/test/java/awt/print/PrinterJob/PrintCrashTest.java
Normal file
77
jdk/test/java/awt/print/PrinterJob/PrintCrashTest.java
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 8163889
|
||||||
|
* @summary Printing crashes on OSX.
|
||||||
|
* @run main PrintCrashTest
|
||||||
|
*/
|
||||||
|
|
||||||
|
import javax.print.attribute.HashPrintRequestAttributeSet;
|
||||||
|
import javax.print.attribute.standard.Destination;
|
||||||
|
|
||||||
|
import java.awt.GraphicsEnvironment;
|
||||||
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.Shape;
|
||||||
|
import java.awt.Transparency;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.awt.print.Printable;
|
||||||
|
import java.awt.print.PrinterJob;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class PrintCrashTest {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
PrinterJob printerJob = PrinterJob.getPrinterJob();
|
||||||
|
printerJob.setPrintable((graphics, pageFormat, pageIndex) -> {
|
||||||
|
if (pageIndex != 0) {
|
||||||
|
return Printable.NO_SUCH_PAGE;
|
||||||
|
} else {
|
||||||
|
Shape shape = new Rectangle(110, 110, 10, 10);
|
||||||
|
Rectangle rect = shape.getBounds();
|
||||||
|
|
||||||
|
BufferedImage image = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()
|
||||||
|
.getDefaultConfiguration().createCompatibleImage(rect.width, rect.height, Transparency.BITMASK);
|
||||||
|
graphics.drawImage(image, rect.x, rect.y, rect.width, rect.height, null);
|
||||||
|
|
||||||
|
return Printable.PAGE_EXISTS;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
File file = null;
|
||||||
|
try {
|
||||||
|
HashPrintRequestAttributeSet hashPrintRequestAttributeSet = new HashPrintRequestAttributeSet();
|
||||||
|
file = File.createTempFile("out", "ps");
|
||||||
|
file.deleteOnExit();
|
||||||
|
Destination destination = new Destination(file.toURI());
|
||||||
|
hashPrintRequestAttributeSet.add(destination);
|
||||||
|
printerJob.print(hashPrintRequestAttributeSet);
|
||||||
|
} finally {
|
||||||
|
if (file != null) {
|
||||||
|
file.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @bug 8152561
|
||||||
|
* @summary Test verifies whether all boundary conditions are checked
|
||||||
|
* properly in TIFFField.createArrayForType().
|
||||||
|
* @run main TIFFCreateArrayForTypeTest
|
||||||
|
*/
|
||||||
|
|
||||||
|
import javax.imageio.plugins.tiff.TIFFField;
|
||||||
|
import javax.imageio.plugins.tiff.TIFFTag;
|
||||||
|
|
||||||
|
public class TIFFCreateArrayForTypeTest {
|
||||||
|
|
||||||
|
static int count = 0;
|
||||||
|
static boolean unknownDataType, negativeCount, zeroCount, countNotOne;
|
||||||
|
static String errorMsg = "";
|
||||||
|
|
||||||
|
private static void testCase1() {
|
||||||
|
// check passing unknown data type to createArrayForType()
|
||||||
|
count = 2;
|
||||||
|
int dataType = 15;
|
||||||
|
try {
|
||||||
|
TIFFField.createArrayForType(dataType, count);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
unknownDataType = true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// just consume if it throws any other exception.
|
||||||
|
}
|
||||||
|
if (!unknownDataType) {
|
||||||
|
errorMsg = errorMsg + "testCase1 ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void testCase2() {
|
||||||
|
// check passing negative count value for createArrayForType()
|
||||||
|
count = -1;
|
||||||
|
try {
|
||||||
|
TIFFField.createArrayForType(TIFFTag.TIFF_LONG, count);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
negativeCount = true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// just consume if it throws any other exception.
|
||||||
|
}
|
||||||
|
if (!negativeCount) {
|
||||||
|
errorMsg = errorMsg + "testCase2 ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void testCase3() {
|
||||||
|
/*
|
||||||
|
* check passing zero count value for createArrayForType() with
|
||||||
|
* TIFFTag.TIFF_RATIONAL or TIFFTag.TIFF_SRATIONAL data type.
|
||||||
|
*/
|
||||||
|
count = 0;
|
||||||
|
try {
|
||||||
|
TIFFField.createArrayForType(TIFFTag.TIFF_RATIONAL, count);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
zeroCount = true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// just consume if it throws any other exception.
|
||||||
|
}
|
||||||
|
if (!zeroCount) {
|
||||||
|
errorMsg = errorMsg + "testCase3 ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void testCase4() {
|
||||||
|
/*
|
||||||
|
* check passing count value other than 1 for createArrayForType() with
|
||||||
|
* TIFFTag.TIFF_IFD_POINTER data type.
|
||||||
|
*/
|
||||||
|
count = 2;
|
||||||
|
try {
|
||||||
|
TIFFField.createArrayForType(TIFFTag.TIFF_IFD_POINTER, count);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
countNotOne = true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// just consume if it throws any other exception.
|
||||||
|
}
|
||||||
|
if (!countNotOne) {
|
||||||
|
errorMsg = errorMsg + "testCase4 ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*
|
||||||
|
* test different scenarios where TIFFField.createArrayForType()
|
||||||
|
* is required to throw IllegalArgumentException.
|
||||||
|
*/
|
||||||
|
testCase1();
|
||||||
|
testCase2();
|
||||||
|
testCase3();
|
||||||
|
testCase4();
|
||||||
|
if ((!unknownDataType) ||
|
||||||
|
(!negativeCount) ||
|
||||||
|
(!zeroCount) ||
|
||||||
|
(!countNotOne))
|
||||||
|
{
|
||||||
|
throw new RuntimeException(errorMsg + "is/are not throwing"
|
||||||
|
+ " required IllegalArgumentException");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @bug 6657026
|
* @bug 6657026 7190595
|
||||||
* @summary Tests shared BasicSplitPaneUI in different application contexts
|
* @summary Tests shared BasicSplitPaneUI in different application contexts
|
||||||
* @author Sergey Malenkov
|
* @author Sergey Malenkov
|
||||||
* @modules java.desktop/sun.awt
|
* @modules java.desktop/sun.awt
|
||||||
|
Loading…
x
Reference in New Issue
Block a user