From 895ba26e996d72ccb4ff3db243886497f2133408 Mon Sep 17 00:00:00 2001 From: Nigh Date: Mon, 25 May 2020 02:25:24 +0800 Subject: [PATCH] iwck v2.0 Signed-off-by: Nigh --- Gdip.ahk | 2267 ----------------------------------- Gdip_All.ahk | 3047 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 18 +- Screenshot.png | Bin 7431 -> 7637 bytes iwck.exe | Bin 0 -> 449024 bytes main.ahk | 271 +++-- 6 files changed, 3232 insertions(+), 2371 deletions(-) delete mode 100644 Gdip.ahk create mode 100644 Gdip_All.ahk create mode 100644 iwck.exe diff --git a/Gdip.ahk b/Gdip.ahk deleted file mode 100644 index 0dd5849..0000000 --- a/Gdip.ahk +++ /dev/null @@ -1,2267 +0,0 @@ -; Gdip standard library v1.43 by tic (Tariq Porter) 04/11/10 -; -;##################################################################################### -;##################################################################################### -; STATUS ENUMERATION -; Return values for functions specified to have status enumerated return type -;##################################################################################### -; -; Ok = = 0 -; GenericError = 1 -; InvalidParameter = 2 -; OutOfMemory = 3 -; ObjectBusy = 4 -; InsufficientBuffer = 5 -; NotImplemented = 6 -; Win32Error = 7 -; WrongState = 8 -; Aborted = 9 -; FileNotFound = 10 -; ValueOverflow = 11 -; AccessDenied = 12 -; UnknownImageFormat = 13 -; FontFamilyNotFound = 14 -; FontStyleNotFound = 15 -; NotTrueTypeFont = 16 -; UnsupportedGdiplusVersion = 17 -; GdiplusNotInitialized = 18 -; PropertyNotFound = 19 -; PropertyNotSupported = 20 -; ProfileNotFound = 21 -; -;##################################################################################### -;##################################################################################### -; FUNCTIONS -;##################################################################################### -; -; UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255) -; BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster="") -; StretchBlt(dDC, dx, dy, dw, dh, sDC, sx, sy, sw, sh, Raster="") -; SetImage(hwnd, hBitmap) -; Gdip_BitmapFromScreen(Screen=0, Raster="") -; CreateRectF(ByRef RectF, x, y, w, h) -; CreateSizeF(ByRef SizeF, w, h) -; CreateDIBSection -; -;##################################################################################### - -; Function: UpdateLayeredWindow -; Description: Updates a layered window with the handle to the DC of a gdi bitmap -; -; hwnd Handle of the layered window to update -; hdc Handle to the DC of the GDI bitmap to update the window with -; Layeredx x position to place the window -; Layeredy y position to place the window -; Layeredw Width of the window -; Layeredh Height of the window -; Alpha Default = 255 : The transparency (0-255) to set the window transparency -; -; return If the function succeeds, the return value is nonzero -; -; notes If x or y omitted, then layered window will use its current coordinates -; If w or h omitted then current width and height will be used - -UpdateLayeredWindow(hwnd, hdc, x="", y="", w="", h="", Alpha=255) -{ - if ((x != "") && (y != "")) - VarSetCapacity(pt, 8), NumPut(x, pt, 0), NumPut(y, pt, 4) - - if (w = "") ||(h = "") - WinGetPos,,, w, h, ahk_id %hwnd% - - return DllCall("UpdateLayeredWindow", "uint", hwnd, "uint", 0, "uint", ((x = "") && (y = "")) ? 0 : &pt - , "int64*", w|h<<32, "uint", hdc, "int64*", 0, "uint", 0, "uint*", Alpha<<16|1<<24, "uint", 2) -} - -;##################################################################################### - -; Function BitBlt -; Description The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle -; of pixels from the specified source device context into a destination device context. -; -; dDC handle to destination DC -; dx x-coord of destination upper-left corner -; dy y-coord of destination upper-left corner -; dw width of the area to copy -; dh height of the area to copy -; sDC handle to source DC -; sx x-coordinate of source upper-left corner -; sy y-coordinate of source upper-left corner -; Raster raster operation code -; -; return If the function succeeds, the return value is nonzero -; -; notes If no raster operation is specified, then SRCCOPY is used, which copies the source directly to the destination rectangle -; -; BLACKNESS = 0x00000042 -; NOTSRCERASE = 0x001100A6 -; NOTSRCCOPY = 0x00330008 -; SRCERASE = 0x00440328 -; DSTINVERT = 0x00550009 -; PATINVERT = 0x005A0049 -; SRCINVERT = 0x00660046 -; SRCAND = 0x008800C6 -; MERGEPAINT = 0x00BB0226 -; MERGECOPY = 0x00C000CA -; SRCCOPY = 0x00CC0020 -; SRCPAINT = 0x00EE0086 -; PATCOPY = 0x00F00021 -; PATPAINT = 0x00FB0A09 -; WHITENESS = 0x00FF0062 -; CAPTUREBLT = 0x40000000 -; NOMIRRORBITMAP = 0x80000000 - -BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster="") -{ - return DllCall("gdi32\BitBlt", "uint", dDC, "int", dx, "int", dy, "int", dw, "int", dh - , "uint", sDC, "int", sx, "int", sy, "uint", Raster ? Raster : 0x00CC0020) -} - -;##################################################################################### - -; Function StretchBlt -; Description The StretchBlt function copies a bitmap from a source rectangle into a destination rectangle, -; stretching or compressing the bitmap to fit the dimensions of the destination rectangle, if necessary. -; The system stretches or compresses the bitmap according to the stretching mode currently set in the destination device context. -; -; ddc handle to destination DC -; dx x-coord of destination upper-left corner -; dy y-coord of destination upper-left corner -; dw width of destination rectangle -; dh height of destination rectangle -; sdc handle to source DC -; sx x-coordinate of source upper-left corner -; sy y-coordinate of source upper-left corner -; sw width of source rectangle -; sh height of source rectangle -; Raster raster operation code -; -; return If the function succeeds, the return value is nonzero -; -; notes If no raster operation is specified, then SRCCOPY is used. It uses the same raster operations as BitBlt - -StretchBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, sw, sh, Raster="") -{ - return DllCall("gdi32\StretchBlt", "uint", ddc, "int", dx, "int", dy, "int", dw, "int", dh - , "uint", sdc, "int", sx, "int", sy, "int", sw, "int", sh, "uint", Raster ? Raster : 0x00CC0020) -} - -;##################################################################################### - -; Function SetStretchBltMode -; Description The SetStretchBltMode function sets the bitmap stretching mode in the specified device context -; -; hdc handle to the DC -; iStretchMode The stretching mode, describing how the target will be stretched -; -; return If the function succeeds, the return value is the previous stretching mode. If it fails it will return 0 -; -; STRETCH_ANDSCANS = 0x01 -; STRETCH_ORSCANS = 0x02 -; STRETCH_DELETESCANS = 0x03 -; STRETCH_HALFTONE = 0x04 - -SetStretchBltMode(hdc, iStretchMode=4) -{ - return DllCall("gdi32\SetStretchBltMode", "uint", hdc, "int", iStretchMode) -} - -;##################################################################################### - -; Function SetImage -; Description Associates a new image with a static control -; -; hwnd handle of the control to update -; hBitmap a gdi bitmap to associate the static control with -; -; return If the function succeeds, the return value is nonzero - -SetImage(hwnd, hBitmap) -{ - SendMessage, 0x172, 0x0, hBitmap,, ahk_id %hwnd% - E := ErrorLevel - DeleteObject(E) - return E -} - -;##################################################################################### - -; Function SetSysColorToControl -; Description Sets a solid colour to a control -; -; hwnd handle of the control to update -; SysColor A system colour to set to the control -; -; return If the function succeeds, the return value is zero -; -; notes A control must have the 0xE style set to it so it is recognised as a bitmap -; By default SysColor=15 is used which is COLOR_3DFACE. This is the standard background for a control -; -; COLOR_3DDKSHADOW = 21 -; COLOR_3DFACE = 15 -; COLOR_3DHIGHLIGHT = 20 -; COLOR_3DHILIGHT = 20 -; COLOR_3DLIGHT = 22 -; COLOR_3DSHADOW = 16 -; COLOR_ACTIVEBORDER = 10 -; COLOR_ACTIVECAPTION = 2 -; COLOR_APPWORKSPACE = 12 -; COLOR_BACKGROUND = 1 -; COLOR_BTNFACE = 15 -; COLOR_BTNHIGHLIGHT = 20 -; COLOR_BTNHILIGHT = 20 -; COLOR_BTNSHADOW = 16 -; COLOR_BTNTEXT = 18 -; COLOR_CAPTIONTEXT = 9 -; COLOR_DESKTOP = 1 -; COLOR_GRADIENTACTIVECAPTION = 27 -; COLOR_GRADIENTINACTIVECAPTION = 28 -; COLOR_GRAYTEXT = 17 -; COLOR_HIGHLIGHT = 13 -; COLOR_HIGHLIGHTTEXT = 14 -; COLOR_HOTLIGHT = 26 -; COLOR_INACTIVEBORDER = 11 -; COLOR_INACTIVECAPTION = 3 -; COLOR_INACTIVECAPTIONTEXT = 19 -; COLOR_INFOBK = 24 -; COLOR_INFOTEXT = 23 -; COLOR_MENU = 4 -; COLOR_MENUHILIGHT = 29 -; COLOR_MENUBAR = 30 -; COLOR_MENUTEXT = 7 -; COLOR_SCROLLBAR = 0 -; COLOR_WINDOW = 5 -; COLOR_WINDOWFRAME = 6 -; COLOR_WINDOWTEXT = 8 - -SetSysColorToControl(hwnd, SysColor=15) -{ - WinGetPos,,, w, h, ahk_id %hwnd% - bc := DllCall("GetSysColor", "Int", SysColor) - pBrushClear := Gdip_BrushCreateSolid(0xff000000 | (bc >> 16 | bc & 0xff00 | (bc & 0xff) << 16)) - pBitmap := Gdip_CreateBitmap(w, h), G := Gdip_GraphicsFromImage(pBitmap) - Gdip_FillRectangle(G, pBrushClear, 0, 0, w, h) - hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) - SetImage(hwnd, hBitmap) - Gdip_DeleteBrush(pBrushClear) - Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmap), DeleteObject(hBitmap) - return 0 -} - -;##################################################################################### - -; Function Gdip_BitmapFromScreen -; Description Gets a gdi+ bitmap from the screen -; -; Screen 0 = All screens -; Any numerical value = Just that screen -; x|y|w|h = Take specific coordinates with a width and height -; Raster raster operation code -; -; return If the function succeeds, the return value is a pointer to a gdi+ bitmap -; -1: one or more of x,y,w,h not passed properly -; -; notes If no raster operation is specified, then SRCCOPY is used to the returned bitmap - -Gdip_BitmapFromScreen(Screen=0, Raster="") -{ - if (Screen = 0) - { - Sysget, x, 76 - Sysget, y, 77 - Sysget, w, 78 - Sysget, h, 79 - } - else if (SubStr(Screen, 1, 5) = "hwnd:") - { - Screen := SubStr(Screen, 6) - if !WinExist( "ahk_id " Screen) - return -2 - WinGetPos,,, w, h, ahk_id %Screen% - x := y := 0 - hhdc := GetDCEx(Screen, 1) - } - else if (Screen&1 != "") - { - Sysget, M, Monitor, %Screen% - x := MLeft, y := MTop, w := MRight-MLeft, h := MBottom-MTop - } - else - { - StringSplit, S, Screen, | - x := S1, y := S2, w := S3, h := S4 - } - - if (x = "") || (y = "") || (w = "") || (h = "") - return -1 - - chdc := CreateCompatibleDC(), hbm := CreateDIBSection(w, h, chdc), obm := SelectObject(chdc, hbm), hhdc := hhdc ? hhdc : GetDC() - BitBlt(chdc, 0, 0, w, h, hhdc, x, y, Raster) - ReleaseDC(hhdc) - - pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) - SelectObject(chdc, obm), DeleteObject(hbm), DeleteDC(hhdc), DeleteDC(chdc) - return pBitmap -} - -;##################################################################################### - -; Function Gdip_BitmapFromHWND -; Description Uses PrintWindow to get a handle to the specified window and return a bitmap from it -; -; hwnd handle to the window to get a bitmap from -; -; return If the function succeeds, the return value is a pointer to a gdi+ bitmap -; -; notes Window must not be not minimised in order to get a handle to it's client area - -Gdip_BitmapFromHWND(hwnd) -{ - WinGetPos,,, Width, Height, ahk_id %hwnd% - hbm := CreateDIBSection(Width, Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm) - PrintWindow(hwnd, hdc) - pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) - SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc) - return pBitmap -} - -;##################################################################################### - -; Function CreateRectF -; Description Creates a RectF object, containing a the coordinates and dimensions of a rectangle -; -; RectF Name to call the RectF object -; x x-coordinate of the upper left corner of the rectangle -; y y-coordinate of the upper left corner of the rectangle -; w Width of the rectangle -; h Height of the rectangle -; -; return No return value - -CreateRectF(ByRef RectF, x, y, w, h) -{ - VarSetCapacity(RectF, 16) - NumPut(x, RectF, 0, "float"), NumPut(y, RectF, 4, "float"), NumPut(w, RectF, 8, "float"), NumPut(h, RectF, 12, "float") -} - -;##################################################################################### - -; Function CreateRect -; Description Creates a Rect object, containing a the coordinates and dimensions of a rectangle -; -; RectF Name to call the RectF object -; x x-coordinate of the upper left corner of the rectangle -; y y-coordinate of the upper left corner of the rectangle -; w Width of the rectangle -; h Height of the rectangle -; -; return No return value - -CreateRect(ByRef Rect, x, y, w, h) -{ - VarSetCapacity(Rect, 16) - NumPut(x, Rect, 0, "uint"), NumPut(y, Rect, 4, "uint"), NumPut(w, Rect, 8, "uint"), NumPut(h, Rect, 12, "uint") -} -;##################################################################################### - -; Function CreateSizeF -; Description Creates a SizeF object, containing an 2 values -; -; SizeF Name to call the SizeF object -; w w-value for the SizeF object -; h h-value for the SizeF object -; -; return No Return value - -CreateSizeF(ByRef SizeF, w, h) -{ - VarSetCapacity(SizeF, 8) - NumPut(w, SizeF, 0, "float"), NumPut(h, SizeF, 4, "float") -} -;##################################################################################### - -; Function CreatePointF -; Description Creates a SizeF object, containing an 2 values -; -; SizeF Name to call the SizeF object -; w w-value for the SizeF object -; h h-value for the SizeF object -; -; return No Return value - -CreatePointF(ByRef PointF, x, y) -{ - VarSetCapacity(PointF, 8) - NumPut(x, PointF, 0, "float"), NumPut(y, PointF, 4, "float") -} -;##################################################################################### - -; Function CreateDIBSection -; Description The CreateDIBSection function creates a DIB (Device Independent Bitmap) that applications can write to directly -; -; w width of the bitmap to create -; h height of the bitmap to create -; hdc a handle to the device context to use the palette from -; bpp bits per pixel (32 = ARGB) -; ppvBits A pointer to a variable that receives a pointer to the location of the DIB bit values -; -; return returns a DIB. A gdi bitmap -; -; notes ppvBits will receive the location of the pixels in the DIB - -CreateDIBSection(w, h, hdc="", bpp=32, ByRef ppvBits=0) -{ - hdc2 := hdc ? hdc : GetDC() - VarSetCapacity(bi, 40, 0) - NumPut(w, bi, 4), NumPut(h, bi, 8), NumPut(40, bi, 0), NumPut(1, bi, 12, "ushort"), NumPut(0, bi, 16), NumPut(bpp, bi, 14, "ushort") - hbm := DllCall("CreateDIBSection", "uint" , hdc2, "uint" , &bi, "uint" , 0, "uint*", ppvBits, "uint" , 0, "uint" , 0) - - if !hdc - ReleaseDC(hdc2) - return hbm -} - -;##################################################################################### - -; Function PrintWindow -; Description The PrintWindow function copies a visual window into the specified device context (DC), typically a printer DC -; -; hwnd A handle to the window that will be copied -; hdc A handle to the device context -; Flags Drawing options -; -; return If the function succeeds, it returns a nonzero value -; -; PW_CLIENTONLY = 1 - -PrintWindow(hwnd, hdc, Flags=0) -{ - return DllCall("PrintWindow", "uint", hwnd, "uint", hdc, "uint", Flags) -} - -;##################################################################################### - -; Function DestroyIcon -; Description Destroys an icon and frees any memory the icon occupied -; -; hIcon Handle to the icon to be destroyed. The icon must not be in use -; -; return If the function succeeds, the return value is nonzero - -DestroyIcon(hIcon) -{ - return DllCall("DestroyIcon", "uint", hIcon) -} - -;##################################################################################### - -PaintDesktop(hdc) -{ - return DllCall("PaintDesktop", "uint", hdc) -} - -;##################################################################################### - -CreateCompatibleBitmap(hdc, w, h) -{ - return DllCall("gdi32\CreateCompatibleBitmap", "uint", hdc, "int", w, "int", h) -} - -;##################################################################################### - -; Function CreateCompatibleDC -; Description This function creates a memory device context (DC) compatible with the specified device -; -; hdc Handle to an existing device context -; -; return returns the handle to a device context or 0 on failure -; -; notes If this handle is 0 (by default), the function creates a memory device context compatible with the application's current screen - -CreateCompatibleDC(hdc=0) -{ - return DllCall("CreateCompatibleDC", "uint", hdc) -} - -;##################################################################################### - -; Function SelectObject -; Description The SelectObject function selects an object into the specified device context (DC). The new object replaces the previous object of the same type -; -; hdc Handle to a DC -; hgdiobj A handle to the object to be selected into the DC -; -; return If the selected object is not a region and the function succeeds, the return value is a handle to the object being replaced -; -; notes The specified object must have been created by using one of the following functions -; Bitmap - CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection (A single bitmap cannot be selected into more than one DC at the same time) -; Brush - CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush -; Font - CreateFont, CreateFontIndirect -; Pen - CreatePen, CreatePenIndirect -; Region - CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect -; -; notes If the selected object is a region and the function succeeds, the return value is one of the following value -; -; SIMPLEREGION = 2 Region consists of a single rectangle -; COMPLEXREGION = 3 Region consists of more than one rectangle -; NULLREGION = 1 Region is empty - -SelectObject(hdc, hgdiobj) -{ - return DllCall("SelectObject", "uint", hdc, "uint", hgdiobj) -} - -;##################################################################################### - -; Function DeleteObject -; Description This function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object -; After the object is deleted, the specified handle is no longer valid -; -; hObject Handle to a logical pen, brush, font, bitmap, region, or palette to delete -; -; return Nonzero indicates success. Zero indicates that the specified handle is not valid or that the handle is currently selected into a device context - -DeleteObject(hObject) -{ - return DllCall("DeleteObject", "uint", hObject) -} - -;##################################################################################### - -; Function GetDC -; Description This function retrieves a handle to a display device context (DC) for the client area of the specified window. -; The display device context can be used in subsequent graphics display interface (GDI) functions to draw in the client area of the window. -; -; hwnd Handle to the window whose device context is to be retrieved. If this value is NULL, GetDC retrieves the device context for the entire screen -; -; return The handle the device context for the specified window's client area indicates success. NULL indicates failure - -GetDC(hwnd=0) -{ - return DllCall("GetDC", "uint", hwnd) -} - -;##################################################################################### - -; DCX_CACHE = 0x2 -; DCX_CLIPCHILDREN = 0x8 -; DCX_CLIPSIBLINGS = 0x10 -; DCX_EXCLUDERGN = 0x40 -; DCX_EXCLUDEUPDATE = 0x100 -; DCX_INTERSECTRGN = 0x80 -; DCX_INTERSECTUPDATE = 0x200 -; DCX_LOCKWINDOWUPDATE = 0x400 -; DCX_NORECOMPUTE = 0x100000 -; DCX_NORESETATTRS = 0x4 -; DCX_PARENTCLIP = 0x20 -; DCX_VALIDATE = 0x200000 -; DCX_WINDOW = 0x1 - -GetDCEx(hwnd, flags=0, hrgnClip=0) -{ - return DllCall("GetDCEx", "uint", hwnd, "uint", hrgnClip, "int", flags) -} - -;##################################################################################### - -; Function ReleaseDC -; Description This function releases a device context (DC), freeing it for use by other applications. The effect of ReleaseDC depends on the type of device context -; -; hdc Handle to the device context to be released -; hwnd Handle to the window whose device context is to be released -; -; return 1 = released -; 0 = not released -; -; notes The application must call the ReleaseDC function for each call to the GetWindowDC function and for each call to the GetDC function that retrieves a common device context -; An application cannot use the ReleaseDC function to release a device context that was created by calling the CreateDC function; instead, it must use the DeleteDC function. - -ReleaseDC(hdc, hwnd=0) -{ - return DllCall("ReleaseDC", "uint", hwnd, "uint", hdc) -} - -;##################################################################################### - -; Function DeleteDC -; Description The DeleteDC function deletes the specified device context (DC) -; -; hdc A handle to the device context -; -; return If the function succeeds, the return value is nonzero -; -; notes An application must not delete a DC whose handle was obtained by calling the GetDC function. Instead, it must call the ReleaseDC function to free the DC - -DeleteDC(hdc) -{ - return DllCall("DeleteDC", "uint", hdc) -} -;##################################################################################### - -; Function Gdip_LibraryVersion -; Description Get the current library version -; -; return the library version -; -; notes This is useful for non compiled programs to ensure that a person doesn't run an old version when testing your scripts - -Gdip_LibraryVersion() -{ - return 1.43 -} - -;##################################################################################### - -; Function: Gdip_BitmapFromBRA -; Description: Gets a pointer to a gdi+ bitmap from a BRA file -; -; BRAFromMemIn The variable for a BRA file read to memory -; File The name of the file, or its number that you would like (This depends on alternate parameter) -; Alternate Changes whether the File parameter is the file name or its number -; -; return If the function succeeds, the return value is a pointer to a gdi+ bitmap -; -1 = The BRA variable is empty -; -2 = The BRA has an incorrect header -; -3 = The BRA has information missing -; -4 = Could not find file inside the BRA - -Gdip_BitmapFromBRA(ByRef BRAFromMemIn, File, Alternate=0) -{ - if !BRAFromMemIn - return -1 - Loop, Parse, BRAFromMemIn, `n - { - if (A_Index = 1) - { - StringSplit, Header, A_LoopField, | - if (Header0 != 4 || Header2 != "BRA!") - return -2 - } - else if (A_Index = 2) - { - StringSplit, Info, A_LoopField, | - if (Info0 != 3) - return -3 - } - else - break - } - if !Alternate - StringReplace, File, File, \, \\, All - RegExMatch(BRAFromMemIn, "mi`n)^" (Alternate ? File "\|.+?\|(\d+)\|(\d+)" : "\d+\|" File "\|(\d+)\|(\d+)") "$", FileInfo) - if !FileInfo - return -4 - - hData := DllCall("GlobalAlloc", "uint", 2, "uint", FileInfo2) - pData := DllCall("GlobalLock", "uint", hData) - DllCall("RtlMoveMemory", "uint", pData, "uint", &BRAFromMemIn+Info2+FileInfo1, "uint", FileInfo2) - DllCall("GlobalUnlock", "uint", hData) - DllCall("ole32\CreateStreamOnHGlobal", "uint", hData, "int", 1, "uint*", pStream) - DllCall("gdiplus\GdipCreateBitmapFromStream", "uint", pStream, "uint*", pBitmap) - DllCall(NumGet(NumGet(1*pStream)+8), "uint", pStream) - return pBitmap -} - -;##################################################################################### - -; Function Gdip_DrawRectangle -; Description This function uses a pen to draw the outline of a rectangle into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x x-coordinate of the top left of the rectangle -; y y-coordinate of the top left of the rectangle -; w width of the rectanlge -; h height of the rectangle -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) -{ - return DllCall("gdiplus\GdipDrawRectangle", "uint", pGraphics, "uint", pPen, "float", x, "float", y, "float", w, "float", h) -} - -;##################################################################################### - -; Function Gdip_DrawRoundedRectangle -; Description This function uses a pen to draw the outline of a rounded rectangle into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x x-coordinate of the top left of the rounded rectangle -; y y-coordinate of the top left of the rounded rectangle -; w width of the rectanlge -; h height of the rectangle -; r radius of the rounded corners -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawRoundedRectangle(pGraphics, pPen, x, y, w, h, r) -{ - Gdip_SetClipRect(pGraphics, x-r, y-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x+w-r, y-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x-r, y+h-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x+w-r, y+h-r, 2*r, 2*r, 4) - E := Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) - Gdip_ResetClip(pGraphics) - Gdip_SetClipRect(pGraphics, x-(2*r), y+r, w+(4*r), h-(2*r), 4) - Gdip_SetClipRect(pGraphics, x+r, y-(2*r), w-(2*r), h+(4*r), 4) - Gdip_DrawEllipse(pGraphics, pPen, x, y, 2*r, 2*r) - Gdip_DrawEllipse(pGraphics, pPen, x+w-(2*r), y, 2*r, 2*r) - Gdip_DrawEllipse(pGraphics, pPen, x, y+h-(2*r), 2*r, 2*r) - Gdip_DrawEllipse(pGraphics, pPen, x+w-(2*r), y+h-(2*r), 2*r, 2*r) - Gdip_ResetClip(pGraphics) - return E -} - -;##################################################################################### - -; Function Gdip_DrawEllipse -; Description This function uses a pen to draw the outline of an ellipse into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x x-coordinate of the top left of the rectangle the ellipse will be drawn into -; y y-coordinate of the top left of the rectangle the ellipse will be drawn into -; w width of the ellipse -; h height of the ellipse -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) -{ - return DllCall("gdiplus\GdipDrawEllipse", "uint", pGraphics, "uint", pPen, "float", x, "float", y, "float", w, "float", h) -} - -;##################################################################################### - -; Function Gdip_DrawBezier -; Description This function uses a pen to draw the outline of a bezier (a weighted curve) into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x1 x-coordinate of the start of the bezier -; y1 y-coordinate of the start of the bezier -; x2 x-coordinate of the first arc of the bezier -; y2 y-coordinate of the first arc of the bezier -; x3 x-coordinate of the second arc of the bezier -; y3 y-coordinate of the second arc of the bezier -; x4 x-coordinate of the end of the bezier -; y4 y-coordinate of the end of the bezier -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawBezier(pGraphics, pPen, x1, y1, x2, y2, x3, y3, x4, y4) -{ - return DllCall("gdiplus\GdipDrawBezier", "uint", pgraphics, "uint", pPen - , "float", x1, "float", y1, "float", x2, "float", y2 - , "float", x3, "float", y3, "float", x4, "float", y4) -} - -;##################################################################################### - -; Function Gdip_DrawArc -; Description This function uses a pen to draw the outline of an arc into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x x-coordinate of the start of the arc -; y y-coordinate of the start of the arc -; w width of the arc -; h height of the arc -; StartAngle specifies the angle between the x-axis and the starting point of the arc -; SweepAngle specifies the angle between the starting and ending points of the arc -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawArc(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) -{ - return DllCall("gdiplus\GdipDrawArc", "uint", pGraphics, "uint", pPen, "float", x - , "float", y, "float", w, "float", h, "float", StartAngle, "float", SweepAngle) -} - -;##################################################################################### - -; Function Gdip_DrawPie -; Description This function uses a pen to draw the outline of a pie into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x x-coordinate of the start of the pie -; y y-coordinate of the start of the pie -; w width of the pie -; h height of the pie -; StartAngle specifies the angle between the x-axis and the starting point of the pie -; SweepAngle specifies the angle between the starting and ending points of the pie -; -; return status enumeration. 0 = success -; -; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width - -Gdip_DrawPie(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) -{ - return DllCall("gdiplus\GdipDrawPie", "uint", pGraphics, "uint", pPen, "float", x, "float", y, "float", w, "float", h, "float", StartAngle, "float", SweepAngle) -} - -;##################################################################################### - -; Function Gdip_DrawLine -; Description This function uses a pen to draw a line into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; x1 x-coordinate of the start of the line -; y1 y-coordinate of the start of the line -; x2 x-coordinate of the end of the line -; y2 y-coordinate of the end of the line -; -; return status enumeration. 0 = success - -Gdip_DrawLine(pGraphics, pPen, x1, y1, x2, y2) -{ - return DllCall("gdiplus\GdipDrawLine", "uint", pGraphics, "uint", pPen - , "float", x1, "float", y1, "float", x2, "float", y2) -} - -;##################################################################################### - -; Function Gdip_DrawLines -; Description This function uses a pen to draw a series of joined lines into the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pPen Pointer to a pen -; Points the coordinates of all the points passed as x1,y1|x2,y2|x3,y3..... -; -; return status enumeration. 0 = success - -Gdip_DrawLines(pGraphics, pPen, Points) -{ - StringSplit, Points, Points, | - VarSetCapacity(PointF, 8*Points0) - Loop, %Points0% - { - StringSplit, Coord, Points%A_Index%, `, - NumPut(Coord1, PointF, 8*(A_Index-1), "float"), NumPut(Coord2, PointF, (8*(A_Index-1))+4, "float") - } - return DllCall("gdiplus\GdipDrawLines", "uint", pGraphics, "uint", pPen, "uint", &PointF, "int", Points0) -} - -;##################################################################################### - -; Function Gdip_FillRectangle -; Description This function uses a brush to fill a rectangle in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; x x-coordinate of the top left of the rectangle -; y y-coordinate of the top left of the rectangle -; w width of the rectanlge -; h height of the rectangle -; -; return status enumeration. 0 = success - -Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) -{ - return DllCall("gdiplus\GdipFillRectangle", "uint", pGraphics, "int", pBrush - , "float", x, "float", y, "float", w, "float", h) -} - -;##################################################################################### - -; Function Gdip_FillRoundedRectangle -; Description This function uses a brush to fill a rounded rectangle in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; x x-coordinate of the top left of the rounded rectangle -; y y-coordinate of the top left of the rounded rectangle -; w width of the rectanlge -; h height of the rectangle -; r radius of the rounded corners -; -; return status enumeration. 0 = success - -Gdip_FillRoundedRectangle(pGraphics, pBrush, x, y, w, h, r) -{ - Region := Gdip_GetClipRegion(pGraphics) - Gdip_SetClipRect(pGraphics, x-r, y-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x+w-r, y-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x-r, y+h-r, 2*r, 2*r, 4) - Gdip_SetClipRect(pGraphics, x+w-r, y+h-r, 2*r, 2*r, 4) - E := Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) - Gdip_SetClipRegion(pGraphics, Region, 0) - Gdip_SetClipRect(pGraphics, x-(2*r), y+r, w+(4*r), h-(2*r), 4) - Gdip_SetClipRect(pGraphics, x+r, y-(2*r), w-(2*r), h+(4*r), 4) - Gdip_FillEllipse(pGraphics, pBrush, x, y, 2*r, 2*r) - Gdip_FillEllipse(pGraphics, pBrush, x+w-(2*r), y, 2*r, 2*r) - Gdip_FillEllipse(pGraphics, pBrush, x, y+h-(2*r), 2*r, 2*r) - Gdip_FillEllipse(pGraphics, pBrush, x+w-(2*r), y+h-(2*r), 2*r, 2*r) - Gdip_SetClipRegion(pGraphics, Region, 0) - Gdip_DeleteRegion(Region) - return E -} - -;##################################################################################### - -; Function Gdip_FillPolygon -; Description This function uses a brush to fill a polygon in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; Points the coordinates of all the points passed as x1,y1|x2,y2|x3,y3..... -; -; return status enumeration. 0 = success -; -; notes Alternate will fill the polygon as a whole, wheras winding will fill each new "segment" -; Alternate = 0 -; Winding = 1 - -Gdip_FillPolygon(pGraphics, pBrush, Points, FillMode=0) -{ - StringSplit, Points, Points, | - VarSetCapacity(PointF, 8*Points0) - Loop, %Points0% - { - StringSplit, Coord, Points%A_Index%, `, - NumPut(Coord1, PointF, 8*(A_Index-1), "float"), NumPut(Coord2, PointF, (8*(A_Index-1))+4, "float") - } - return DllCall("gdiplus\GdipFillPolygon", "uint", pGraphics, "uint", pBrush, "uint", &PointF, "int", Points0, "int", FillMode) -} - -;##################################################################################### - -; Function Gdip_FillPie -; Description This function uses a brush to fill a pie in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; x x-coordinate of the top left of the pie -; y y-coordinate of the top left of the pie -; w width of the pie -; h height of the pie -; StartAngle specifies the angle between the x-axis and the starting point of the pie -; SweepAngle specifies the angle between the starting and ending points of the pie -; -; return status enumeration. 0 = success - -Gdip_FillPie(pGraphics, pBrush, x, y, w, h, StartAngle, SweepAngle) -{ - return DllCall("gdiplus\GdipFillPie", "uint", pGraphics, "uint", pBrush - , "float", x, "float", y, "float", w, "float", h, "float", StartAngle, "float", SweepAngle) -} - -;##################################################################################### - -; Function Gdip_FillEllipse -; Description This function uses a brush to fill an ellipse in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; x x-coordinate of the top left of the ellipse -; y y-coordinate of the top left of the ellipse -; w width of the ellipse -; h height of the ellipse -; -; return status enumeration. 0 = success - -Gdip_FillEllipse(pGraphics, pBrush, x, y, w, h) -{ - return DllCall("gdiplus\GdipFillEllipse", "uint", pGraphics, "uint", pBrush, "float", x, "float", y, "float", w, "float", h) -} - -;##################################################################################### - -; Function Gdip_FillRegion -; Description This function uses a brush to fill a region in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; Region Pointer to a Region -; -; return status enumeration. 0 = success -; -; notes You can create a region Gdip_CreateRegion() and then add to this - -Gdip_FillRegion(pGraphics, pBrush, Region) -{ - return DllCall("gdiplus\GdipFillRegion", "uint", pGraphics, "uint", pBrush, "uint", Region) -} - -;##################################################################################### - -; Function Gdip_FillPath -; Description This function uses a brush to fill a path in the Graphics of a bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBrush Pointer to a brush -; Region Pointer to a Path -; -; return status enumeration. 0 = success - -Gdip_FillPath(pGraphics, pBrush, Path) -{ - return DllCall("gdiplus\GdipFillPath", "uint", pGraphics, "uint", pBrush, "uint", Path) -} - -;##################################################################################### - -; Function Gdip_DrawImagePointsRect -; Description This function draws a bitmap into the Graphics of another bitmap and skews it -; -; pGraphics Pointer to the Graphics of a bitmap -; pBitmap Pointer to a bitmap to be drawn -; Points Points passed as x1,y1|x2,y2|x3,y3 (3 points: top left, top right, bottom left) describing the drawing of the bitmap -; sx x-coordinate of source upper-left corner -; sy y-coordinate of source upper-left corner -; sw width of source rectangle -; sh height of source rectangle -; Matrix a matrix used to alter image attributes when drawing -; -; return status enumeration. 0 = success -; -; notes if sx,sy,sw,sh are missed then the entire source bitmap will be used -; Matrix can be omitted to just draw with no alteration to ARGB -; Matrix may be passed as a digit from 0 - 1 to change just transparency -; Matrix can be passed as a matrix with any delimiter - -Gdip_DrawImagePointsRect(pGraphics, pBitmap, Points, sx="", sy="", sw="", sh="", Matrix=1) -{ - StringSplit, Points, Points, | - VarSetCapacity(PointF, 8*Points0) - Loop, %Points0% - { - StringSplit, Coord, Points%A_Index%, `, - NumPut(Coord1, PointF, 8*(A_Index-1), "float"), NumPut(Coord2, PointF, (8*(A_Index-1))+4, "float") - } - - if (Matrix&1 = "") - ImageAttr := Gdip_SetImageAttributesColorMatrix(Matrix) - else if (Matrix != 1) - ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") - - if (sx = "" && sy = "" && sw = "" && sh = "") - { - sx := 0, sy := 0 - sw := Gdip_GetImageWidth(pBitmap) - sh := Gdip_GetImageHeight(pBitmap) - } - - E := DllCall("gdiplus\GdipDrawImagePointsRect", "uint", pGraphics, "uint", pBitmap - , "uint", &PointF, "int", Points0, "float", sx, "float", sy, "float", sw, "float", sh - , "int", 2, "uint", ImageAttr, "uint", 0, "uint", 0) - if ImageAttr - Gdip_DisposeImageAttributes(ImageAttr) - return E -} - -;##################################################################################### - -; Function Gdip_DrawImage -; Description This function draws a bitmap into the Graphics of another bitmap -; -; pGraphics Pointer to the Graphics of a bitmap -; pBitmap Pointer to a bitmap to be drawn -; dx x-coord of destination upper-left corner -; dy y-coord of destination upper-left corner -; dw width of destination image -; dh height of destination image -; sx x-coordinate of source upper-left corner -; sy y-coordinate of source upper-left corner -; sw width of source image -; sh height of source image -; Matrix a matrix used to alter image attributes when drawing -; -; return status enumeration. 0 = success -; -; notes if sx,sy,sw,sh are missed then the entire source bitmap will be used -; Gdip_DrawImage performs faster -; Matrix can be omitted to just draw with no alteration to ARGB -; Matrix may be passed as a digit from 0 - 1 to change just transparency -; Matrix can be passed as a matrix with any delimiter. For example: -; MatrixBright= -; ( -; 1.5 |0 |0 |0 |0 -; 0 |1.5 |0 |0 |0 -; 0 |0 |1.5 |0 |0 -; 0 |0 |0 |1 |0 -; 0.05 |0.05 |0.05 |0 |1 -; ) -; -; notes MatrixBright = 1.5|0|0|0|0|0|1.5|0|0|0|0|0|1.5|0|0|0|0|0|1|0|0.05|0.05|0.05|0|1 -; MatrixGreyScale = 0.299|0.299|0.299|0|0|0.587|0.587|0.587|0|0|0.114|0.114|0.114|0|0|0|0|0|1|0|0|0|0|0|1 -; MatrixNegative = -1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|1|0|0|0|0|0|1 - -Gdip_DrawImage(pGraphics, pBitmap, dx="", dy="", dw="", dh="", sx="", sy="", sw="", sh="", Matrix=1) -{ - if (Matrix&1 = "") - ImageAttr := Gdip_SetImageAttributesColorMatrix(Matrix) - else if (Matrix != 1) - ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") - - if (sx = "" && sy = "" && sw = "" && sh = "") - { - if (dx = "" && dy = "" && dw = "" && dh = "") - { - sx := dx := 0, sy := dy := 0 - sw := dw := Gdip_GetImageWidth(pBitmap) - sh := dh := Gdip_GetImageHeight(pBitmap) - } - else - { - sx := sy := 0 - sw := Gdip_GetImageWidth(pBitmap) - sh := Gdip_GetImageHeight(pBitmap) - } - } - - E := DllCall("gdiplus\GdipDrawImageRectRect", "uint", pGraphics, "uint", pBitmap - , "float", dx, "float", dy, "float", dw, "float", dh - , "float", sx, "float", sy, "float", sw, "float", sh - , "int", 2, "uint", ImageAttr, "uint", 0, "uint", 0) - if ImageAttr - Gdip_DisposeImageAttributes(ImageAttr) - return E -} - -;##################################################################################### - -; Function Gdip_SetImageAttributesColorMatrix -; Description This function creates an image matrix ready for drawing -; -; Matrix a matrix used to alter image attributes when drawing -; passed with any delimeter -; -; return returns an image matrix on sucess or 0 if it fails -; -; notes MatrixBright = 1.5|0|0|0|0|0|1.5|0|0|0|0|0|1.5|0|0|0|0|0|1|0|0.05|0.05|0.05|0|1 -; MatrixGreyScale = 0.299|0.299|0.299|0|0|0.587|0.587|0.587|0|0|0.114|0.114|0.114|0|0|0|0|0|1|0|0|0|0|0|1 -; MatrixNegative = -1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|1|0|0|0|0|0|1 - -Gdip_SetImageAttributesColorMatrix(Matrix) -{ - VarSetCapacity(ColourMatrix, 100, 0) - Matrix := RegExReplace(RegExReplace(Matrix, "^[^\d-\.]+([\d\.])", "$1", "", 1), "[^\d-\.]+", "|") - StringSplit, Matrix, Matrix, | - Loop, 25 - { - Matrix := (Matrix%A_Index% != "") ? Matrix%A_Index% : Mod(A_Index-1, 6) ? 0 : 1 - NumPut(Matrix, ColourMatrix, (A_Index-1)*4, "float") - } - DllCall("gdiplus\GdipCreateImageAttributes", "uint*", ImageAttr) - DllCall("gdiplus\GdipSetImageAttributesColorMatrix", "uint", ImageAttr, "int", 1, "int", 1, "uint", &ColourMatrix, "int", 0, "int", 0) - return ImageAttr -} - -;##################################################################################### - -; Function Gdip_GraphicsFromImage -; Description This function gets the graphics for a bitmap used for drawing functions -; -; pBitmap Pointer to a bitmap to get the pointer to its graphics -; -; return returns a pointer to the graphics of a bitmap -; -; notes a bitmap can be drawn into the graphics of another bitmap - -Gdip_GraphicsFromImage(pBitmap) -{ - DllCall("gdiplus\GdipGetImageGraphicsContext", "uint", pBitmap, "uint*", pGraphics) - return pGraphics -} - -;##################################################################################### - -; Function Gdip_GraphicsFromHDC -; Description This function gets the graphics from the handle to a device context -; -; hdc This is the handle to the device context -; -; return returns a pointer to the graphics of a bitmap -; -; notes You can draw a bitmap into the graphics of another bitmap - -Gdip_GraphicsFromHDC(hdc) -{ - DllCall("gdiplus\GdipCreateFromHDC", "uint", hdc, "uint*", pGraphics) - return pGraphics -} - -;##################################################################################### - -; Function Gdip_GetDC -; Description This function gets the device context of the passed Graphics -; -; hdc This is the handle to the device context -; -; return returns the device context for the graphics of a bitmap - -Gdip_GetDC(pGraphics) -{ - DllCall("gdiplus\GdipGetDC", "uint", pGraphics, "uint*", hdc) - return hdc -} - -;##################################################################################### - -; Function Gdip_ReleaseDC -; Description This function releases a device context from use for further use -; -; pGraphics Pointer to the graphics of a bitmap -; hdc This is the handle to the device context -; -; return status enumeration. 0 = success - -Gdip_ReleaseDC(pGraphics, hdc) -{ - return DllCall("gdiplus\GdipReleaseDC", "uint", pGraphics, "uint", hdc) -} - -;##################################################################################### - -; Function Gdip_GraphicsClear -; Description Clears the graphics of a bitmap ready for further drawing -; -; pGraphics Pointer to the graphics of a bitmap -; ARGB The colour to clear the graphics to -; -; return status enumeration. 0 = success -; -; notes By default this will make the background invisible -; Using clipping regions you can clear a particular area on the graphics rather than clearing the entire graphics - -Gdip_GraphicsClear(pGraphics, ARGB=0x00ffffff) -{ - return DllCall("gdiplus\GdipGraphicsClear", "uint", pGraphics, "int", ARGB) -} - -;##################################################################################### - -; Function Gdip_BlurBitmap -; Description Gives a pointer to a blurred bitmap from a pointer to a bitmap -; -; pBitmap Pointer to a bitmap to be blurred -; Blur The Amount to blur a bitmap by from 1 (least blur) to 100 (most blur) -; -; return If the function succeeds, the return value is a pointer to the new blurred bitmap -; -1 = The blur parameter is outside the range 1-100 -; -; notes This function will not dispose of the original bitmap - -Gdip_BlurBitmap(pBitmap, Blur) -{ - if (Blur > 100) || (Blur < 1) - return -1 - - sWidth := Gdip_GetImageWidth(pBitmap), sHeight := Gdip_GetImageHeight(pBitmap) - dWidth := sWidth//Blur, dHeight := sHeight//Blur - - pBitmap1 := Gdip_CreateBitmap(dWidth, dHeight) - G1 := Gdip_GraphicsFromImage(pBitmap1) - Gdip_SetInterpolationMode(G1, 7) - Gdip_DrawImage(G1, pBitmap, 0, 0, dWidth, dHeight, 0, 0, sWidth, sHeight) - - Gdip_DeleteGraphics(G1) - - pBitmap2 := Gdip_CreateBitmap(sWidth, sHeight) - G2 := Gdip_GraphicsFromImage(pBitmap2) - Gdip_SetInterpolationMode(G2, 7) - Gdip_DrawImage(G2, pBitmap1, 0, 0, sWidth, sHeight, 0, 0, dWidth, dHeight) - - Gdip_DeleteGraphics(G2) - Gdip_DisposeImage(pBitmap1) - return pBitmap2 -} - -;##################################################################################### - -; Function: Gdip_SaveBitmapToFile -; Description: Saves a bitmap to a file in any supported format onto disk -; -; pBitmap Pointer to a bitmap -; sOutput The name of the file that the bitmap will be saved to. Supported extensions are: .BMP,.DIB,.RLE,.JPG,.JPEG,.JPE,.JFIF,.GIF,.TIF,.TIFF,.PNG -; Quality If saving as jpg (.JPG,.JPEG,.JPE,.JFIF) then quality can be 1-100 with default at maximum quality -; -; return If the function succeeds, the return value is zero, otherwise: -; -1 = Extension supplied is not a supported file format -; -2 = Could not get a list of encoders on system -; -3 = Could not find matching encoder for specified file format -; -4 = Could not get WideChar name of output file -; -5 = Could not save file to disk -; -; notes This function will use the extension supplied from the sOutput parameter to determine the output format - -Gdip_SaveBitmapToFile(pBitmap, sOutput, Quality=75) -{ - SplitPath, sOutput,,, Extension - if Extension not in BMP,DIB,RLE,JPG,JPEG,JPE,JFIF,GIF,TIF,TIFF,PNG - return -1 - Extension := "." Extension - - DllCall("gdiplus\GdipGetImageEncodersSize", "uint*", nCount, "uint*", nSize) - VarSetCapacity(ci, nSize) - DllCall("gdiplus\GdipGetImageEncoders", "uint", nCount, "uint", nSize, "uint", &ci) - if !(nCount && nSize) - return -2 - - Loop, %nCount% - { - Location := NumGet(ci, 76*(A_Index-1)+44) - if !A_IsUnicode - { - nSize := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "uint", 0, "int", 0, "uint", 0, "uint", 0) - VarSetCapacity(sString, nSize) - DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "str", sString, "int", nSize, "uint", 0, "uint", 0) - if !InStr(sString, "*" Extension) - continue - } - else - { - nSize := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "uint", 0, "int", 0, "uint", 0, "uint", 0) - sString := "" - Loop, %nSize% - sString .= Chr(NumGet(Location+0, 2*(A_Index-1), "char")) - if !InStr(sString, "*" Extension) - continue - } - pCodec := &ci+76*(A_Index-1) - break - } - if !pCodec - return -3 - - if (Quality != 75) - { - Quality := (Quality < 0) ? 0 : (Quality > 100) ? 100 : Quality - if Extension in .JPG,.JPEG,.JPE,.JFIF - { - DllCall("gdiplus\GdipGetEncoderParameterListSize", "uint", pBitmap, "uint", pCodec, "uint*", nSize) - VarSetCapacity(EncoderParameters, nSize, 0) - DllCall("gdiplus\GdipGetEncoderParameterList", "uint", pBitmap, "uint", pCodec, "uint", nSize, "uint", &EncoderParameters) - Loop, % NumGet(EncoderParameters) ;% - { - if (NumGet(EncoderParameters, (28*(A_Index-1))+20) = 1) && (NumGet(EncoderParameters, (28*(A_Index-1))+24) = 6) - { - p := (28*(A_Index-1))+&EncoderParameters - NumPut(Quality, NumGet(NumPut(4, NumPut(1, p+0)+20))) - break - } - } - } - } - - if !A_IsUnicode - { - nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sOutput, "int", -1, "uint", 0, "int", 0) - VarSetCapacity(wOutput, nSize*2) - DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sOutput, "int", -1, "uint", &wOutput, "int", nSize) - VarSetCapacity(wOutput, -1) - if !VarSetCapacity(wOutput) - return -4 - E := DllCall("gdiplus\GdipSaveImageToFile", "uint", pBitmap, "uint", &wOutput, "uint", pCodec, "uint", p ? p : 0) - } - else - E := DllCall("gdiplus\GdipSaveImageToFile", "uint", pBitmap, "uint", &sOutput, "uint", pCodec, "uint", p ? p : 0) - return E ? -5 : 0 -} - -;##################################################################################### - -; Function Gdip_GetPixel -; Description Gets the ARGB of a pixel in a bitmap -; -; pBitmap Pointer to a bitmap -; x x-coordinate of the pixel -; y y-coordinate of the pixel -; -; return Returns the ARGB value of the pixel - -Gdip_GetPixel(pBitmap, x, y) -{ - DllCall("gdiplus\GdipBitmapGetPixel", "uint", pBitmap, "int", x, "int", y, "uint*", ARGB) - return ARGB -} - -;##################################################################################### - -; Function Gdip_SetPixel -; Description Sets the ARGB of a pixel in a bitmap -; -; pBitmap Pointer to a bitmap -; x x-coordinate of the pixel -; y y-coordinate of the pixel -; -; return status enumeration. 0 = success - -Gdip_SetPixel(pBitmap, x, y, ARGB) -{ - return DllCall("gdiplus\GdipBitmapSetPixel", "uint", pBitmap, "int", x, "int", y, "int", ARGB) -} - -;##################################################################################### - -; Function Gdip_GetImageWidth -; Description Gives the width of a bitmap -; -; pBitmap Pointer to a bitmap -; -; return Returns the width in pixels of the supplied bitmap - -Gdip_GetImageWidth(pBitmap) -{ - DllCall("gdiplus\GdipGetImageWidth", "uint", pBitmap, "uint*", Width) - return Width -} - -;##################################################################################### - -; Function Gdip_GetImageHeight -; Description Gives the height of a bitmap -; -; pBitmap Pointer to a bitmap -; -; return Returns the height in pixels of the supplied bitmap - -Gdip_GetImageHeight(pBitmap) -{ - DllCall("gdiplus\GdipGetImageHeight", "uint", pBitmap, "uint*", Height) - return Height -} - -;##################################################################################### - -; Function Gdip_GetDimensions -; Description Gives the width and height of a bitmap -; -; pBitmap Pointer to a bitmap -; Width ByRef variable. This variable will be set to the width of the bitmap -; Height ByRef variable. This variable will be set to the height of the bitmap -; -; return No return value -; Gdip_GetDimensions(pBitmap, ThisWidth, ThisHeight) will set ThisWidth to the width and ThisHeight to the height - -Gdip_GetDimensions(pBitmap, ByRef Width, ByRef Height) -{ - Width := Gdip_GetImageWidth(pBitmap) - Height := Gdip_GetImageHeight(pBitmap) -} - -;##################################################################################### - -Gdip_GetImagePixelFormat(pBitmap) -{ - DllCall("gdiplus\GdipGetImagePixelFormat", "uint", pBitmap, "uint*", Format) - return Format -} - -;##################################################################################### - -; Function Gdip_GetDpiX -; Description Gives the horizontal dots per inch of the graphics of a bitmap -; -; pBitmap Pointer to a bitmap -; Width ByRef variable. This variable will be set to the width of the bitmap -; Height ByRef variable. This variable will be set to the height of the bitmap -; -; return No return value -; Gdip_GetDimensions(pBitmap, ThisWidth, ThisHeight) will set ThisWidth to the width and ThisHeight to the height - -Gdip_GetDpiX(pGraphics) -{ - DllCall("gdiplus\GdipGetDpiX", "uint", pGraphics, "float*", dpix) - return Round(dpix) -} - -Gdip_GetDpiY(pGraphics) -{ - DllCall("gdiplus\GdipGetDpiY", "uint", pGraphics, "float*", dpiy) - return Round(dpiy) -} - -Gdip_GetImageHorizontalResolution(pBitmap) -{ - DllCall("gdiplus\GdipGetImageHorizontalResolution", "uint", pBitmap, "float*", dpix) - return Round(dpix) -} - -Gdip_GetImageVerticalResolution(pBitmap) -{ - DllCall("gdiplus\GdipGetImageVerticalResolution", "uint", pBitmap, "float*", dpiy) - return Round(dpiy) -} - -Gdip_CreateBitmapFromFile(sFile, IconNumber=1, IconSize="") -{ - SplitPath, sFile,,, ext - if ext in exe,dll - { - Sizes := IconSize ? IconSize : 256 "|" 128 "|" 64 "|" 48 "|" 32 "|" 16 - VarSetCapacity(buf, 40) - Loop, Parse, Sizes, | - { - DllCall("PrivateExtractIcons", "str", sFile, "int", IconNumber-1, "int", A_LoopField, "int", A_LoopField, "uint*", hIcon, "uint*", 0, "uint", 1, "uint", 0) - if !hIcon - continue - - if !DllCall("GetIconInfo", "uint", hIcon, "uint", &buf) - { - DestroyIcon(hIcon) - continue - } - hbmColor := NumGet(buf, 16) - hbmMask := NumGet(buf, 12) - - if !(hbmColor && DllCall("GetObject", "uint", hbmColor, "int", 24, "uint", &buf)) - { - DestroyIcon(hIcon) - continue - } - break - } - if !hIcon - return -1 - - Width := NumGet(buf, 4, "int"), Height := NumGet(buf, 8, "int") - hbm := CreateDIBSection(Width, -Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm) - - if !DllCall("DrawIconEx", "uint", hdc, "int", 0, "int", 0, "uint", hIcon, "uint", Width, "uint", Height, "uint", 0, "uint", 0, "uint", 3) - { - DestroyIcon(hIcon) - return -2 - } - - VarSetCapacity(dib, 84) - DllCall("GetObject", "uint", hbm, "int", 84, "uint", &dib) - Stride := NumGet(dib, 12), Bits := NumGet(dib, 20) - - DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", Stride, "int", 0x26200A, "uint", Bits, "uint*", pBitmapOld) - pBitmap := Gdip_CreateBitmap(Width, Height), G := Gdip_GraphicsFromImage(pBitmap) - Gdip_DrawImage(G, pBitmapOld, 0, 0, Width, Height, 0, 0, Width, Height) - SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc) - Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmapOld) - DestroyIcon(hIcon) - } - else - { - if !A_IsUnicode - { - VarSetCapacity(wFile, 1023) - DllCall("kernel32\MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sFile, "int", -1, "uint", &wFile, "int", 512) - DllCall("gdiplus\GdipCreateBitmapFromFile", "uint", &wFile, "uint*", pBitmap) - } - else - DllCall("gdiplus\GdipCreateBitmapFromFile", "uint", &sFile, "uint*", pBitmap) - } - return pBitmap -} - -Gdip_CreateBitmapFromHBITMAP(hBitmap, Palette=0) -{ - DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", "uint", hBitmap, "uint", Palette, "uint*", pBitmap) - return pBitmap -} - -Gdip_CreateHBITMAPFromBitmap(pBitmap, Background=0xffffffff) -{ - DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", "uint", pBitmap, "uint*", hbm, "int", Background) - return hbm -} - -Gdip_CreateBitmapFromHICON(hIcon) -{ - DllCall("gdiplus\GdipCreateBitmapFromHICON", "uint", hIcon, "uint*", pBitmap) - return pBitmap -} - -Gdip_CreateHICONFromBitmap(pBitmap) -{ - DllCall("gdiplus\GdipCreateHICONFromBitmap", "uint", pBitmap, "uint*", hIcon) - return hIcon -} - -Gdip_CreateBitmap(Width, Height, Format=0x26200A) -{ - DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", 0, "int", Format, "uint", 0, "uint*", pBitmap) - Return pBitmap -} - -Gdip_CreateBitmapFromClipboard() -{ - if !DllCall("OpenClipboard", "uint", 0) - return -1 - if !DllCall("IsClipboardFormatAvailable", "uint", 8) - return -2 - if !hBitmap := DllCall("GetClipboardData", "uint", 2) - return -3 - if !pBitmap := Gdip_CreateBitmapFromHBITMAP(hBitmap) - return -4 - if !DllCall("CloseClipboard") - return -5 - DeleteObject(hBitmap) - return pBitmap -} - -Gdip_SetBitmapToClipboard(pBitmap) -{ - hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) - DllCall("GetObject", "uint", hBitmap, "int", VarSetCapacity(oi, 84, 0), "uint", &oi) - hdib := DllCall("GlobalAlloc", "uint", 2, "uint", 40+NumGet(oi, 44)) - pdib := DllCall("GlobalLock", "uint", hdib) - DllCall("RtlMoveMemory", "uint", pdib, "uint", &oi+24, "uint", 40) - DllCall("RtlMoveMemory", "Uint", pdib+40, "Uint", NumGet(oi, 20), "uint", NumGet(oi, 44)) - DllCall("GlobalUnlock", "uint", hdib) - DllCall("DeleteObject", "uint", hBitmap) - DllCall("OpenClipboard", "uint", 0) - DllCall("EmptyClipboard") - DllCall("SetClipboardData", "uint", 8, "uint", hdib) - DllCall("CloseClipboard") -} - -Gdip_CloneBitmapArea(pBitmap, x, y, w, h, Format=0x26200A) -{ - DllCall("gdiplus\GdipCloneBitmapArea", "float", x, "float", y, "float", w, "float", h - , "int", Format, "uint", pBitmap, "uint*", pBitmapDest) - return pBitmapDest -} - -;##################################################################################### -; Create resources -;##################################################################################### - -Gdip_CreatePen(ARGB, w) -{ - DllCall("gdiplus\GdipCreatePen1", "int", ARGB, "float", w, "int", 2, "uint*", pPen) - return pPen -} - -Gdip_CreatePenFromBrush(pBrush, w) -{ - DllCall("gdiplus\GdipCreatePen2", "uint", pBrush, "float", w, "int", 2, "uint*", pPen) - return pPen -} - -Gdip_BrushCreateSolid(ARGB=0xff000000) -{ - DllCall("gdiplus\GdipCreateSolidFill", "int", ARGB, "uint*", pBrush) - return pBrush -} - -; HatchStyleHorizontal = 0 -; HatchStyleVertical = 1 -; HatchStyleForwardDiagonal = 2 -; HatchStyleBackwardDiagonal = 3 -; HatchStyleCross = 4 -; HatchStyleDiagonalCross = 5 -; HatchStyle05Percent = 6 -; HatchStyle10Percent = 7 -; HatchStyle20Percent = 8 -; HatchStyle25Percent = 9 -; HatchStyle30Percent = 10 -; HatchStyle40Percent = 11 -; HatchStyle50Percent = 12 -; HatchStyle60Percent = 13 -; HatchStyle70Percent = 14 -; HatchStyle75Percent = 15 -; HatchStyle80Percent = 16 -; HatchStyle90Percent = 17 -; HatchStyleLightDownwardDiagonal = 18 -; HatchStyleLightUpwardDiagonal = 19 -; HatchStyleDarkDownwardDiagonal = 20 -; HatchStyleDarkUpwardDiagonal = 21 -; HatchStyleWideDownwardDiagonal = 22 -; HatchStyleWideUpwardDiagonal = 23 -; HatchStyleLightVertical = 24 -; HatchStyleLightHorizontal = 25 -; HatchStyleNarrowVertical = 26 -; HatchStyleNarrowHorizontal = 27 -; HatchStyleDarkVertical = 28 -; HatchStyleDarkHorizontal = 29 -; HatchStyleDashedDownwardDiagonal = 30 -; HatchStyleDashedUpwardDiagonal = 31 -; HatchStyleDashedHorizontal = 32 -; HatchStyleDashedVertical = 33 -; HatchStyleSmallConfetti = 34 -; HatchStyleLargeConfetti = 35 -; HatchStyleZigZag = 36 -; HatchStyleWave = 37 -; HatchStyleDiagonalBrick = 38 -; HatchStyleHorizontalBrick = 39 -; HatchStyleWeave = 40 -; HatchStylePlaid = 41 -; HatchStyleDivot = 42 -; HatchStyleDottedGrid = 43 -; HatchStyleDottedDiamond = 44 -; HatchStyleShingle = 45 -; HatchStyleTrellis = 46 -; HatchStyleSphere = 47 -; HatchStyleSmallGrid = 48 -; HatchStyleSmallCheckerBoard = 49 -; HatchStyleLargeCheckerBoard = 50 -; HatchStyleOutlinedDiamond = 51 -; HatchStyleSolidDiamond = 52 -; HatchStyleTotal = 53 -Gdip_BrushCreateHatch(ARGBfront, ARGBback, HatchStyle=0) -{ - DllCall("gdiplus\GdipCreateHatchBrush", "int", HatchStyle, "int", ARGBfront, "int", ARGBback, "uint*", pBrush) - return pBrush -} - -;GpStatus WINGDIPAPI GdipCreateTexture2I(GpImage *image, GpWrapMode wrapmode, INT x, INT y, INT width, INT height, GpTexture **texture) -;GpStatus WINGDIPAPI GdipCreateTexture2(GpImage *image, GpWrapMode wrapmode, REAL x, REAL y, REAL width, REAL height, GpTexture **texture) -;GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode, GpTexture **texture) - -Gdip_CreateTextureBrush(pBitmap, WrapMode=1, x=0, y=0, w="", h="") -{ - if !(w && h) - DllCall("gdiplus\GdipCreateTexture", "uint", pBitmap, "int", WrapMode, "uint*", pBrush) - else - DllCall("gdiplus\GdipCreateTexture2", "uint", pBitmap, "int", WrapMode, "float", x, "float", y, "float", w, "float", h, "uint*", pBrush) - return pBrush -} - -; WrapModeTile = 0 -; WrapModeTileFlipX = 1 -; WrapModeTileFlipY = 2 -; WrapModeTileFlipXY = 3 -; WrapModeClamp = 4 -Gdip_CreateLineBrush(x1, y1, x2, y2, ARGB1, ARGB2, WrapMode=1) -{ - CreatePointF(PointF1, x1, y1), CreatePointF(PointF2, x2, y2) - DllCall("gdiplus\GdipCreateLineBrush", "uint", &PointF1, "uint", &PointF2, "int", ARGB1, "int", ARGB2, "int", WrapMode, "uint*", LGpBrush) - return LGpBrush -} - -; LinearGradientModeHorizontal = 0 -; LinearGradientModeVertical = 1 -; LinearGradientModeForwardDiagonal = 2 -; LinearGradientModeBackwardDiagonal = 3 -Gdip_CreateLineBrushFromRect(x, y, w, h, ARGB1, ARGB2, LinearGradientMode=1, WrapMode=1) -{ - CreateRectF(RectF, x, y, w, h) - DllCall("gdiplus\GdipCreateLineBrushFromRect", "uint", &RectF, "int", ARGB1, "int", ARGB2, "int", LinearGradientMode, "int", WrapMode, "uint*", LGpBrush) - return LGpBrush -} - -Gdip_CloneBrush(pBrush) -{ - static pNewBrush - VarSetCapacity(pNewBrush, 288, 0) - DllCall("RtlMoveMemory", "uint", &pNewBrush, "uint", pBrush, "uint", 288) - VarSetCapacity(pNewBrush, -1) - return &pNewBrush -} - -;##################################################################################### -; Delete resources -;##################################################################################### - -Gdip_DeletePen(pPen) -{ - return DllCall("gdiplus\GdipDeletePen", "uint", pPen) -} - -Gdip_DeleteBrush(pBrush) -{ - return DllCall("gdiplus\GdipDeleteBrush", "uint", pBrush) -} - -Gdip_DisposeImage(pBitmap) -{ - return DllCall("gdiplus\GdipDisposeImage", "uint", pBitmap) -} - -Gdip_DeleteGraphics(pGraphics) -{ - return DllCall("gdiplus\GdipDeleteGraphics", "uint", pGraphics) -} - -Gdip_DisposeImageAttributes(ImageAttr) -{ - return DllCall("gdiplus\GdipDisposeImageAttributes", "uint", ImageAttr) -} - -Gdip_DeleteFont(hFont) -{ - return DllCall("gdiplus\GdipDeleteFont", "uint", hFont) -} - -Gdip_DeleteStringFormat(hFormat) -{ - return DllCall("gdiplus\GdipDeleteStringFormat", "uint", hFormat) -} - -Gdip_DeleteFontFamily(hFamily) -{ - return DllCall("gdiplus\GdipDeleteFontFamily", "uint", hFamily) -} - -Gdip_DeleteMatrix(Matrix) -{ - return DllCall("gdiplus\GdipDeleteMatrix", "uint", Matrix) -} - -;##################################################################################### -; Text functions -;##################################################################################### - -Gdip_TextToGraphics(pGraphics, Text, Options, Font="Arial", Width="", Height="", Measure=0) -{ - IWidth := Width, IHeight:= Height - - RegExMatch(Options, "i)X([\-\d\.]+)(p*)", xpos) - RegExMatch(Options, "i)Y([\-\d\.]+)(p*)", ypos) - RegExMatch(Options, "i)W([\-\d\.]+)(p*)", Width) - RegExMatch(Options, "i)H([\-\d\.]+)(p*)", Height) - RegExMatch(Options, "i)C(?!(entre|enter))([a-f\d]+)", Colour) - RegExMatch(Options, "i)Top|Up|Bottom|Down|vCentre|vCenter", vPos) - RegExMatch(Options, "i)NoWrap", NoWrap) - RegExMatch(Options, "i)R(\d)", Rendering) - RegExMatch(Options, "i)S(\d+)(p*)", Size) - - if !Gdip_DeleteBrush(Gdip_CloneBrush(Colour2)) - PassBrush := 1, pBrush := Colour2 - - if !(IWidth && IHeight) && (xpos2 || ypos2 || Width2 || Height2 || Size2) - return -1 - - Style := 0, Styles := "Regular|Bold|Italic|BoldItalic|Underline|Strikeout" - Loop, Parse, Styles, | - { - if RegExMatch(Options, "\b" A_loopField) - Style |= (A_LoopField != "StrikeOut") ? (A_Index-1) : 8 - } - - Align := 0, Alignments := "Near|Left|Centre|Center|Far|Right" - Loop, Parse, Alignments, | - { - if RegExMatch(Options, "\b" A_loopField) - Align |= A_Index//2.1 ; 0|0|1|1|2|2 - } - - xpos := (xpos1 != "") ? xpos2 ? IWidth*(xpos1/100) : xpos1 : 0 - ypos := (ypos1 != "") ? ypos2 ? IHeight*(ypos1/100) : ypos1 : 0 - Width := Width1 ? Width2 ? IWidth*(Width1/100) : Width1 : IWidth - Height := Height1 ? Height2 ? IHeight*(Height1/100) : Height1 : IHeight - if !PassBrush - Colour := "0x" (Colour2 ? Colour2 : "ff000000") - Rendering := ((Rendering1 >= 0) && (Rendering1 <= 5)) ? Rendering1 : 4 - Size := (Size1 > 0) ? Size2 ? IHeight*(Size1/100) : Size1 : 12 - - hFamily := Gdip_FontFamilyCreate(Font) - hFont := Gdip_FontCreate(hFamily, Size, Style) - FormatStyle := NoWrap ? 0x4000 | 0x1000 : 0x4000 - hFormat := Gdip_StringFormatCreate(FormatStyle) - pBrush := PassBrush ? pBrush : Gdip_BrushCreateSolid(Colour) - if !(hFamily && hFont && hFormat && pBrush && pGraphics) - return !pGraphics ? -2 : !hFamily ? -3 : !hFont ? -4 : !hFormat ? -5 : !pBrush ? -6 : 0 - - CreateRectF(RC, xpos, ypos, Width, Height) - Gdip_SetStringFormatAlign(hFormat, Align) - Gdip_SetTextRenderingHint(pGraphics, Rendering) - ReturnRC := Gdip_MeasureString(pGraphics, Text, hFont, hFormat, RC) - - if vPos - { - StringSplit, ReturnRC, ReturnRC, | - - if (vPos = "vCentre") || (vPos = "vCenter") - ypos += (Height-ReturnRC4)//2 - else if (vPos = "Top") || (vPos = "Up") - ypos := 0 - else if (vPos = "Bottom") || (vPos = "Down") - ypos := Height-ReturnRC4 - - CreateRectF(RC, xpos, ypos, Width, ReturnRC4) - ReturnRC := Gdip_MeasureString(pGraphics, Text, hFont, hFormat, RC) - } - - if !Measure - E := Gdip_DrawString(pGraphics, Text, hFont, hFormat, pBrush, RC) - - if !PassBrush - Gdip_DeleteBrush(pBrush) - Gdip_DeleteStringFormat(hFormat) - Gdip_DeleteFont(hFont) - Gdip_DeleteFontFamily(hFamily) - return E ? E : ReturnRC -} - -Gdip_DrawString(pGraphics, sString, hFont, hFormat, pBrush, ByRef RectF) -{ - if !A_IsUnicode - { - nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sString, "int", -1, "uint", 0, "int", 0) - VarSetCapacity(wString, nSize*2) - DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sString, "int", -1, "uint", &wString, "int", nSize) - return DllCall("gdiplus\GdipDrawString", "uint", pGraphics - , "uint", &wString, "int", -1, "uint", hFont, "uint", &RectF, "uint", hFormat, "uint", pBrush) - } - else - { - return DllCall("gdiplus\GdipDrawString", "uint", pGraphics - , "uint", &sString, "int", -1, "uint", hFont, "uint", &RectF, "uint", hFormat, "uint", pBrush) - } -} - -Gdip_MeasureString(pGraphics, sString, hFont, hFormat, ByRef RectF) -{ - VarSetCapacity(RC, 16) - if !A_IsUnicode - { - nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sString, "int", -1, "uint", 0, "int", 0) - VarSetCapacity(wString, nSize*2) - DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &sString, "int", -1, "uint", &wString, "int", nSize) - DllCall("gdiplus\GdipMeasureString", "uint", pGraphics - , "uint", &wString, "int", -1, "uint", hFont, "uint", &RectF, "uint", hFormat, "uint", &RC, "uint*", Chars, "uint*", Lines) - } - else - { - DllCall("gdiplus\GdipMeasureString", "uint", pGraphics - , "uint", &sString, "int", -1, "uint", hFont, "uint", &RectF, "uint", hFormat, "uint", &RC, "uint*", Chars, "uint*", Lines) - } - return &RC ? NumGet(RC, 0, "float") "|" NumGet(RC, 4, "float") "|" NumGet(RC, 8, "float") "|" NumGet(RC, 12, "float") "|" Chars "|" Lines : 0 -} - -; Near = 0 -; Center = 1 -; Far = 2 -Gdip_SetStringFormatAlign(hFormat, Align) -{ - return DllCall("gdiplus\GdipSetStringFormatAlign", "uint", hFormat, "int", Align) -} - -; StringFormatFlagsDirectionRightToLeft = 0x00000001 -; StringFormatFlagsDirectionVertical = 0x00000002 -; StringFormatFlagsNoFitBlackBox = 0x00000004 -; StringFormatFlagsDisplayFormatControl = 0x00000020 -; StringFormatFlagsNoFontFallback = 0x00000400 -; StringFormatFlagsMeasureTrailingSpaces = 0x00000800 -; StringFormatFlagsNoWrap = 0x00001000 -; StringFormatFlagsLineLimit = 0x00002000 -; StringFormatFlagsNoClip = 0x00004000 -Gdip_StringFormatCreate(Format=0, Lang=0) -{ - DllCall("gdiplus\GdipCreateStringFormat", "int", Format, "int", Lang, "uint*", hFormat) - return hFormat -} - -; Regular = 0 -; Bold = 1 -; Italic = 2 -; BoldItalic = 3 -; Underline = 4 -; Strikeout = 8 -Gdip_FontCreate(hFamily, Size, Style=0) -{ - DllCall("gdiplus\GdipCreateFont", "uint", hFamily, "float", Size, "int", Style, "int", 0, "uint*", hFont) - return hFont -} - -Gdip_FontFamilyCreate(Font) -{ - if !A_IsUnicode - { - nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &Font, "int", -1, "uint", 0, "int", 0) - VarSetCapacity(wFont, nSize*2) - DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, "uint", &Font, "int", -1, "uint", &wFont, "int", nSize) - DllCall("gdiplus\GdipCreateFontFamilyFromName", "uint", &wFont, "uint", 0, "uint*", hFamily) - } - else - DllCall("gdiplus\GdipCreateFontFamilyFromName", "uint", &Font, "uint", 0, "uint*", hFamily) - return hFamily -} - -;##################################################################################### -; Matrix functions -;##################################################################################### - -Gdip_CreateAffineMatrix(m11, m12, m21, m22, x, y) -{ - DllCall("gdiplus\GdipCreateMatrix2", "float", m11, "float", m12, "float", m21, "float", m22, "float", x, "float", y, "uint*", Matrix) - return Matrix -} - -Gdip_CreateMatrix() -{ - DllCall("gdiplus\GdipCreateMatrix", "uint*", Matrix) - return Matrix -} - -;##################################################################################### -; GraphicsPath functions -;##################################################################################### - -; Alternate = 0 -; Winding = 1 -Gdip_CreatePath(BrushMode=0) -{ - DllCall("gdiplus\GdipCreatePath", "int", BrushMode, "uint*", Path) - return Path -} - -Gdip_AddPathEllipse(Path, x, y, w, h) -{ - return DllCall("gdiplus\GdipAddPathEllipse", "uint", Path, "float", x, "float", y, "float", w, "float", h) -} - -Gdip_AddPathPolygon(Path, Points) -{ - StringSplit, Points, Points, | - VarSetCapacity(PointF, 8*Points0) - Loop, %Points0% - { - StringSplit, Coord, Points%A_Index%, `, - NumPut(Coord1, PointF, 8*(A_Index-1), "float"), NumPut(Coord2, PointF, (8*(A_Index-1))+4, "float") - } - - return DllCall("gdiplus\GdipAddPathPolygon", "uint", Path, "uint", &PointF, "int", Points0) -} - -Gdip_DeletePath(Path) -{ - return DllCall("gdiplus\GdipDeletePath", "uint", Path) -} - -;##################################################################################### -; Quality functions -;##################################################################################### - -; SystemDefault = 0 -; SingleBitPerPixelGridFit = 1 -; SingleBitPerPixel = 2 -; AntiAliasGridFit = 3 -; AntiAlias = 4 -Gdip_SetTextRenderingHint(pGraphics, RenderingHint) -{ - return DllCall("gdiplus\GdipSetTextRenderingHint", "uint", pGraphics, "int", RenderingHint) -} - -; Default = 0 -; LowQuality = 1 -; HighQuality = 2 -; Bilinear = 3 -; Bicubic = 4 -; NearestNeighbor = 5 -; HighQualityBilinear = 6 -; HighQualityBicubic = 7 -Gdip_SetInterpolationMode(pGraphics, InterpolationMode) -{ - return DllCall("gdiplus\GdipSetInterpolationMode", "uint", pGraphics, "int", InterpolationMode) -} - -; Default = 0 -; HighSpeed = 1 -; HighQuality = 2 -; None = 3 -; AntiAlias = 4 -Gdip_SetSmoothingMode(pGraphics, SmoothingMode) -{ - return DllCall("gdiplus\GdipSetSmoothingMode", "uint", pGraphics, "int", SmoothingMode) -} - -; CompositingModeSourceOver = 0 (blended) -; CompositingModeSourceCopy = 1 (overwrite) -Gdip_SetCompositingMode(pGraphics, CompositingMode=0) -{ - return DllCall("gdiplus\GdipSetCompositingMode", "uint", pGraphics, "int", CompositingMode) -} - -;##################################################################################### -; Extra functions -;##################################################################################### - -Gdip_Startup() -{ - if !DllCall("GetModuleHandle", "str", "gdiplus") - DllCall("LoadLibrary", "str", "gdiplus") - VarSetCapacity(si, 16, 0), si := Chr(1) - DllCall("gdiplus\GdiplusStartup", "uint*", pToken, "uint", &si, "uint", 0) - return pToken -} - -Gdip_Shutdown(pToken) -{ - DllCall("gdiplus\GdiplusShutdown", "uint", pToken) - if hModule := DllCall("GetModuleHandle", "str", "gdiplus") - DllCall("FreeLibrary", "uint", hModule) - return 0 -} - -; Prepend = 0; The new operation is applied before the old operation. -; Append = 1; The new operation is applied after the old operation. -Gdip_RotateWorldTransform(pGraphics, Angle, MatrixOrder=0) -{ - return DllCall("gdiplus\GdipRotateWorldTransform", "uint", pGraphics, "float", Angle, "int", MatrixOrder) -} - -Gdip_ScaleWorldTransform(pGraphics, x, y, MatrixOrder=0) -{ - return DllCall("gdiplus\GdipScaleWorldTransform", "uint", pGraphics, "float", x, "float", y, "int", MatrixOrder) -} - -Gdip_TranslateWorldTransform(pGraphics, x, y, MatrixOrder=0) -{ - return DllCall("gdiplus\GdipTranslateWorldTransform", "uint", pGraphics, "float", x, "float", y, "int", MatrixOrder) -} - -Gdip_ResetWorldTransform(pGraphics) -{ - return DllCall("gdiplus\GdipResetWorldTransform", "uint", pGraphics) -} - -Gdip_GetRotatedTranslation(Width, Height, Angle, ByRef xTranslation, ByRef yTranslation) -{ - pi := 3.14159, TAngle := Angle*(pi/180) - - Bound := (Angle >= 0) ? Mod(Angle, 360) : 360-Mod(-Angle, -360) - if ((Bound >= 0) && (Bound <= 90)) - xTranslation := Height*Sin(TAngle), yTranslation := 0 - else if ((Bound > 90) && (Bound <= 180)) - xTranslation := (Height*Sin(TAngle))-(Width*Cos(TAngle)), yTranslation := -Height*Cos(TAngle) - else if ((Bound > 180) && (Bound <= 270)) - xTranslation := -(Width*Cos(TAngle)), yTranslation := -(Height*Cos(TAngle))-(Width*Sin(TAngle)) - else if ((Bound > 270) && (Bound <= 360)) - xTranslation := 0, yTranslation := -Width*Sin(TAngle) -} - -Gdip_GetRotatedDimensions(Width, Height, Angle, ByRef RWidth, ByRef RHeight) -{ - pi := 3.14159, TAngle := Angle*(pi/180) - if !(Width && Height) - return -1 - RWidth := Ceil(Abs(Width*Cos(TAngle))+Abs(Height*Sin(TAngle))) - RHeight := Ceil(Abs(Width*Sin(TAngle))+Abs(Height*Cos(Tangle))) -} - -; Replace = 0 -; Intersect = 1 -; Union = 2 -; Xor = 3 -; Exclude = 4 -; Complement = 5 -Gdip_SetClipRect(pGraphics, x, y, w, h, CombineMode=0) -{ - return DllCall("gdiplus\GdipSetClipRect", "uint", pGraphics, "float", x, "float", y, "float", w, "float", h, "int", CombineMode) -} - -Gdip_SetClipPath(pGraphics, Path, CombineMode=0) -{ - return DllCall("gdiplus\GdipSetClipPath", "uint", pGraphics, "uint", Path, "int", CombineMode) -} - -Gdip_ResetClip(pGraphics) -{ - return DllCall("gdiplus\GdipResetClip", "uint", pGraphics) -} - -Gdip_GetClipRegion(pGraphics) -{ - Region := Gdip_CreateRegion() - DllCall("gdiplus\GdipGetClip", "uint" pGraphics, "uint*", Region) - return Region -} - -Gdip_SetClipRegion(pGraphics, Region, CombineMode=0) -{ - return DllCall("gdiplus\GdipSetClipRegion", "uint", pGraphics, "uint", Region, "int", CombineMode) -} - -Gdip_CreateRegion() -{ - DllCall("gdiplus\GdipCreateRegion", "uint*", Region) - return Region -} - -Gdip_DeleteRegion(Region) -{ - return DllCall("gdiplus\GdipDeleteRegion", "uint", Region) -} - -;##################################################################################### -; BitmapLockBits -;##################################################################################### - -Gdip_LockBits(pBitmap, x, y, w, h, ByRef Stride, ByRef Scan0, ByRef BitmapData, LockMode = 3, PixelFormat = 0x26200a) -{ - CreateRect(Rect, x, y, w, h) - VarSetCapacity(BitmapData, 21, 0) - E := DllCall("Gdiplus\GdipBitmapLockBits", "uint", pBitmap, "uint", &Rect, "uint", LockMode, "int", PixelFormat, "uint", &BitmapData) - Stride := NumGet(BitmapData, 8) - Scan0 := NumGet(BitmapData, 16) - return E -} - -;##################################################################################### - -Gdip_UnlockBits(pBitmap, ByRef BitmapData) -{ - return DllCall("Gdiplus\GdipBitmapUnlockBits", "uint", pBitmap, "uint", &BitmapData) -} - -;##################################################################################### - -Gdip_SetLockBitPixel(ARGB, Scan0, x, y, Stride) -{ - Numput(ARGB, Scan0+0, (x*4)+(y*Stride)) -} - -;##################################################################################### - -Gdip_GetLockBitPixel(Scan0, x, y, Stride) -{ - return NumGet(Scan0+0, (x*4)+(y*Stride)) -} - -;##################################################################################### - -Gdip_ToARGB(A, R, G, B) -{ - return (A << 24) | (R << 16) | (G << 8) | B -} - -;##################################################################################### - -Gdip_FromARGB(ARGB, ByRef A, ByRef R, ByRef G, ByRef B) -{ - A := (0xff000000 & ARGB) >> 24 - R := (0x00ff0000 & ARGB) >> 16 - G := (0x0000ff00 & ARGB) >> 8 - B := 0x000000ff & ARGB -} - -;##################################################################################### - -Gdip_AFromARGB(ARGB) -{ - return (0xff000000 & ARGB) >> 24 -} - -;##################################################################################### - -Gdip_RFromARGB(ARGB) -{ - return (0x00ff0000 & ARGB) >> 16 -} - -;##################################################################################### - -Gdip_GFromARGB(ARGB) -{ - return (0x0000ff00 & ARGB) >> 8 -} - -;##################################################################################### - -Gdip_BFromARGB(ARGB) -{ - return 0x000000ff & ARGB -} \ No newline at end of file diff --git a/Gdip_All.ahk b/Gdip_All.ahk new file mode 100644 index 0000000..0ea8f52 --- /dev/null +++ b/Gdip_All.ahk @@ -0,0 +1,3047 @@ +; Gdip standard library v1.54 on 11/15/2017 +; Gdip standard library v1.53 on 6/19/2017 +; Gdip standard library v1.52 on 6/11/2017 +; Gdip standard library v1.51 on 1/27/2017 +; Gdip standard library v1.50 on 11/20/16 +; Gdip standard library v1.45 by tic (Tariq Porter) 07/09/11 +; Modifed by Rseding91 using fincs 64 bit compatible Gdip library 5/1/2013 +; Supports: Basic, _L ANSi, _L Unicode x86 and _L Unicode x64 +; +; Updated 11/15/2017 - compatibility with both AHK v2 and v1, restored by nnnik +; Updated 6/19/2017 - Fixed few bugs from old syntax by Bartlomiej Uliasz +; Updated 6/11/2017 - made code compatible with new AHK v2.0-a079-be5df98 by Bartlomiej Uliasz +; Updated 1/27/2017 - fixed some bugs and made #Warn All compatible by Bartlomiej Uliasz +; Updated 11/20/2016 - fixed Gdip_BitmapFromBRA() by 'just me' +; Updated 11/18/2016 - backward compatible support for both AHK v1.1 and AHK v2 +; Updated 11/15/2016 - initial AHK v2 support by guest3456 +; Updated 2/20/2014 - fixed Gdip_CreateRegion() and Gdip_GetClipRegion() on AHK Unicode x86 +; Updated 5/13/2013 - fixed Gdip_SetBitmapToClipboard() on AHK Unicode x64 +; +;##################################################################################### +;##################################################################################### +; STATUS ENUMERATION +; Return values for functions specified to have status enumerated return type +;##################################################################################### +; +; Ok = = 0 +; GenericError = 1 +; InvalidParameter = 2 +; OutOfMemory = 3 +; ObjectBusy = 4 +; InsufficientBuffer = 5 +; NotImplemented = 6 +; Win32Error = 7 +; WrongState = 8 +; Aborted = 9 +; FileNotFound = 10 +; ValueOverflow = 11 +; AccessDenied = 12 +; UnknownImageFormat = 13 +; FontFamilyNotFound = 14 +; FontStyleNotFound = 15 +; NotTrueTypeFont = 16 +; UnsupportedGdiplusVersion = 17 +; GdiplusNotInitialized = 18 +; PropertyNotFound = 19 +; PropertyNotSupported = 20 +; ProfileNotFound = 21 +; +;##################################################################################### +;##################################################################################### +; FUNCTIONS +;##################################################################################### +; +; UpdateLayeredWindow(hwnd, hdc, x:="", y:="", w:="", h:="", Alpha:=255) +; BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster:="") +; StretchBlt(dDC, dx, dy, dw, dh, sDC, sx, sy, sw, sh, Raster:="") +; SetImage(hwnd, hBitmap) +; Gdip_BitmapFromScreen(Screen:=0, Raster:="") +; CreateRectF(ByRef RectF, x, y, w, h) +; CreateSizeF(ByRef SizeF, w, h) +; CreateDIBSection +; +;##################################################################################### + +; Function: UpdateLayeredWindow +; Description: Updates a layered window with the handle to the DC of a gdi bitmap +; +; hwnd Handle of the layered window to update +; hdc Handle to the DC of the GDI bitmap to update the window with +; Layeredx x position to place the window +; Layeredy y position to place the window +; Layeredw Width of the window +; Layeredh Height of the window +; Alpha Default = 255 : The transparency (0-255) to set the window transparency +; +; return If the function succeeds, the return value is nonzero +; +; notes If x or y omitted, then layered window will use its current coordinates +; If w or h omitted then current width and height will be used + +UpdateLayeredWindow(hwnd, hdc, x:="", y:="", w:="", h:="", Alpha:=255) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if ((x != "") && (y != "")) + VarSetCapacity(pt, 8), NumPut(x, pt, 0, "UInt"), NumPut(y, pt, 4, "UInt") + + if (w = "") || (h = "") + { + CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 + DllCall( "GetWindowRect", Ptr, hwnd, Ptr, &winRect ) + w := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") + h := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + } + + return DllCall("UpdateLayeredWindow" + , Ptr, hwnd + , Ptr, 0 + , Ptr, ((x = "") && (y = "")) ? 0 : &pt + , "int64*", w|h<<32 + , Ptr, hdc + , "int64*", 0 + , "uint", 0 + , "UInt*", Alpha<<16|1<<24 + , "uint", 2) +} + +;##################################################################################### + +; Function BitBlt +; Description The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle +; of pixels from the specified source device context into a destination device context. +; +; dDC handle to destination DC +; dx x-coord of destination upper-left corner +; dy y-coord of destination upper-left corner +; dw width of the area to copy +; dh height of the area to copy +; sDC handle to source DC +; sx x-coordinate of source upper-left corner +; sy y-coordinate of source upper-left corner +; Raster raster operation code +; +; return If the function succeeds, the return value is nonzero +; +; notes If no raster operation is specified, then SRCCOPY is used, which copies the source directly to the destination rectangle +; +; BLACKNESS = 0x00000042 +; NOTSRCERASE = 0x001100A6 +; NOTSRCCOPY = 0x00330008 +; SRCERASE = 0x00440328 +; DSTINVERT = 0x00550009 +; PATINVERT = 0x005A0049 +; SRCINVERT = 0x00660046 +; SRCAND = 0x008800C6 +; MERGEPAINT = 0x00BB0226 +; MERGECOPY = 0x00C000CA +; SRCCOPY = 0x00CC0020 +; SRCPAINT = 0x00EE0086 +; PATCOPY = 0x00F00021 +; PATPAINT = 0x00FB0A09 +; WHITENESS = 0x00FF0062 +; CAPTUREBLT = 0x40000000 +; NOMIRRORBITMAP = 0x80000000 + +BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster:="") +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdi32\BitBlt" + , Ptr, dDC + , "int", dx + , "int", dy + , "int", dw + , "int", dh + , Ptr, sDC + , "int", sx + , "int", sy + , "uint", Raster ? Raster : 0x00CC0020) +} + +;##################################################################################### + +; Function StretchBlt +; Description The StretchBlt function copies a bitmap from a source rectangle into a destination rectangle, +; stretching or compressing the bitmap to fit the dimensions of the destination rectangle, if necessary. +; The system stretches or compresses the bitmap according to the stretching mode currently set in the destination device context. +; +; ddc handle to destination DC +; dx x-coord of destination upper-left corner +; dy y-coord of destination upper-left corner +; dw width of destination rectangle +; dh height of destination rectangle +; sdc handle to source DC +; sx x-coordinate of source upper-left corner +; sy y-coordinate of source upper-left corner +; sw width of source rectangle +; sh height of source rectangle +; Raster raster operation code +; +; return If the function succeeds, the return value is nonzero +; +; notes If no raster operation is specified, then SRCCOPY is used. It uses the same raster operations as BitBlt + +StretchBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, sw, sh, Raster:="") +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdi32\StretchBlt" + , Ptr, ddc + , "int", dx + , "int", dy + , "int", dw + , "int", dh + , Ptr, sdc + , "int", sx + , "int", sy + , "int", sw + , "int", sh + , "uint", Raster ? Raster : 0x00CC0020) +} + +;##################################################################################### + +; Function SetStretchBltMode +; Description The SetStretchBltMode function sets the bitmap stretching mode in the specified device context +; +; hdc handle to the DC +; iStretchMode The stretching mode, describing how the target will be stretched +; +; return If the function succeeds, the return value is the previous stretching mode. If it fails it will return 0 +; +; STRETCH_ANDSCANS = 0x01 +; STRETCH_ORSCANS = 0x02 +; STRETCH_DELETESCANS = 0x03 +; STRETCH_HALFTONE = 0x04 + +SetStretchBltMode(hdc, iStretchMode:=4) +{ + return DllCall("gdi32\SetStretchBltMode" + , A_PtrSize ? "UPtr" : "UInt", hdc + , "int", iStretchMode) +} + +;##################################################################################### + +; Function SetImage +; Description Associates a new image with a static control +; +; hwnd handle of the control to update +; hBitmap a gdi bitmap to associate the static control with +; +; return If the function succeeds, the return value is nonzero + +SetImage(hwnd, hBitmap) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + E := DllCall( "SendMessage", Ptr, hwnd, "UInt", 0x172, "UInt", 0x0, Ptr, hBitmap ) + DeleteObject(E) + return E +} + +;##################################################################################### + +; Function SetSysColorToControl +; Description Sets a solid colour to a control +; +; hwnd handle of the control to update +; SysColor A system colour to set to the control +; +; return If the function succeeds, the return value is zero +; +; notes A control must have the 0xE style set to it so it is recognised as a bitmap +; By default SysColor=15 is used which is COLOR_3DFACE. This is the standard background for a control +; +; COLOR_3DDKSHADOW = 21 +; COLOR_3DFACE = 15 +; COLOR_3DHIGHLIGHT = 20 +; COLOR_3DHILIGHT = 20 +; COLOR_3DLIGHT = 22 +; COLOR_3DSHADOW = 16 +; COLOR_ACTIVEBORDER = 10 +; COLOR_ACTIVECAPTION = 2 +; COLOR_APPWORKSPACE = 12 +; COLOR_BACKGROUND = 1 +; COLOR_BTNFACE = 15 +; COLOR_BTNHIGHLIGHT = 20 +; COLOR_BTNHILIGHT = 20 +; COLOR_BTNSHADOW = 16 +; COLOR_BTNTEXT = 18 +; COLOR_CAPTIONTEXT = 9 +; COLOR_DESKTOP = 1 +; COLOR_GRADIENTACTIVECAPTION = 27 +; COLOR_GRADIENTINACTIVECAPTION = 28 +; COLOR_GRAYTEXT = 17 +; COLOR_HIGHLIGHT = 13 +; COLOR_HIGHLIGHTTEXT = 14 +; COLOR_HOTLIGHT = 26 +; COLOR_INACTIVEBORDER = 11 +; COLOR_INACTIVECAPTION = 3 +; COLOR_INACTIVECAPTIONTEXT = 19 +; COLOR_INFOBK = 24 +; COLOR_INFOTEXT = 23 +; COLOR_MENU = 4 +; COLOR_MENUHILIGHT = 29 +; COLOR_MENUBAR = 30 +; COLOR_MENUTEXT = 7 +; COLOR_SCROLLBAR = 0 +; COLOR_WINDOW = 5 +; COLOR_WINDOWFRAME = 6 +; COLOR_WINDOWTEXT = 8 + +SetSysColorToControl(hwnd, SysColor:=15) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 + DllCall( "GetWindowRect", Ptr, hwnd, Ptr, &winRect ) + w := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") + h := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + bc := DllCall("GetSysColor", "Int", SysColor, "UInt") + pBrushClear := Gdip_BrushCreateSolid(0xff000000 | (bc >> 16 | bc & 0xff00 | (bc & 0xff) << 16)) + pBitmap := Gdip_CreateBitmap(w, h), G := Gdip_GraphicsFromImage(pBitmap) + Gdip_FillRectangle(G, pBrushClear, 0, 0, w, h) + hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) + SetImage(hwnd, hBitmap) + Gdip_DeleteBrush(pBrushClear) + Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmap), DeleteObject(hBitmap) + return 0 +} + +;##################################################################################### + +; Function Gdip_BitmapFromScreen +; Description Gets a gdi+ bitmap from the screen +; +; Screen 0 = All screens +; Any numerical value = Just that screen +; x|y|w|h = Take specific coordinates with a width and height +; Raster raster operation code +; +; return If the function succeeds, the return value is a pointer to a gdi+ bitmap +; -1: one or more of x,y,w,h not passed properly +; +; notes If no raster operation is specified, then SRCCOPY is used to the returned bitmap + +Gdip_BitmapFromScreen(Screen:=0, Raster:="") +{ + hhdc := 0 + Ptr := A_PtrSize ? "UPtr" : "UInt" + if (Screen = 0) + { + _x := DllCall( "GetSystemMetrics", "Int", 76 ) + _y := DllCall( "GetSystemMetrics", "Int", 77 ) + _w := DllCall( "GetSystemMetrics", "Int", 78 ) + _h := DllCall( "GetSystemMetrics", "Int", 79 ) + } + else if (SubStr(Screen, 1, 5) = "hwnd:") + { + Screen := SubStr(Screen, 6) + if !WinExist("ahk_id " Screen) + return -2 + CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 + DllCall( "GetWindowRect", Ptr, Screen, Ptr, &winRect ) + _w := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") + _h := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + _x := _y := 0 + hhdc := GetDCEx(Screen, 3) + } + else if IsInteger(Screen) + { + M := GetMonitorInfo(Screen) + _x := M.Left, _y := M.Top, _w := M.Right-M.Left, _h := M.Bottom-M.Top + } + else + { + S := StrSplit(Screen, "|") + _x := S[1], _y := S[2], _w := S[3], _h := S[4] + } + + if (_x = "") || (_y = "") || (_w = "") || (_h = "") + return -1 + + chdc := CreateCompatibleDC(), hbm := CreateDIBSection(_w, _h, chdc), obm := SelectObject(chdc, hbm), hhdc := hhdc ? hhdc : GetDC() + BitBlt(chdc, 0, 0, _w, _h, hhdc, _x, _y, Raster) + ReleaseDC(hhdc) + + pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) + SelectObject(chdc, obm), DeleteObject(hbm), DeleteDC(hhdc), DeleteDC(chdc) + return pBitmap +} + +;##################################################################################### + +; Function Gdip_BitmapFromHWND +; Description Uses PrintWindow to get a handle to the specified window and return a bitmap from it +; +; hwnd handle to the window to get a bitmap from +; +; return If the function succeeds, the return value is a pointer to a gdi+ bitmap +; +; notes Window must not be not minimised in order to get a handle to it's client area + +Gdip_BitmapFromHWND(hwnd) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + CreateRect( winRect, 0, 0, 0, 0 ) ;is 16 on both 32 and 64 + DllCall( "GetWindowRect", Ptr, hwnd, Ptr, &winRect ) + Width := NumGet(winRect, 8, "UInt") - NumGet(winRect, 0, "UInt") + Height := NumGet(winRect, 12, "UInt") - NumGet(winRect, 4, "UInt") + hbm := CreateDIBSection(Width, Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm) + PrintWindow(hwnd, hdc) + pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm) + SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc) + return pBitmap +} + +;##################################################################################### + +; Function CreateRectF +; Description Creates a RectF object, containing a the coordinates and dimensions of a rectangle +; +; RectF Name to call the RectF object +; x x-coordinate of the upper left corner of the rectangle +; y y-coordinate of the upper left corner of the rectangle +; w Width of the rectangle +; h Height of the rectangle +; +; return No return value + +CreateRectF(ByRef RectF, x, y, w, h) +{ + VarSetCapacity(RectF, 16) + NumPut(x, RectF, 0, "float"), NumPut(y, RectF, 4, "float"), NumPut(w, RectF, 8, "float"), NumPut(h, RectF, 12, "float") +} + +;##################################################################################### + +; Function CreateRect +; Description Creates a Rect object, containing a the coordinates and dimensions of a rectangle +; +; RectF Name to call the RectF object +; x x-coordinate of the upper left corner of the rectangle +; y y-coordinate of the upper left corner of the rectangle +; w Width of the rectangle +; h Height of the rectangle +; +; return No return value + +CreateRect(ByRef Rect, x, y, w, h) +{ + VarSetCapacity(Rect, 16) + NumPut(x, Rect, 0, "uint"), NumPut(y, Rect, 4, "uint"), NumPut(w, Rect, 8, "uint"), NumPut(h, Rect, 12, "uint") +} +;##################################################################################### + +; Function CreateSizeF +; Description Creates a SizeF object, containing an 2 values +; +; SizeF Name to call the SizeF object +; w w-value for the SizeF object +; h h-value for the SizeF object +; +; return No Return value + +CreateSizeF(ByRef SizeF, w, h) +{ + VarSetCapacity(SizeF, 8) + NumPut(w, SizeF, 0, "float"), NumPut(h, SizeF, 4, "float") +} +;##################################################################################### + +; Function CreatePointF +; Description Creates a SizeF object, containing an 2 values +; +; SizeF Name to call the SizeF object +; w w-value for the SizeF object +; h h-value for the SizeF object +; +; return No Return value + +CreatePointF(ByRef PointF, x, y) +{ + VarSetCapacity(PointF, 8) + NumPut(x, PointF, 0, "float"), NumPut(y, PointF, 4, "float") +} +;##################################################################################### + +; Function CreateDIBSection +; Description The CreateDIBSection function creates a DIB (Device Independent Bitmap) that applications can write to directly +; +; w width of the bitmap to create +; h height of the bitmap to create +; hdc a handle to the device context to use the palette from +; bpp bits per pixel (32 = ARGB) +; ppvBits A pointer to a variable that receives a pointer to the location of the DIB bit values +; +; return returns a DIB. A gdi bitmap +; +; notes ppvBits will receive the location of the pixels in the DIB + +CreateDIBSection(w, h, hdc:="", bpp:=32, ByRef ppvBits:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + hdc2 := hdc ? hdc : GetDC() + VarSetCapacity(bi, 40, 0) + + NumPut(w, bi, 4, "uint") + , NumPut(h, bi, 8, "uint") + , NumPut(40, bi, 0, "uint") + , NumPut(1, bi, 12, "ushort") + , NumPut(0, bi, 16, "uInt") + , NumPut(bpp, bi, 14, "ushort") + + hbm := DllCall("CreateDIBSection" + , Ptr, hdc2 + , Ptr, &bi + , "uint", 0 + , A_PtrSize ? "UPtr*" : "uint*", ppvBits + , Ptr, 0 + , "uint", 0, Ptr) + + if !hdc + ReleaseDC(hdc2) + return hbm +} + +;##################################################################################### + +; Function PrintWindow +; Description The PrintWindow function copies a visual window into the specified device context (DC), typically a printer DC +; +; hwnd A handle to the window that will be copied +; hdc A handle to the device context +; Flags Drawing options +; +; return If the function succeeds, it returns a nonzero value +; +; PW_CLIENTONLY = 1 + +PrintWindow(hwnd, hdc, Flags:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("PrintWindow", Ptr, hwnd, Ptr, hdc, "uint", Flags) +} + +;##################################################################################### + +; Function DestroyIcon +; Description Destroys an icon and frees any memory the icon occupied +; +; hIcon Handle to the icon to be destroyed. The icon must not be in use +; +; return If the function succeeds, the return value is nonzero + +DestroyIcon(hIcon) +{ + return DllCall("DestroyIcon", A_PtrSize ? "UPtr" : "UInt", hIcon) +} + +;##################################################################################### + +; Function: GetIconDimensions +; Description: Retrieves a given icon/cursor's width and height +; +; hIcon Pointer to an icon or cursor +; Width ByRef variable. This variable is set to the icon's width +; Height ByRef variable. This variable is set to the icon's height +; +; return If the function succeeds, the return value is zero, otherwise: +; -1 = Could not retrieve the icon's info. Check A_LastError for extended information +; -2 = Could not delete the icon's bitmask bitmap +; -3 = Could not delete the icon's color bitmap + +GetIconDimensions(hIcon, ByRef Width, ByRef Height) { + Ptr := A_PtrSize ? "UPtr" : "UInt" + Width := Height := 0 + + VarSetCapacity(ICONINFO, size := 16 + 2 * A_PtrSize, 0) + + if !DllCall("user32\GetIconInfo", Ptr, hIcon, Ptr, &ICONINFO) + return -1 + + hbmMask := NumGet(&ICONINFO, 16, Ptr) + hbmColor := NumGet(&ICONINFO, 16 + A_PtrSize, Ptr) + VarSetCapacity(BITMAP, size, 0) + + if DllCall("gdi32\GetObject", Ptr, hbmColor, "Int", size, Ptr, &BITMAP) + { + Width := NumGet(&BITMAP, 4, "Int") + Height := NumGet(&BITMAP, 8, "Int") + } + + if !DllCall("gdi32\DeleteObject", Ptr, hbmMask) + return -2 + + if !DllCall("gdi32\DeleteObject", Ptr, hbmColor) + return -3 + + return 0 +} + +;##################################################################################### + +PaintDesktop(hdc) +{ + return DllCall("PaintDesktop", A_PtrSize ? "UPtr" : "UInt", hdc) +} + +;##################################################################################### + +CreateCompatibleBitmap(hdc, w, h) +{ + return DllCall("gdi32\CreateCompatibleBitmap", A_PtrSize ? "UPtr" : "UInt", hdc, "int", w, "int", h) +} + +;##################################################################################### + +; Function CreateCompatibleDC +; Description This function creates a memory device context (DC) compatible with the specified device +; +; hdc Handle to an existing device context +; +; return returns the handle to a device context or 0 on failure +; +; notes If this handle is 0 (by default), the function creates a memory device context compatible with the application's current screen + +CreateCompatibleDC(hdc:=0) +{ + return DllCall("CreateCompatibleDC", A_PtrSize ? "UPtr" : "UInt", hdc) +} + +;##################################################################################### + +; Function SelectObject +; Description The SelectObject function selects an object into the specified device context (DC). The new object replaces the previous object of the same type +; +; hdc Handle to a DC +; hgdiobj A handle to the object to be selected into the DC +; +; return If the selected object is not a region and the function succeeds, the return value is a handle to the object being replaced +; +; notes The specified object must have been created by using one of the following functions +; Bitmap - CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection (A single bitmap cannot be selected into more than one DC at the same time) +; Brush - CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush +; Font - CreateFont, CreateFontIndirect +; Pen - CreatePen, CreatePenIndirect +; Region - CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect +; +; notes If the selected object is a region and the function succeeds, the return value is one of the following value +; +; SIMPLEREGION = 2 Region consists of a single rectangle +; COMPLEXREGION = 3 Region consists of more than one rectangle +; NULLREGION = 1 Region is empty + +SelectObject(hdc, hgdiobj) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("SelectObject", Ptr, hdc, Ptr, hgdiobj) +} + +;##################################################################################### + +; Function DeleteObject +; Description This function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object +; After the object is deleted, the specified handle is no longer valid +; +; hObject Handle to a logical pen, brush, font, bitmap, region, or palette to delete +; +; return Nonzero indicates success. Zero indicates that the specified handle is not valid or that the handle is currently selected into a device context + +DeleteObject(hObject) +{ + return DllCall("DeleteObject", A_PtrSize ? "UPtr" : "UInt", hObject) +} + +;##################################################################################### + +; Function GetDC +; Description This function retrieves a handle to a display device context (DC) for the client area of the specified window. +; The display device context can be used in subsequent graphics display interface (GDI) functions to draw in the client area of the window. +; +; hwnd Handle to the window whose device context is to be retrieved. If this value is NULL, GetDC retrieves the device context for the entire screen +; +; return The handle the device context for the specified window's client area indicates success. NULL indicates failure + +GetDC(hwnd:=0) +{ + return DllCall("GetDC", A_PtrSize ? "UPtr" : "UInt", hwnd) +} + +;##################################################################################### + +; DCX_CACHE = 0x2 +; DCX_CLIPCHILDREN = 0x8 +; DCX_CLIPSIBLINGS = 0x10 +; DCX_EXCLUDERGN = 0x40 +; DCX_EXCLUDEUPDATE = 0x100 +; DCX_INTERSECTRGN = 0x80 +; DCX_INTERSECTUPDATE = 0x200 +; DCX_LOCKWINDOWUPDATE = 0x400 +; DCX_NORECOMPUTE = 0x100000 +; DCX_NORESETATTRS = 0x4 +; DCX_PARENTCLIP = 0x20 +; DCX_VALIDATE = 0x200000 +; DCX_WINDOW = 0x1 + +GetDCEx(hwnd, flags:=0, hrgnClip:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("GetDCEx", Ptr, hwnd, Ptr, hrgnClip, "int", flags) +} + +;##################################################################################### + +; Function ReleaseDC +; Description This function releases a device context (DC), freeing it for use by other applications. The effect of ReleaseDC depends on the type of device context +; +; hdc Handle to the device context to be released +; hwnd Handle to the window whose device context is to be released +; +; return 1 = released +; 0 = not released +; +; notes The application must call the ReleaseDC function for each call to the GetWindowDC function and for each call to the GetDC function that retrieves a common device context +; An application cannot use the ReleaseDC function to release a device context that was created by calling the CreateDC function; instead, it must use the DeleteDC function. + +ReleaseDC(hdc, hwnd:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("ReleaseDC", Ptr, hwnd, Ptr, hdc) +} + +;##################################################################################### + +; Function DeleteDC +; Description The DeleteDC function deletes the specified device context (DC) +; +; hdc A handle to the device context +; +; return If the function succeeds, the return value is nonzero +; +; notes An application must not delete a DC whose handle was obtained by calling the GetDC function. Instead, it must call the ReleaseDC function to free the DC + +DeleteDC(hdc) +{ + return DllCall("DeleteDC", A_PtrSize ? "UPtr" : "UInt", hdc) +} +;##################################################################################### + +; Function Gdip_LibraryVersion +; Description Get the current library version +; +; return the library version +; +; notes This is useful for non compiled programs to ensure that a person doesn't run an old version when testing your scripts + +Gdip_LibraryVersion() +{ + return 1.45 +} + +;##################################################################################### + +; Function Gdip_LibrarySubVersion +; Description Get the current library sub version +; +; return the library sub version +; +; notes This is the sub-version currently maintained by Rseding91 +; Updated by guest3456 preliminary AHK v2 support +Gdip_LibrarySubVersion() +{ + return 1.54 +} + +;##################################################################################### + +; Function: Gdip_BitmapFromBRA +; Description: Gets a pointer to a gdi+ bitmap from a BRA file +; +; BRAFromMemIn The variable for a BRA file read to memory +; File The name of the file, or its number that you would like (This depends on alternate parameter) +; Alternate Changes whether the File parameter is the file name or its number +; +; return If the function succeeds, the return value is a pointer to a gdi+ bitmap +; -1 = The BRA variable is empty +; -2 = The BRA has an incorrect header +; -3 = The BRA has information missing +; -4 = Could not find file inside the BRA + +Gdip_BitmapFromBRA(ByRef BRAFromMemIn, File, Alternate := 0) { + pBitmap := 0 + pStream := 0 + + If !(BRAFromMemIn) + Return -1 + Headers := StrSplit(StrGet(&BRAFromMemIn, 256, "CP0"), "`n") + Header := StrSplit(Headers[1], "|") + HeaderLength := (A_AhkVersion < "2") ? Header.Length() : Header.Length + If (HeaderLength != 4) || (Header[2] != "BRA!") + Return -2 + _Info := StrSplit(Headers[2], "|") + _InfoLength := (A_AhkVersion < "2") ? _Info.Length() : _Info.Length + If (_InfoLength != 3) + Return -3 + OffsetTOC := StrPut(Headers[1], "CP0") + StrPut(Headers[2], "CP0") ; + 2 + OffsetData := _Info[2] + SearchIndex := Alternate ? 1 : 2 + TOC := StrGet(&BRAFromMemIn + OffsetTOC, OffsetData - OffsetTOC - 1, "CP0") + RX1 := A_AhkVersion < "2" ? "mi`nO)^" : "mi`n)^" + Offset := Size := 0 + If RegExMatch(TOC, RX1 . (Alternate ? File "\|.+?" : "\d+\|" . File) . "\|(\d+)\|(\d+)$", FileInfo) { + Offset := OffsetData + FileInfo[1] + Size := FileInfo[2] + } + If (Size = 0) + Return -4 + hData := DllCall("GlobalAlloc", "UInt", 2, "UInt", Size, "UPtr") + pData := DllCall("GlobalLock", "Ptr", hData, "UPtr") + DllCall("RtlMoveMemory", "Ptr", pData, "Ptr", &BRAFromMemIn + Offset, "Ptr", Size) + DllCall("GlobalUnlock", "Ptr", hData) + DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", hData, "Int", 1, "PtrP", pStream) + DllCall("Gdiplus.dll\GdipCreateBitmapFromStream", "Ptr", pStream, "PtrP", pBitmap) + ObjRelease(pStream) + Return pBitmap +} + +;##################################################################################### + +; Function: Gdip_BitmapFromBase64 +; Description: Creates a bitmap from a Base64 encoded string +; +; Base64 ByRef variable. Base64 encoded string. Immutable, ByRef to avoid performance overhead of passing long strings. +; +; return If the function succeeds, the return value is a pointer to a bitmap, otherwise: +; -1 = Could not calculate the length of the required buffer +; -2 = Could not decode the Base64 encoded string +; -3 = Could not create a memory stream + +Gdip_BitmapFromBase64(ByRef Base64) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + DecLen := 0 + pBitmap := 0 + + ; calculate the length of the buffer needed + if !(DllCall("crypt32\CryptStringToBinary", Ptr, &Base64, "UInt", 0, "UInt", 0x01, Ptr, 0, "UIntP", DecLen, Ptr, 0, Ptr, 0)) + return -1 + + VarSetCapacity(Dec, DecLen, 0) + + ; decode the Base64 encoded string + if !(DllCall("crypt32\CryptStringToBinary", Ptr, &Base64, "UInt", 0, "UInt", 0x01, Ptr, &Dec, "UIntP", DecLen, Ptr, 0, Ptr, 0)) + return -2 + + ; create a memory stream + if !(pStream := DllCall("shlwapi\SHCreateMemStream", Ptr, &Dec, "UInt", DecLen, "UPtr")) + return -3 + + DllCall("gdiplus\GdipCreateBitmapFromStreamICM", Ptr, pStream, "PtrP", pBitmap) + ObjRelease(pStream) + + return pBitmap +} + +;##################################################################################### + +; Function Gdip_DrawRectangle +; Description This function uses a pen to draw the outline of a rectangle into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x x-coordinate of the top left of the rectangle +; y y-coordinate of the top left of the rectangle +; w width of the rectanlge +; h height of the rectangle +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawRectangle", Ptr, pGraphics, Ptr, pPen, "float", x, "float", y, "float", w, "float", h) +} + +;##################################################################################### + +; Function Gdip_DrawRoundedRectangle +; Description This function uses a pen to draw the outline of a rounded rectangle into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x x-coordinate of the top left of the rounded rectangle +; y y-coordinate of the top left of the rounded rectangle +; w width of the rectanlge +; h height of the rectangle +; r radius of the rounded corners +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawRoundedRectangle(pGraphics, pPen, x, y, w, h, r) +{ + Gdip_SetClipRect(pGraphics, x-r, y-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x+w-r, y-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x-r, y+h-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x+w-r, y+h-r, 2*r, 2*r, 4) + _E := Gdip_DrawRectangle(pGraphics, pPen, x, y, w, h) + Gdip_ResetClip(pGraphics) + Gdip_SetClipRect(pGraphics, x-(2*r), y+r, w+(4*r), h-(2*r), 4) + Gdip_SetClipRect(pGraphics, x+r, y-(2*r), w-(2*r), h+(4*r), 4) + Gdip_DrawEllipse(pGraphics, pPen, x, y, 2*r, 2*r) + Gdip_DrawEllipse(pGraphics, pPen, x+w-(2*r), y, 2*r, 2*r) + Gdip_DrawEllipse(pGraphics, pPen, x, y+h-(2*r), 2*r, 2*r) + Gdip_DrawEllipse(pGraphics, pPen, x+w-(2*r), y+h-(2*r), 2*r, 2*r) + Gdip_ResetClip(pGraphics) + return _E +} + +;##################################################################################### + +; Function Gdip_DrawEllipse +; Description This function uses a pen to draw the outline of an ellipse into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x x-coordinate of the top left of the rectangle the ellipse will be drawn into +; y y-coordinate of the top left of the rectangle the ellipse will be drawn into +; w width of the ellipse +; h height of the ellipse +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawEllipse(pGraphics, pPen, x, y, w, h) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawEllipse", Ptr, pGraphics, Ptr, pPen, "float", x, "float", y, "float", w, "float", h) +} + +;##################################################################################### + +; Function Gdip_DrawBezier +; Description This function uses a pen to draw the outline of a bezier (a weighted curve) into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x1 x-coordinate of the start of the bezier +; y1 y-coordinate of the start of the bezier +; x2 x-coordinate of the first arc of the bezier +; y2 y-coordinate of the first arc of the bezier +; x3 x-coordinate of the second arc of the bezier +; y3 y-coordinate of the second arc of the bezier +; x4 x-coordinate of the end of the bezier +; y4 y-coordinate of the end of the bezier +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawBezier(pGraphics, pPen, x1, y1, x2, y2, x3, y3, x4, y4) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawBezier" + , Ptr, pgraphics + , Ptr, pPen + , "float", x1 + , "float", y1 + , "float", x2 + , "float", y2 + , "float", x3 + , "float", y3 + , "float", x4 + , "float", y4) +} + +;##################################################################################### + +; Function Gdip_DrawArc +; Description This function uses a pen to draw the outline of an arc into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x x-coordinate of the start of the arc +; y y-coordinate of the start of the arc +; w width of the arc +; h height of the arc +; StartAngle specifies the angle between the x-axis and the starting point of the arc +; SweepAngle specifies the angle between the starting and ending points of the arc +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawArc(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawArc" + , Ptr, pGraphics + , Ptr, pPen + , "float", x + , "float", y + , "float", w + , "float", h + , "float", StartAngle + , "float", SweepAngle) +} + +;##################################################################################### + +; Function Gdip_DrawPie +; Description This function uses a pen to draw the outline of a pie into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x x-coordinate of the start of the pie +; y y-coordinate of the start of the pie +; w width of the pie +; h height of the pie +; StartAngle specifies the angle between the x-axis and the starting point of the pie +; SweepAngle specifies the angle between the starting and ending points of the pie +; +; return status enumeration. 0 = success +; +; notes as all coordinates are taken from the top left of each pixel, then the entire width/height should be specified as subtracting the pen width + +Gdip_DrawPie(pGraphics, pPen, x, y, w, h, StartAngle, SweepAngle) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawPie", Ptr, pGraphics, Ptr, pPen, "float", x, "float", y, "float", w, "float", h, "float", StartAngle, "float", SweepAngle) +} + +;##################################################################################### + +; Function Gdip_DrawLine +; Description This function uses a pen to draw a line into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; x1 x-coordinate of the start of the line +; y1 y-coordinate of the start of the line +; x2 x-coordinate of the end of the line +; y2 y-coordinate of the end of the line +; +; return status enumeration. 0 = success + +Gdip_DrawLine(pGraphics, pPen, x1, y1, x2, y2) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipDrawLine" + , Ptr, pGraphics + , Ptr, pPen + , "float", x1 + , "float", y1 + , "float", x2 + , "float", y2) +} + +;##################################################################################### + +; Function Gdip_DrawLines +; Description This function uses a pen to draw a series of joined lines into the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pPen Pointer to a pen +; Points the coordinates of all the points passed as x1,y1|x2,y2|x3,y3..... +; +; return status enumeration. 0 = success + +Gdip_DrawLines(pGraphics, pPen, Points) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + Points := StrSplit(Points, "|") + PointsLength := (A_AhkVersion < "2") ? Points.Length() : Points.Length + VarSetCapacity(PointF, 8*PointsLength) + for eachPoint, Point in Points + { + Coord := StrSplit(Point, ",") + NumPut(Coord[1], PointF, 8*(A_Index-1), "float"), NumPut(Coord[2], PointF, (8*(A_Index-1))+4, "float") + } + return DllCall("gdiplus\GdipDrawLines", Ptr, pGraphics, Ptr, pPen, Ptr, &PointF, "int", PointsLength) +} + +;##################################################################################### + +; Function Gdip_FillRectangle +; Description This function uses a brush to fill a rectangle in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; x x-coordinate of the top left of the rectangle +; y y-coordinate of the top left of the rectangle +; w width of the rectanlge +; h height of the rectangle +; +; return status enumeration. 0 = success + +Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipFillRectangle" + , Ptr, pGraphics + , Ptr, pBrush + , "float", x + , "float", y + , "float", w + , "float", h) +} + +;##################################################################################### + +; Function Gdip_FillRoundedRectangle +; Description This function uses a brush to fill a rounded rectangle in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; x x-coordinate of the top left of the rounded rectangle +; y y-coordinate of the top left of the rounded rectangle +; w width of the rectanlge +; h height of the rectangle +; r radius of the rounded corners +; +; return status enumeration. 0 = success + +Gdip_FillRoundedRectangle(pGraphics, pBrush, x, y, w, h, r) +{ + Region := Gdip_GetClipRegion(pGraphics) + Gdip_SetClipRect(pGraphics, x-r, y-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x+w-r, y-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x-r, y+h-r, 2*r, 2*r, 4) + Gdip_SetClipRect(pGraphics, x+w-r, y+h-r, 2*r, 2*r, 4) + _E := Gdip_FillRectangle(pGraphics, pBrush, x, y, w, h) + Gdip_SetClipRegion(pGraphics, Region, 0) + Gdip_SetClipRect(pGraphics, x-(2*r), y+r, w+(4*r), h-(2*r), 4) + Gdip_SetClipRect(pGraphics, x+r, y-(2*r), w-(2*r), h+(4*r), 4) + Gdip_FillEllipse(pGraphics, pBrush, x, y, 2*r, 2*r) + Gdip_FillEllipse(pGraphics, pBrush, x+w-(2*r), y, 2*r, 2*r) + Gdip_FillEllipse(pGraphics, pBrush, x, y+h-(2*r), 2*r, 2*r) + Gdip_FillEllipse(pGraphics, pBrush, x+w-(2*r), y+h-(2*r), 2*r, 2*r) + Gdip_SetClipRegion(pGraphics, Region, 0) + Gdip_DeleteRegion(Region) + return _E +} + +;##################################################################################### + +; Function Gdip_FillPolygon +; Description This function uses a brush to fill a polygon in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; Points the coordinates of all the points passed as x1,y1|x2,y2|x3,y3..... +; +; return status enumeration. 0 = success +; +; notes Alternate will fill the polygon as a whole, wheras winding will fill each new "segment" +; Alternate = 0 +; Winding = 1 + +Gdip_FillPolygon(pGraphics, pBrush, Points, FillMode:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + Points := StrSplit(Points, "|") + PointsLength := (A_AhkVersion < "2") ? Points.Length() : Points.Length + VarSetCapacity(PointF, 8*PointsLength) + For eachPoint, Point in Points + { + Coord := StrSplit(Point, ",") + NumPut(Coord[1], PointF, 8*(A_Index-1), "float"), NumPut(Coord[2], PointF, (8*(A_Index-1))+4, "float") + } + return DllCall("gdiplus\GdipFillPolygon", Ptr, pGraphics, Ptr, pBrush, Ptr, &PointF, "int", PointsLength, "int", FillMode) +} + +;##################################################################################### + +; Function Gdip_FillPie +; Description This function uses a brush to fill a pie in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; x x-coordinate of the top left of the pie +; y y-coordinate of the top left of the pie +; w width of the pie +; h height of the pie +; StartAngle specifies the angle between the x-axis and the starting point of the pie +; SweepAngle specifies the angle between the starting and ending points of the pie +; +; return status enumeration. 0 = success + +Gdip_FillPie(pGraphics, pBrush, x, y, w, h, StartAngle, SweepAngle) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipFillPie" + , Ptr, pGraphics + , Ptr, pBrush + , "float", x + , "float", y + , "float", w + , "float", h + , "float", StartAngle + , "float", SweepAngle) +} + +;##################################################################################### + +; Function Gdip_FillEllipse +; Description This function uses a brush to fill an ellipse in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; x x-coordinate of the top left of the ellipse +; y y-coordinate of the top left of the ellipse +; w width of the ellipse +; h height of the ellipse +; +; return status enumeration. 0 = success + +Gdip_FillEllipse(pGraphics, pBrush, x, y, w, h) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipFillEllipse", Ptr, pGraphics, Ptr, pBrush, "float", x, "float", y, "float", w, "float", h) +} + +;##################################################################################### + +; Function Gdip_FillRegion +; Description This function uses a brush to fill a region in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; Region Pointer to a Region +; +; return status enumeration. 0 = success +; +; notes You can create a region Gdip_CreateRegion() and then add to this + +Gdip_FillRegion(pGraphics, pBrush, Region) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipFillRegion", Ptr, pGraphics, Ptr, pBrush, Ptr, Region) +} + +;##################################################################################### + +; Function Gdip_FillPath +; Description This function uses a brush to fill a path in the Graphics of a bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBrush Pointer to a brush +; Region Pointer to a Path +; +; return status enumeration. 0 = success + +Gdip_FillPath(pGraphics, pBrush, pPath) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipFillPath", Ptr, pGraphics, Ptr, pBrush, Ptr, pPath) +} + +;##################################################################################### + +; Function Gdip_DrawImagePointsRect +; Description This function draws a bitmap into the Graphics of another bitmap and skews it +; +; pGraphics Pointer to the Graphics of a bitmap +; pBitmap Pointer to a bitmap to be drawn +; Points Points passed as x1,y1|x2,y2|x3,y3 (3 points: top left, top right, bottom left) describing the drawing of the bitmap +; sx x-coordinate of source upper-left corner +; sy y-coordinate of source upper-left corner +; sw width of source rectangle +; sh height of source rectangle +; Matrix a matrix used to alter image attributes when drawing +; +; return status enumeration. 0 = success +; +; notes if sx,sy,sw,sh are missed then the entire source bitmap will be used +; Matrix can be omitted to just draw with no alteration to ARGB +; Matrix may be passed as a digit from 0 - 1 to change just transparency +; Matrix can be passed as a matrix with any delimiter + +Gdip_DrawImagePointsRect(pGraphics, pBitmap, Points, sx:="", sy:="", sw:="", sh:="", Matrix:=1) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + Points := StrSplit(Points, "|") + PointsLength := (A_AhkVersion < "2") ? Points.Length() : Points.Length + VarSetCapacity(PointF, 8*PointsLength) + For eachPoint, Point in Points + { + Coord := StrSplit(Point, ",") + NumPut(Coord[1], PointF, 8*(A_Index-1), "float"), NumPut(Coord[2], PointF, (8*(A_Index-1))+4, "float") + } + + if !IsNumber(Matrix) + ImageAttr := Gdip_SetImageAttributesColorMatrix(Matrix) + else if (Matrix != 1) + ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") + + if (sx = "" && sy = "" && sw = "" && sh = "") + { + sx := 0, sy := 0 + sw := Gdip_GetImageWidth(pBitmap) + sh := Gdip_GetImageHeight(pBitmap) + } + + _E := DllCall("gdiplus\GdipDrawImagePointsRect" + , Ptr, pGraphics + , Ptr, pBitmap + , Ptr, &PointF + , "int", PointsLength + , "float", sx + , "float", sy + , "float", sw + , "float", sh + , "int", 2 + , Ptr, ImageAttr + , Ptr, 0 + , Ptr, 0) + if ImageAttr + Gdip_DisposeImageAttributes(ImageAttr) + return _E +} + +;##################################################################################### + +; Function Gdip_DrawImage +; Description This function draws a bitmap into the Graphics of another bitmap +; +; pGraphics Pointer to the Graphics of a bitmap +; pBitmap Pointer to a bitmap to be drawn +; dx x-coord of destination upper-left corner +; dy y-coord of destination upper-left corner +; dw width of destination image +; dh height of destination image +; sx x-coordinate of source upper-left corner +; sy y-coordinate of source upper-left corner +; sw width of source image +; sh height of source image +; Matrix a matrix used to alter image attributes when drawing +; +; return status enumeration. 0 = success +; +; notes if sx,sy,sw,sh are missed then the entire source bitmap will be used +; Gdip_DrawImage performs faster +; Matrix can be omitted to just draw with no alteration to ARGB +; Matrix may be passed as a digit from 0 - 1 to change just transparency +; Matrix can be passed as a matrix with any delimiter. For example: +; MatrixBright= +; ( +; 1.5 |0 |0 |0 |0 +; 0 |1.5 |0 |0 |0 +; 0 |0 |1.5 |0 |0 +; 0 |0 |0 |1 |0 +; 0.05 |0.05 |0.05 |0 |1 +; ) +; +; notes MatrixBright = 1.5|0|0|0|0|0|1.5|0|0|0|0|0|1.5|0|0|0|0|0|1|0|0.05|0.05|0.05|0|1 +; MatrixGreyScale = 0.299|0.299|0.299|0|0|0.587|0.587|0.587|0|0|0.114|0.114|0.114|0|0|0|0|0|1|0|0|0|0|0|1 +; MatrixNegative = -1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|1|0|1|1|1|0|1 + +Gdip_DrawImage(pGraphics, pBitmap, dx:="", dy:="", dw:="", dh:="", sx:="", sy:="", sw:="", sh:="", Matrix:=1) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if !IsNumber(Matrix) + ImageAttr := Gdip_SetImageAttributesColorMatrix(Matrix) + else if (Matrix != 1) + ImageAttr := Gdip_SetImageAttributesColorMatrix("1|0|0|0|0|0|1|0|0|0|0|0|1|0|0|0|0|0|" Matrix "|0|0|0|0|0|1") + + if (sx = "" && sy = "" && sw = "" && sh = "") + { + if (dx = "" && dy = "" && dw = "" && dh = "") + { + sx := dx := 0, sy := dy := 0 + sw := dw := Gdip_GetImageWidth(pBitmap) + sh := dh := Gdip_GetImageHeight(pBitmap) + } + else + { + sx := sy := 0 + sw := Gdip_GetImageWidth(pBitmap) + sh := Gdip_GetImageHeight(pBitmap) + } + } + + _E := DllCall("gdiplus\GdipDrawImageRectRect" + , Ptr, pGraphics + , Ptr, pBitmap + , "float", dx + , "float", dy + , "float", dw + , "float", dh + , "float", sx + , "float", sy + , "float", sw + , "float", sh + , "int", 2 + , Ptr, ImageAttr ? ImageAttr : 0 + , Ptr, 0 + , Ptr, 0) + if ImageAttr + Gdip_DisposeImageAttributes(ImageAttr) + return _E +} + +;##################################################################################### + +; Function Gdip_SetImageAttributesColorMatrix +; Description This function creates an image matrix ready for drawing +; +; Matrix a matrix used to alter image attributes when drawing +; passed with any delimeter +; +; return returns an image matrix on sucess or 0 if it fails +; +; notes MatrixBright = 1.5|0|0|0|0|0|1.5|0|0|0|0|0|1.5|0|0|0|0|0|1|0|0.05|0.05|0.05|0|1 +; MatrixGreyScale = 0.299|0.299|0.299|0|0|0.587|0.587|0.587|0|0|0.114|0.114|0.114|0|0|0|0|0|1|0|0|0|0|0|1 +; MatrixNegative = -1|0|0|0|0|0|-1|0|0|0|0|0|-1|0|0|0|0|0|1|0|1|1|1|0|1 + +Gdip_SetImageAttributesColorMatrix(Matrix) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + ImageAttr := 0 + VarSetCapacity(ColourMatrix, 100, 0) + Matrix := RegExReplace(RegExReplace(Matrix, "^[^\d-\.]+([\d\.])", "$1", , 1), "[^\d-\.]+", "|") + Matrix := StrSplit(Matrix, "|") + Loop 25 + { + M := (Matrix[A_Index] != "") ? Matrix[A_Index] : Mod(A_Index-1, 6) ? 0 : 1 + NumPut(M, ColourMatrix, (A_Index-1)*4, "float") + } + DllCall("gdiplus\GdipCreateImageAttributes", A_PtrSize ? "UPtr*" : "uint*", ImageAttr) + DllCall("gdiplus\GdipSetImageAttributesColorMatrix", Ptr, ImageAttr, "int", 1, "int", 1, Ptr, &ColourMatrix, Ptr, 0, "int", 0) + return ImageAttr +} + +;##################################################################################### + +; Function Gdip_GraphicsFromImage +; Description This function gets the graphics for a bitmap used for drawing functions +; +; pBitmap Pointer to a bitmap to get the pointer to its graphics +; +; return returns a pointer to the graphics of a bitmap +; +; notes a bitmap can be drawn into the graphics of another bitmap + +Gdip_GraphicsFromImage(pBitmap) +{ + pGraphics := 0 + DllCall("gdiplus\GdipGetImageGraphicsContext", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) + return pGraphics +} + +;##################################################################################### + +; Function Gdip_GraphicsFromHDC +; Description This function gets the graphics from the handle to a device context +; +; hdc This is the handle to the device context +; +; return returns a pointer to the graphics of a bitmap +; +; notes You can draw a bitmap into the graphics of another bitmap + +Gdip_GraphicsFromHDC(hdc) +{ + pGraphics := 0 + + DllCall("gdiplus\GdipCreateFromHDC", A_PtrSize ? "UPtr" : "UInt", hdc, A_PtrSize ? "UPtr*" : "UInt*", pGraphics) + return pGraphics +} + +;##################################################################################### + +; Function Gdip_GetDC +; Description This function gets the device context of the passed Graphics +; +; hdc This is the handle to the device context +; +; return returns the device context for the graphics of a bitmap + +Gdip_GetDC(pGraphics) +{ + hdc := 0 + DllCall("gdiplus\GdipGetDC", A_PtrSize ? "UPtr" : "UInt", pGraphics, A_PtrSize ? "UPtr*" : "UInt*", hdc) + return hdc +} + +;##################################################################################### + +; Function Gdip_ReleaseDC +; Description This function releases a device context from use for further use +; +; pGraphics Pointer to the graphics of a bitmap +; hdc This is the handle to the device context +; +; return status enumeration. 0 = success + +Gdip_ReleaseDC(pGraphics, hdc) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipReleaseDC", Ptr, pGraphics, Ptr, hdc) +} + +;##################################################################################### + +; Function Gdip_GraphicsClear +; Description Clears the graphics of a bitmap ready for further drawing +; +; pGraphics Pointer to the graphics of a bitmap +; ARGB The colour to clear the graphics to +; +; return status enumeration. 0 = success +; +; notes By default this will make the background invisible +; Using clipping regions you can clear a particular area on the graphics rather than clearing the entire graphics + +Gdip_GraphicsClear(pGraphics, ARGB:=0x00ffffff) +{ + return DllCall("gdiplus\GdipGraphicsClear", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", ARGB) +} + +;##################################################################################### + +; Function Gdip_BlurBitmap +; Description Gives a pointer to a blurred bitmap from a pointer to a bitmap +; +; pBitmap Pointer to a bitmap to be blurred +; Blur The Amount to blur a bitmap by from 1 (least blur) to 100 (most blur) +; +; return If the function succeeds, the return value is a pointer to the new blurred bitmap +; -1 = The blur parameter is outside the range 1-100 +; +; notes This function will not dispose of the original bitmap + +Gdip_BlurBitmap(pBitmap, Blur) +{ + if (Blur > 100) || (Blur < 1) + return -1 + + sWidth := Gdip_GetImageWidth(pBitmap), sHeight := Gdip_GetImageHeight(pBitmap) + dWidth := sWidth//Blur, dHeight := sHeight//Blur + + pBitmap1 := Gdip_CreateBitmap(dWidth, dHeight) + G1 := Gdip_GraphicsFromImage(pBitmap1) + Gdip_SetInterpolationMode(G1, 7) + Gdip_DrawImage(G1, pBitmap, 0, 0, dWidth, dHeight, 0, 0, sWidth, sHeight) + + Gdip_DeleteGraphics(G1) + + pBitmap2 := Gdip_CreateBitmap(sWidth, sHeight) + G2 := Gdip_GraphicsFromImage(pBitmap2) + Gdip_SetInterpolationMode(G2, 7) + Gdip_DrawImage(G2, pBitmap1, 0, 0, sWidth, sHeight, 0, 0, dWidth, dHeight) + + Gdip_DeleteGraphics(G2) + Gdip_DisposeImage(pBitmap1) + return pBitmap2 +} + +;##################################################################################### + +; Function: Gdip_SaveBitmapToFile +; Description: Saves a bitmap to a file in any supported format onto disk +; +; pBitmap Pointer to a bitmap +; sOutput The name of the file that the bitmap will be saved to. Supported extensions are: .BMP,.DIB,.RLE,.JPG,.JPEG,.JPE,.JFIF,.GIF,.TIF,.TIFF,.PNG +; Quality If saving as jpg (.JPG,.JPEG,.JPE,.JFIF) then quality can be 1-100 with default at maximum quality +; +; return If the function succeeds, the return value is zero, otherwise: +; -1 = Extension supplied is not a supported file format +; -2 = Could not get a list of encoders on system +; -3 = Could not find matching encoder for specified file format +; -4 = Could not get WideChar name of output file +; -5 = Could not save file to disk +; +; notes This function will use the extension supplied from the sOutput parameter to determine the output format + +Gdip_SaveBitmapToFile(pBitmap, sOutput, Quality:=75) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + nCount := 0 + nSize := 0 + _p := 0 + + SplitPath sOutput,,, Extension + if !RegExMatch(Extension, "^(?i:BMP|DIB|RLE|JPG|JPEG|JPE|JFIF|GIF|TIF|TIFF|PNG)$") + return -1 + Extension := "." Extension + + DllCall("gdiplus\GdipGetImageEncodersSize", "uint*", nCount, "uint*", nSize) + VarSetCapacity(ci, nSize) + DllCall("gdiplus\GdipGetImageEncoders", "uint", nCount, "uint", nSize, Ptr, &ci) + if !(nCount && nSize) + return -2 + + If (A_IsUnicode){ + StrGet_Name := "StrGet" + + N := (A_AhkVersion < 2) ? nCount : "nCount" + Loop %N% + { + sString := %StrGet_Name%(NumGet(ci, (idx := (48+7*A_PtrSize)*(A_Index-1))+32+3*A_PtrSize), "UTF-16") + if !InStr(sString, "*" Extension) + continue + + pCodec := &ci+idx + break + } + } else { + N := (A_AhkVersion < 2) ? nCount : "nCount" + Loop %N% + { + Location := NumGet(ci, 76*(A_Index-1)+44) + nSize := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "uint", 0, "int", 0, "uint", 0, "uint", 0) + VarSetCapacity(sString, nSize) + DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "str", sString, "int", nSize, "uint", 0, "uint", 0) + if !InStr(sString, "*" Extension) + continue + + pCodec := &ci+76*(A_Index-1) + break + } + } + + if !pCodec + return -3 + + if (Quality != 75) + { + Quality := (Quality < 0) ? 0 : (Quality > 100) ? 100 : Quality + if RegExMatch(Extension, "^\.(?i:JPG|JPEG|JPE|JFIF)$") + { + DllCall("gdiplus\GdipGetEncoderParameterListSize", Ptr, pBitmap, Ptr, pCodec, "uint*", nSize) + VarSetCapacity(EncoderParameters, nSize, 0) + DllCall("gdiplus\GdipGetEncoderParameterList", Ptr, pBitmap, Ptr, pCodec, "uint", nSize, Ptr, &EncoderParameters) + nCount := NumGet(EncoderParameters, "UInt") + N := (A_AhkVersion < 2) ? nCount : "nCount" + Loop %N% + { + elem := (24+(A_PtrSize ? A_PtrSize : 4))*(A_Index-1) + 4 + (pad := A_PtrSize = 8 ? 4 : 0) + if (NumGet(EncoderParameters, elem+16, "UInt") = 1) && (NumGet(EncoderParameters, elem+20, "UInt") = 6) + { + _p := elem+&EncoderParameters-pad-4 + NumPut(Quality, NumGet(NumPut(4, NumPut(1, _p+0)+20, "UInt")), "UInt") + break + } + } + } + } + + if (!A_IsUnicode) + { + nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sOutput, "int", -1, Ptr, 0, "int", 0) + VarSetCapacity(wOutput, nSize*2) + DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sOutput, "int", -1, Ptr, &wOutput, "int", nSize) + VarSetCapacity(wOutput, -1) + if !VarSetCapacity(wOutput) + return -4 + _E := DllCall("gdiplus\GdipSaveImageToFile", Ptr, pBitmap, Ptr, &wOutput, Ptr, pCodec, "uint", _p ? _p : 0) + } + else + _E := DllCall("gdiplus\GdipSaveImageToFile", Ptr, pBitmap, Ptr, &sOutput, Ptr, pCodec, "uint", _p ? _p : 0) + return _E ? -5 : 0 +} + +;##################################################################################### + +; Function Gdip_GetPixel +; Description Gets the ARGB of a pixel in a bitmap +; +; pBitmap Pointer to a bitmap +; x x-coordinate of the pixel +; y y-coordinate of the pixel +; +; return Returns the ARGB value of the pixel + +Gdip_GetPixel(pBitmap, x, y) +{ + ARGB := 0 + + DllCall("gdiplus\GdipBitmapGetPixel", A_PtrSize ? "UPtr" : "UInt", pBitmap, "int", x, "int", y, "uint*", ARGB) + return ARGB +} + +;##################################################################################### + +; Function Gdip_SetPixel +; Description Sets the ARGB of a pixel in a bitmap +; +; pBitmap Pointer to a bitmap +; x x-coordinate of the pixel +; y y-coordinate of the pixel +; +; return status enumeration. 0 = success + +Gdip_SetPixel(pBitmap, x, y, ARGB) +{ + return DllCall("gdiplus\GdipBitmapSetPixel", A_PtrSize ? "UPtr" : "UInt", pBitmap, "int", x, "int", y, "int", ARGB) +} + +;##################################################################################### + +; Function Gdip_GetImageWidth +; Description Gives the width of a bitmap +; +; pBitmap Pointer to a bitmap +; +; return Returns the width in pixels of the supplied bitmap + +Gdip_GetImageWidth(pBitmap) +{ + Width := 0 + DllCall("gdiplus\GdipGetImageWidth", A_PtrSize ? "UPtr" : "UInt", pBitmap, "uint*", Width) + return Width +} + +;##################################################################################### + +; Function Gdip_GetImageHeight +; Description Gives the height of a bitmap +; +; pBitmap Pointer to a bitmap +; +; return Returns the height in pixels of the supplied bitmap + +Gdip_GetImageHeight(pBitmap) +{ + Height := 0 + DllCall("gdiplus\GdipGetImageHeight", A_PtrSize ? "UPtr" : "UInt", pBitmap, "uint*", Height) + return Height +} + +;##################################################################################### + +; Function Gdip_GetDimensions +; Description Gives the width and height of a bitmap +; +; pBitmap Pointer to a bitmap +; Width ByRef variable. This variable will be set to the width of the bitmap +; Height ByRef variable. This variable will be set to the height of the bitmap +; +; return No return value +; Gdip_GetDimensions(pBitmap, ThisWidth, ThisHeight) will set ThisWidth to the width and ThisHeight to the height + +Gdip_GetImageDimensions(pBitmap, ByRef Width, ByRef Height) +{ + Width := 0 + Height := 0 + Ptr := A_PtrSize ? "UPtr" : "UInt" + DllCall("gdiplus\GdipGetImageWidth", Ptr, pBitmap, "uint*", Width) + DllCall("gdiplus\GdipGetImageHeight", Ptr, pBitmap, "uint*", Height) +} + +;##################################################################################### + +Gdip_GetDimensions(pBitmap, ByRef Width, ByRef Height) +{ + Gdip_GetImageDimensions(pBitmap, Width, Height) +} + +;##################################################################################### + +Gdip_GetImagePixelFormat(pBitmap) +{ + Format := 0 + DllCall("gdiplus\GdipGetImagePixelFormat", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "UInt*", Format) + return Format +} + +;##################################################################################### + +; Function Gdip_GetDpiX +; Description Gives the horizontal dots per inch of the graphics of a bitmap +; +; pBitmap Pointer to a bitmap +; Width ByRef variable. This variable will be set to the width of the bitmap +; Height ByRef variable. This variable will be set to the height of the bitmap +; +; return No return value +; Gdip_GetDimensions(pBitmap, ThisWidth, ThisHeight) will set ThisWidth to the width and ThisHeight to the height + +Gdip_GetDpiX(pGraphics) +{ + dpix := 0 + DllCall("gdiplus\GdipGetDpiX", A_PtrSize ? "UPtr" : "uint", pGraphics, "float*", dpix) + return Round(dpix) +} + +;##################################################################################### + +Gdip_GetDpiY(pGraphics) +{ + dpiy := 0 + DllCall("gdiplus\GdipGetDpiY", A_PtrSize ? "UPtr" : "uint", pGraphics, "float*", dpiy) + return Round(dpiy) +} + +;##################################################################################### + +Gdip_GetImageHorizontalResolution(pBitmap) +{ + dpix := 0 + DllCall("gdiplus\GdipGetImageHorizontalResolution", A_PtrSize ? "UPtr" : "uint", pBitmap, "float*", dpix) + return Round(dpix) +} + +;##################################################################################### + +Gdip_GetImageVerticalResolution(pBitmap) +{ + dpiy := 0 + DllCall("gdiplus\GdipGetImageVerticalResolution", A_PtrSize ? "UPtr" : "uint", pBitmap, "float*", dpiy) + return Round(dpiy) +} + +;##################################################################################### + +Gdip_BitmapSetResolution(pBitmap, dpix, dpiy) +{ + return DllCall("gdiplus\GdipBitmapSetResolution", A_PtrSize ? "UPtr" : "uint", pBitmap, "float", dpix, "float", dpiy) +} + +;##################################################################################### + +Gdip_CreateBitmapFromFile(sFile, IconNumber:=1, IconSize:="") +{ + pBitmap := 0 + pBitmapOld := 0 + hIcon := 0 + Ptr := A_PtrSize ? "UPtr" : "UInt" + , PtrA := A_PtrSize ? "UPtr*" : "UInt*" + + SplitPath sFile,,, Extension + if RegExMatch(Extension, "^(?i:exe|dll)$") + { + Sizes := IconSize ? IconSize : 256 "|" 128 "|" 64 "|" 48 "|" 32 "|" 16 + BufSize := 16 + (2*(A_PtrSize ? A_PtrSize : 4)) + + VarSetCapacity(buf, BufSize, 0) + For eachSize, Size in StrSplit( Sizes, "|" ) + { + DllCall("PrivateExtractIcons", "str", sFile, "int", IconNumber-1, "int", Size, "int", Size, PtrA, hIcon, PtrA, 0, "uint", 1, "uint", 0) + + if !hIcon + continue + + if !DllCall("GetIconInfo", Ptr, hIcon, Ptr, &buf) + { + DestroyIcon(hIcon) + continue + } + + hbmMask := NumGet(buf, 12 + ((A_PtrSize ? A_PtrSize : 4) - 4)) + hbmColor := NumGet(buf, 12 + ((A_PtrSize ? A_PtrSize : 4) - 4) + (A_PtrSize ? A_PtrSize : 4)) + if !(hbmColor && DllCall("GetObject", Ptr, hbmColor, "int", BufSize, Ptr, &buf)) + { + DestroyIcon(hIcon) + continue + } + break + } + if !hIcon + return -1 + + Width := NumGet(buf, 4, "int"), Height := NumGet(buf, 8, "int") + hbm := CreateDIBSection(Width, -Height), hdc := CreateCompatibleDC(), obm := SelectObject(hdc, hbm) + if !DllCall("DrawIconEx", Ptr, hdc, "int", 0, "int", 0, Ptr, hIcon, "uint", Width, "uint", Height, "uint", 0, Ptr, 0, "uint", 3) + { + DestroyIcon(hIcon) + return -2 + } + + VarSetCapacity(dib, 104) + DllCall("GetObject", Ptr, hbm, "int", A_PtrSize = 8 ? 104 : 84, Ptr, &dib) ; sizeof(DIBSECTION) = 76+2*(A_PtrSize=8?4:0)+2*A_PtrSize + Stride := NumGet(dib, 12, "Int"), Bits := NumGet(dib, 20 + (A_PtrSize = 8 ? 4 : 0)) ; padding + DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", Stride, "int", 0x26200A, Ptr, Bits, PtrA, pBitmapOld) + pBitmap := Gdip_CreateBitmap(Width, Height) + _G := Gdip_GraphicsFromImage(pBitmap) + , Gdip_DrawImage(_G, pBitmapOld, 0, 0, Width, Height, 0, 0, Width, Height) + SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc) + Gdip_DeleteGraphics(_G), Gdip_DisposeImage(pBitmapOld) + DestroyIcon(hIcon) + } + else + { + if (!A_IsUnicode) + { + VarSetCapacity(wFile, 1024) + DllCall("kernel32\MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sFile, "int", -1, Ptr, &wFile, "int", 512) + DllCall("gdiplus\GdipCreateBitmapFromFile", Ptr, &wFile, PtrA, pBitmap) + } + else + DllCall("gdiplus\GdipCreateBitmapFromFile", Ptr, &sFile, PtrA, pBitmap) + } + + return pBitmap +} + +;##################################################################################### + +Gdip_CreateBitmapFromHBITMAP(hBitmap, Palette:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + pBitmap := 0 + + DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", Ptr, hBitmap, Ptr, Palette, A_PtrSize ? "UPtr*" : "uint*", pBitmap) + return pBitmap +} + +;##################################################################################### + +Gdip_CreateHBITMAPFromBitmap(pBitmap, Background:=0xffffffff) +{ + hbm := 0 + DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "uint*", hbm, "int", Background) + return hbm +} + +;##################################################################################### + +Gdip_CreateBitmapFromHICON(hIcon) +{ + pBitmap := 0 + + DllCall("gdiplus\GdipCreateBitmapFromHICON", A_PtrSize ? "UPtr" : "UInt", hIcon, A_PtrSize ? "UPtr*" : "uint*", pBitmap) + return pBitmap +} + +;##################################################################################### + +Gdip_CreateHICONFromBitmap(pBitmap) +{ + hIcon := 0 + + DllCall("gdiplus\GdipCreateHICONFromBitmap", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "uint*", hIcon) + return hIcon +} + +;##################################################################################### + +Gdip_CreateBitmap(Width, Height, Format:=0x26200A) +{ + pBitmap := 0 + + DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", 0, "int", Format, A_PtrSize ? "UPtr" : "UInt", 0, A_PtrSize ? "UPtr*" : "uint*", pBitmap) + Return pBitmap +} + +;##################################################################################### + +Gdip_CreateBitmapFromClipboard() +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if !DllCall("IsClipboardFormatAvailable", "uint", 8) + return -2 + if !DllCall("OpenClipboard", Ptr, 0) + return -1 + hBitmap := DllCall("GetClipboardData", "uint", 2, Ptr) + if !DllCall("CloseClipboard") + return -5 + if !hBitmap + return -3 + if !pBitmap := Gdip_CreateBitmapFromHBITMAP(hBitmap) + return -4 + DeleteObject(hBitmap) + return pBitmap +} + +;##################################################################################### + +Gdip_SetBitmapToClipboard(pBitmap) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + off1 := A_PtrSize = 8 ? 52 : 44, off2 := A_PtrSize = 8 ? 32 : 24 + hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) + DllCall("GetObject", Ptr, hBitmap, "int", VarSetCapacity(oi, A_PtrSize = 8 ? 104 : 84, 0), Ptr, &oi) + hdib := DllCall("GlobalAlloc", "uint", 2, Ptr, 40+NumGet(oi, off1, "UInt"), Ptr) + pdib := DllCall("GlobalLock", Ptr, hdib, Ptr) + DllCall("RtlMoveMemory", Ptr, pdib, Ptr, &oi+off2, Ptr, 40) + DllCall("RtlMoveMemory", Ptr, pdib+40, Ptr, NumGet(oi, off2 - (A_PtrSize ? A_PtrSize : 4), Ptr), Ptr, NumGet(oi, off1, "UInt")) + DllCall("GlobalUnlock", Ptr, hdib) + DllCall("DeleteObject", Ptr, hBitmap) + DllCall("OpenClipboard", Ptr, 0) + DllCall("EmptyClipboard") + DllCall("SetClipboardData", "uint", 8, Ptr, hdib) + DllCall("CloseClipboard") +} + +;##################################################################################### + +Gdip_CloneBitmapArea(pBitmap, x, y, w, h, Format:=0x26200A) +{ + pBitmapDest := 0 + DllCall("gdiplus\GdipCloneBitmapArea" + , "float", x + , "float", y + , "float", w + , "float", h + , "int", Format + , A_PtrSize ? "UPtr" : "UInt", pBitmap + , A_PtrSize ? "UPtr*" : "UInt*", pBitmapDest) + return pBitmapDest +} + +;##################################################################################### +; Create resources +;##################################################################################### + +Gdip_CreatePen(ARGB, w) +{ + pPen := 0 + DllCall("gdiplus\GdipCreatePen1", "UInt", ARGB, "float", w, "int", 2, A_PtrSize ? "UPtr*" : "UInt*", pPen) + return pPen +} + +;##################################################################################### + +Gdip_CreatePenFromBrush(pBrush, w) +{ + pPen := 0 + + DllCall("gdiplus\GdipCreatePen2", A_PtrSize ? "UPtr" : "UInt", pBrush, "float", w, "int", 2, A_PtrSize ? "UPtr*" : "UInt*", pPen) + return pPen +} + +;##################################################################################### + +Gdip_BrushCreateSolid(ARGB:=0xff000000) +{ + pBrush := 0 + + DllCall("gdiplus\GdipCreateSolidFill", "UInt", ARGB, A_PtrSize ? "UPtr*" : "UInt*", pBrush) + return pBrush +} + +;##################################################################################### + +; HatchStyleHorizontal = 0 +; HatchStyleVertical = 1 +; HatchStyleForwardDiagonal = 2 +; HatchStyleBackwardDiagonal = 3 +; HatchStyleCross = 4 +; HatchStyleDiagonalCross = 5 +; HatchStyle05Percent = 6 +; HatchStyle10Percent = 7 +; HatchStyle20Percent = 8 +; HatchStyle25Percent = 9 +; HatchStyle30Percent = 10 +; HatchStyle40Percent = 11 +; HatchStyle50Percent = 12 +; HatchStyle60Percent = 13 +; HatchStyle70Percent = 14 +; HatchStyle75Percent = 15 +; HatchStyle80Percent = 16 +; HatchStyle90Percent = 17 +; HatchStyleLightDownwardDiagonal = 18 +; HatchStyleLightUpwardDiagonal = 19 +; HatchStyleDarkDownwardDiagonal = 20 +; HatchStyleDarkUpwardDiagonal = 21 +; HatchStyleWideDownwardDiagonal = 22 +; HatchStyleWideUpwardDiagonal = 23 +; HatchStyleLightVertical = 24 +; HatchStyleLightHorizontal = 25 +; HatchStyleNarrowVertical = 26 +; HatchStyleNarrowHorizontal = 27 +; HatchStyleDarkVertical = 28 +; HatchStyleDarkHorizontal = 29 +; HatchStyleDashedDownwardDiagonal = 30 +; HatchStyleDashedUpwardDiagonal = 31 +; HatchStyleDashedHorizontal = 32 +; HatchStyleDashedVertical = 33 +; HatchStyleSmallConfetti = 34 +; HatchStyleLargeConfetti = 35 +; HatchStyleZigZag = 36 +; HatchStyleWave = 37 +; HatchStyleDiagonalBrick = 38 +; HatchStyleHorizontalBrick = 39 +; HatchStyleWeave = 40 +; HatchStylePlaid = 41 +; HatchStyleDivot = 42 +; HatchStyleDottedGrid = 43 +; HatchStyleDottedDiamond = 44 +; HatchStyleShingle = 45 +; HatchStyleTrellis = 46 +; HatchStyleSphere = 47 +; HatchStyleSmallGrid = 48 +; HatchStyleSmallCheckerBoard = 49 +; HatchStyleLargeCheckerBoard = 50 +; HatchStyleOutlinedDiamond = 51 +; HatchStyleSolidDiamond = 52 +; HatchStyleTotal = 53 +Gdip_BrushCreateHatch(ARGBfront, ARGBback, HatchStyle:=0) +{ + pBrush := 0 + + DllCall("gdiplus\GdipCreateHatchBrush", "int", HatchStyle, "UInt", ARGBfront, "UInt", ARGBback, A_PtrSize ? "UPtr*" : "UInt*", pBrush) + return pBrush +} + +;##################################################################################### + +Gdip_CreateTextureBrush(pBitmap, WrapMode:=1, x:=0, y:=0, w:="", h:="") +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + , PtrA := A_PtrSize ? "UPtr*" : "UInt*" + pBrush := 0 + + if !(w && h) + DllCall("gdiplus\GdipCreateTexture", Ptr, pBitmap, "int", WrapMode, PtrA, pBrush) + else + DllCall("gdiplus\GdipCreateTexture2", Ptr, pBitmap, "int", WrapMode, "float", x, "float", y, "float", w, "float", h, PtrA, pBrush) + return pBrush +} + +;##################################################################################### + +; WrapModeTile = 0 +; WrapModeTileFlipX = 1 +; WrapModeTileFlipY = 2 +; WrapModeTileFlipXY = 3 +; WrapModeClamp = 4 +Gdip_CreateLineBrush(x1, y1, x2, y2, ARGB1, ARGB2, WrapMode:=1) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + LGpBrush := 0 + + CreatePointF(PointF1, x1, y1), CreatePointF(PointF2, x2, y2) + DllCall("gdiplus\GdipCreateLineBrush", Ptr, &PointF1, Ptr, &PointF2, "Uint", ARGB1, "Uint", ARGB2, "int", WrapMode, A_PtrSize ? "UPtr*" : "UInt*", LGpBrush) + return LGpBrush +} + +;##################################################################################### + +; LinearGradientModeHorizontal = 0 +; LinearGradientModeVertical = 1 +; LinearGradientModeForwardDiagonal = 2 +; LinearGradientModeBackwardDiagonal = 3 +Gdip_CreateLineBrushFromRect(x, y, w, h, ARGB1, ARGB2, LinearGradientMode:=1, WrapMode:=1) +{ + CreateRectF(RectF, x, y, w, h) + LGpBrush := 0 + DllCall("gdiplus\GdipCreateLineBrushFromRect", A_PtrSize ? "UPtr" : "UInt", &RectF, "int", ARGB1, "int", ARGB2, "int", LinearGradientMode, "int", WrapMode, A_PtrSize ? "UPtr*" : "UInt*", LGpBrush) + return LGpBrush +} + +;##################################################################################### + +Gdip_CloneBrush(pBrush) +{ + pBrushClone := 0 + DllCall("gdiplus\GdipCloneBrush", A_PtrSize ? "UPtr" : "UInt", pBrush, A_PtrSize ? "UPtr*" : "UInt*", pBrushClone) + return pBrushClone +} + +;##################################################################################### +; Delete resources +;##################################################################################### + +Gdip_DeletePen(pPen) +{ + return DllCall("gdiplus\GdipDeletePen", A_PtrSize ? "UPtr" : "UInt", pPen) +} + +;##################################################################################### + +Gdip_DeleteBrush(pBrush) +{ + return DllCall("gdiplus\GdipDeleteBrush", A_PtrSize ? "UPtr" : "UInt", pBrush) +} + +;##################################################################################### + +Gdip_DisposeImage(pBitmap) +{ + return DllCall("gdiplus\GdipDisposeImage", A_PtrSize ? "UPtr" : "UInt", pBitmap) +} + +;##################################################################################### + +Gdip_DeleteGraphics(pGraphics) +{ + return DllCall("gdiplus\GdipDeleteGraphics", A_PtrSize ? "UPtr" : "UInt", pGraphics) +} + +;##################################################################################### + +Gdip_DisposeImageAttributes(ImageAttr) +{ + return DllCall("gdiplus\GdipDisposeImageAttributes", A_PtrSize ? "UPtr" : "UInt", ImageAttr) +} + +;##################################################################################### + +Gdip_DeleteFont(hFont) +{ + return DllCall("gdiplus\GdipDeleteFont", A_PtrSize ? "UPtr" : "UInt", hFont) +} + +;##################################################################################### + +Gdip_DeleteStringFormat(hFormat) +{ + return DllCall("gdiplus\GdipDeleteStringFormat", A_PtrSize ? "UPtr" : "UInt", hFormat) +} + +;##################################################################################### + +Gdip_DeleteFontFamily(hFamily) +{ + return DllCall("gdiplus\GdipDeleteFontFamily", A_PtrSize ? "UPtr" : "UInt", hFamily) +} + +;##################################################################################### + +Gdip_DeleteMatrix(Matrix) +{ + return DllCall("gdiplus\GdipDeleteMatrix", A_PtrSize ? "UPtr" : "UInt", Matrix) +} + +;##################################################################################### +; Text functions +;##################################################################################### + +Gdip_TextToGraphics(pGraphics, Text, Options, Font:="Arial", Width:="", Height:="", Measure:=0) +{ + IWidth := Width, IHeight:= Height + + pattern_opts := (A_AhkVersion < "2") ? "iO)" : "i)" + RegExMatch(Options, pattern_opts "X([\-\d\.]+)(p*)", xpos) + RegExMatch(Options, pattern_opts "Y([\-\d\.]+)(p*)", ypos) + RegExMatch(Options, pattern_opts "W([\-\d\.]+)(p*)", Width) + RegExMatch(Options, pattern_opts "H([\-\d\.]+)(p*)", Height) + RegExMatch(Options, pattern_opts "C(?!(entre|enter))([a-f\d]+)", Colour) + RegExMatch(Options, pattern_opts "Top|Up|Bottom|Down|vCentre|vCenter", vPos) + RegExMatch(Options, pattern_opts "NoWrap", NoWrap) + RegExMatch(Options, pattern_opts "R(\d)", Rendering) + RegExMatch(Options, pattern_opts "S(\d+)(p*)", Size) + + if Colour && IsInteger(Colour[2]) && !Gdip_DeleteBrush(Gdip_CloneBrush(Colour[2])) + PassBrush := 1, pBrush := Colour[2] + + if !(IWidth && IHeight) && ((xpos && xpos[2]) || (ypos && ypos[2]) || (Width && Width[2]) || (Height && Height[2]) || (Size && Size[2])) + return -1 + + Style := 0, Styles := "Regular|Bold|Italic|BoldItalic|Underline|Strikeout" + For eachStyle, valStyle in StrSplit( Styles, "|" ) + { + if RegExMatch(Options, "\b" valStyle) + Style |= (valStyle != "StrikeOut") ? (A_Index-1) : 8 + } + + Align := 0, Alignments := "Near|Left|Centre|Center|Far|Right" + For eachAlignment, valAlignment in StrSplit( Alignments, "|" ) + { + if RegExMatch(Options, "\b" valAlignment) + Align |= A_Index//2.1 ; 0|0|1|1|2|2 + } + + xpos := (xpos && (xpos[1] != "")) ? xpos[2] ? IWidth*(xpos[1]/100) : xpos[1] : 0 + ypos := (ypos && (ypos[1] != "")) ? ypos[2] ? IHeight*(ypos[1]/100) : ypos[1] : 0 + Width := (Width && Width[1]) ? Width[2] ? IWidth*(Width[1]/100) : Width[1] : IWidth + Height := (Height && Height[1]) ? Height[2] ? IHeight*(Height[1]/100) : Height[1] : IHeight + if !PassBrush + Colour := "0x" (Colour && Colour[2] ? Colour[2] : "ff000000") + Rendering := (Rendering && (Rendering[1] >= 0) && (Rendering[1] <= 5)) ? Rendering[1] : 4 + Size := (Size && (Size[1] > 0)) ? Size[2] ? IHeight*(Size[1]/100) : Size[1] : 12 + + hFamily := Gdip_FontFamilyCreate(Font) + hFont := Gdip_FontCreate(hFamily, Size, Style) + FormatStyle := NoWrap ? 0x4000 | 0x1000 : 0x4000 + hFormat := Gdip_StringFormatCreate(FormatStyle) + pBrush := PassBrush ? pBrush : Gdip_BrushCreateSolid(Colour) + if !(hFamily && hFont && hFormat && pBrush && pGraphics) + return !pGraphics ? -2 : !hFamily ? -3 : !hFont ? -4 : !hFormat ? -5 : !pBrush ? -6 : 0 + + CreateRectF(RC, xpos, ypos, Width, Height) + Gdip_SetStringFormatAlign(hFormat, Align) + Gdip_SetTextRenderingHint(pGraphics, Rendering) + ReturnRC := Gdip_MeasureString(pGraphics, Text, hFont, hFormat, RC) + + if vPos + { + ReturnRC := StrSplit(ReturnRC, "|") + + if (vPos[0] = "vCentre") || (vPos[0] = "vCenter") + ypos += (Height-ReturnRC[4])//2 + else if (vPos[0] = "Top") || (vPos[0] = "Up") + ypos := 0 + else if (vPos[0] = "Bottom") || (vPos[0] = "Down") + ypos := Height-ReturnRC[4] + + CreateRectF(RC, xpos, ypos, Width, ReturnRC[4]) + ReturnRC := Gdip_MeasureString(pGraphics, Text, hFont, hFormat, RC) + } + + if !Measure + _E := Gdip_DrawString(pGraphics, Text, hFont, hFormat, pBrush, RC) + + if !PassBrush + Gdip_DeleteBrush(pBrush) + Gdip_DeleteStringFormat(hFormat) + Gdip_DeleteFont(hFont) + Gdip_DeleteFontFamily(hFamily) + return _E ? _E : ReturnRC +} + +;##################################################################################### + +Gdip_DrawString(pGraphics, sString, hFont, hFormat, pBrush, ByRef RectF) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if (!A_IsUnicode) + { + nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sString, "int", -1, Ptr, 0, "int", 0) + VarSetCapacity(wString, nSize*2) + DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sString, "int", -1, Ptr, &wString, "int", nSize) + } + + return DllCall("gdiplus\GdipDrawString" + , Ptr, pGraphics + , Ptr, A_IsUnicode ? &sString : &wString + , "int", -1 + , Ptr, hFont + , Ptr, &RectF + , Ptr, hFormat + , Ptr, pBrush) +} + +;##################################################################################### + +Gdip_MeasureString(pGraphics, sString, hFont, hFormat, ByRef RectF) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + VarSetCapacity(RC, 16) + if !A_IsUnicode + { + nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sString, "int", -1, "uint", 0, "int", 0) + VarSetCapacity(wString, nSize*2) + DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &sString, "int", -1, Ptr, &wString, "int", nSize) + } + + Chars := 0 + Lines := 0 + DllCall("gdiplus\GdipMeasureString" + , Ptr, pGraphics + , Ptr, A_IsUnicode ? &sString : &wString + , "int", -1 + , Ptr, hFont + , Ptr, &RectF + , Ptr, hFormat + , Ptr, &RC + , "uint*", Chars + , "uint*", Lines) + + return &RC ? NumGet(RC, 0, "float") "|" NumGet(RC, 4, "float") "|" NumGet(RC, 8, "float") "|" NumGet(RC, 12, "float") "|" Chars "|" Lines : 0 +} + +; Near = 0 +; Center = 1 +; Far = 2 +Gdip_SetStringFormatAlign(hFormat, Align) +{ + return DllCall("gdiplus\GdipSetStringFormatAlign", A_PtrSize ? "UPtr" : "UInt", hFormat, "int", Align) +} + +; StringFormatFlagsDirectionRightToLeft = 0x00000001 +; StringFormatFlagsDirectionVertical = 0x00000002 +; StringFormatFlagsNoFitBlackBox = 0x00000004 +; StringFormatFlagsDisplayFormatControl = 0x00000020 +; StringFormatFlagsNoFontFallback = 0x00000400 +; StringFormatFlagsMeasureTrailingSpaces = 0x00000800 +; StringFormatFlagsNoWrap = 0x00001000 +; StringFormatFlagsLineLimit = 0x00002000 +; StringFormatFlagsNoClip = 0x00004000 +Gdip_StringFormatCreate(Format:=0, Lang:=0) +{ + hFormat := 0 + DllCall("gdiplus\GdipCreateStringFormat", "int", Format, "int", Lang, A_PtrSize ? "UPtr*" : "UInt*", hFormat) + return hFormat +} + +; Regular = 0 +; Bold = 1 +; Italic = 2 +; BoldItalic = 3 +; Underline = 4 +; Strikeout = 8 +Gdip_FontCreate(hFamily, Size, Style:=0) +{ + hFont := 0 + DllCall("gdiplus\GdipCreateFont", A_PtrSize ? "UPtr" : "UInt", hFamily, "float", Size, "int", Style, "int", 0, A_PtrSize ? "UPtr*" : "UInt*", hFont) + return hFont +} + +Gdip_FontFamilyCreate(Font) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if (!A_IsUnicode) + { + nSize := DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &Font, "int", -1, "uint", 0, "int", 0) + VarSetCapacity(wFont, nSize*2) + DllCall("MultiByteToWideChar", "uint", 0, "uint", 0, Ptr, &Font, "int", -1, Ptr, &wFont, "int", nSize) + } + + hFamily := 0 + DllCall("gdiplus\GdipCreateFontFamilyFromName" + , Ptr, A_IsUnicode ? &Font : &wFont + , "uint", 0 + , A_PtrSize ? "UPtr*" : "UInt*", hFamily) + + return hFamily +} + +;##################################################################################### +; Matrix functions +;##################################################################################### + +Gdip_CreateAffineMatrix(m11, m12, m21, m22, x, y) +{ + Matrix := 0 + DllCall("gdiplus\GdipCreateMatrix2", "float", m11, "float", m12, "float", m21, "float", m22, "float", x, "float", y, A_PtrSize ? "UPtr*" : "UInt*", Matrix) + return Matrix +} + +Gdip_CreateMatrix() +{ + Matrix := 0 + DllCall("gdiplus\GdipCreateMatrix", A_PtrSize ? "UPtr*" : "UInt*", Matrix) + return Matrix +} + +;##################################################################################### +; GraphicsPath functions +;##################################################################################### + +; Alternate = 0 +; Winding = 1 +Gdip_CreatePath(BrushMode:=0) +{ + pPath := 0 + DllCall("gdiplus\GdipCreatePath", "int", BrushMode, A_PtrSize ? "UPtr*" : "UInt*", pPath) + return pPath +} + +Gdip_AddPathEllipse(pPath, x, y, w, h) +{ + return DllCall("gdiplus\GdipAddPathEllipse", A_PtrSize ? "UPtr" : "UInt", pPath, "float", x, "float", y, "float", w, "float", h) +} + +Gdip_AddPathPolygon(pPath, Points) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + Points := StrSplit(Points, "|") + PointsLength := (A_AhkVersion < "2") ? Points.Length() : Points.Length + VarSetCapacity(PointF, 8*PointsLength) + for eachPoint, Point in Points + { + Coord := StrSplit(Point, ",") + NumPut(Coord[1], PointF, 8*(A_Index-1), "float"), NumPut(Coord[2], PointF, (8*(A_Index-1))+4, "float") + } + + return DllCall("gdiplus\GdipAddPathPolygon", Ptr, pPath, Ptr, &PointF, "int", PointsLength) +} + +Gdip_DeletePath(pPath) +{ + return DllCall("gdiplus\GdipDeletePath", A_PtrSize ? "UPtr" : "UInt", pPath) +} + +;##################################################################################### +; Quality functions +;##################################################################################### + +; SystemDefault = 0 +; SingleBitPerPixelGridFit = 1 +; SingleBitPerPixel = 2 +; AntiAliasGridFit = 3 +; AntiAlias = 4 +Gdip_SetTextRenderingHint(pGraphics, RenderingHint) +{ + return DllCall("gdiplus\GdipSetTextRenderingHint", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", RenderingHint) +} + +; Default = 0 +; LowQuality = 1 +; HighQuality = 2 +; Bilinear = 3 +; Bicubic = 4 +; NearestNeighbor = 5 +; HighQualityBilinear = 6 +; HighQualityBicubic = 7 +Gdip_SetInterpolationMode(pGraphics, InterpolationMode) +{ + return DllCall("gdiplus\GdipSetInterpolationMode", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", InterpolationMode) +} + +; Default = 0 +; HighSpeed = 1 +; HighQuality = 2 +; None = 3 +; AntiAlias = 4 +Gdip_SetSmoothingMode(pGraphics, SmoothingMode) +{ + return DllCall("gdiplus\GdipSetSmoothingMode", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", SmoothingMode) +} + +; CompositingModeSourceOver = 0 (blended) +; CompositingModeSourceCopy = 1 (overwrite) +Gdip_SetCompositingMode(pGraphics, CompositingMode:=0) +{ + return DllCall("gdiplus\GdipSetCompositingMode", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", CompositingMode) +} + +;##################################################################################### +; Extra functions +;##################################################################################### + +Gdip_Startup() +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + pToken := 0 + + if !DllCall("GetModuleHandle", "str", "gdiplus", Ptr) + DllCall("LoadLibrary", "str", "gdiplus") + VarSetCapacity(si, A_PtrSize = 8 ? 24 : 16, 0), si := Chr(1) + DllCall("gdiplus\GdiplusStartup", A_PtrSize ? "UPtr*" : "uint*", pToken, Ptr, &si, Ptr, 0) + return pToken +} + +Gdip_Shutdown(pToken) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + DllCall("gdiplus\GdiplusShutdown", Ptr, pToken) + if hModule := DllCall("GetModuleHandle", "str", "gdiplus", Ptr) + DllCall("FreeLibrary", Ptr, hModule) + return 0 +} + +; Prepend = 0; The new operation is applied before the old operation. +; Append = 1; The new operation is applied after the old operation. +Gdip_RotateWorldTransform(pGraphics, Angle, MatrixOrder:=0) +{ + return DllCall("gdiplus\GdipRotateWorldTransform", A_PtrSize ? "UPtr" : "UInt", pGraphics, "float", Angle, "int", MatrixOrder) +} + +Gdip_ScaleWorldTransform(pGraphics, x, y, MatrixOrder:=0) +{ + return DllCall("gdiplus\GdipScaleWorldTransform", A_PtrSize ? "UPtr" : "UInt", pGraphics, "float", x, "float", y, "int", MatrixOrder) +} + +Gdip_TranslateWorldTransform(pGraphics, x, y, MatrixOrder:=0) +{ + return DllCall("gdiplus\GdipTranslateWorldTransform", A_PtrSize ? "UPtr" : "UInt", pGraphics, "float", x, "float", y, "int", MatrixOrder) +} + +Gdip_ResetWorldTransform(pGraphics) +{ + return DllCall("gdiplus\GdipResetWorldTransform", A_PtrSize ? "UPtr" : "UInt", pGraphics) +} + +Gdip_GetRotatedTranslation(Width, Height, Angle, ByRef xTranslation, ByRef yTranslation) +{ + pi := 3.14159, TAngle := Angle*(pi/180) + + Bound := (Angle >= 0) ? Mod(Angle, 360) : 360-Mod(-Angle, -360) + if ((Bound >= 0) && (Bound <= 90)) + xTranslation := Height*Sin(TAngle), yTranslation := 0 + else if ((Bound > 90) && (Bound <= 180)) + xTranslation := (Height*Sin(TAngle))-(Width*Cos(TAngle)), yTranslation := -Height*Cos(TAngle) + else if ((Bound > 180) && (Bound <= 270)) + xTranslation := -(Width*Cos(TAngle)), yTranslation := -(Height*Cos(TAngle))-(Width*Sin(TAngle)) + else if ((Bound > 270) && (Bound <= 360)) + xTranslation := 0, yTranslation := -Width*Sin(TAngle) +} + +Gdip_GetRotatedDimensions(Width, Height, Angle, ByRef RWidth, ByRef RHeight) +{ + pi := 3.14159, TAngle := Angle*(pi/180) + if !(Width && Height) + return -1 + RWidth := Ceil(Abs(Width*Cos(TAngle))+Abs(Height*Sin(TAngle))) + RHeight := Ceil(Abs(Width*Sin(TAngle))+Abs(Height*Cos(Tangle))) +} + +; RotateNoneFlipNone = 0 +; Rotate90FlipNone = 1 +; Rotate180FlipNone = 2 +; Rotate270FlipNone = 3 +; RotateNoneFlipX = 4 +; Rotate90FlipX = 5 +; Rotate180FlipX = 6 +; Rotate270FlipX = 7 +; RotateNoneFlipY = Rotate180FlipX +; Rotate90FlipY = Rotate270FlipX +; Rotate180FlipY = RotateNoneFlipX +; Rotate270FlipY = Rotate90FlipX +; RotateNoneFlipXY = Rotate180FlipNone +; Rotate90FlipXY = Rotate270FlipNone +; Rotate180FlipXY = RotateNoneFlipNone +; Rotate270FlipXY = Rotate90FlipNone + +Gdip_ImageRotateFlip(pBitmap, RotateFlipType:=1) +{ + return DllCall("gdiplus\GdipImageRotateFlip", A_PtrSize ? "UPtr" : "UInt", pBitmap, "int", RotateFlipType) +} + +; Replace = 0 +; Intersect = 1 +; Union = 2 +; Xor = 3 +; Exclude = 4 +; Complement = 5 +Gdip_SetClipRect(pGraphics, x, y, w, h, CombineMode:=0) +{ + return DllCall("gdiplus\GdipSetClipRect", A_PtrSize ? "UPtr" : "UInt", pGraphics, "float", x, "float", y, "float", w, "float", h, "int", CombineMode) +} + +Gdip_SetClipPath(pGraphics, pPath, CombineMode:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + return DllCall("gdiplus\GdipSetClipPath", Ptr, pGraphics, Ptr, pPath, "int", CombineMode) +} + +Gdip_ResetClip(pGraphics) +{ + return DllCall("gdiplus\GdipResetClip", A_PtrSize ? "UPtr" : "UInt", pGraphics) +} + +Gdip_GetClipRegion(pGraphics) +{ + Region := Gdip_CreateRegion() + DllCall("gdiplus\GdipGetClip", A_PtrSize ? "UPtr" : "UInt", pGraphics, "UInt", Region) + return Region +} + +Gdip_SetClipRegion(pGraphics, Region, CombineMode:=0) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("gdiplus\GdipSetClipRegion", Ptr, pGraphics, Ptr, Region, "int", CombineMode) +} + +Gdip_CreateRegion() +{ + Region := 0 + DllCall("gdiplus\GdipCreateRegion", "UInt*", Region) + return Region +} + +Gdip_DeleteRegion(Region) +{ + return DllCall("gdiplus\GdipDeleteRegion", A_PtrSize ? "UPtr" : "UInt", Region) +} + +;##################################################################################### +; BitmapLockBits +;##################################################################################### + +Gdip_LockBits(pBitmap, x, y, w, h, ByRef Stride, ByRef Scan0, ByRef BitmapData, LockMode := 3, PixelFormat := 0x26200a) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + CreateRect(_Rect, x, y, w, h) + VarSetCapacity(BitmapData, 16+2*(A_PtrSize ? A_PtrSize : 4), 0) + _E := DllCall("Gdiplus\GdipBitmapLockBits", Ptr, pBitmap, Ptr, &_Rect, "uint", LockMode, "int", PixelFormat, Ptr, &BitmapData) + Stride := NumGet(BitmapData, 8, "Int") + Scan0 := NumGet(BitmapData, 16, Ptr) + return _E +} + +;##################################################################################### + +Gdip_UnlockBits(pBitmap, ByRef BitmapData) +{ + Ptr := A_PtrSize ? "UPtr" : "UInt" + + return DllCall("Gdiplus\GdipBitmapUnlockBits", Ptr, pBitmap, Ptr, &BitmapData) +} + +;##################################################################################### + +Gdip_SetLockBitPixel(ARGB, Scan0, x, y, Stride) +{ + Numput(ARGB, Scan0+0, (x*4)+(y*Stride), "UInt") +} + +;##################################################################################### + +Gdip_GetLockBitPixel(Scan0, x, y, Stride) +{ + return NumGet(Scan0+0, (x*4)+(y*Stride), "UInt") +} + +;##################################################################################### + +Gdip_PixelateBitmap(pBitmap, ByRef pBitmapOut, BlockSize) +{ + static PixelateBitmap + + Ptr := A_PtrSize ? "UPtr" : "UInt" + + if (!PixelateBitmap) + { + if A_PtrSize != 8 ; x86 machine code + MCode_PixelateBitmap := " + (LTrim Join + 558BEC83EC3C8B4514538B5D1C99F7FB56578BC88955EC894DD885C90F8E830200008B451099F7FB8365DC008365E000894DC88955F08945E833FF897DD4 + 397DE80F8E160100008BCB0FAFCB894DCC33C08945F88945FC89451C8945143BD87E608B45088D50028BC82BCA8BF02BF2418945F48B45E02955F4894DC4 + 8D0CB80FAFCB03CA895DD08BD1895DE40FB64416030145140FB60201451C8B45C40FB604100145FC8B45F40FB604020145F883C204FF4DE475D6034D18FF + 4DD075C98B4DCC8B451499F7F98945148B451C99F7F989451C8B45FC99F7F98945FC8B45F899F7F98945F885DB7E648B450C8D50028BC82BCA83C103894D + C48BC82BCA41894DF48B4DD48945E48B45E02955E48D0C880FAFCB03CA895DD08BD18BF38A45148B7DC48804178A451C8B7DF488028A45FC8804178A45F8 + 8B7DE488043A83C2044E75DA034D18FF4DD075CE8B4DCC8B7DD447897DD43B7DE80F8CF2FEFFFF837DF0000F842C01000033C08945F88945FC89451C8945 + 148945E43BD87E65837DF0007E578B4DDC034DE48B75E80FAF4D180FAFF38B45088D500203CA8D0CB18BF08BF88945F48B45F02BF22BFA2955F48945CC0F + B6440E030145140FB60101451C0FB6440F010145FC8B45F40FB604010145F883C104FF4DCC75D8FF45E4395DE47C9B8B4DF00FAFCB85C9740B8B451499F7 + F9894514EB048365140033F63BCE740B8B451C99F7F989451CEB0389751C3BCE740B8B45FC99F7F98945FCEB038975FC3BCE740B8B45F899F7F98945F8EB + 038975F88975E43BDE7E5A837DF0007E4C8B4DDC034DE48B75E80FAF4D180FAFF38B450C8D500203CA8D0CB18BF08BF82BF22BFA2BC28B55F08955CC8A55 + 1488540E038A551C88118A55FC88540F018A55F888140183C104FF4DCC75DFFF45E4395DE47CA68B45180145E0015DDCFF4DC80F8594FDFFFF8B451099F7 + FB8955F08945E885C00F8E450100008B45EC0FAFC38365DC008945D48B45E88945CC33C08945F88945FC89451C8945148945103945EC7E6085DB7E518B4D + D88B45080FAFCB034D108D50020FAF4D18034DDC8BF08BF88945F403CA2BF22BFA2955F4895DC80FB6440E030145140FB60101451C0FB6440F010145FC8B + 45F40FB604080145F883C104FF4DC875D8FF45108B45103B45EC7CA08B4DD485C9740B8B451499F7F9894514EB048365140033F63BCE740B8B451C99F7F9 + 89451CEB0389751C3BCE740B8B45FC99F7F98945FCEB038975FC3BCE740B8B45F899F7F98945F8EB038975F88975103975EC7E5585DB7E468B4DD88B450C + 0FAFCB034D108D50020FAF4D18034DDC8BF08BF803CA2BF22BFA2BC2895DC88A551488540E038A551C88118A55FC88540F018A55F888140183C104FF4DC8 + 75DFFF45108B45103B45EC7CAB8BC3C1E0020145DCFF4DCC0F85CEFEFFFF8B4DEC33C08945F88945FC89451C8945148945103BC87E6C3945F07E5C8B4DD8 + 8B75E80FAFCB034D100FAFF30FAF4D188B45088D500203CA8D0CB18BF08BF88945F48B45F02BF22BFA2955F48945C80FB6440E030145140FB60101451C0F + B6440F010145FC8B45F40FB604010145F883C104FF4DC875D833C0FF45108B4DEC394D107C940FAF4DF03BC874068B451499F7F933F68945143BCE740B8B + 451C99F7F989451CEB0389751C3BCE740B8B45FC99F7F98945FCEB038975FC3BCE740B8B45F899F7F98945F8EB038975F88975083975EC7E63EB0233F639 + 75F07E4F8B4DD88B75E80FAFCB034D080FAFF30FAF4D188B450C8D500203CA8D0CB18BF08BF82BF22BFA2BC28B55F08955108A551488540E038A551C8811 + 8A55FC88540F018A55F888140883C104FF4D1075DFFF45088B45083B45EC7C9F5F5E33C05BC9C21800 + )" + else ; x64 machine code + MCode_PixelateBitmap := " + (LTrim Join + 4489442418488954241048894C24085355565741544155415641574883EC28418BC1448B8C24980000004C8BDA99488BD941F7F9448BD0448BFA8954240C + 448994248800000085C00F8E9D020000418BC04533E4458BF299448924244C8954241041F7F933C9898C24980000008BEA89542404448BE889442408EB05 + 4C8B5C24784585ED0F8E1A010000458BF1418BFD48897C2418450FAFF14533D233F633ED4533E44533ED4585C97E5B4C63BC2490000000418D040A410FAF + C148984C8D441802498BD9498BD04D8BD90FB642010FB64AFF4403E80FB60203E90FB64AFE4883C2044403E003F149FFCB75DE4D03C748FFCB75D0488B7C + 24188B8C24980000004C8B5C2478418BC59941F7FE448BE8418BC49941F7FE448BE08BC59941F7FE8BE88BC69941F7FE8BF04585C97E4048639C24900000 + 004103CA4D8BC1410FAFC94863C94A8D541902488BCA498BC144886901448821408869FF408871FE4883C10448FFC875E84803D349FFC875DA8B8C249800 + 0000488B5C24704C8B5C24784183C20448FFCF48897C24180F850AFFFFFF8B6C2404448B2424448B6C24084C8B74241085ED0F840A01000033FF33DB4533 + DB4533D24533C04585C97E53488B74247085ED7E42438D0C04418BC50FAF8C2490000000410FAFC18D04814863C8488D5431028BCD0FB642014403D00FB6 + 024883C2044403D80FB642FB03D80FB642FA03F848FFC975DE41FFC0453BC17CB28BCD410FAFC985C9740A418BC299F7F98BF0EB0233F685C9740B418BC3 + 99F7F9448BD8EB034533DB85C9740A8BC399F7F9448BD0EB034533D285C9740A8BC799F7F9448BC0EB034533C033D24585C97E4D4C8B74247885ED7E3841 + 8D0C14418BC50FAF8C2490000000410FAFC18D04814863C84A8D4431028BCD40887001448818448850FF448840FE4883C00448FFC975E8FFC2413BD17CBD + 4C8B7424108B8C2498000000038C2490000000488B5C24704503E149FFCE44892424898C24980000004C897424100F859EFDFFFF448B7C240C448B842480 + 000000418BC09941F7F98BE8448BEA89942498000000896C240C85C00F8E3B010000448BAC2488000000418BCF448BF5410FAFC9898C248000000033FF33 + ED33F64533DB4533D24533C04585FF7E524585C97E40418BC5410FAFC14103C00FAF84249000000003C74898488D541802498BD90FB642014403D00FB602 + 4883C2044403D80FB642FB03F00FB642FA03E848FFCB75DE488B5C247041FFC0453BC77CAE85C9740B418BC299F7F9448BE0EB034533E485C9740A418BC3 + 99F7F98BD8EB0233DB85C9740A8BC699F7F9448BD8EB034533DB85C9740A8BC599F7F9448BD0EB034533D24533C04585FF7E4E488B4C24784585C97E3541 + 8BC5410FAFC14103C00FAF84249000000003C74898488D540802498BC144886201881A44885AFF448852FE4883C20448FFC875E941FFC0453BC77CBE8B8C + 2480000000488B5C2470418BC1C1E00203F849FFCE0F85ECFEFFFF448BAC24980000008B6C240C448BA4248800000033FF33DB4533DB4533D24533C04585 + FF7E5A488B7424704585ED7E48418BCC8BC5410FAFC94103C80FAF8C2490000000410FAFC18D04814863C8488D543102418BCD0FB642014403D00FB60248 + 83C2044403D80FB642FB03D80FB642FA03F848FFC975DE41FFC0453BC77CAB418BCF410FAFCD85C9740A418BC299F7F98BF0EB0233F685C9740B418BC399 + F7F9448BD8EB034533DB85C9740A8BC399F7F9448BD0EB034533D285C9740A8BC799F7F9448BC0EB034533C033D24585FF7E4E4585ED7E42418BCC8BC541 + 0FAFC903CA0FAF8C2490000000410FAFC18D04814863C8488B442478488D440102418BCD40887001448818448850FF448840FE4883C00448FFC975E8FFC2 + 413BD77CB233C04883C428415F415E415D415C5F5E5D5BC3 + )" + + VarSetCapacity(PixelateBitmap, StrLen(MCode_PixelateBitmap)//2) + nCount := StrLen(MCode_PixelateBitmap)//2 + N := (A_AhkVersion < 2) ? nCount : "nCount" + Loop %N% + NumPut("0x" SubStr(MCode_PixelateBitmap, (2*A_Index)-1, 2), PixelateBitmap, A_Index-1, "UChar") + DllCall("VirtualProtect", Ptr, &PixelateBitmap, Ptr, VarSetCapacity(PixelateBitmap), "uint", 0x40, A_PtrSize ? "UPtr*" : "UInt*", 0) + } + + Gdip_GetImageDimensions(pBitmap, Width, Height) + + if (Width != Gdip_GetImageWidth(pBitmapOut) || Height != Gdip_GetImageHeight(pBitmapOut)) + return -1 + if (BlockSize > Width || BlockSize > Height) + return -2 + + E1 := Gdip_LockBits(pBitmap, 0, 0, Width, Height, Stride1, Scan01, BitmapData1) + E2 := Gdip_LockBits(pBitmapOut, 0, 0, Width, Height, Stride2, Scan02, BitmapData2) + if (E1 || E2) + return -3 + + ; E := - unused exit code + DllCall(&PixelateBitmap, Ptr, Scan01, Ptr, Scan02, "int", Width, "int", Height, "int", Stride1, "int", BlockSize) + + Gdip_UnlockBits(pBitmap, BitmapData1), Gdip_UnlockBits(pBitmapOut, BitmapData2) + return 0 +} + +;##################################################################################### + +Gdip_ToARGB(A, R, G, B) +{ + return (A << 24) | (R << 16) | (G << 8) | B +} + +;##################################################################################### + +Gdip_FromARGB(ARGB, ByRef A, ByRef R, ByRef G, ByRef B) +{ + A := (0xff000000 & ARGB) >> 24 + R := (0x00ff0000 & ARGB) >> 16 + G := (0x0000ff00 & ARGB) >> 8 + B := 0x000000ff & ARGB +} + +;##################################################################################### + +Gdip_AFromARGB(ARGB) +{ + return (0xff000000 & ARGB) >> 24 +} + +;##################################################################################### + +Gdip_RFromARGB(ARGB) +{ + return (0x00ff0000 & ARGB) >> 16 +} + +;##################################################################################### + +Gdip_GFromARGB(ARGB) +{ + return (0x0000ff00 & ARGB) >> 8 +} + +;##################################################################################### + +Gdip_BFromARGB(ARGB) +{ + return 0x000000ff & ARGB +} + +;##################################################################################### + +StrGetB(Address, Length:=-1, Encoding:=0) +{ + ; Flexible parameter handling: + if !IsInteger(Length) + Encoding := Length, Length := -1 + + ; Check for obvious errors. + if (Address+0 < 1024) + return + + ; Ensure 'Encoding' contains a numeric identifier. + if (Encoding = "UTF-16") + Encoding := 1200 + else if (Encoding = "UTF-8") + Encoding := 65001 + else if SubStr(Encoding,1,2)="CP" + Encoding := SubStr(Encoding,3) + + if !Encoding ; "" or 0 + { + ; No conversion necessary, but we might not want the whole string. + if (Length == -1) + Length := DllCall("lstrlen", "uint", Address) + VarSetCapacity(String, Length) + DllCall("lstrcpyn", "str", String, "uint", Address, "int", Length + 1) + } + else if (Encoding = 1200) ; UTF-16 + { + char_count := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0x400, "uint", Address, "int", Length, "uint", 0, "uint", 0, "uint", 0, "uint", 0) + VarSetCapacity(String, char_count) + DllCall("WideCharToMultiByte", "uint", 0, "uint", 0x400, "uint", Address, "int", Length, "str", String, "int", char_count, "uint", 0, "uint", 0) + } + else if IsInteger(Encoding) + { + ; Convert from target encoding to UTF-16 then to the active code page. + char_count := DllCall("MultiByteToWideChar", "uint", Encoding, "uint", 0, "uint", Address, "int", Length, "uint", 0, "int", 0) + VarSetCapacity(String, char_count * 2) + char_count := DllCall("MultiByteToWideChar", "uint", Encoding, "uint", 0, "uint", Address, "int", Length, "uint", &String, "int", char_count * 2) + String := StrGetB(&String, char_count, 1200) + } + + return String +} + + +;##################################################################################### +; in AHK v1: uses normal 'if var is' command +; in AHK v2: all if's are expression-if, so the Integer variable is dereferenced to the string +;##################################################################################### +IsInteger(Var) { + Static Integer := "Integer" + If Var Is Integer + Return True + Return False +} + +IsNumber(Var) { + Static number := "number" + If Var Is number + Return True + Return False +} + + + +; ====================================================================================================================== +; Multiple Display Monitors Functions -> msdn.microsoft.com/en-us/library/dd145072(v=vs.85).aspx +; by 'just me' +; https://autohotkey.com/boards/viewtopic.php?f=6&t=4606 +; ====================================================================================================================== +GetMonitorCount() +{ + Monitors := MDMF_Enum() + for k,v in Monitors + count := A_Index + return count +} + +GetMonitorInfo(MonitorNum) +{ + Monitors := MDMF_Enum() + for k,v in Monitors + if (v.Num = MonitorNum) + return v +} + +GetPrimaryMonitor() +{ + Monitors := MDMF_Enum() + for k,v in Monitors + If (v.Primary) + return v.Num +} +; ---------------------------------------------------------------------------------------------------------------------- +; Name ..........: MDMF - Multiple Display Monitor Functions +; Description ...: Various functions for multiple display monitor environments +; Tested with ...: AHK 1.1.32.00 (A32/U32/U64) and 2.0-a108-a2fa0498 (U32/U64) +; Original Author: just me (https://www.autohotkey.com/boards/viewtopic.php?f=6&t=4606) +; Mod Authors ...: iPhilip, guest3456 +; Changes .......: Modified to work with v2.0-a108 and changed 'Count' key to 'TotalCount' to avoid conflicts +; ................ Modified MDMF_Enum() so that it works under both AHK v1 and v2. +; ................ Modified MDMF_EnumProc() to provide Count and Primary keys to the Monitors array. +; ................ Modified MDMF_FromHWND() to allow flag values that determine the function's return value if the +; ................ window does not intersect any display monitor. +; ................ Modified MDMF_FromPoint() to allow the cursor position to be returned ByRef if not specified and +; ................ allow flag values that determine the function's return value if the point is not contained within +; ................ any display monitor. +; ................ Modified MDMF_FromRect() to allow flag values that determine the function's return value if the +; ................ rectangle does not intersect any display monitor. +;................. Modified MDMF_GetInfo() with minor changes. +; ---------------------------------------------------------------------------------------------------------------------- +; +; ====================================================================================================================== +; Multiple Display Monitors Functions -> msdn.microsoft.com/en-us/library/dd145072(v=vs.85).aspx ======================= +; ====================================================================================================================== +; Enumerates display monitors and returns an object containing the properties of all monitors or the specified monitor. +; ====================================================================================================================== +MDMF_Enum(HMON := "") { + Static CallbackFunc := Func(A_AhkVersion < "2" ? "RegisterCallback" : "CallbackCreate") + Static EnumProc := CallbackFunc.Call("MDMF_EnumProc") + Static Obj := (A_AhkVersion < "2") ? "Object" : "Map" + Static Monitors := {} + If (HMON = "") ; new enumeration + { + Monitors := %Obj%("TotalCount", 0) + If !DllCall("User32.dll\EnumDisplayMonitors", "Ptr", 0, "Ptr", 0, "Ptr", EnumProc, "Ptr", &Monitors, "Int") + Return False + } + Return (HMON = "") ? Monitors : Monitors.HasKey(HMON) ? Monitors[HMON] : False +} +; ====================================================================================================================== +; Callback function that is called by the MDMF_Enum function. +; ====================================================================================================================== +MDMF_EnumProc(HMON, HDC, PRECT, ObjectAddr) { + Monitors := Object(ObjectAddr) + Monitors[HMON] := MDMF_GetInfo(HMON) + Monitors["TotalCount"]++ + If (Monitors[HMON].Primary) + Monitors["Primary"] := HMON + Return True +} +; ====================================================================================================================== +; Retrieves the display monitor that has the largest area of intersection with a specified window. +; The following flag values determine the function's return value if the window does not intersect any display monitor: +; MONITOR_DEFAULTTONULL = 0 - Returns NULL. +; MONITOR_DEFAULTTOPRIMARY = 1 - Returns a handle to the primary display monitor. +; MONITOR_DEFAULTTONEAREST = 2 - Returns a handle to the display monitor that is nearest to the window. +; ====================================================================================================================== +MDMF_FromHWND(HWND, Flag := 0) { + Return DllCall("User32.dll\MonitorFromWindow", "Ptr", HWND, "UInt", Flag, "Ptr") +} +; ====================================================================================================================== +; Retrieves the display monitor that contains a specified point. +; If either X or Y is empty, the function will use the current cursor position for this value and return it ByRef. +; The following flag values determine the function's return value if the point is not contained within any +; display monitor: +; MONITOR_DEFAULTTONULL = 0 - Returns NULL. +; MONITOR_DEFAULTTOPRIMARY = 1 - Returns a handle to the primary display monitor. +; MONITOR_DEFAULTTONEAREST = 2 - Returns a handle to the display monitor that is nearest to the point. +; ====================================================================================================================== +MDMF_FromPoint(ByRef X := "", ByRef Y := "", Flag := 0) { + If (X = "") || (Y = "") { + VarSetCapacity(PT, 8, 0) + DllCall("User32.dll\GetCursorPos", "Ptr", &PT, "Int") + If (X = "") + X := NumGet(PT, 0, "Int") + If (Y = "") + Y := NumGet(PT, 4, "Int") + } + Return DllCall("User32.dll\MonitorFromPoint", "Int64", (X & 0xFFFFFFFF) | (Y << 32), "UInt", Flag, "Ptr") +} +; ====================================================================================================================== +; Retrieves the display monitor that has the largest area of intersection with a specified rectangle. +; Parameters are consistent with the common AHK definition of a rectangle, which is X, Y, W, H instead of +; Left, Top, Right, Bottom. +; The following flag values determine the function's return value if the rectangle does not intersect any +; display monitor: +; MONITOR_DEFAULTTONULL = 0 - Returns NULL. +; MONITOR_DEFAULTTOPRIMARY = 1 - Returns a handle to the primary display monitor. +; MONITOR_DEFAULTTONEAREST = 2 - Returns a handle to the display monitor that is nearest to the rectangle. +; ====================================================================================================================== +MDMF_FromRect(X, Y, W, H, Flag := 0) { + VarSetCapacity(RC, 16, 0) + NumPut(X, RC, 0, "Int"), NumPut(Y, RC, 4, "Int"), NumPut(X + W, RC, 8, "Int"), NumPut(Y + H, RC, 12, "Int") + Return DllCall("User32.dll\MonitorFromRect", "Ptr", &RC, "UInt", Flag, "Ptr") +} +; ====================================================================================================================== +; Retrieves information about a display monitor. +; ====================================================================================================================== +MDMF_GetInfo(HMON) { + NumPut(VarSetCapacity(MIEX, 40 + (32 << !!A_IsUnicode)), MIEX, 0, "UInt") + If DllCall("User32.dll\GetMonitorInfo", "Ptr", HMON, "Ptr", &MIEX, "Int") + Return {Name: (Name := StrGet(&MIEX + 40, 32)) ; CCHDEVICENAME = 32 + , Num: RegExReplace(Name, ".*(\d+)$", "$1") + , Left: NumGet(MIEX, 4, "Int") ; display rectangle + , Top: NumGet(MIEX, 8, "Int") ; " + , Right: NumGet(MIEX, 12, "Int") ; " + , Bottom: NumGet(MIEX, 16, "Int") ; " + , WALeft: NumGet(MIEX, 20, "Int") ; work area + , WATop: NumGet(MIEX, 24, "Int") ; " + , WARight: NumGet(MIEX, 28, "Int") ; " + , WABottom: NumGet(MIEX, 32, "Int") ; " + , Primary: NumGet(MIEX, 36, "UInt")} ; contains a non-zero value for the primary monitor. + Return False +} + diff --git a/README.md b/README.md index 56656c2..595c055 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,25 @@ -I-wanna-clean-keyboard +iwck v2.0 ====================== ![Screenshot](Screenshot.png) -This app won't clean your keyboard... but it could block the keyboard input when you were cleaning the keyboard... +This app won't clean your keyboard... but it could block the keyboard input when you were cleaning the keyboard or eating on the keyboard... + +这个应用不能自动清洁键盘,但是可以帮助你在擦键盘或是需要在键盘上放置物品(比如泡面)时临时屏蔽键盘的输入。 + ---- - press `Block` to block your keyboard. -- press `Block` to unblock when the button is gray +- press `Block` to unblock when the button is gray. - press `Exit` to unblock your keyboard and exit the app. +- click the title `iwck` to drag the window. + +## updates + +- 2020.05.25 + - migrating to AHK v2-alpha + - use the [new GDI+ lib](https://github.com/mmikeww/AHKv2-Gdip) instead of the old one + - change to dark style \ No newline at end of file diff --git a/Screenshot.png b/Screenshot.png index 786214168201586c78514306d19c4ea1d7876b47..61294b775c97480559ff317f973e29b013e851f2 100644 GIT binary patch literal 7637 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 F{{x~tFgpMM diff --git a/iwck.exe b/iwck.exe new file mode 100644 index 0000000000000000000000000000000000000000..7ef21072674e9f49c61b972996640c8ba0dd9c93 GIT binary patch literal 449024 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
GsphI~Y@U_FBt>Xa@RnLO4*`PyH~n7oWV& zBm!GU5DX+T0De6Q%N{bQ;x&HKp9#%D_KKSf-DuDXNhE3oW7ip;1IsBkiym9q?G(Hi zR)Ob1T73?6C;4cL>1o6H`YZAT21;dC$H#J{7!`$6GjN|b6F_xVlU?4C4iAEf{*{HJ zl^ll=<#Mze&PdW|5$`DjEVjhB9hK6|5HTXR&l?j%l^*&`-$)I^sIkC(4(*$5A?uQe z-;|)aL~I98PmzALHhuPMFn69h4ysL&+yQ8+uTeI@T}aDC)s_#P$VAXKc6N*+8c_ht z)bhSX<`EZ=Auj^6)3OaHx$D*HoV#V@e8G5QT~Tbann}nKUbs;OeCoRZ<%|09iWzWkJdMlBaSO9m zQ{x8+gW*7}p((g>6MXIwk)`wj;IvCFV@?uI;xWc8bcS~*CqV=BOKNOH0nw@Lh>BOX zg9Fv6>e%f(|4nN1vJu(w4>0?6wirBvl~^4Ti)Kr@YPh>s0oE z)xQx2m55GtCJuK|G2zjPrSn{>Bjf1MP6jg20|}k?26tooQ$Qn!O9B?Ui3OahUNE~x zb^iHa9JAjEq9uW{~b8vN}0nmXhAS*}fSi8q*!A=J~(u=!mpt5E0*JL+!m7+~a0%*W|PI*~Y z)az|a2jZdw0^?_qYAAlctv0Ox3@?~gb!O05QI;Q{Jjc(rgYN9ESM%V|{{;9&R-(oU zjQNR_!Ow7Q90kKW>1u$xsrbJd(yIlG!Vhu7=LoEgY;dI}Z zb{TYl&lIJ+BHNy}VkS#|^9;lY!0+MTrGEwy6YSC^gG}_^)OokY2Ot`N>jn*pLcIn5 z(9mIF*`@Q}+&%+8KEjnE%(O@T9%to6MILye#%1J@bAafB51B~T)nR!bpu`oNeu_fa z$0ndJp~t-Nf~$NcglPRnJ$0K(h2YM@my6swLz`FzBetf;)M>@_S+$L%^IcL-%~}$u zVxQ>0n6!z$N^S3CkzZSO+5Q+{&odU$aZhY&$Cqn;Lsm!+)J*65u%AZ-w;}+fnytXj-5^EV zgM9wb5zrqFCT)DZoKV-(g?xczzqdIbwmT@upn5CjXq>BeUNK zoCc1_rG@|9$DubmS5CSL`}0P-(okjqJ`L_Fp1<+R5jD?wQna|=zNYv{9p`T8yt%h+ zew@6=$A}DmC9GgGaXrs|szdU8r-4tu9|tf|lNeCKXLk75HOItr(W&Ngb3e_Z3uXIf zDt%-pTcrjBJoo}43e1cC+JAODK%o~=J|)Z65=}Hv;4M%d1U<0PjQ2t8+6Iqh1n?w@ zfu$DBgb3Ox@?2&JiGtI@=xW~s`1rY-fExl zS+n@}y5p(o=?W@7c7-Xiuz|&an>~>pQmj-C!f-@Yh9y%F_zLY%(UH+kZ<&eKw^sb9 z_3(f_cO1VCY)OtP@FxZzVHk67Q{*yXFB66V`-zZLiG4UrkPQ)B&KVnYx=*ilI1f+} zb?LXok&98VA*w+fr8$@EXYV)fSGk5+h`U==3tp@1v9wpY9cuZRvTzWLMk(sKl4UKS ztnx@TixyboM*1;D%xOOn|Amn<=#Q{5;WMR)4z7Q=8kiamIFMm~Z;qbZB7w0Z-a zuenNXK}In1xg2Gry@_s`y0w}P9TdimPy4$T)TVY8Z}F-PQ6zv>`>Fd5h=G**ca#v$ z`Ns#;5Q+AyCSOwoZ?-DB7%QX)&SzS~XXEGQNZN~Ky;gdi?JrCxn@L7_$z;7XsOOIA zQPbD<5SC)GHs97gIvi1N0*%p2PeR4{W*CyquB$cT3jc*<5uhooG=<_fyWA4Qluzjq zJMMIGJyB`0j6T9?vK@GKRBu@g8!jqiDwVedkHxB?zlnzrv>c#mSjDofH>R$el|%Lj z{)4eq7IafqTwCHi2tBXJ5d)D4%biZR!L_fz!n`+02U z`4r=ijfch1=cj`EmEdykDw3YrvJRmM%y& z?}#g9S7v5df%H!1??A?QDK>s5|7bbcpFzJ`e`CPaQN4yiGubDEk7xc57!6#uIz4+^#0bEvIxfq)88@Z?x(3H~xQJC$YstDg)s9 zxgr+RN*c}tjgL-{_V@8jsOm-0VU9;3mC|VZ)O0rQ)qM*+K*feJ_1tXCemqgI$Fj03__`Qvl|1@L{*ww;L^1ABwM<^I@no(U7izHb~_3! zNc&RvV6A#ac^1Hg9hf{EJ$DCRFor%X_X4^g=lj$dAbN0xuv!KPO;CwtN$G4$XH!kNpIz7Aos9mBse z_3AaQE{iyx!}X+=Th zjMGglJvbiA6b-!4rK~v$^mx87L{M^C%k(Sn4vGSPiG@1vrOLM}fc+k@5v;-*9y&ZX z^-TdS_AC(p<~FV*A%M9>zY74Tc#9LWN9~aghM9@b-9Yl8+*JD zmH~zvJ@B|>pbL0V?Apv-@l?qW;>9X;Nl|a(KUGOn;=4ICCL$}zG$`x2>1LAQ~$HlAL7<6eU03HZtut5%0PC!)-31dgQILa^~L1 zwuYN>dbHwSebef0_tR+r@;IUaDII*QflFIc+x>Nqqg9pwiE2XP=G`;LXW&i)a$u7Q zlg*BMZ^&msT&+XinLm`a?r;3mTCD13XMM;2%jo!e2%LY)nkFsKud=nX11b9zGr$QO z)TAI~6k-{~mSsQPjkg+E_1TBB4;>B{)O=|6vqYALV$8pC$%w)}mbC)v!$W@^t140< z#C8kBPwm1chl1dgS+bK}RPl8Cf!)rsK+A~S&(c39RpS>IpD_v&U2tz`2-*(tuxQ7h zYqeC;3%)g25ynvs-}PNB8wBQED3m3Cixv2WWu69(mFM-|Blu@C%v{iGUjU_Anm-X| z5c}T|r%UP(aE)6*aYJmie}BQJB_eT+!6H>xoXlUsf|fc9&6!}HT#HGS50giWXP@Ws zK|b<$AvoZhn9m@jYkLL0AvikrC)%TFf>JYu;|mZB5Nb}e_WbKyW}C!t`z9kYY+QZA zb3(CrMNlWOW0>U8Xfm$M$*`7sngsu;9Hk-D^;$E4sxPsu7(U-~PW=>}5MspSV5U@y zig=TDpYVskD7vw)R+v?<6SgCLCuxm))A#_U^yOU6p;NlZGv1G<54-> zGYI>>ukABS_@+yh-14O4sf?;BXDyE3#MhjHlohgi_PCYjB>{mlSdM=`CnQ(Y0wXr2 z%v!$iiy`(EUu_~27-5r>YzGbhjyo#c+&(^OpUr>7UTx+I2aZFLLw-AZE0Ac#3 zhgFRTuobi%N$kR&r#atQs~uT-w8z1+$jDTO*xNFDKbeYH2Okn;>#Rt^yo$au%qpny zIF91|rfqg`!{07RljImkd?M{SS);<$;T93~yT4;VzOcpC!dG*&Vr(uA!~qVx=!P)4 zC*l3ijo{Shib*CbN}XlYe~I&C(oM%Sa3HrTR&+O^$_P|MfcqZrV;hG83zP%VOSWFe zFT*`` zqng_{#h;ug$kUK-;OeZ;&_`04L#9qX(aunta6ACd$a7@X^&1P&>JhAXBv>|W1J=QX zDy_HSqw7fbe|}qv`=VA8ygwbiQv32094F$UZYj6Krya3evt#s>^n6E+b(H2yo`k;{ zmppI!3rX*4o@Wz#SYs7@e9Nf%T^&PeV%7H6^iFl;6tWxK8ci$=5ID(hCjA|A?}Q|! zk9{z_QxsCa_Zt+2@hH7f|y^9n7qcL(;r2ZWjVeA5{8s_(h!Y3UnOC?Qat$-AW* zeT#7oyt>3M2ji2PnA}Mj0g%bo7icz*FFi%>AMEB8XMS){gdtjoh)19nPR<&?H|J+=xfyG&&2urqpZbgrNQ{55jr6*$^lmb|n zd|~?USjr%tGGd>&s&WkQMXO7li3RvdQrU{9*!GJWpAcb>rJJrvjQc88dY`W-7x1o? zPh?A#{HC$PCoVH1q!hnxwSX7|n6IvT{diTsrnCu;tI}OU@N{eiH$Lol31c(W!KUzH zGih~$1kLUk7p@p%LDfltVGmLWGaJ>T6!;YjiRuGQkV9^SD1|vvHka;sLNkL#^y^8# z9r*|q@&ZTv8$Ofdxgy*)l{zj`%d_at+~G=A{>l7?zfYcv9-J*eBm(g_KmkPA0OTk7 z0b_VaDIU=TX@_aBK8)PVD%A!nQk`rUMYKERY#*icPzWV2^b&x1oakNwf-W`l)JTp^ zB$pU%z~u_z!z@+#x3V* zJ6H0KK=?9>ptUgvLqJCMN)@R3bJWo4`pv$K_cx<{k{Zp%4eKP)W7Wj|k1n+t2q>*2 zlatxKwzlFy&CEHbR%=Z|nDBs3vJi80a85!hKzKmvlq0THu80_vywq~akP)Z>qmk8o z+Htk}(nv`7Dul5OXnlqW2(gy=_RbA4&@*~P6BegtU!~PbD#5>D0A>H&B3 zryVXcTSGOs!s0ijfcPL1$gU#obLm{)PlUHkg;tWM3nk$0uYF5Yr~6RbH!l{x){j9| z-aLJFIObEMVfonYuX&58d#X(x2a2G)cq>kF$DBzpZTQe!)65tJ-lZrqjXamxshj2Z zpYTvqaJsFe^#*q3s5-wn?k3n60+MD}3>wJPc`4puhm$T*$IfB!O%DItzplDU2XWP^ zj!A9LXLisMv{pRM9eY%&^KO?G0)3C-57(gp-y)j?hAT-P*hb0jdCua@%|r(}_FLJK z@MplE1rg#*`R7x;&*0$>ambU^Ruk`2q_mFGGoK>fp#8J!H&oiG8-*CIk|e0OkuT1y z%w8DqnU!}xT++ZuI&v|fkvU6lGiEzMSNHK#66zwfOU1>Xv#S!Y&knSPCUY5s5{7-> z>DSg8Tzo%yF%~U^#c_rUHyByAPHYS%p=OmbGb8M?Xe31Md1q!8R>d5B897%i5gasm zxAu*0N#h6p>-5W2-J)bstV$wGPhwHb+K=owOLPaCG^VaPL2d}jH1?e2MX;T)nkSez zZ|Z7dqo~XWGwMc``WA;-{@>KtT%&bR`}}f6OXj$jBVu?2!gj-WQxg!(iUYO>N#%T4 zF#~IF*Q|?|4ev5dpCb-bP8<&kbk6 zCmFG!cZ@7*YzS*MJJWORKg$?uFhof1<1mZykpaB7Y18!L1sgmDAsEIn6*ZU*Md6s= zlsIqiaD?%oRwXxk{=T4eFRs+4xDs4ji^wbXI&UZLiX?|1??VgkIukU`5nIcihPVzgm zT{b1Ox4$TW!;|E7qXFd+f>UhqZuW_4Ma)Ve?*-z{i4I^yS>tE4n3a3Ng6_-8>QYfq zW2Iq3i2sBfu@)H~{RuY3un;0O)9%}u(~eF(q;7vR0%>TZlCES3S7l58|kdKCulfh3M|D%@zDB z*G;ylHmPd~WUwTreb@o(Uevx|4IydJi7Il*!zhtjniBQwOzfjIE-(R%KVBZKvN@1G z4ZDa1knk>u8cEu<z#)nAo>yVvJ>O|AxYm|B^6gxWq9tq!wqa9 zz=4Uxr6CKQ2K+txETjySB?0}0jF%@zxE5hcUtrtog+83Bi^=U3(=v^x{Y$Sx5L#l! z%7#~&O9z3%3ZRCJkQ?rqBKZi~wUgMv+7h)5mU^ViSXgr|L~2Kvs16f21zF@pU++1= zTCqmku)C$I@D?7)x;QP*N=uDq<`44t;zE3dypqntLe+_^$l>R}K48iaVVsm*6_pUy zHo28@L3x&9>j^3`5rM=hX@G+wlKCcnkqmRZoqm6_jMGTT?x__hXUQk2Z#Lep7~|qb zL8|qFOsw`D+a65vlCT%$f~;K-u9XIOG-S#Gm!x8UX;}JA6J5ilwBZaWr^$@NVexF@ zBl?=5-`$W_52qIA1QI|+A;3GCuVA%W2yK`@R)300WVPQM2T0yiP|;L;yO(5iOsa)y zfk=G;0GB~hgQC|M6FX>;nv$zyVyUU!Y$v$C1D=gFZ1%XmDB;mp@b}OyTFY9hyRp>g z;Bt6hh&b&)kh(IR(18En6d%10cc|VE%bh3;7WEyLTIY_8+c{QQ+Jn z>EIa`0`L&-pvh0oh97@K?@+^6y7pGe5mTckCPs-9!}R$~$cZYd^E(3{9hm8s%-*GM z8%uRvfz!*NIaI;kVzbUj&EX-6(&_hyT5cdjqsD}`Bcb*A)j8$ZPZ(`7?J>Asl*Wat zv8Q1;K!oNumaOJ(5UVdYBNQKD|y)KIE1zIojMffDh$k-78&0yU@cW1*e!Yn zf~D^1s1Y{A#=%+jVW{w$g>)?lq-Puw5*8pbep}_($F00e$Br%i7AA|8LV_(6Pw&I>1|Jll zSK(ov+ohm{ol%83)zdJysNf7FoYclA+p~9NcrbZ;eGDM6Lj`B)x&x>XX(-46m^*pL zYp&ZhT&(brx7)zgiY9ljQJ?rxYP0XEtUo_>;>Hcj{*& zsx}2sQ1@GEL_T?m>6bmT7WqjNiuM0^HoDc(b!Juub_fgv-EF)>|xe z9w?C$(6GO)>@`pfR^Fi_nFf6b*EI*@4mhlB-dK>y>5~P!e`0TG!a6NZuu`PD6Z>#9>|`OlcPoI0 zm(}%F*@ib`Mu%Jyv%;7~&%Hc0J@G9HoG^5hmxRjA8<NQD=qJ z^S>=|jkwnH-(EXS>}^p12IQsop};D~>=_$(zL*|f;x*dZ^$YEBY6NEXpIQ#}#XKkz zO?&v~AP#-%!|o_a*+iq*)IlRN@6MD#P{X#^m4F0%d40q-=3iDEuo}0eQP4ej$>M+Fopxf@iiMeN$uEVZlB4n zuurKp_ss{Y2lh}=^Kx{YIbb2Y)GBB$r;o$0Mh6a^U=8W-E#PAU1G$^ScTPl0u*Fu^yH&o%aU&p2dye0jOL9c%_%g*!n}t%h4y>D{ z;6~dtXi~-RIS|NvbPf*9;cY5?SeD0XdWn|ir!;S1OY1O(nwf#-3} z#Gutrd}J~RK?5ENJw$BvMWG=jP^h=?=%x1wH<`dn^w~0g&3De_A>CIi_!_f z*#y48WV(0hzHR|>WAdWe!2na>uO-9l7D+Al(jO5*+AqGe^vXk}zj%gG#+Iu=zp9{W zq$m}DbkCjX)7|Yy`46S~Cb%vJ6wLzD%$oS)1igi5{_F@}wahf}qo=@Hn13Yu=|DUE zTR1nYjH?E-;BLdI^pmwLs>?B;EvTi6E%5|ytkjupijd+McG%`fjv63p#of3iP7X#d zikccTl71A&Pk~!^!_BrC5~m_$LNndtLoUPb^i~P{m_}*QfzLYT1dv$f_~#NxPan%y z+n3fqBUvZs=Y7YjiLZH}r;SY?Nuqmibcil})bTDf(B9b;@kRXSCI_ss^`pK#C5n&n z)v8LACKdb&J}WDFCry&7vf%Nq!Nw80&U8;Gs)8K5xbx!nIF~3T+8Jo{eMnGz&cL<_Gqh(p$e^x9y-f<(2p7*VBKN2Tj6cZ|Zd$ zli0IsvAF8kalYdf<8+hOR7lN!j8G%e8nB@T_2D?+c&G$?-PDWmGV~jP)8%j@Xbhw+ zFVTc-34%-8`*Ooh+{q^R=pt7C zj8J>UbjgxZoBw{wo2^X#JJ5@n;1@p}jfH-^SY!k=@i$IKG;?w7k%O4&>CWdI_xV(q zOj+J2t<=gY)Wa`A_7x$qhPp(U}*XR`5b3 z4A(H=$tGKjEL4!_Ez4NTvhuqAUp)iVVd4TmdxJk{fy0AuK9xXPR%(GMd(+|mX-}zF zaVwSDBZvZIYwM=dh+{eA>syxcs^oV)Q^xPpM)u;=7Iax8?=aSHn`*@E{uYKn{r zxM>{Fe-Ks&z7XyE1<^LZU8`-2B)v31Nv*O%{NaFOq@0Z|e^en7t3m;`nxN-^4{n$% zRb)*SJ0|1&`c=Q2aqzU7A^L4xn4Jq65>9lyY6@VEV!Ufk!9%jf+JYmvK$FM9gm=2R z7odTcvJdbL6EOL9Nq4a8E1FifsT@6o*&uQ zP(9z&l&5@p5~yPQSq=l#Tu7uk&QN(LuE^F>{DU)V31#Vi~*7>%lu6)!y{ln6jG|tfh=CAUAB0iwJv>_w#@= zdAl69+lL5}p_np7RCX$f$JHhjU}ffI7ccBMEMmsZ%D#C_AVQ2|IG_MH{hn7H7LHOY zKsHn^@S}6E*LJbVT0B^aiaLME#oqf65&$*7iUrwujo(-{G#jfNz)d13w zlNDA2KUx&)G3cVKLnFy<9Ws0o`+cOSFLi@=A9SMZwzOZjO=>h)kx=DS?KugLlO>vF zxpGAr)SF+0fpy;o>gBsRA+5D5LhjHQ(r%8(gck0f-LHTW*Zg_$^*h~fs154cxFNf| z4u^o1tNzfZxTT=an7kQd(C%-7;?>aix%+3tfLQV~1(6Cm4Upam0Wjm_IfZrnH_;qJ zN6MdLFrQTYX`OkMy98Ht7C%kDA*+!P&bo*{Ai&rl>H0DSv5SxBhUn69t0IxNvR!j` z52CI|g%+Rez2Y+S@V@RVE~-prQeQ?hk`*_E`5Kzx+K4J|j>v=Xna4HMIm`dF&I1@W z!HD3x?dGV|i8oTGmZ~S{=6-qK8Lw(ZF$_j2O{Gi&lmcm0(X@B4J0xPg5?%P+)&X0JIrUvqBb2rq7I9*gG;eK zD;P0iPsZyjBt5-G+DI^)J77^4eWTeIj>4w`K6bO|lMB_oNvIOCPaZ*Ci1!nQP2cgw zn`IiL_8#+`joG(A1GA^^9`cAoVG&(HkJ);SGExJ5ArN2*BiZH}GMeaajLiD}!_6j+ z$)`+$h)D_>2yy}dAgDiB9Lv4_RO=*`1!g%~$yv>g59GHTZfRxVTvBw1G$i&(p?3w2 z#Wm!T{g7Q{^4OA32;5?AqUzgzFTg_P;?p2L#Hqv)hR0EZr?Dv!7O9B}c|2c>Q}7J> z{wUpWE*SyTf^rN!?(+P!oB4wXnMH|A3N6k0{6Wd4iXqm;eb9=0^@oX1a07kM3MT_HRuew(5{!Oa>&4Ri1@lf)%>?PjnAkf`y|w)cdCTx2r^ z-2HBIrfT~+(5>P97{d3n$nQ0rwK+6TIny$<{HR|2)j%t*#7Mcpo17R2> zj~5vY1KeMJ?*{=NJtg~i9nGsHoysjwzKKdo{)VqIT!k8V?Y`SFP{g2axz20rjHv)$G$3^X6{Q-R%7q`MHK*-_8oZ9 zoyJZ=*4!_bpRZh7dM22q40n)*QBm2)h4PKOKlUn$KLq+oJqvgWp}N%Ds++j+1{t;DgsA_*~;Hst~vas&X>6|drXV#>U9F7E95z5{8Bfv1w(jS^AP+;HJ z9`!&6C;wn-L#`-^<$!dEVk!kO=E zwm5mnusH^}Jkl}Z{sZwU>56>R;g`DQ3{GvxkH8mI7d+=X{H3s;JUEsPru1OkQ%$(? zcYebJIKEpnY%4l)dlzwjZG%cXo?`(Ny-Onk4$do24)FW?jXSNT>-$i3h~* zoOTwA3TG&c5M&?`YtLc@yO8d*z~MSiQN0FaC!;e*TofTTYCcXpiM<=X_=)Ql9pE>@ zmUkG0-rrOa#Pq4_#38;e0fY_%otT(KmO0oM-CtWMCksz!Pb#k$#d7bqk+|1l%H28M z#p=&|<%MQzz-LJYFEs^Qo4g2oCpMz19)Ajvq15=qpH$m)B+?uTfXyAQN$#)AT7bUJVGQZCeIf>W^?W0v1w5qZjLIx z3plZi1wDh~?} z_s?&b$-IrZmyfrY3I9UV^AMqFbJ;9^0Xa(^M4>@bkcAjIda%jEL;&@=$b&@ zs&(9EQQkw$4DBy)b#HPRu=0=2^R)(7Tz(D(xHW&@phxxahbdA03R#|cnH_@OBW-)? zibwPwOe{hVEAO}%iK=Xs4i*r`*9KVJF9S-Y8|3}s?H-&vIWpIrGg@USJUf9b~>S9> zTR}+=P^a%#Un*7?XzgzVHcT>Z~;Ziv**ijlD?0J;he^+!uEf)H# z(jX?m)i!Tq^!fnG>Z@xgrHzcauyq^;+Tu(2z+VhZarJ=;Mve?W-0E|AeQ27}(}wVS zJLg+2p)-^;#H|(lef4f|Z3g@h9JKrf)2$pY?z9LzS8s+Q>%irSTKr{b4!E?;{BLgq zCou>lvyG6e=ycj}vYS7qj@D^0S$qn+vWj1l0qTsLhmCXBQ}gy1@(X>X2bCc{azUQ?S!so4axB97|!t zdkRAgdfAUK9Zp1Kpfx!grz1(0P6}|bf%uLLgVAN4;SW;@C+yiOqhchv**jK;kHBSV zmd_yY(RP4>0cQuhL@t%Y;V0B~@TTDKf_e`rbwkm^M}BQm5kx(iKyvn4Kp65e{_Rkv zgjNuioafPR^o$`bZRw5MCmN8dfQN?Qs0p>=%SvxYL#)r`FZZqxdqEnk~ z!r7CtqtzwT^qd!l05MN%VBju{Tk0hixWHYIipBO>A1HH`KQhV&2G}fn;zG6XXL&LY zw+3+LqDdFjR$UHjq@Kzm-BnN1@*6PGr~q{i$!q>`H$LMo z{J3{sB?sYR%wwC9LjCME+vQ%A8ABZ641OCWuHUN?H+$;@3$#nc#JwL1#?t%4StcK& z8NVvA*Z5UM|184_ddmYdeprjDTUBdc5aCxM5S2Iy@HWr7|9<+l9rf_7a*?2i>mLl( zyZcKA=nLd`l<2GuF1c1>U4H5O&96w&lp$EG3fw(K#80?qT&l;baWNgbJ>UjjBYNPu zJ~zeB5WBK;D18-OczNdu#lR<|r4{1qv{y#kTR`h5H03$nB zwuE}bz<(66S*Beq_xEE8_Fro}9KI}cIjN;bhQ7zqn>drAKEt+C{s$6=h=Ya#jr2UX2ze>F#lKcyXvN@)8;>L$& zx=xYMEyETYgKi!+6VpGG;aTr1Ok)QqJr4eUI@Oo)rpXJ`L?Gkk=`C?>$&qDE7ncHP zXDLkLe`a=)+sPJz8`o)FB{dyRVOZvt>xJ02K|s&890{J6kq*eIw0(N~*u@dxJCSC< z3#UyHDe!g>F^|vW0;B3RZsO^COwr}aGh`pMGViqEJ2M^F;UBR+krQ0MiDxq$x%Une zJrw;o9n}TSZ0QbT?{MwK8!QZUTV-+x>;@{@lmfr^g-OQ8H@?~#A-??92+F_V&9SeY zAt8$Tqh9|06=KidK8C+ezi;nF^sQ&ZnFr5dj;jwY79TULU)^_A$EW`QQ@s}6`2d(8 z@@`!%ZAE7PU=o_ohrtc=J31h2l^9H#svD>w;X_;99YylrbvA)>c3u40(5_8wbc=k; zr*r##8x~)7H2Z?tFH0wh1;E1A=)xy&uJ5LyKDu!wh;YAvS(x@DcB7(3R%qS7=d{h* z7b`3-A8(za>eS(NS=iRBr6=e^jL)tEA%7+s!ynj1PK7o2gab(5rs6ww+RA8ml&8g% z^Nu&8&<(ajUKfcRCVV|GClwA*&ip^e&HvP$^qTseUT$>?Dq@9LRhgc%xoT8J$Lh}b z&z$GRJ8gwbXqj{{8+-61%@r0+7PimYKV!BW4$vQKi$UXGIqpbkvQ9YxenL~DB6bFO zY(neC*04P+=9N3);x8Dd3wq_wC0|HP^j(~|NOezfTchSpxb0}{rc57MzM!O~u~QX+ zv0u0&tfswZ=Z{=6fV!Os+SVyvo;b1}06ZpWXbh zd)v2?(wz&@wMabcOC9Rwi*IiJj$^^$#^p)}_2WLUBL4#2!se2DX$n4yJ7b0h^?61c zvo|?K$<_#&B`S=b33f5iyaGBmB>rk9MoZkgd|@%~2QGz?eVl{bVLuYZ{@pqsU%bw- z)IP=mb)aLJMvS(Vdif`znvY#rnCY24=w|Lq^fXBGmbu=8E9aBMHoFqh{ zjjB>cat@S)9rIRB?OFE&2|BCJ_LbVHa^n$NL=E5-gh}?qnpqfVonuU{miNKO40`}t zc2Iw91Yws)M+|0}FxLHNS)&hU7PfctHRW<<7rqm!vg>@#KW<0+j@*Zj7!h%U(gmJ_ z^PTAEGJjdv5^98a)=J>)Tr;iux4+%3oCM0(N-4w9ckeLc^qZY!k$DM48poR8%G z`UBmg0SMOZ4?k$ysv?hP*_#YaJEjnn)_S4jgrc<#>(2J;&9t5$Y~)Ev43k|?_rAlD zqj0a=D_03&RZFWS&zuu>NpFw+2UkjFIJ~6qAu~2_`a)IWi@3`EP{*^GJx9j-JGJni z-s~FAh_N&A4NBtUJ2}Lp8#L6Wa!B!j0XNHKtXDlZ@LJPS5a!JljW0c!R5LnTjt{>W zLx}IxFT{0tnkg!$9^OUJ!34Ib@DJ|(0#{tu2QB(rs)$VEOFv)@xJoBY-ofF5)+e#> zzGa%!`D|1tw^o2tqV#lM_Ns5H>j6%i?4mHkdNBNXWNJojLawGo31B-?Ji#NUYC{G> zfH${_IOX;`I-ONle3nTZ=S(d;i4QI(KrfrvM`&p*GGc-&G%?~4IGvdG5lioZp8nn&Uw{wc;pLbH3m$b^%0&KuMTgr_ zU6dPa_1D^U&>*1NE9HiX^uCyM8Q5Em8q=w(S&7betE$Bxu!4|4VMNa^)R{1&tDz&P z{Yb=jx#^2ll0l)V62_&80M$k$uW-*OamWhA<5Z{MA5nCJ>|JhIMAx|SetEtV)iLFO z2ri!#vkQ?jZ#N&w0i4L4X4)DPRByofcCHrXO+SlMq&BjT!d*<9(cT@jF=r&E=yhGS z>;Nn_Rxnu~X8jVOxgPsdtAPkHb(wzbU<%NpH9 zA(!<|bAnwX=RE`q5JBv9ZO036l0G=xhQbKHfZf#tcnc9Am*0PTb74>T{;F5xwt`H z*Flw{w`3{DtCkMqh)U{#!5-(p$nm|XcCAI)K(;?!CaN@3(nI=hx( zEE_p`3Pfq{un`rbsi7=WS!?BNwKMdBkYnxzt7CWTa~SV-;On$%}uwOo^fpcmyqQ)g-S}8-U0Yi%P8`b~H#YCA~!T$Y_TMU9Q zx+cESHaiiSs)kvBrD03|6YA^z;kAj&MNmLel`w{H96reJQ0LK@2mh%Lw#ed2>CE zI(6;=nX6#vFwSoYwZy>&e2Ugjtxm;>hj1dK9N)?HagtVG12-_tg?cJ%xGzes{IYe4 z96Y{y|DJZeuj18q1ilp}-4Yo~j)Vi9HEKKiaSksqz`sJxG}(txvDsL$H!nEW_DR&h zO1Yxf3!Rk|kgUt2*ch1!Rgs~`_yhR5AEkrb zWKP45T!r_;t86=MZUbvHWM`U;hKsdXoFvc;px9hCQy zEQP>n_eNa!+(^NaZ08Px&YN%2+(bUt8IjnMT2&lMT$(QVzf%W$-Tx%4S2~WDr1bnfyINKvuo@da zLIgp^E_L9HP#)Zf}Ew@$MF>|(`Bbdedl5LG@e;a>SVE(UH>~M z#{6o*Sy@3~v|kbocx3J$X>|*;wu+PI>gL1neXZh(L3M+t?|OTbp*MfiRSf8xk8Yn( zjY^U`%SQ@z+9?Ibvba#L+diq2M9|qzo7e5rdCxrskxIm0o_8=!U5G7k7c{ZyG7FU? znCXCRl>dA`<4;EOl2!ex-6I1wA@Dyn@l<04_Ev65xqh}u%``@;zemwGjRm>yKCuhASHP~{K@|7{YAt+m<%s|Qf`o}d)}?5WU{ zqtF!8Y941#-HU9^Kg<9~Amg?KiPfxmFXiygnvw@MPiiqP+1F$1ZkU7D?3JV(FK4IR z+@T)h%G5yO2c%2=yC?~+f&7O>WSP#@HK^y=u3P9YQctU~c3gH_uC>C=1V4_497i4^ z4NGB>uOLwTPtA?tfvw%)(|7QtnJgA?itT3wD10N;_CFW573V@>a73avcRc6-p`*lh^t<;K)DEDtC zgN3nUA>Zz2&XDP_I8gqPbjIR8ZRdbpX}?ZW;9KZiI9 zh%AB$9a2}p#a!{Q(z`P*JYr3yh(NU$2Bfy+;2f~A-#!+Q3@OwuaJei->g*)Y2n7;; zKqM8SME-sn`ex$0#Rf0_{c8BxGG|5$pv6F9)E;K8qv-UYDRXH`MufYkk z5=LKEbk4*#E1#xVrR3AvQ@IE#kEA~`-+`Xru9=_P?Zg3t{GR32esYYlgkF`)?G7!g zC)YuiC9ue0uLZm|FIP!$(7ieGdU`SlDob79fNPJSHWqoHJ}qS|ci_OM;qlbin8%%} z%orSwJ+MrP1tNRByiym-f4x}A@}Iz^!Ed^SR$oT6Cp1}lKg@NAA5V?BAJ!GDy@=fB zwFmG^pD=LhY)X0={Aved(Nm*`#K6D?_AIcH@&;#_AQPD(wwcWpbNl3^e^ioEn&D7c zY7%bj?K*tGi5PSxlMlP^=}fzG#dk`bAh@eg{jibig^ji7bmC~=g5^uq$J>3g(gA3P zvW5hkI500wWfHpKjiDLQ$+L2kzt1B|BxXIi&OQ6^XbzTDV!t~*%!0aYsDl~^)o;!W zzdKnOpy3h+_-OKZhKV0c6}wIg-K?p zQK_mTgO?v0vs`Wln7);6~L(=>9oWdz3jaJ5=e&=V&ha1grm%RwQK<`U( z_yuK!3oN?_cZ#*I^0^cmpnl3o9@_e!=GN^jN7fc#=%%@sOMs;e{H?Xw2 z+f*zP?TsYI`>$o@9NfG89vAGIO~k!BBkRInCAPB>%dBwWkP5K4d@Ue*b1MVHc#Qv* zHU%&%X49#uXNAWl|ISao;|Qc&;BwTWzM(?xkgifE1s5qjOsu<<&k`{r$8I3`PCDDt zk~{wKO*+Nhq6E^M5qSza2~cDhgrPBG^UAwRX&{G|GETSx0OQl zDI_5Hd0k#oM8q=f=V$EnbunMhcROyW>946#6*~`Xuq8`b`BBRnSzoZ>s}+5!!$RCJ zDYM&7-5GyN=s;nm#uBbDAt$sHP)bi`o}TqS>YCf_1T6++{bn6sXL0b(4+INnYH**= z`HwODcHu5aT9#iH^J^y^2XLPgXE+9Ovn9RqgFUSWp}*)S)_2>b{VyU3He%Rh3SmW0 zL~qQc6lY3%yB#I5V-^363_DhE)J#L-Foeilz2S~Hmk52j z2B5>Nx4?U;{^)wVi7;6isGO!ZD|EB05sz;I$RSu-w+Tg&^0xanruhbPTOi%9RsW#O17yGSn=;-{!1Y#{DR0m(%1ja1h}PD$o4ow z7wjR(TKJ`COwDmTQM0{n&HI6<5AVA961;cW4v-U5B`;-idrd~+3zekB#-ShlVUrTJ zG+3^z(wQ79s5cq_RZ+v3tZ>LAFT+|WiO7=eC+-=%RO6}>wUq8 zhmE6J*SE%|Cb#&|Q|;!7hc+yR7N0Op)dGeYz`S?%m;?w~oTPq%4>+(B&puU$zF5}4 zQrc-CRHYpmf`$3Yj-zNaytCXGFq|@`+A1FJrga2?eaThp;0 zKg$8G!xV)roJagc-sLUTg<+fg>S|^#ls1BNi2_unvj~pL`uQDl`G1!B@#8W5j-9jt zKXg#lLAOSm^>)y40^VfKdHH-=C~)V0tcJU^e#0iD!d&U(?p2(q zj+RUEJT7Vq%ls7Fn+4RH`N0wo^OTs*C$e|I7$Ms#FJkz^ggU)p|ZT zasX=3p>UTeGIB8^_ejD=qv6satAG!G^lN^_e2_$@(7?ZJOg%qWVU&^H6 zq?0VCn48l!#nSDIsdHr>-gG-w&E^9aeG!gQk-HA2T-U2=xx4V&PXgd#c+u2aKPshn5Jgi2 zQbQc+*3C9Y+E*SaMIQL74OZrP<5~we(Apt0H*{K3FB!}8dAzj48s-e>?R^$9%?f~q%e-M^Z_V5>_ zaEPTEk*toH+MxRvB7-SkYg&461(le8L&D#1b5wr_oJi=6+tOv6h4T-R)l`1lbFNB% z>WVp$wIlYM_q*?op%>g9b54Ec*~fK7)X*?Q)MjGFrZb69YdxgpD8%yDZ}tMEWSiA-&B=tVtdwsa%a(w^ z{7V;i(sa52rn8Q~IQ0BIoFS?px1Ts~9!wor$??_CVRCkD$1r>bx0y3$MNTIlA4Rvpr(oz9>2pKWOhCJbh7~K@_ft~T~O&1%yeUS)-MA(VlgS&wjr+E6z!M;#WEz2W^_fk@3X$6CDWqP zc5BN_s3Y$5p|t5)rXgI8{1S61Q${WvYtd6g$lCKvjR1y$lsW#gBQLQVTSK!m&F8St z%Ee!m*OX5}gvno1?lm;S<*qUZERPuV@fhC7k!$#cgQ8Zxe0cY3~Og!hEyU!5q zR*hjJBJo{esf@@f8sx|O(wyy{BRNUw2oVaRT}fQ)Mql^6g=Dd<0QqEA!^+S!W!YAN0VB_;)8cE^ z7HPFCSFtVIqKNd0_TY?j2QJX{;JTeQgmEu&r4J9%u?Gc;_R7+DTxYTSXTKsjKpF0j5uZ6OJt|0)3I6gtTh9r2Bn(YNe>ZfTpQ&-` z6V**Us)oXl6OdMdngEkn1Wwwyf3=+c0c~A*fk{JXw^7LuCTbix_SM144uBn-4xpKW zHFph~3{N1h`Rk$CRGJ2rvM!O8g)b_9^vG;DVZdxDv4|<|3dz_^;obi2h=@%4g0nNa zZ8qya83T?33ZxOoD6zd5$WKno)+qsUGahCiR&ywqU7&XcJzy|9*ytlrJ0!MV{;cZ{ z=if@@$gRxNGE(gAQ7tre7KO2I?j}WJ$CL>z2&!B_yw9RQCZZua4kFt$9E1OPabywX ztPvPU6cIG{Fp2+xm@q$&%v;ZF=6*V65I4_*^%!t1$gN9p0bz9*<{9>}WGq_bc8^$J zcC^`9k3$z-56M1NV-;T4s6ah`ZXmB#ko(oFg|RfKJ2N2F7Vz4HKN}_g-gZo8v)fB> z66Nf#4+RRxHjaqe{OEuMoTVW|i3G-tfZiKouFxFOwKRUwwqzD+C+k{jvgvAH?(mUq{ndj%Im!M20UD*HgUd&N> zav<#;E`OO_gZJrUEI8A=VjB;cknKRJG}Gf5I=u-x)(a-OaHTE8?10w5(?AJV(-XaJ zOVfxWjYm8%OO_C4u*yYvZ)5`B1J<4}j<0}^vMITvNHL!Db(oQkWZ!2!KnQ=va$I1Z zdKM^XVZijcSas-mQKINq~gYSl!m1nfai7t9mKJZ zvYZ~t{8n9S66h>E=oJIUq}$&{B`y`i?8;_vTW$B09}1q(w?W7! z=pp#obrmiy5DVj4Dz$Vbowd&lQOs&sw%_|om3rW=^wD+1=uhoNbJ#4sh*ZRm#~tH1Ni>}qI*a zijfY=aPVq+D-`(Xw=T(=?+eP6-wdU3J0U@0V4!IPU&Ul5Ie)tSQzkj<@F_YCl4!%M z3loB-eO!WYb}JznzhtT=o8JGJ>Rd~FydFNu_Pj^P*HfP3bd2Tabkq(Nwn92JYi{4t z=*Z(LuPtHE8IvGAOz=unm*kWFA|gDtT2nd7RTUXM`g@0}p%=F*M%#gv!#RR{6pyU4 z6CaH?oDfEvud3}_RaqWt4D?#(%F~@>khBVMS$o^J_&rGu>f|*f4v3*OGfA1LcQP4L z!r(Drx81vFd&(bq{do+!yjY&EE$3q6YHkU6*rLfeO*FXsYjpdX+7=K5esM#(3x?Xk z#eB>;I=w7{ZsvQ@`>XrGEv#Vghz_8UOF2RFWKc(H|cz$5omSI9!%bpW*10> z8Cg*AZ5>!F@usbovZw0F&fPJ){j@~j!hmfGVAqowKptwkBHXU%9j@WK_7RP4wnwDbw1iSm_i=^R0(GB~ zgyNWz>l0SJE7z!C2Tf8<@8g48f|gJ4GV+zmi-d%GL&>yJF(IQ2?YU7}0prs99%AXp z-`COT%9+eGM;-nCzD}XBlZ$^egFH7-w8#*EixIzFAK+m zo7$X%^YbmS-?tOV?Fvw)I+4Rg@(2&BCNO z|BCp_?i5=>*|mj{7GEdh4dwkL_yE~?39m4cmYr)(RGgWG(u=SCG=Q^cIX$dBppnE0 z`WNKiZE1xTQY~Zhd7+90BM_7S0oB^zS7wJSMEn%$>7ymujV6t&YWfyZO~7h?r5ujO z9vO%$1@INnV(^|E{3asUA;hdw2r6UQiVc;baogeWBiAfk1}b%Q4Q1Q_CjO~vXsxhBmIpB zTLTYbF*!2kT7PJ7{BFbZSflj`nhILl41)DzkWYPZ zsMX^8eAKs6H+ z)P4TD9T_-K94@bBk(B~)E9V>4SR9VTdwsK@`+t10{XT;{A+jw^(PD-Jdor?S=R3O7 zmb9^?LhFX=W=I)gWaG3|T2O4}RiX!N^bqcNdYe^^P~FmywDMy3SWu#ypGS70vVdJ~ z(7XMt+?Hq8JtLbO-}4@UD4j<0TlxwpFMEPA?JZJQ9>>^1MQKl%t!tKr{}L2TU3U_*}O_f1VO2RjXpwb+8JR6}yQ<=v*L zW$a7t%KOf|@KpBVqofJ+K<<-hvX4b7{acx@7J*x3)cj$BD^X_*ib=Q~#*AM=TqTpM zxe?MM(XaQho$gcD?@1WMO%dNVGkhS;!obX7%Grn8t?N!44ZPd-zTMk;js_bcHBGBxD0-7fA%LtUJzxT&=Wur7O*K^%X2*IuK);vhDf z`Hu~}$6dOhlF`VGn;pt?3x|@LOvm}7KD`|tsW3OXtdYU>8SXJ7q0here`$KJ0@{xu zVth-a1cVzt`UN|NsAq3(+s!%Qe3fe0QbA}{#bfnm{~SFR-o{xPW%2Ss#(e^#^R!z^v|Wu_)xFmO20++=4?X^wF6>7($OYf`DJKQp(_?Y2K=|{ zYt5qJ=9x97!ICoSIxg0Nc*UF<5x{Ac4+F~?>ngA|z80UdPlag)BuBgb-sPN*hK!*h z;qxa8sUOVz9*gs>Gq7SDLUMW9dP>%13v&%o_M9#);MEG*8$4c~WEN7{6EdUmwmKt_ z+j3lWF&0)(Hx$WDEJ8Ad9fbqq^|vmPg{{-QGCDZ8PWTr(DD3+LZrPvO4XV9BtpD3^ zN;y;CsOy35ykzpO)om(CQTPDOICMoy%krvgrXPnwGR+!7XDn-7uzr@%jJKoQq( zv>NkMBRbR>4zoz0YM;O|Y+W>CreY-s+Jk2QqizZ)BO62DiqNQrH9fcn%KNDvhQ;_~gc_PN+aD zbF3DGhnXo4@I7%kQO(X%kNN_jUZe)o@lEOoK=%Id^A<#DPvvjfJn1~EAw4p%v&O`-jEQ-Tb^tO#sGf4E<5Z(( zy{47jaiI>3j@x25PwRVB5L&zszW;zKHyq+WP(?qD*#|u$fDY05y<}pGKt8rz1_lOI z-4jdAL3I~w%m6DHd0OrL({8qijY@O|Z@ajN0-s6s!GXQ-wAkM89V&@wR*1>v8WnmB zbBy9;sqTjjm?XGJR2LHV$& zARv4;T8r~4PPF{pQr{gqGVpk%u()qYtHIvG_e7gA2~$7{>ZQEc{R}k) zB+W7T*rqVHR)xPNUFJV~J)h{XjPDBlYt&cR6(3K_pG}7~p3p*2qp)cAW#wAgi z9f>X+pE%v$o;|qWTEHNj0%sXSjxMW=K+}9g?s{qc2m4{OTiHQ`NhU`l2O%?gm`Yl> zl=-`-%r=j~>PuHGQw$pWoBb76?KZSHB-iEg2-m`XlA`}up*c=MniJbhqctXQ zPsWUN$=K0SA?Jx@!JY!0bDKM6z-FZ_pXn+1u@79%$_6Q5JxIR<6R_>ofyvH&=AI~H2a zy6c2os*EsXK_7MORD<#EuBT*AP+cZIf?J*je@ffcxl%CiVIaJ73`sR|1jXX+I;EG# z{32kNczP7bI5Vk2kbMciD%d^iDjgqi;UV>lYK3Y}F6<*!Z#nG=*G28Oq=xp*=yBUt zU|*VzAgnT3c>*9T>E-PDy^vYbboU-#Lj0|F!2=AOMI5wy6CR8dHxU@8qiY4w!HATr zyDE-g*5U0GBIkooQ~!xxad#%V6wLVIO=dyEye4$*L){dX*V4u4uy>5b3ok`(k~Atj zd0cIyX4tMplc*Ts!fwpOXEpDJHCuFJIPBdtq192Inx^gxs-N6zU-D;Q?3@G*&XrQ6i7>fDELef99ksY!JY@IyLSuiRS`Sgk8 zcQKv(Ea!h3IK4e!{0d?S#W5D?&(rYjqD0c^%~L+9cB z7lwsV$u|G-BbbOyC-$41+mwF>Oaveosb?5_ZK~DKsvFv7X(EY^3D5w0 zVmHADpw>E^AJ9L*O;xlqpQN2GCmO~0G104JmZN+wEy`v9QFG!jBEHa>x_6av_ zEDg428FtpSy9S{n27?Uo4V!LA9~*o(hBGnrh18cn_5M=j9k#XTBxHZ3u)6+uTjY(y zN_5U1BDT}7dK(2VSeP=sdV-67=D?mJsueq6_-A#AY+aVL(Bw{trZiHVjkBibQdNHG zZ!u`4cLv?#T6!?IcZ7TD8Xs^UBLh41LOz0n~NMb&MyKTw|$qaSmDcSe9r*H zu*jir&dBgc`7F%{78tlmt_}hv=7N_4&ZKYoDu+l3gltY^L$&>t$WBRyd9fqQ3L9|# z1+Y98R>}ZJoft$%+niP;HnLo4*mC1wLz^lej<*p>7bpLn$+^xd0b@zmx#h^{Tc5)N zCQCIR%s2~c)98vqHzW7f6*7XSQFZrfQH{W~x_-R9op7noLWOy@S2NjQU8$0_e-}MP zOYUqu!JEdEugDA+3adu?-r&y!&Wcy2d*M(h&nn-(!@EmH;0kX(4b8rbY~z)5rP@PA z^t=D~cW5&00nsuO4FW^|H&&ozdq6@TVA$1Yn-zN+fFV_SLe$g(8eO0K213x`!^du) zKH8vv$g(CrtS;l}yYPU4x3$kGyk{ygox-U9OL^1j9Q!7R`SZoz;>Qw?zuMkscc_7K zXRr{?I3wxjhwP8Cf~QY)s@Oxb6e6h%pk5-18R5=1$p+8H#dV{pQpxTcL-Z(fg6&QM zL=h`RMI)a9S`CDhQFX}R(XRPUt8)ls$sEQLtR|tMW@ZEFP*=!yryX*?GhTIe5t*;9 zEk)&5VWM|&SqMAB>?e1J4uHm9!vj)#LusFI*7Ob3XEA zuM%9E98SG?%C`_dzBuiBPzQim!lz2qq_w@X&+jrdi3wyk*vYfRyVmG@N~-aqG;x&F zS#~u!LMv#b60F+ylN!WmvR8a zOmHS?j`(}sB3vB*ioeS{0ew)KIf7sC;)tmUA_^Q$6~eGC@ux#TVUDAlP^rLukN*@L zzfN_gk7RRlzehMyQP$F`N@K?;5MrVxOaQOnl-td7#R1>WVP0ry9-*}v0(ekehuV84 zTT&)fkWpo#Smy~K1hqHbSL{%CKb#Ve0Isq%rc%m=zZcSgY?Bukb{@AkC9dN>f$>*_`~}7$JGU39|w+A#T%ip2(rR55x0W$ zLBYxiF5_|#)PK@O(VcGk{i+%f!Kn(~oyHx76WvW@qk}i;R7Ux9zV^!$^7(cZX5-#4 zfE+Y_K4m9`%%GrZBOY?Awo4%=ypLT_o9z2_MoSqOLAc&Sub>XgVCwcabrHxz_u^Ae z^ZrWuRu_Co22?6ATS|7& zqE4!A{o$6}?z*a7mEO!{a=fazxz`sy4}ca!*qGG^OME>gM+&*ulel75@pp*!aHF_d zFSjFXYE|?!3HUxEQPCp3mCG(SP99wR>JTSDccv>;N=wI(IQu~VUt=;~d;_(yUR{wr zEZ0NI)NO6;pO>urhEM`+IG!T@i$BMw!I8wzIEN;#P(heIyOfhYb3uqM_b}!de=5=X z%=D!xla85^G`hWKe|5XOIOs+wd8qlIkf;dOL3E)?oz`lXERKGF4g*2J#9I=cftc47 zgu)Uy&*B5rvQGj%!cn=+nj)=V@QoPoh@vDg$M4>x9lG%2+ zy?tE#p};eUFGtoB`Pz6lk!*QXnFjLCDBA-h&&`u4r=5bUE50F>Q^zp3S<7tR5fZmY z4%CO_M_hUd!LQ&bnOl{{ca)ll%r%THGm(vw;D>am2f~6x<1dz}?}N{7CfDTam*6jy zOb2h<#l#l(xBRo&2o4cxs3T7X2bDGCG)TmlzUf@xBspU&pzzB}(hi~tj#FZDzv!$k zQ*d7@wF5a98#tMYPbNe?`lr-SZHvCJNikcCRY)6a>4`_7DZZgdx>mhVZJSS55i4y- zn#^NLJ02ls3l>n}Y<9;=|LOb}guBy3X^epnh9o(e+;m2t8VLSWF!m*O{R_KM+dWxK zzsdEi^->cQe4+nuJ?S)8vmLyt=f-Ona)eRP>E+_zxN2d|FJtxK?~R+%Anr<|)bDbv zbw6Kua0Rrs0h-|WBHHWyPHBCG~4U;Br z?OSsC?vOZ}0C5G_6Z_R>qm(j$5U&~!;pD`F;#Fx&u8=p8vLhAr?|DV|M@ScdY5d@c z#MZd8Q|Q$R9LOM)tGkWiXRL+5=}&Lz%7s+8ZWl~{x);4Lg?f?oht1nvhVUHzDv2>7)~A?#0B$-iaaTn9qYt*`Vh`Z=NzCy# zov)EbKryH665A>EfdqR^r{22n+^1vnC&-!^ZA$ML-Lve~44G-HhJuCe;~5Hnq5+qi zW|;jXd5(q(D_1X zWeQ%5EzJZo84^T)u_s78zN|HkpC8H;U$m0mZWw2Y;j0`G)=2c9yx*NqYJscsRRv&T zh-wg?gLJxf28Qpp_Dv=Ij(QlN|oQ23b-k0$q zn-?%0&SD5uQ(5zrI+5Q|dq9^8h?t(k|BCt^C5Dsmmqjd-epVudhaj(h=E(BJGAFSn zpew^k&(wQ=A^S^7QYo15s;l^WO9-6H_y;~8DR*KCjffM-EdQU-64jR0B#<83>onqk zCKeVCc)waKAJD-9C80?2&(aVhRA6S41ut=JQ7FULv|jiz!NI3eA@%~OZKKmRkR`&p!NX()(;p}n&G zId1^h8cDiV{QHIW5dvtlVED?d3iELXAD5qlT8(Hi*-{>i%IA+V9UDed<>~t5nTd(E zf}iFk3?#b5R=LPTcxzfWqKsbwV7<10s+_E*m^5jU4Nd0mZaoE+prkDz$ND z8jZ*%<-Fz31K8ao4b5JhQY~7yt)T$16-}z8kKJu$-Df`OH{aovXA#@3jQij4M8Eo$ zy!yIxQYbSOI=Ji}QuUYfYqAnJ91oaj2&gbyZX3FEM{g0P z7aWpT&6v<9pM@O_{EpJo;=5cm*X{xnC8G0LIT8}arw-N%n(I<&Wu}r6+A9o_H3|Hy zZb9fr#K$Ui=7oXLw|?(WXDoIE{Mg^mli+GH@zFZRnehouKJ*y9k-91(Gi0|Q&!6Py zk=(Ovpnul%<^_QYJ06Y{_iS6!#h3EhOy}Fn%esz#@l;~bpcA-82$GZX&X?cE)X2mx z=L&Z13f1W!VM}8pR|*w0#=H88w!y2SI*Z+9zMJa5j;~u zp||Ctr4RR+e;=1J1B)G8!`(EM0j*8lPX+bz{Gk~XNkKitsK{+_0_J+mWPj&Hd6-Tj zJ+UxCy#$YKr3gnqE>2s><-iO7->#PQHNWho$i(F2g|OHTT#i8=#_RgP8fIx zN#vwd)+Elso+&$$?OesnY;U)B>vXht6^(tDw*^trkQE2di19pU>#Be{tgDU`mjRd1?!@SXrzCs@eZaqD`}+bk+9V6}urqhLM4vgeBRyof&h zzB0MnX%|y%gSQUyXjF{ru*`tXejEw|=^AVvW^5(Vl-Lz0c9l=6*JQCo(-%j`@2LHn zP=UFoh+vWdM^-oSHTZf_NG__f z$H2*j*gA2WlBO-w*V|mayZy$=P&4Ii1ztsB zN{iCkdo{CO#kOv1rOX1T&8ok-N9E7e6+F<&^qTstlaDywl zf0;w$m^9qCat(;s@Ij+$YC_ldbCHhE-dW%C)1P_`?G(XW^G{;{vN78fu!*FHa|!1D z@QrxvBQpR5k-P--#%m?d1Y92`i-N}R7F=!H#Xtp40r}_xEI62A9%!AwJH%de+^^Bh z3g%xH^`UQ978bddFd+;b9_S}i>;JV=F7 z+K8}+RD$e(QOlas){YeN<*h>scP(mOlB_kdwW5AV_RVlD_Y^t7?BhERsFqHN>K*p! zJ1-!Bjj)S=kn=9G$omxooK^)6JIqY0yJ`)j%e#Nhtal&=aE-(}o!*ANV#vP|jbxO; z&(_5l9yNN`B23UXD%n^nYXEwe$}+=zjN^#(ZhDSIXa$5ZUlS`crnAkS0z1l}_0Sa9svG ziA?_|SlC|4aem~EfdC9fyNkT2zb>?I%nhe(P^=ch{?w_6wCSwidz62EKFX9P-? z5DW@!-Ke4yZ~t_7&USrX*uYWq-(0Jj0gV;-F(A`zsO;2yDzGRbcF#OV>^5gQY`@&C zwD}q)LqG~8RH&BIUhyE{5oq~EhAGM9UjSbZ6I_a`XmL&1-Kndrc&YsF|Ryn32}-oZPkZDG+O1E}0JWz%M6nNR|t!0S*h8FGP~ z74N9`av6zK5Q0CEVqUP9HL=@J*#)XKLuK%nR5!z=%u)poCHSD--=U;3eIM zW=)^5s`$hN7p!`RHszL+4ZUcbF*zRo$b-}DqZbA9TZ(U zjUB%@L?<=TL;-3|MJy;%hv$NNwyDqGyI`x&BnW#UNaWB$g@@%&5tfKz%_!CoJ2dpA z?4yWx(g*RM8EWtE=pCMNcNCeC**$t%Hbh{Psp|(CYjO~ZH2}t!V&M_;VN)8Tl>ey{ zA{h9cr2UQcnJ)I6L2ekTJ8EZ{5$zjhTv#(czgPnL{*`bTjqaEK$>wy=qW)8>gg|>O^7q_q zx9b1!HsP9sVI>v_YO#E4mi&6aUzR&ec9V2eh5q8@V#lz-ehH2lkJqdHWVa2+9~j?M zKaojasSLEB3;ir-z4VUr>o4-S}^P zX&xSMWEjH@JGI;+sMvdbn(Iih>s1^1zg(y*67%=xv>d;m3K2n?0REU4&A|tw0kN+S zXD@F4&BlaBYE)wtxA7-x6PMSBv}4U{l^>l4$ozbYFi((Tshg5bl7V_qK@LH?h$Vgz zH{eijvl1KsZ)g=kuEuv8W?D7-I@9z77t5Ey!I{?~78T$F2x4UL>eWj~3f8zUd zd;*+j%_Le916ez)FRuDmsicH{1pRnRD7=3D5+F8%_N&3NesEKdshV!*g5@;D`|!GYS^CF8vhxo^ECspl=BZP9LMGU zMF25jK1!jJwSG>64*B_w!=ayK2YV5OmR`yt@=DQKDYv-Qsy7_I(7wR^0vaR+4&ufq zfo|ta0oLPr&TBVyVd2H%(M6|-U?Ivg`p=Wma7e*OME)9|`CiU{MeTgP%dgt#@RoOT zykyBagTK^lI;YU03GM@R=K|l)`E{0)+ZOl1Oe>bCJ~Z)*9Kx&Ed!PM!IZy=@%|gRg z9vcaOg~rk)gKUE3&_xvs*H!{mW8jBem&rMT#~k*n00yX+lsr=)>>FiQzYsG!BRvl= zDrig5MrZ-yHGnsELvHQ_FgPD)cin*XcSO1Of>yL_<5_43&!)^xn~HA$4Tw5pXdC3V z%m*$oU#a9?1R^;!!(72~$8VzH`1O6NKZvWBkbzqu*$xsjZPK8)G2euZQ#e?3P4@v2 zUJc&SKJlEB2vDR0eGZF)gE3n?#sJQut$>mw`IZ?N_x#|?ZXFL$uYVv4PaZ0`sp5~ z{2MQ;k|4%W5}J=S@~+@k@gYFukpXegfV>woje97Dxk?4hOE?OniEvRBz>OU$(2tkS z6K+{k2i@eJW3{Q3MI{)u*_`rT-cYA2CX0FS{aUz-^MNZfV}gPNk3wD>HcZyyQW39b zomwxf(sCRRL$&~~2%*yTJHo5j%`vbwEO>LthCmY7yP%#S6L;||f!WN^2}Ai_<1O^* zX^tw?&76kx$Q^F;&*P*WVTyaur8tmVIr(t#VJ5QMd4IU?&sVW|4y08*KK` zWzIG?NUTgR4Mb5rP|#Xk#Y9o1jSd4rRjc1{wSJqreXbh}-(eOnvg}W>Lb+bUY?eoE zj1GSjaTsau+&Xo3^ZYSr7C&bz;r&Rbx|hQGjyIbb3b<)rrOWBLAfl#ySGH7zC$aR? zF>Y|~n9%FhnoCco*>1~Vv|x%)OWq$Z>AfAL#!)P*3_tZzTLh{-odVL;n9zQqlA1iA z?>@&`Iu`hlA!-mL48?2VtmhO5@L*tI>J3d{U8^JAw+Wm~j*#NmW74-dV0q7UUbi9* zr|OVUECb6NE(khyAB_*2@OT~#$@0uz^1zMVYxErn=E+4QK^EnD%(%#7e!itvw6#Yt z#2_e|{4^x-$&Z!GA?_JSQ*j`$U}b0ciHoeV2CK~~1{x!=%1(r(dQL02d5ZgmPPtq| zLW%ZcE~9B6I5;9tK`R%r8r4!=U{~rFl3r}1Rq-c-T#gSin0J0KblB_Cx^{ZJOsc63 zugkU!rA&p`*#Hx)d|3_oMMs7xl&0U` zt+l$Frl8w2G;0COk>w!mL3<@1fk}V`&br!<;{4J%}Qww#JCvsGq)R?=0s6#wT_=@ z(!8Kea(RpEa)?O!+vR#f?vh~{HUS;=6i;@B!kxn9E&g52%x;k;!9!IyH=p1{r5h+| zEav;`2wNOFA^HeE^x+~8Nwi!ptN03LlGZgeMyl(>SBP$?O-r+f3nTyYD!bf zh?_8NZjm%zIE-sR_n40A3_Pk&%~k&ZhKLwtwUvBLR#^GYjKg(b^I|wI$?Wv|V2~hN z)8z*8Hqi`qVOZ0US`7wQ3@~;s>@N^ALw?w`dGu2^mzHdG>g2P1I-{4zYdB)1oL+rI zclKkRX9_{X;?=Vg7=Y%Mp;OGtNapkv$wIlaTKeU~zF?emVT*tghQ>!9yv&v}zqmdZ z1Fm9(B9Mad!{&OVk~LT55rQxU1I0GV+Q>~0)RemO@%xU0;K8>VBn3X*Q9WpXp-yoJ zJrcBUc=-cxjBk%`y-bG+!jel8PVi=Wqqq9vm%8L7gnxTP%8)J*DOyU-+4%_806}}R z)?O%q0jfiV6qu{9s{+e@z5PN|!!xLb(S=(mDvS-N+^6mFB#AWE6fafXU^lOev;z7Y z<9S!q=7Plro$;P0u1elDA=%b4_XD*57!NCI+!Ai+39zbO<6PG;N#O|b_c>1o1vP7c zl`Uk$`*Mj&>5zL5YEq;sDhPXB<>%FQ!Ao;kQ5@k=lXV9j)0?s&;bCGhSrt4NbT6&Gn{n*h0a&cO4r7HaG%9w-q;=$zE?e`WnuB&66&T81#eT8^Bp}}}?j?NxP2pNFcYty3DkK1(Wh2l-G#NZAGR3*WBSpVw5(=y*V z`wA<$17}eMB6xx0SiG-Har{+OQ7I9gcoH-So;qgO3jIJ>S{2Ky5h#EYKE4r2J zm90f>PdP`wnsc)+eN3+pD5}Z@*Gvec1GXB~=mN4V z06Kq`j#XFt*W}8d?JX~5jv=FfT+IqHLJ_-OwMNZI2q&L?;y{}Cg^->-ij@MFiudZ?}W&+me5I0@B03LIjAz8Em+6K*UAvtEelp`o#d2>Cf51gWvb z5b}~j98M>qV(WV>buqApVo&ojzK#vEsKI-bWRy$7YScp><>vb<^w-|qUZ z7aiZ^NUY|T<{FiU!jC%84W=#1qob?|BxyfRn$S7M*uXa|j;GinTlKgC^pOg=qe{8) zTujycyp}Qju9(cB@S04@Z?0BfTjA%;Qa%Q7?{IWc;`qc;C7o2c8%-FOFZlB7P!TzQ z0%KAWUo)~a(;l?()sfU_{#mkaIyj}|HQnR_(>eG@?_bFU@_5G z$oqw)I%Y4_vjkAHG$p-nlXfCd*j5JQ)jJ?0UKQO1m`pYEj|}zbKQaZ<@Mv}_VG9?} zpW?48uJ+c;6Pq>>k0e{(S82wESn2CFZ)jHr2xfNZsd*;gVz~&Lpd*zTAs>Lu8wGA@ z!s6IBjIcVqG*1xb>_+2Ag1DT0;ee}U%v&Nd1K6GIo7$eXUw?U-uU=OEpR-r^3H?J3 z;;yOn)aZ~H1yJ<)JG&J1ET78Iv^(f;+uiLTsFq$AV^YE5THf9P3fAtV^179Js0A{B zWszx}N%8>^z%KY4i=1#E!_0BM!m)%CglsF~S(9$t^T&cCgDoerK=8@{$@;BxJD2!f z_nBS-^0xnp(r@TjMnRp&|K>GiQ^lZOt~1VQ5fEn^g{At6*Z>kHa<|$RlnVO`1=h;F zCe>mNpa0;?*QJUpqJ$))Lbwb9?Cg5KZ-m$QELmc()nIaA={I!x)Ot|92FGj?^TvVP zVwa_ZQOzy8F&ck9j4%9oLQ3Au{-{u{OSzF4E$l`DhbJh%zvVNAD3z-EyF}{<@-KtQZ;>v zGLU9c;Q_h%pFGF08(0!hvk=R6*ii^?X}@Sm1Ay-m9+G;Xfg1R~_keck`#Bsrz*3>I7 z3LA)%ftUDd)l}p@yNoUqM_*uIn!z2LESupkfRh;>T2W$M#~OB3;3!GYjmS|V&0Cdu z_p157G+6yULY{K#-*kT`F)9&ufDyKqf#3|OUn=BRsSHfbahuA=5on}==ZQFucQtiX zz|SVe?Bs55HU*HGdh11hP$}US;Z%3zDHhVC;2LQGe!cs9aKfS+(S)~Iy(8No?Fdc< zVDl7oCX@VrbsYfRnprjWq$^6(aKKcwn<_lKR*6dVnBlS%RhZqbmdj5Jg>O+@{8}$$ zA*XF

F91_G_M@jKB6EL)jlxSUQzti$mk*zlQxQmkNqaXtv*!Pq_a`+ zS4THJ;jS4mIV)D&GNW3}F0Os66LxC4$p=V>E7pdtS%(vtqi3U&$zlGJxUB?WB^LEe zgyq!lf&r>QPwoM-(|0{L<-$}j%AoD#3?8*t1?ZM96PJx1i*385-yKv_VCq#v)u~2xHEj);RYhgzIjeQPA(8_7#35|$;kjdLus!+NT z;>(?i7q;MlWPjz5C69Aj+P^qQ6LOSVckNu1zGQlA*0LmhRTgkb=a+Xyvph;ssH5ui zHha)N<|}J7_{E5snd`}-W$N&1M_w4;NYy?cbAn1>%|G|KKR9E@lv6#!)ez^Fimtui zO)D?tk22b+z2kAg1<8em04H(hS(|Y#oJ5U>+;E=t#<@hx;cxT4|JNCq$)cD2C$olA zOQ%(GIU0?BTH?TfnbXa5P~TctTF@O(cW&q3ue{Goa}RqIc}NFh>|nTQF+hwZ$vq^+ zXa!7_@T<`gB`2p-;IVik3ws4eB8SU$Muv0ozUKfo+$qM&rjiOB<6U)kLcu$16%onN zlShd0bDLHYU#OCw<0&M&X5J5X(g}wb|CUQk(|m0u+$Ua2MfoxYj0B<_Ie=KHS9Cm} zKiJ%R)Qof!Cwq)tFc1rX+k5vl_QB@wSYZhJLvysH!N}MH)IeM9zM=>~53vH%5@ab? znX?`rGFnRb%cdgErV{u3d-E{PNFs^2qZhP?~#!eGjX7XM2vh9h&Nwepz?4 z#ICM}j0vuPS(i*i6Fa6FQ?JrI7JGmO2`!T;ap>fAZSj6PR!DgbDIMu^!vMn9;;@gR zpEEONd@AA^xQaYv^0j=$*@jZjA-C)V64@;he?(nmMv4RI_qG&NGP*Ae7499nUJkbw z4#NdlrkWiuH8+oGRAWTP3wf@6t1T+wG9ag2-@3-7nfT8$e3{x((BzHP8IR-!4|Wo> z1o=oWXOabQP--JFQu?~(DU&Q}k{#phbxsuctx z(RYsJf(gp3IKNqr*JyK)6E`|WDp&KavB8#QymQOkDINEEWf7^t=Evsz4#Xkmda72b2$! zHjJ8<_@2$lz|9}fE|`kW+(S|?&sH$NP`sY*LKOCe+RGP_@^`#@S=@MFoC3T;E$1_> zn3A|l$e3#1DYc>v5A8#Gt=IWLlc&l>&&X$+#+-$q?8?s!zvfVwC?rx_2X#*u`_;X) zK)PBw<=ied$TZKi)}ziQ64L<^b82&j%XNdC)QtE2rd)%o+T@5hq`Q$jJ1!dqT+h|j z0nI>W1a>V+hi{j~JEx$Apzw^+>PjhRPvB>*Nx0)M{FQ~F#t~>!u6qAJ?YVPrKlrO@ z%MbyUPCahw1_|yAvw7Kw7Mu^dXa#+QM(Da#m)<4@?ng*|hC~gk2X#b_F~IYvFFSME z($t|~c2H9&1FY>sLq@7PL-M8Hi@&yi+g$5D<-M!>S`Py=g>=eDE7$tA`+TM;;Jt%n z6eaPvQR4&IaTa9>Y15`zE!XuT$P-`hGEBN)NFEDhU>Ko!KngnxB4Erde77>dx`YKR zP;TiPUm~^s@DU!8?aFhf;nqW4b{@I4bvZ8P@uzbW|M>{XZ10<_EyAbc=A@W(G*5#c zw{Erryo7wJzp?3DUclFU&Gd$V=@Kh{3OE*qaMnB~gC7Jy?e&xv8P&rcgyhk7zvL#e z>KHP+-GfdnU|1ATPJ!00A!~x(M?T;EP(Hib(28ab^z}s4JhiXSAMqri+ujO6u_?$h z3NRGn=Fs=7jUvh{ng6}n=vySp(aFq0{D*t}`+Y`)E0DF+om^-@g9WpKEvlq+Q1U+! zjZveg>f1396I?93Qgc<8o!x{K1`ny_he6FPx4f-!nfNQ-;T+G9PdKZ z{-`WC*q%cHwTI0>mr-&=#^hwQ(rU~_mw!PN`MQ{E=23C!k{U3?A)$CF zum8AbGTP1oGn1|l`!~yR3HcA*Fl`K3K+Npi$~O7W8SNu3cg5#Ebnn^cFO)Hr++D}A zm;BzgK`E6Q=Vg(#0pz2?(W&ZYd=u}lIu-v<$V;gXhrfJys37gi2$_iH&WMiZU`v~K zt0Ji&r%KlkNOno5HW15~S3qq}8XWcD5mx~bV4MFP^2$FFud;kkJ_9GGRAf?eIswV8 zq%p#{Np6S<2%Fl4~)XiL2)FXCRS@EoWiO_^cl6A~Hg{yRjy7nI#ig%&

0SC<&J0J_^^%yiW3Lf$UDkR5R@=X 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∑e<6vPU&SKqPClYe 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 zb|ztitleMove()) ;~ --------------------------------------------------button -Gui, Add, Pic, % "x" ui.button1.pos.x " y" ui.button1.pos.y " w" ui.button1.size.w " h" ui.button1.size.h " 0xe hwndbutton1 gbtn1", b1 -Gui, Add, Pic, % "x" ui.button2.pos.x " y" ui.button2.pos.y " w" ui.button2.size.w " h" ui.button2.size.h " 0xe hwndbutton2 gbtn2", b2 +gui_button1:=mgui.Add("Pic","x" ui.button1.pos.x " y" ui.button1.pos.y " w" ui.button1.size.w " h" ui.button1.size.h " 0xe") +gui_button1.OnEvent("Click", (*)=>btn_onEvt(gui_button1.Hwnd)) +gui_button2:=mgui.Add("Pic","x" ui.button2.pos.x " y" ui.button2.pos.y " w" ui.button2.size.w " h" ui.button2.size.h " 0xe") +gui_button2.OnEvent("Click", (*)=>btn_onEvt(gui_button2.Hwnd)) ;~ --------------------------------------------------by -Gui, Add, Pic, % "x" ui.by.pos.x " y" ui.by.pos.y " w" ui.by.size.w " h" ui.by.size.h " 0xe hwndby", by - -hBitmap.borderH:=hBitmapByColorAndText(2,ui.size.h,0xffa8a8a8) -hBitmap.borderW:=hBitmapByColorAndText(ui.size.w,2,0xffa8a8a8) - -hBitmap.button1:=hBitmapByColorAndText(ui.button1.size.w,ui.button1.size.h,0xff1ba1e2,"Block") -hBitmap.button1Hover:=hBitmapByColorAndText(ui.button1.size.w,ui.button1.size.h,0xc01ba1e2,"Block") -hBitmap.button1Disable:=hBitmapByColorAndText(ui.button1.size.w,ui.button1.size.h,0xff757772,"Block") - -hBitmap.button2:=hBitmapByColorAndText(ui.button2.size.w,ui.button2.size.h,0xffe2514b,"Exit") -hBitmap.button2Hover:=hBitmapByColorAndText(ui.button2.size.w,ui.button2.size.h,0xc0e2514b,"Exit") -hBitmap.title:=hBitmapByColorAndText(ui.title.size.w,ui.title.size.h,0x0000ffff,"I Wanna Clean Keyboard","bold cE0333224 S24 Center vCenter") -hBitmap.by:=hBitmapByColorAndText(ui.by.size.w,ui.by.size.h,0x0000ffff,"jiyucheng007@gmail.com","cE0333224 S14 Right vCenter") - -SetImage(borderw1,hBitmap.borderW) -SetImage(borderw2,hBitmap.borderW) -SetImage(borderh1,hBitmap.borderH) -SetImage(borderh2,hBitmap.borderH) -SetImage(button1,hBitmap.button1) -SetImage(button2,hBitmap.button2) -SetImage(title,hBitmap.title) -SetImage(by,hBitmap.by) -Gui, Show,% "w" ui.size.w " h" ui.size.h +gui_by:=mgui.Add("Pic","x" ui.by.pos.x " y" ui.by.pos.y " w" ui.by.size.w " h" ui.by.size.h " 0xe") + +hBitmap.title:=hBitmapBy2ColorAndText(ui.title.size.w,ui.title.size.h,ui.fgcolor,"iwck","bold cFFf1f1f1 S48 Left") +hBitmap.by:=hBitmapBy2ColorAndText(ui.by.size.w,ui.by.size.h,ui.fgcolor,"github.com/Nigh","cFFf1f1f1 S14 Right") + +hBitmap.button1:=hBitmapByBorderHatchAndText(ui.button1.size.w,ui.button1.size.h, +0xffad395c,2,ui.fgcolor,ui.bgcolor,ui.hatch,"Block") +hBitmap.button1Hover:=hBitmapByBorderHatchAndText(ui.button1.size.w,ui.button1.size.h, +0xffad395c,8,0xffad395c,ui.bgcolor,38,"Block") +hBitmap.button1Disable:=hBitmapByBorderHatchAndText(ui.button1.size.w,ui.button1.size.h, +0xff4b4b4b,4,0xff4b4b4b,ui.bgcolor,ui.hatch,"Block") + +hBitmap.button2:=hBitmapByBorderHatchAndText(ui.button2.size.w,ui.button2.size.h, +0xff4b4b4b,2,ui.fgcolor,ui.bgcolor,23,"Exit") +hBitmap.button2Hover:=hBitmapByBorderHatchAndText(ui.button2.size.w,ui.button2.size.h, +0xffad395c,8,0xffad395c,ui.bgcolor,23,"Exit") + +hBitmap.bg:=hBitmapByBorderHatchAndText(ui.size.w,ui.size.h, +0xff646464,4,0xff323232,ui.bgcolor,ui.hatch) + +SetImage(gui_bg.Hwnd,hBitmap.bg) +SetImage(gui_title.Hwnd,hBitmap.title) +SetImage(gui_by.Hwnd,hBitmap.by) +SetImage(gui_button1.Hwnd,hBitmap.button1) +SetImage(gui_button2.Hwnd,hBitmap.button2) +mgui.Show("w" ui.size.w " h" ui.size.h) Return -title: -PostMessage, 0xA1, 2 -Return +titleMove(*) +{ + PostMessage 0xA1, 2 +} -btn1: -if(!block){ - SetImage(button1,hBitmap.button1Disable) - block:=1 - Loop, % blockExKey.maxIndex() - Hotkey, % blockExKey[A_Index], block, On - SetTimer, blockKeyboard, -1 -}Else{ - SetImage(button1,hBitmap.button1Hover) - block:=0 - Loop, % blockExKey.maxIndex() - Hotkey, % blockExKey[A_Index], block, Off - Input, _,T0.1 +btn_onEvt(hwnd) +{ + global + if(hwnd=gui_button1.Hwnd){ + if(block!=1){ + SetImage(gui_button1.Hwnd,hBitmap.button1Disable) + block:=1 + Loop blockExKey.Length + Hotkey blockExKey[A_Index], "donothing", "On" + SetTimer "blockKeyboard", -1 + }Else{ + SetImage(gui_button1.Hwnd,hBitmap.button1Hover) + block:=0 + Loop blockExKey.Length + Hotkey blockExKey[A_Index], "donothing", "Off" + InputEnd + } + } + if(hwnd=gui_button2.Hwnd){ + ExitApp + } } -Return -block: +donothing: Return -blockKeyboard: -loop{ - Input, _, - if(!block) - Exit +blockKeyboard() +{ + global block + loop{ + Input _, + if(!block){ + Return + } + } } -Return - -btn2: -goto Exit buttonRelease(mouseFlag) { global if(mouseFlag="btn1"){ if(block=0) - SetImage(button1,hBitmap.button1) + SetImage(gui_button1.Hwnd,hBitmap.button1) } if(mouseFlag="btn2") - SetImage(button2,hBitmap.button2) + SetImage(gui_button2.Hwnd,hBitmap.button2) } WM_MOUSEMOVE(wp,lp,msg,hwnd) @@ -124,20 +141,20 @@ WM_MOUSEMOVE(wp,lp,msg,hwnd) lpy:=(lp>>16)&0xffff lpx:=lp&0xffff ; tooltip, % "WM_MOUSEMOVE:`n" hwnd+0 "," msg+0 "," lpx "," lpy - if(hwnd=button1){ + if(hwnd=gui_button1.Hwnd){ if(mouseFlag!="btn1"){ buttonRelease(mouseFlag) if(block=0){ - SetImage(button1,hBitmap.button1Hover) + SetImage(gui_button1.Hwnd,hBitmap.button1Hover) mouseFlag:="btn1" }Else{ mouseFlag:="" } } - }Else if(hwnd=button2){ + }Else if(hwnd=gui_button2.Hwnd){ if(mouseFlag!="btn2"){ buttonRelease(mouseFlag) - SetImage(button2,hBitmap.button2Hover) + SetImage(gui_button2.Hwnd,hBitmap.button2Hover) } mouseFlag:="btn2" }Else{ @@ -148,26 +165,80 @@ WM_MOUSEMOVE(wp,lp,msg,hwnd) } -hBitmapByColorAndText(w,h,bgcolor=0xffff0000,text="",option="") + +hBitmapHatch(w,h,bgcolor:=0xffff0000,fgcolor:=0xff00ff00,hatch:=0) { pBitmap := Gdip_CreateBitmap(w, h) - , G := Gdip_GraphicsFromImage(pBitmap) - , Gdip_SetSmoothingMode(G, 4) + G := Gdip_GraphicsFromImage(pBitmap) + Gdip_SetSmoothingMode(G, 4) + pBrush := Gdip_BrushCreateHatch(fgcolor,bgcolor,hatch) + Gdip_FillRectangle(G, pBrush, -1, -1, w+1, h+1) + hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) + Gdip_DeleteBrush(pBrush) + Gdip_DeleteGraphics(G) + Gdip_DisposeImage(pBitmap) + Return hBitmap +} +hBitmapByBorderHatchAndText(w,h,bdcolor:=0xffffffff,bdwidth:=1,fgcolor:=0xff00ff00,bgcolor:=0xff00ff00,hatch:=1,text:="",option:="") +{ + global ui + pBitmap := Gdip_CreateBitmap(w, h) + G := Gdip_GraphicsFromImage(pBitmap) + Gdip_SetSmoothingMode(G, 4) + pBrush := Gdip_BrushCreateHatch(fgcolor,bgcolor,hatch) + Gdip_FillRectangle(G, pBrush, -1, -1, w+1, h+1) + if(text!=""){ + if(option="") + Gdip_TextToGraphics(G, text,"cFFf1f1f1 S20 Center vCenter","Consolas",w,h) + Else + Gdip_TextToGraphics(G, text,option,"Consolas",w,h) + } + Gdip_DeleteBrush(pBrush) + if(bdwidth>0){ + pBrush := Gdip_BrushCreateSolid(bdcolor) + Gdip_FillRectangle(G, pBrush, -1, -1, w, bdwidth+1) + Gdip_FillRectangle(G, pBrush, 1, h-bdwidth-1, w, h) + Gdip_FillRectangle(G, pBrush, -1, -1, bdwidth+1, h) + Gdip_FillRectangle(G, pBrush, w-bdwidth-1, 1, w-1, h) + } + hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) + Gdip_DeleteBrush(pBrush) + Gdip_DeleteGraphics(G) + Gdip_DisposeImage(pBitmap) + Return hBitmap +} +hBitmapBy2ColorAndText(w,h,fgcolor:=0xff00ff00,text:="",option:="") +{ + global ui + Return hBitmapByBorderHatchAndText(w,h,,0,fgcolor,ui.bgcolor,ui.hatch,text,option) +} +hBitmapByColorAndText(w,h,bgcolor:=0xffff0000,text:="",option:="") +{ + pBitmap := Gdip_CreateBitmap(w, h) + G := Gdip_GraphicsFromImage(pBitmap) + Gdip_SetSmoothingMode(G, 4) pBrush := Gdip_BrushCreateSolid(bgcolor) Gdip_FillRectangle(G, pBrush, -1, -1, w+1, h+1) if(text!=""){ if(option="") - Gdip_TextToGraphics(G, text,"cFFf0f0f0 S20 Center vCenter","Arial",w,h) + Gdip_TextToGraphics(G, text,"cFFf1f1f1 S20 Center vCenter","Consolas",w,h) Else - Gdip_TextToGraphics(G, text,option,"Arial",w,h) + Gdip_TextToGraphics(G, text,option,"Consolas",w,h) } hBitmap := Gdip_CreateHBITMAPFromBitmap(pBitmap) Gdip_DeleteBrush(pBrush) - ,Gdip_DeleteGraphics(G) - ,Gdip_DisposeImage(pBitmap) - Return, hBitmap + Gdip_DeleteGraphics(G) + Gdip_DisposeImage(pBitmap) + Return hBitmap } +ExitFunc(ExitReason, ExitCode) +{ + global pToken + Gdip_Shutdown(pToken) +} +F6::Reload +F5:: Exit: GuiClose: Gdip_Shutdown(pToken)

8O5W^2zJaPZ6fwro&2Qg5S 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