MCPcopy Create free account
hub / github.com/HumbleUI/Skija / drawPixels

Method drawPixels

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

Source from the content-addressed store, hash-verified

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

Callers 1

drawMethod · 0.95

Calls 15

makeS32Method · 0.95
getMinRowBytesMethod · 0.95
getBytesPerPixelMethod · 0.95
makeRasterFromBitmapMethod · 0.95
allocPixelsFlagsMethod · 0.80
installPixelsMethod · 0.80
drawImageRectMethod · 0.80
setStrokeWidthMethod · 0.80
setModeMethod · 0.80
drawRectMethod · 0.80
getWidthMethod · 0.65
getHeightMethod · 0.65

Tested by

no test coverage detected