< prev index next >

src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java

Print this page




3129             Image resolutionVariant = getResolutionVariant(mrImage, width, height,
3130                                                            dx1, dy1, dx2, dy2,
3131                                                            sx1, sy1, sx2, sy2,
3132                                                            xform);
3133 
3134             if (resolutionVariant != img && resolutionVariant != null) {
3135                 // recalculate source region for the resolution variant
3136 
3137                 ImageObserver rvObserver = MultiResolutionToolkitImage.
3138                         getResolutionVariantObserver(img, observer,
3139                                 width, height, -1, -1);
3140 
3141                 int rvWidth = resolutionVariant.getWidth(rvObserver);
3142                 int rvHeight = resolutionVariant.getHeight(rvObserver);
3143 
3144                 if (0 < width && 0 < height && 0 < rvWidth && 0 < rvHeight) {
3145 
3146                     double widthScale = ((double) rvWidth) / width;
3147                     double heightScale = ((double) rvHeight) / height;
3148 








3149                     sx1 = Region.clipScale(sx1, widthScale);
3150                     sy1 = Region.clipScale(sy1, heightScale);
3151                     sx2 = Region.clipScale(sx2, widthScale);
3152                     sy2 = Region.clipScale(sy2, heightScale);
3153 
3154                     observer = rvObserver;
3155                     img = resolutionVariant;
3156 
3157                     if (xform != null) {
3158                         assert dx1 == 0 && dy1 == 0;
3159                         assert dx2 == img.getWidth(observer);
3160                         assert dy2 == img.getHeight(observer);
3161                         AffineTransform renderTX = new AffineTransform(xform);
3162                         renderTX.scale(1 / widthScale, 1 / heightScale);
3163                         return transformImage(img, renderTX, observer);
3164                     }
3165 
3166                     return scaleImage(img, dx1, dy1, dx2, dy2,
3167                                       sx1, sy1, sx2, sy2,
3168                                       bgcolor, observer);




3129             Image resolutionVariant = getResolutionVariant(mrImage, width, height,
3130                                                            dx1, dy1, dx2, dy2,
3131                                                            sx1, sy1, sx2, sy2,
3132                                                            xform);
3133 
3134             if (resolutionVariant != img && resolutionVariant != null) {
3135                 // recalculate source region for the resolution variant
3136 
3137                 ImageObserver rvObserver = MultiResolutionToolkitImage.
3138                         getResolutionVariantObserver(img, observer,
3139                                 width, height, -1, -1);
3140 
3141                 int rvWidth = resolutionVariant.getWidth(rvObserver);
3142                 int rvHeight = resolutionVariant.getHeight(rvObserver);
3143 
3144                 if (0 < width && 0 < height && 0 < rvWidth && 0 < rvHeight) {
3145 
3146                     double widthScale = ((double) rvWidth) / width;
3147                     double heightScale = ((double) rvHeight) / height;
3148 
3149                     if (resolutionVariant instanceof VolatileImage) {
3150                         SurfaceData sd = SurfaceManager
3151                                 .getManager(resolutionVariant)
3152                                 .getPrimarySurfaceData();
3153                         widthScale *= sd.getDefaultScaleX();
3154                         heightScale *= sd.getDefaultScaleY();
3155                     }
3156 
3157                     sx1 = Region.clipScale(sx1, widthScale);
3158                     sy1 = Region.clipScale(sy1, heightScale);
3159                     sx2 = Region.clipScale(sx2, widthScale);
3160                     sy2 = Region.clipScale(sy2, heightScale);
3161 
3162                     observer = rvObserver;
3163                     img = resolutionVariant;
3164 
3165                     if (xform != null) {
3166                         assert dx1 == 0 && dy1 == 0;
3167                         assert dx2 == img.getWidth(observer);
3168                         assert dy2 == img.getHeight(observer);
3169                         AffineTransform renderTX = new AffineTransform(xform);
3170                         renderTX.scale(1 / widthScale, 1 / heightScale);
3171                         return transformImage(img, renderTX, observer);
3172                     }
3173 
3174                     return scaleImage(img, dx1, dy1, dx2, dy2,
3175                                       sx1, sy1, sx2, sy2,
3176                                       bgcolor, observer);


< prev index next >