1 /* 2 * @test %W% %E% 3 * @bug 7016495 4 * @summary Test tiny scales of BufferedImage 5 */ 6 7 import java.awt.*; 8 import java.awt.geom.*; 9 import java.awt.image.*; 10 11 public class TinyScale { 12 static double tinyscales[] = { 13 1E-0, 14 1E-1, 15 1E-2, 16 1E-3, 17 1E-4, 18 1E-5, 19 1E-6, 20 1E-7, 21 1E-8, 22 1E-9, 23 1E-10, 24 1E-11, 25 1E-12, 26 1E-13, 27 1E-14, 28 1E-15, 29 1E-16, 30 1E-17, 31 1E-18, 32 1E-19, 33 1E-20, 34 1E-21, 35 1E-22, 36 1E-23, 37 1E-24, 38 1E-25, 39 1E-26, 40 1E-27, 41 1E-28, 42 1E-29, 43 }; 44 45 static void test(BufferedImage rendImg, BufferedImage drawImg, double s) { 46 Graphics2D g = drawImg.createGraphics(); 47 g.transform(new AffineTransform(s, 0.0, -1.0, 1.0, 0.0, 0.0)); 48 g.drawImage(rendImg, 49 -rendImg.getWidth() / 2, 50 -rendImg.getHeight() / 2, 51 null); 52 g.drawImage(rendImg, 0, 0, null); 53 g.dispose(); 54 } 55 56 public static void main(String[] args) { 57 BufferedImage rendImg = 58 new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR); 59 BufferedImage drawImg = 60 new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); 61 for (double s: tinyscales) { 62 test(rendImg, drawImg, s); 63 for (int i = 0; args.length > 0 && i < 10; i++) { 64 test(rendImg, drawImg, Math.random()*s); 65 } 66 } 67 } 68 }