|
20 | 20 | import java.util.stream.*; |
21 | 21 |
|
22 | 22 | import org.eclipse.swt.*; |
| 23 | +import org.eclipse.swt.graphics.Image.*; |
23 | 24 | import org.eclipse.swt.internal.*; |
24 | 25 | import org.eclipse.swt.internal.gdip.*; |
25 | 26 | import org.eclipse.swt.internal.win32.*; |
@@ -1061,7 +1062,7 @@ void apply() { |
1061 | 1062 |
|
1062 | 1063 | private void drawImageInPixels(Image image, Point location) { |
1063 | 1064 | if (image.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); |
1064 | | - long handle = Image.win32_getHandle(image, getZoom()); |
| 1065 | + ImageHandle handle = image.getHandle(getZoom(), getZoom()); |
1065 | 1066 | drawImage(image, 0, 0, -1, -1, location.x, location.y, -1, -1, true, handle); |
1066 | 1067 | } |
1067 | 1068 | } |
@@ -1277,12 +1278,12 @@ private class DrawImageToImageOperation extends ImageOperation { |
1277 | 1278 |
|
1278 | 1279 | @Override |
1279 | 1280 | void apply() { |
1280 | | - long handle = Image.win32_getHandle(getImage(), getZoom()); |
| 1281 | + ImageHandle handle = getImage().getHandle(getZoom(), getZoom()); |
1281 | 1282 | drawImage(getImage(), source.x, source.y, source.width, source.height, destination.x, destination.y, destination.width, destination.height, simple, handle); |
1282 | 1283 | } |
1283 | 1284 | } |
1284 | 1285 |
|
1285 | | -private void drawImage(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple, long tempImageHandle) { |
| 1286 | +private void drawImage(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple, ImageHandle tempImageHandle) { |
1286 | 1287 | if (data.gdipGraphics != 0) { |
1287 | 1288 | //TODO - cache bitmap |
1288 | 1289 | long [] gdipImage = srcImage.createGdipImageFromHandle(tempImageHandle); |
@@ -1350,7 +1351,7 @@ private void drawImage(Image srcImage, int srcX, int srcY, int srcWidth, int src |
1350 | 1351 | simple); |
1351 | 1352 | break; |
1352 | 1353 | case SWT.ICON: |
1353 | | - drawIcon(tempImageHandle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
| 1354 | + drawIcon(tempImageHandle.getHandle(), srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
1354 | 1355 | break; |
1355 | 1356 | } |
1356 | 1357 | } |
@@ -1489,9 +1490,10 @@ private void drawIcon(long imageHandle, int srcX, int srcY, int srcWidth, int sr |
1489 | 1490 | if (failed) SWT.error(SWT.ERROR_INVALID_ARGUMENT); |
1490 | 1491 | } |
1491 | 1492 |
|
1492 | | -private void drawBitmap(Image srcImage, long imageHandle, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple) { |
| 1493 | +private void drawBitmap(Image srcImage, ImageHandle imageHandle, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple) { |
1493 | 1494 | BITMAP bm = new BITMAP(); |
1494 | | - OS.GetObject(imageHandle, BITMAP.sizeof, bm); |
| 1495 | + long handle = imageHandle.getHandle(); |
| 1496 | + OS.GetObject(handle, BITMAP.sizeof, bm); |
1495 | 1497 | int imgWidth = bm.bmWidth; |
1496 | 1498 | int imgHeight = bm.bmHeight; |
1497 | 1499 | if (srcWidth == 0 && srcHeight == 0) { |
@@ -1523,14 +1525,14 @@ private void drawBitmap(Image srcImage, long imageHandle, int srcX, int srcY, in |
1523 | 1525 | boolean isDib = bm.bmBits != 0; |
1524 | 1526 | int depth = bm.bmPlanes * bm.bmBitsPixel; |
1525 | 1527 | if (isDib && depth == 32) { |
1526 | | - drawBitmapAlpha(imageHandle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
| 1528 | + drawBitmapAlpha(handle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
1527 | 1529 | } else if (srcImage.transparentPixel != -1) { |
1528 | 1530 | drawBitmapTransparent(srcImage, imageHandle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, bm, imgWidth, imgHeight); |
1529 | 1531 | } else { |
1530 | | - drawBitmapColor(imageHandle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
| 1532 | + drawBitmapColor(handle, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple); |
1531 | 1533 | } |
1532 | 1534 | if (mustRestore) { |
1533 | | - long hOldBitmap = OS.SelectObject(memGC.handle, imageHandle); |
| 1535 | + long hOldBitmap = OS.SelectObject(memGC.handle, handle); |
1534 | 1536 | memGC.data.hNullBitmap = hOldBitmap; |
1535 | 1537 | } |
1536 | 1538 | } |
@@ -1785,11 +1787,11 @@ private void drawBitmapMask(long srcColor, long srcMask, int srcX, int srcY, int |
1785 | 1787 | OS.DeleteDC(srcHdc); |
1786 | 1788 | } |
1787 | 1789 |
|
1788 | | -private void drawBitmapTransparent(Image srcImage, long imageHandle, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple, BITMAP bm, int imgWidth, int imgHeight) { |
| 1790 | +private void drawBitmapTransparent(Image srcImage, ImageHandle imageHandle, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple, BITMAP bm, int imgWidth, int imgHeight) { |
1789 | 1791 |
|
1790 | 1792 | /* Find the RGB values for the transparent pixel. */ |
1791 | 1793 | boolean isDib = bm.bmBits != 0; |
1792 | | - long hBitmap = imageHandle; |
| 1794 | + long hBitmap = imageHandle.getHandle(); |
1793 | 1795 | long srcHdc = OS.CreateCompatibleDC(handle); |
1794 | 1796 | long oldSrcBitmap = OS.SelectObject(srcHdc, hBitmap); |
1795 | 1797 | byte[] originalColors = null; |
@@ -1834,7 +1836,7 @@ private void drawBitmapTransparent(Image srcImage, long imageHandle, int srcX, i |
1834 | 1836 | bmiHeader.biBitCount = bm.bmBitsPixel; |
1835 | 1837 | byte[] bmi = new byte[BITMAPINFOHEADER.sizeof + numColors * 4]; |
1836 | 1838 | OS.MoveMemory(bmi, bmiHeader, BITMAPINFOHEADER.sizeof); |
1837 | | - OS.GetDIBits(srcHdc, imageHandle, 0, 0, null, bmi, OS.DIB_RGB_COLORS); |
| 1839 | + OS.GetDIBits(srcHdc, imageHandle.getHandle(), 0, 0, null, bmi, OS.DIB_RGB_COLORS); |
1838 | 1840 | int offset = BITMAPINFOHEADER.sizeof + 4 * srcImage.transparentPixel; |
1839 | 1841 | transRed = bmi[offset + 2] & 0xFF; |
1840 | 1842 | transGreen = bmi[offset + 1] & 0xFF; |
@@ -1907,7 +1909,7 @@ private void drawBitmapTransparent(Image srcImage, long imageHandle, int srcX, i |
1907 | 1909 | OS.DeleteObject(maskBitmap); |
1908 | 1910 | } |
1909 | 1911 | OS.SelectObject(srcHdc, oldSrcBitmap); |
1910 | | - if (hBitmap != imageHandle) OS.DeleteObject(hBitmap); |
| 1912 | + if (hBitmap != imageHandle.getHandle()) OS.DeleteObject(hBitmap); |
1911 | 1913 | OS.DeleteDC(srcHdc); |
1912 | 1914 | } |
1913 | 1915 |
|
@@ -4483,7 +4485,7 @@ private void init(Drawable drawable, GCData data, long hDC) { |
4483 | 4485 | } |
4484 | 4486 | Image image = data.image; |
4485 | 4487 | if (image != null) { |
4486 | | - data.hNullBitmap = OS.SelectObject(hDC, image.getHandle(data.imageZoom, data.nativeZoom)); |
| 4488 | + data.hNullBitmap = OS.SelectObject(hDC, image.getHandle(data.imageZoom, data.nativeZoom).getHandle()); |
4487 | 4489 | image.memGC = this; |
4488 | 4490 | } |
4489 | 4491 | int layout = data.layout; |
|
0 commit comments