MCPcopy Create free account
hub / github.com/JetBrains/skija / drawPixels

Method drawPixels

examples/scenes/src/BitmapScene.java:119–156  ·  view source on GitHub ↗
(Canvas canvas, IRect target, IRect screen, float dpi)

Source from the content-addressed store, hash-verified

117 }
118
119 public void drawPixels(Canvas canvas, IRect target, IRect screen, float dpi) {
120 target = target.intersect(screen);
121 if (target == null) return;
122
123 IRect inner = IRect.makeXYWH(target.getLeft() + 10, target.getTop() + 10, target.getWidth() - 20, target.getHeight() - 20);
124 if (inner == null) return;
125
126 try (var bitmap = new Bitmap();) {
127 var srcInfo = ImageInfo.makeS32((int) (target.getWidth() * dpi), (int) (target.getHeight() * dpi), ColorAlphaType.OPAQUE);
128 bitmap.allocPixelsFlags(srcInfo, true);
129 if (canvas.readPixels(bitmap, (int) (target.getLeft() * dpi), (int) (target.getTop() * dpi))) {
130 var dstInfo = new ImageInfo((int) (inner.getWidth() * dpi), (int) (inner.getHeight() * dpi), ColorType.ARGB_4444, ColorAlphaType.UNPREMUL);
131 long rowBytes = dstInfo.getMinRowBytes();
132 byte[] pixels = bitmap.readPixels(dstInfo, rowBytes, (int) (10 * dpi), (int) (10 * dpi));
133 int bpp = dstInfo.getBytesPerPixel();
134
135 for (int i = 0; i < pixels.length / bpp / 2; ++i) {
136 for (int j = 0; j < bpp; ++j) {
137 int i1 = i * bpp + j;
138 int i2 = (pixels.length / bpp - i - 1) * bpp + j;
139 byte b = pixels[i1];
140 pixels[i1] = pixels[i2];
141 pixels[i2] = b;
142 }
143 }
144
145 bitmap.installPixels(dstInfo, pixels, rowBytes);
146 bitmap.notifyPixelsChanged();
147 try (var image = Image.makeFromBitmap(bitmap.setImmutable());) {
148 canvas.drawImageRect(image, inner.toRect());
149 }
150 }
151 }
152
153 try(var stroke = new Paint().setColor(0xFFE5E5E5).setMode(PaintMode.STROKE).setStrokeWidth(1);) {
154 canvas.drawRect(target.toRect(), stroke);
155 }
156 }
157
158 public void drawSubset(Canvas canvas, IRect target, IRect screen, float dpi) {
159 try (var src = new Bitmap();

Callers 1

drawMethod · 0.95

Calls 15

makeXYWHMethod · 0.95
makeS32Method · 0.95
getWidthMethod · 0.95
getHeightMethod · 0.95
getMinRowBytesMethod · 0.95
getBytesPerPixelMethod · 0.95
makeFromBitmapMethod · 0.95
toRectMethod · 0.95
allocPixelsFlagsMethod · 0.80
installPixelsMethod · 0.80
drawImageRectMethod · 0.80
setStrokeWidthMethod · 0.80

Tested by

no test coverage detected