/* Copyright (c) 2007 Timothy Wall, All Rights Reserved * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * <p/> * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package com.sun.jna.examples.win32; import java.awt.Rectangle; import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.Structure; import com.sun.jna.examples.win32.User32.POINT; import com.sun.jna.ptr.PointerByReference; /** Definition (incomplete) of <code>gdi32.dll</code>. */ public interface GDI32 extends W32API { GDI32 INSTANCE = (GDI32) Native.loadLibrary("gdi32", GDI32.class, DEFAULT_OPTIONS); class RECT extends Structure { public int left; public int top; public int right; public int bottom; public Rectangle toRectangle() { return new Rectangle(left, top, right-left, bottom-top); } public String toString() { return "[(" + left + "," + top + ")(" + right + "," + bottom + ")]"; } } int RDH_RECTANGLES = 1; class RGNDATAHEADER extends Structure { public int dwSize = size(); public int iType = RDH_RECTANGLES; // required public int nCount; public int nRgnSize; public RECT rcBound; } class RGNDATA extends Structure { public RGNDATAHEADER rdh; public byte[] Buffer; public RGNDATA(int bufferSize) { Buffer = new byte[bufferSize]; allocateMemory(); } } public HRGN ExtCreateRegion(Pointer lpXform, int nCount, RGNDATA lpRgnData); int RGN_AND = 1; int RGN_OR = 2; int RGN_XOR = 3; int RGN_DIFF = 4; int RGN_COPY = 5; int ERROR = 0; int NULLREGION = 1; int SIMPLEREGION = 2; int COMPLEXREGION = 3; int CombineRgn(HRGN hrgnDest, HRGN hrgnSrc1, HRGN hrgnSrc2, int fnCombineMode); HRGN CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); HRGN CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse); int ALTERNATE = 1; int WINDING = 2; HRGN CreatePolyPolygonRgn(POINT[] lppt, int[] lpPolyCounts, int nCount, int fnPolyFillMode); boolean SetRectRgn(HRGN hrgn, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); int SetPixel(HDC hDC, int x, int y, int crColor); HDC CreateCompatibleDC(HDC hDC); boolean DeleteDC(HDC hDC); int BI_RGB = 0; int BI_RLE8 = 1; int BI_RLE4 = 2; int BI_BITFIELDS = 3; int BI_JPEG = 4; int BI_PNG = 5; class BITMAPINFOHEADER extends Structure { public int biSize = size(); public int biWidth; public int biHeight; public short biPlanes; public short biBitCount; public int biCompression; public int biSizeImage; public int biXPelsPerMeter; public int biYPelsPerMeter; public int biClrUsed; public int biClrImportant; } class RGBQUAD extends Structure { public byte rgbBlue; public byte rgbGreen; public byte rgbRed; public byte rgbReserved = 0; } class BITMAPINFO extends Structure { public BITMAPINFOHEADER bmiHeader = new BITMAPINFOHEADER(); //RGBQUAD: //byte rgbBlue; //byte rgbGreen; //byte rgbRed; //byte rgbReserved = 0; int[] bmiColors = new int[1]; public BITMAPINFO() { this(1); } public BITMAPINFO(int size) { bmiColors = new int[size]; allocateMemory(); } } int DIB_RGB_COLORS = 0; int DIB_PAL_COLORS = 1; HBITMAP CreateDIBitmap(HDC hDC, BITMAPINFOHEADER lpbmih, int fdwInit, Pointer lpbInit, BITMAPINFO lpbmi, int fuUsage); HBITMAP CreateDIBSection(HDC hDC, BITMAPINFO pbmi, int iUsage, PointerByReference ppvBits, Pointer hSection, int dwOffset); HBITMAP CreateCompatibleBitmap(HDC hDC, int width, int height); HANDLE SelectObject(HDC hDC, HANDLE hGDIObj); boolean DeleteObject(HANDLE p); }