55 lines
1.1 KiB
AutoHotkey
55 lines
1.1 KiB
AutoHotkey
#NoEnv
|
|
#SingleInstance, Force
|
|
|
|
SetBatchLines, -1
|
|
CoordMode, Mouse
|
|
CoordMode, Pixel
|
|
return
|
|
|
|
CapsLock::
|
|
KeyWait, CapsLock
|
|
MouseGetPos, X, Y
|
|
PixelGetColor, color, X, Y
|
|
FloodFill(x, y, color, 0x000000, 1, "Esc")
|
|
MsgBox Done!
|
|
Return
|
|
|
|
FloodFill( 0x, 0y, target, replacement, mode=1, key="" )
|
|
{
|
|
VarSetCapacity(Rect, 16, 0)
|
|
hDC := DllCall("GetDC", UInt, 0)
|
|
hBrush := DllCall("CreateSolidBrush", UInt, replacement)
|
|
|
|
l := 0
|
|
while l >= 0
|
|
{
|
|
if getkeystate(key, "P")
|
|
return
|
|
x := %l%x, y := %l%y
|
|
%l%p++
|
|
p := %l%p
|
|
PixelGetColor, color, x, y
|
|
if (color = target)
|
|
{
|
|
NumPut(x, Rect, 0)
|
|
NumPut(y, Rect, 4)
|
|
NumPut(x+1, Rect, 8)
|
|
NumPut(y+1, Rect, 12)
|
|
DllCall("FillRect", UInt, hDC, Str, Rect, UInt, hBrush)
|
|
}
|
|
else if (p = 1)
|
|
{
|
|
%l%x := %l%y := %l%p := "", l--
|
|
continue
|
|
}
|
|
if (p < 5)
|
|
ol := l++
|
|
, %l%x := %ol%x + (p = 1 ? 1 : p = 2 ? -1 : 0)
|
|
, %l%y := %ol%y + (p = 3 ? 1 : p = 4 ? -1 : 0)
|
|
else
|
|
%l%x := %l%y := %l%p := "", l--
|
|
}
|
|
|
|
DllCall("ReleaseDC", UInt, 0, UInt, hDC)
|
|
DllCall("DeleteObject", UInt, hBrush)
|
|
}
|