Skip to content

Commit

Permalink
Implemented getColorModel() and createAcceleratedImage()
Browse files Browse the repository at this point in the history
This is enough to make J2Ddemo and StylePad work
  • Loading branch information
mkartashev committed Nov 11, 2022
1 parent e29f9b1 commit f520a5f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
4 changes: 2 additions & 2 deletions src/java.desktop/unix/classes/sun/awt/wl/WLComponentPeer.java
Expand Up @@ -483,7 +483,7 @@ void setMaximumSizeTo(Dimension maxSize) {
@Override
public ColorModel getColorModel() {
if (graphicsConfig != null) {
return graphicsConfig.getColorModel ();
return graphicsConfig.getColorModel();
}
else {
return Toolkit.getDefaultToolkit().getColorModel();
Expand Down Expand Up @@ -539,7 +539,7 @@ public void updateCursorImmediately() {

@Override
public Image createImage(int width, int height) {
throw new UnsupportedOperationException();
return graphicsConfig.createAcceleratedImage(target, width, height);
}

@Override
Expand Down
27 changes: 17 additions & 10 deletions src/java.desktop/unix/classes/sun/awt/wl/WLGraphicsConfig.java
Expand Up @@ -30,6 +30,9 @@
import java.awt.geom.AffineTransform;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
import java.awt.image.WritableRaster;

import sun.awt.image.OffScreenImage;
import sun.java2d.SurfaceData;
import sun.java2d.loops.SurfaceType;
import sun.java2d.wl.WLSurfaceData;
Expand All @@ -54,16 +57,20 @@ public ColorModel getColorModel() {

@Override
public ColorModel getColorModel(int transparency) {
switch (transparency) {
case Transparency.OPAQUE:
return getColorModel();
case Transparency.BITMASK:
throw new UnsupportedOperationException("Transparency BITMASK not supported");
case Transparency.TRANSLUCENT:
throw new UnsupportedOperationException("Transparency TRANSLUCENT not supported");
default:
return null;
}
return switch (transparency) {
case Transparency.OPAQUE -> getColorModel();
case Transparency.BITMASK -> new DirectColorModel(25, 0xff0000, 0xff00, 0xff, 0x1000000);
case Transparency.TRANSLUCENT -> new DirectColorModel(32, 0xff0000, 0xff00, 0xff, 0xff000000);
default -> null;
};
}

public Image createAcceleratedImage(Component target,
int width, int height)
{
ColorModel model = getColorModel(Transparency.OPAQUE);
WritableRaster raster = model.createCompatibleWritableRaster(width, height);
return new OffScreenImage(target, model, raster, model.isAlphaPremultiplied());
}

@Override
Expand Down

0 comments on commit f520a5f

Please sign in to comment.