Code: Select all
/*
Written By: Hellbent aka. CivReborn
Date Started: Feb 12th, 2020
Date Of Last Edit: Dec 28th, 2020 (apr 14th, 2021)
Name: Toggle Clicker v2.0
;Credits: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=77617&p=337602#p337602
;Credits: flyingDman, JoeWinograd, BoBo
*/
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
SetMouseDelay, 10
OnExit, GuiClose
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global LongClick := 30
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global LBB64 := "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"
, RBB64 := "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"
global ToggleClicker := New TCV2
return
GuiClose:
ToggleClicker.MainWindow.DeleteWindow(1)
ExitApp
class TCV2 {
__New(){
;Set Default Object Values
This._ObjectSetup()
;Create all the window objects
This._CreateWindows()
;Add Window controls
This._AddControls()
;Setup the binds for all the timers
This._SetUpTimers()
;Setup the blob object and start the blob animation
This._SetUpBlobObject()
This._ToggleTimers(This.BlobTimer,50)
;Setup Banner object and start animation
This._SetUpBannerWindowObject()
This._ToggleTimers(This.BannerTimer,50)
;Draw Main Window Controls and start control hover timer
This._DrawWindows(Window := 1, Value := 0)
This._ToggleTimers(This.HoverTimer,50)
;Add Min and Close Buttons
This._AddMinAndClose()
}
_ObjectSetup(){
This.Buttons := []
This.AlwaysState := 1
This.CurrentWindow := 1
This.LastCtrl := ""
This.Active := 0
This.HKTog := 0
This.STime := 0
This.CDelay := 0
;Test clicker active state color change
This.StateColor := 1
;Settings
This.MouseButtonHwnds := []
This.MouseButton := 1 ;(1 = left, 2 = right)
;~ This.HotkeyDisplayValue := "Alt + a"
This.HotkeyDisplayValue := "Ctrl + F1"
;~ This.LastHotkeyDisplayValue := "Alt + a"
This.LastHotkeyDisplayValue := "Ctrl + F1"
;~ This.HotkeyValue := "!a"
This.HotkeyValue := "^F1"
;~ This.LastHotkeyValue := "!a"
This.LastHotkeyValue := "^F1"
Hotkey, % This.HotkeyValue, TF, On
;Sliders
This.SliderTrigger := []
This.SliderValue1 := 10
This.SliderValue2 := 10
This.SliderPosition1 := 68
This.SliderPosition2 := 68
This.ClickDurationValue := 2 ;(1=Fast,2=Med,3=Long)
;Options
This.SoundState := 1
This.AutoSaveState := 1
}
_Data(){
ToolTip, In Saved Data
}
_CreateWindows(){
;This main window containing the blobs
This.MainWindow := New LayeredWindow( x := "" , y := "" , w := 300 , h := 200 , window := 1 , title := "Toggle Clicker v2" , smoothing := 2 , options := "+AlwaysOnTop -DPIScale" , autoShow := 1 , GdipStart := 1 , WinMover := "" , BackgroundColor := "" )
;The moving title window
This.BannerWindow := New LayeredWindow( x := 30 , y := 0 , w := 240 , h := 40 , window := 2 , title := " " , smoothing := 2 , options := "-DPIScale +Parent1" , autoShow := 1 , GdipStart := 0 )
;The inner window containing all the main window controls
This.MainWindowControls := New LayeredWindow( x := 10 , y := 40 , w := 280 , h := 150 , window := 3 , title := " " , smoothing := 2 , options := "-DPIScale +Parent1" , autoShow := 1 , GdipStart := 0 )
;The Minimize and close buttons
This.MinsCloseWindow := New LayeredWindow( x := 0 , y := 0 , w := 300 , h := 30 , window := 4 , title := " " , smoothing := 2 , options := "-DPIScale +Parent1" , autoShow := 1 , GdipStart := 0 )
;The hotkey window
This.HotkeyWindow := New LayeredWindow( x := 10 , y := 40 , w := 280 , h := 150 , window := 5 , title := " " , smoothing := 2 , options := "+Parent1 -DPIScale" , autoShow := 1 , GdipStart := 0 )
;The Click speed options window
This.SpeedWindow := New LayeredWindow( x := 10 , y := 40 , w := 280 , h := 150 , window := 6 , title := " " , smoothing := 2 , options := "+Parent1 -DPIScale" , autoShow := 1 , GdipStart := 0 )
;The More Options window
This.MoreOptionsWindow := New LayeredWindow( x := 10 , y := 40 , w := 280 , h := 150 , window := 7 , title := " " , smoothing := 2 , options := "+Parent1 -DPIScale" , autoShow := 1 , GdipStart := 0 )
Gui,5:Hide
Gui,6:Hide
Gui,7:Hide
}
_AddMinAndClose(){
This.MinsCloseWindow.Draw( MinAndCloseButtons() , Positions := {x:0,y:0,w:300,h:30} , update := 1 , disposeBitmap := 1 , PaintBackground := 0)
This.MinsCloseWindow.ShowWindow()
}
_AddControls(){
local bd, hwnd
;Banner control (move Window)
Gui,2:Add,Text,x0 y0 w240 h30 hwndhwnd
bd := This._MoveWindow.Bind( This )
GuiControl, 2: +G , % hwnd , % bd
;Minimize and Close Buttons
Gui,4:Add,Text,x5 y5 w20 h20 hwndhwnd
bd := This._MinimizeWindow.Bind( This )
GuiControl, 4: +G , % hwnd , % bd
Gui,4:Add,Text,x275 y5 w20 h20 hwndhwnd
bd := This._CloseWindow.Bind( This )
GuiControl, 4: +G , % hwnd , % bd
;Main Window Controls (Buttons and always switch)
Gui,3:Add,Text,x10 y7 w130 h20 BackgroundTrans hwndhwnd
bd := This._SetAlways.Bind( This )
GuiControl, 3: +G , % hwnd , % bd
Gui,3:Add,Text,x30 y35 w220 h30 hwndhwnd
This.Buttons[hwnd] := 1
bd := This._SwitchWindows.Bind( This )
GuiControl, 3: +G , % hwnd , % bd
Gui,3:Add,Text,x30 y75 w220 h30 hwndhwnd
This.Buttons[hwnd] := 2
bd := This._SwitchWindows.Bind( This )
GuiControl, 3: +G , % hwnd , % bd
Gui,3:Add,Text,x30 y115 w220 h30 hwndhwnd
This.Buttons[hwnd] := 3
bd := This._SwitchWindows.Bind( This )
GuiControl, 3: +G , % hwnd , % bd
;Hotkeys Window Controls
;--------------------------------------------------------------------------------------
Gui,5:Add,Text, x25 y110 w120 h30 hwndhwnd
This.Buttons[hwnd] := 4
bd := This._SwitchWindows.Bind( This )
GuiControl, 5: +G , % hwnd , % bd
Gui,5:Add,Text, x30 y15 w110 h15 hwndhwnd
This.MouseButtonHwnds[hwnd] := 1
bd := This._SetClickButton.Bind( This )
GuiControl, 5: +G , % hwnd , % bd
Gui,5:Add,Text, x150 y15 w110 h15 hwndhwnd
This.MouseButtonHwnds[hwnd] := 2
bd := This._SetClickButton.Bind( This )
GuiControl, 5: +G , % hwnd , % bd
This.Gui5FocusText := hwnd
Gui,5:Add,Hotkey,x10 y65 w130 h30 hwndhwnd
This.HKHwnd := hwnd
bd := This._SetUpHK.Bind( This )
GuiControl, 5: +G , % hwnd , % bd
;Click Speed window controls
;----------------------------------------------------------------------------------------
Gui,6:Add,Text,x28 y30 w22 h82 hwndhwnd
This.SliderTrigger[hwnd] := 1
bd := This._AdjustSlider.Bind( This )
GuiControl, 6: +G , % hwnd , % bd
Gui,6:Add,Text,x229 y30 w22 h82 hwndhwnd
This.SliderTrigger[hwnd] := 2
bd := This._AdjustSlider.Bind( This )
GuiControl, 6: +G , % hwnd , % bd
Gui,6:Add,Text,x80 y110 w120 h30 hwndhwnd
This.Buttons[hwnd] := 5
bd := This._SwitchWindows.Bind( This )
GuiControl, 6: +G , % hwnd , % bd
Gui,6:Add,Text,x80 y40 w30 h30 hwndhwnd
This.Buttons[hwnd] := 6
bd := This._SetClickDuration.Bind( This )
GuiControl, 6: +G , % hwnd , % bd
Gui,6:Add,Text,x170 y40 w30 h30 hwndhwnd
This.Buttons[hwnd] := 7
bd := This._SetClickDuration.Bind( This )
GuiControl, 6: +G , % hwnd , % bd
;More Options Window Controls
Gui,7:Add,Text,x50 y25 w180 h23 hwndhwnd ;gShareClickerLink
This.Buttons[hwnd] := 8
bd := This._ShareLink.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
Gui,7:Add,Text,x50 y55 w180 h23 hwndhwnd ;gMoreClickers
This.Buttons[hwnd] := 9
bd := This._MoreClickers.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
Gui,7:Add,Text,x50 y85 w180 h23 hwndhwnd ;gAdvancedOptions
This.Buttons[hwnd] := 10
bd := This._AdvancedOptions.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
Gui,7:Add,Text,x50 y115 w180 h23 hwndhwnd ;gMoreOptionsWindowBack
This.Buttons[hwnd] := 11
bd := This._SwitchWindows.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
Gui,7:Add,Text,x10 y5 w80 h15 hwndhwnd ;gSounds
bd := This._ToggleSounds.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
Gui,7:Add,Text,x164 y5 w100 h15 hwndhwnd ;gAutoSave
bd := This._ToggleAutoSave.Bind( This )
GuiControl, 7: +G , % hwnd , % bd
}
_SetUpHK(){
GuiControlGet, tempout,5:, % This.HKHwnd
This.HotkeyDisplayValue := tempout
This.HotkeyDisplayValue := StrReplace(This.HotkeyDisplayValue, "+" , "Shift + ")
This.HotkeyDisplayValue := StrReplace(This.HotkeyDisplayValue, "!" , "Alt + ")
This.HotkeyDisplayValue := StrReplace(This.HotkeyDisplayValue, "^" , "Ctrl + ")
if(This.HotkeyDisplayValue != ""){
This.HotkeyValue := tempout
}else{
This.HotkeyValue := ""
}
This._DrawWindows()
}
_TestHK2(){
static togg:=1
if(togg:=!togg){
HK := This.HK
Hotkey, Numpad1,% HK, Off
ToolTip, Hotkey 1 off
}else{
HK := This.HK
Hotkey, Numpad1,% HK, On
ToolTip, Hotkey 1 on
}
This._ToggleTimers(This.Tooltips,1000)
}
_ToggleAutoSave(){
if(This.AutoSaveState:=!This.AutoSaveState){
ToolTip, Auto Save On`nThis feature is currently unavailable
}else{
ToolTip, Auto Save OFF`nThis feature is currently unavailable
}
This._ToggleTimers(This.Tooltips,1000)
This._DrawWindows()
}
_ToggleSounds(){
if(This.SoundState:=!This.SoundState){
ToolTip, Sounds ON
}else{
ToolTip, Sounds OFF
}
This._ToggleTimers(This.Tooltips,1000)
This._DrawWindows()
}
_ShareLink(){
;Place video link here once the video is complete
;~ ToolTip, In share link
This._ToggleTimers(This.Tooltips,1000)
Try{
Run, https://youtu.be/cFKpZyIC7Tg
}catch{
MsgBox, Failed to run video.
}
}
_MoreClickers(){
Try{
run, https://www.youtube.com/playlist?list=PLPI5C2_hIGGw7poIqgox3rDnyocwTxcY_
}catch{
Msgbox,Unable to run Auto Clicker Youtube Page
}
}
_AdvancedOptions(){
Tooltip,This feature is currently unavailable
This._ToggleTimers(This.Tooltips,1000)
}
_SetHotkey(){
}
_SetClickDuration(){
local ctrl, rd:=1
MouseGetPos,,,,ctrl,2
(This.Buttons[ctrl]=6)?((--This.ClickDurationValue=0)?(This.ClickDurationValue:=1,rd:=0)):((++This.ClickDurationValue=4)?(This.ClickDurationValue:=3,rd:=0))
if(rd)
This._DrawWindows()
}
_AdjustSlider(){
local ctrl, activeSlider, tty, tx, ty2
This._ToggleTimers(This.HoverTimer,"Off")
MouseGetPos,,,,ctrl,2
activeSlider := This.SliderTrigger[ctrl]
Coordmode,Mouse,Client
tty := 999
While(GetKeyState("LButton")){
MouseGetPos,tx,ty2
if(tty=ty2){
sleep,50
continue
}
tty:=ty2
(ty2<84)?(ty2:=84):(ty2>144)?(ty2:=144)
if(activeSlider=1){
This.SliderValue1 := ((ty2-84)//(60//20)-20)*-1
(This.SliderValue1=0)?(This.SliderValue1:=1)
This.SliderPosition1 := ty2-45
if(GetKeyState("Shift")){
This.SliderPosition2 := This.SliderPosition1
This.SliderValue2 := This.SliderValue1
}
}else{
This.SliderValue2 := ((ty2-84)//(60//20)-20)*-1
(This.SliderValue2=0)?(This.SliderValue2:=1)
This.SliderPosition2 := ty2-45
if(GetKeyState("Shift")){
This.SliderPosition1 := This.SliderPosition2
This.SliderValue1 := This.SliderValue2
}
}
This._DrawWindows()
sleep, 50
}
This._ToggleTimers(This.HoverTimer,50)
}
_SetClickButton(){
local ctrl
MouseGetPos,,,,ctrl,2
This.MouseButton := This.MouseButtonHwnds[ctrl]
This._DrawWindows()
}
_MinimizeWindow(){
Gui,1:Minimize
}
_CloseWindow(){
This.MainWindow.DeleteWindow(1)
ExitApp
}
_SetAlways(){
Gui,% (This.AlwaysState:=!This.AlwaysState)?("1:+AlwaysOnTop",This._DrawWindows()):("1:-AlwaysOnTop",This._DrawWindows())
}
_SetUpTimers(){
This.HoverTimer := HoverTimer := ObjBindMethod( This , "_ControlHoverTimer" )
This.BlobTimer := BlobTimer := ObjBindMethod( This , "_AnimateBlobs" )
This.BannerTimer := BannerTimer := ObjBindMethod( This , "_AnimateBanner" )
This.Tooltips := Tooltips := ObjBindMethod( This , "_TooltipsOff" )
;~ This.HK := HK := ObjBindMethod( This , "_TestHK" )
;~ This.HK2 := HK2 := ObjBindMethod( This , "_TestHK2" )
;~ Hotkey, Numpad1,% HK, On
;~ Hotkey, Numpad2,% HK2, On
}
_TooltipsOff(){
ToolTip,
This._ToggleTimers(This.Tooltips,"Off")
}
_ToggleTimers(Timer,Value){
CurrentTimer := Timer
SetTimer, %CurrentTimer%, %Value%
}
_DrawWindows(){
if(This.CurrentWindow=1){
This.MainWindowControls.ClearWindow()
This.Pen1 := Gdip_CreatePen( "0xFF440000" , 1 )
Gdip_DrawRectangle(This.MainWindowControls.G, This.Pen1, 0, 0, This.MainWindowControls.W-1, This.MainWindowControls.H-1)
Gdip_DeletePen( This.Pen1 )
Gdip_DrawImage(This.MainWindowControls.G, This.AlwaysBit := AlwaysSwitch(This.AlwaysState), 0, 0, This.MainWindowControls.W, 30)
Gdip_DisposeImage( This.AlwaysBit )
Gdip_DrawImage(This.MainWindowControls.G, This.ButtonsBit := TogClButtSet1(This.Active), 0, 0, This.MainWindowControls.W, This.MainWindowControls.H)
Gdip_DisposeImage( This.ButtonsBit )
This.MainWindowControls.ShowWindow()
}else if(This.CurrentWindow=2){
;~ Settings := {SLV1:10,SLV2:10,CDV:2,SLP1:68,SLP2:68,BackH:0,PlusH:0,MinusH:0,HKUpdate:This.Active,HKButton:1,MWShareLink:0,MoreClickers:0,AdvancedOptions:0,MOWBack:0,Sounds:1,AutoSave:1,HK:"Alt + a",LHK:"!a",HKValue:"!a"}
;~ This.Settings := Settings
This.HotkeyWindow.ClearWindow()
This.HotkeyWindow.Draw( HKWindow(This) , Positions := {x:0,y:0,w:280,h:150} , update := 1 , disposeBitmap := 1 , PaintBackground := 0)
This.HotkeyWindow.ShowWindow()
;~ Gui, 5:-Disabled
;~ Settings := "", This.Settings := ""
}else if(This.CurrentWindow=3){
This.SpeedWindow.ClearWindow()
This.SpeedWindow.Draw( ClickWindow(This) , Positions := {x:0,y:0,w:280,h:150} , update := 1 , disposeBitmap := 1 )
This.SpeedWindow.ShowWindow()
}else if(This.CurrentWindow=4){
This.MoreOptionsWindow.ClearWindow()
This.MoreOptionsWindow.Draw( OptionsWindow(This) , Positions := {x:0,y:0,w:280,h:150} , update := 1 , disposeBitmap := 1 , PaintBackground := 0)
This.MoreOptionsWindow.ShowWindow()
}
}
_SwitchWindows(){
local Ctrl
This.Active := 0
MouseGetPos,,,,ctrl,2
If(This.CurrentWindow=1){
Gui, 3:Hide
This.CurrentWindow := This.Buttons[ctrl] + 1
}else if(This.CurrentWindow=2){
;~ Gui, 5:+Disabled
Guicontrol, 5:Focus, % This.Gui5FocusText
Gui, 5:Hide
This.CurrentWindow := 1
if(This.LastHotkeyValue != ""){
Hotkey, % This.LastHotkeyValue, TF, Off
This.LastHotkeyValue := ""
}
if(This.HotkeyValue != ""){
Hotkey, % This.HotkeyValue, TF, On
This.LastHotkeyValue := This.HotkeyValue
}
}else if(This.CurrentWindow=3){
Gui, 6:Hide
This.CurrentWindow := 1
}else if(This.CurrentWindow=4){
Gui, 7:Hide
This.CurrentWindow := 1
}
This._DrawWindows()
}
_SetUpBlobObject(){
This.Blobs := []
Loop, 50
This.Blobs.Push({X:This._Random(-10,300),Y:This._Random(-10,200),W:This._Random(5,30),Phase:This._Random(0,1),Co:This._Random(0,3),Max: Max:=This._Random(10,50),Min: This._Random(3,Max)})
This.BackgroundBrush := Gdip_BrushCreateSolid( "0xFF880000" )
This.BackgroundPen := Gdip_CreatePen( "0xFF440000" , 1 )
}
_SetUpBannerWindowObject(){
This.BannerWindow.Bitmap1 := BannerTag("Wash Your Hands"), This.BannerWindow.Bitmap2 := BannerTag("HB Toggle Clicker"), This.Bit := This.BannerWindow.Bitmap2
This.BannerWindow.X := 20, This.BannerWindow.Y := 0, This.BannerWindow.W := 160, This.BannerWindow.H := 30
This.BannerWindow.Dir1 := 1, This.BannerWindow.Dir2 := 1
This.BannerWindow.PhaseCo := 0, This.BannerWindow.Phase := 1
Gdip_DrawImage(This.BannerWindow.G, This.BannerWindow.Bitmap2, This.BannerWindow.X, This.BannerWindow.Y, This.BannerWindow.W, This.BannerWindow.H)
}
_AnimateBlobs(){
This.MainWindow.PaintBackground( BackgroundColor := "0x19171719" )
loop, % This.Blobs.Length(){
(This.Blobs[A_Index].Phase=1&&This.Blobs[A_Index].W<This.Blobs[A_Index].Min)?(This.Blobs[A_Index].Phase := 0):(This.Blobs[A_Index].Phase=0&&This.Blobs[A_Index].W>This.Blobs[A_Index].Max)?(This.Blobs[A_Index].Phase := 1 , This.Blobs[A_Index].Co += 1)
(This.Blobs[A_Index].Phase=1)?(This.Blobs[A_Index].X += 1,This.Blobs[A_Index].Y += 1,This.Blobs[A_Index].W -= 2,This.Blobs[A_Index].H -= 2):(This.Blobs[A_Index].X -= 1,This.Blobs[A_Index].Y -= 1,This.Blobs[A_Index].W += 2,This.Blobs[A_Index].H += 2)
(This.Blobs[A_Index].Co>4)?(This.Blobs[A_Index] := {X:This._Random(-10,300),Y:This._Random(-10,200),W:This._Random(5,30),Phase:This._Random(0,1),Co:This._Random(0,3),Max: Max:=This._Random(10,50),Min:This._Random(3,Max)})
Brush3 := Gdip_CreateLineBrushFromRect( This.Blobs[A_Index].x, This.Blobs[A_Index].y, This.Blobs[A_Index].w, This.Blobs[A_Index].w , "0xff660000" , "0xff000000" , 1 , 1 )
Gdip_FillEllipse(This.MainWindow.G, Brush3, This.Blobs[A_Index].x, This.Blobs[A_Index].y, This.Blobs[A_Index].w, This.Blobs[A_Index].w)
Gdip_DeleteBrush( Brush3 )
Gdip_DrawRectangle(This.MainWindow.G, This.BackgroundPen,0, 0, 299, 199)
}
This.MainWindow.UpdateWindow()
}
_AnimateBanner(){
(This.BannerWindow.Dir1=1&&This.BannerWindow.X>=10)?(This.BannerWindow.X-=2):(This.BannerWindow.Dir1=1&&This.BannerWindow.X<10)?(This.BannerWindow.Dir1:=2)
(This.BannerWindow.Dir1=2&&This.BannerWindow.X<=70)?(This.BannerWindow.X+=3):(This.BannerWindow.Dir1=2&&This.BannerWindow.X>70)?(This.BannerWindow.Dir1:=1)
(This.BannerWindow.Dir2=1&&This.BannerWindow.Y<=10)?(This.BannerWindow.Y+=.3):(This.BannerWindow.Dir2=1&&This.BannerWindow.Y>10)?(This.BannerWindow.Dir2:=2)
(This.BannerWindow.Dir2=2&&This.BannerWindow.Y>=2)?(This.BannerWindow.Y-=.3):(This.BannerWindow.Dir2=2&&This.BannerWindow.Y<2)?(This.BannerWindow.Dir2:=1)
(++This.BannerWindow.PhaseCo>30)?(This.BannerWindow.PhaseCo:=0,(This.BannerWindow.Phase=1)?(This.Bit:=This.BannerWindow.Bitmap2,This.BannerWindow.Phase:=2):(This.Bit:=This.BannerWindow.Bitmap1,This.BannerWindow.Phase:=1))
This.BannerWindow.ClearWindow()
if(This.StateColor=1){
Gdip_DrawImage(This.BannerWindow.G, This.Bit, This.BannerWindow.X, This.BannerWindow.Y, This.BannerWindow.W, This.BannerWindow.H)
}else{
bitt := BannerTag("HB Toggle Clicker",This)
;~ This.MoreOptionsWindow.Draw( BannerTag("HB Toggle Clicker",This) , Positions := {x:This.BannerWindow.X,y:This.BannerWindow.Y,w:This.BannerWindow.W,h:This.BannerWindow.H} , update := 1 , disposeBitmap := 1 , PaintBackground := 0)
Gdip_DrawImage(This.BannerWindow.G, bitt, This.BannerWindow.X, This.BannerWindow.Y, This.BannerWindow.W, This.BannerWindow.H)
Gdip_DisposeImage( Bitt )
}
This.BannerWindow.UpdateWindow()
}
_ControlHoverTimer(){
local ctrl
MouseGetPos,,,,ctrl,2
if(This.Buttons[ctrl]&&!This.Active){
This.LastCtrl := ctrl
This.Active := This.Buttons[ctrl]
This._DrawWindows()
}else if(This.Buttons[This.LastCtrl]!=This.Buttons[ctrl]&&This.Active){
This.Active := 0
This._DrawWindows()
}
;~ ToolTip,% " in hover timer `n" This.Active "`n" This.LastCtrl
}
_Random(Min,Max){
random,Out,Min,Max
return Out
}
_MoveWindow(){
PostMessage, 0xA1, 2,,,Toggle Clicker v2
This._ToggleTimers(This.HoverTimer,"Off")
KeyWait, LButton
This._ToggleTimers(This.HoverTimer,50)
}
ToggleFunctionality(){
local hz := 600
if(This.HKTog:=!This.HKTog){
This._ToggleTimers(This.BlobTimer,"Off")
This._ToggleTimers(This.BannerTimer,"Off")
if(This.SoundState)
SoundBeep, 450
}else{
if(This.SoundState)
Loop, 3
SoundBeep, % hz
This._ToggleTimers(This.BlobTimer,50)
This._ToggleTimers(This.BannerTimer,50)
}
}
ClickFunctionality(){
SetMouseDelay, % ttt := ((This.ClickDurationValue=1)?(-1):(This.ClickDurationValue=2)?(10):(LongClick))
This.STime := A_TickCount
This.CDelay := 1000 / This._Random(This.SliderValue1,This.SliderValue2)
if(This.MouseButton=1){
While(GetKeyState("LButton","P")){
Sleep, 10
if(Winactive("AHK_ID " This.MainWindow.Hwnd)){
Gosub, TF
break
}
if(This.STime+This.CDelay<=A_TickCount){
This.CDelay := (1000 / This._Random(This.SliderValue1,This.SliderValue2)) - (A_TickCount - (This.STime+This.CDelay))
This.STime := A_TickCount
Click,
}
}
}else if(This.MouseButton=2){
While(GetKeyState("RButton","P")){
Sleep, 10
if(Winactive("AHK_ID " This.MainWindow.Hwnd)){
Gosub, TF
break
}
if(This.STime+This.CDelay<=A_TickCount){
This.CDelay := (1000 / This._Random(This.SliderValue1,This.SliderValue2)) - (A_TickCount - (This.STime+This.CDelay))
This.STime := A_TickCount
Click Right,
}
}
}
}
}
TF:
ToggleClicker.ToggleFunctionality()
return
#IF (ToggleClicker.HKTog && ToggleClicker.MouseButton=1)
~$LButton::
ToggleClicker.ClickFunctionality()
return
#IF
#IF (ToggleClicker.HKTog && ToggleClicker.MouseButton=2)
~$RButton::
ToggleClicker.ClickFunctionality()
return
#IF
;<<<<<<<<<<<<<<<<<<<<<<< Assets >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;***********************************************************************************************************************************************************************
;*** ***
;*** Layered Window Class ***
;*** ***
;***********************************************************************************************************************************************************************
class LayeredWindow {
;LayeredWindow class By: Hellbent
__New( x := 0 , y := 0 , w := 100 , h := 100 , window := 1 , title := " " , smoothing := 4 , options := "" , autoShow := 1 , GdipStart := 0 , WinMover := "" , BackgroundColor := "" ){
This.X := x , This.Y := y , This.W := w , This.H := h
This.Window := window , This.Title := title
This.Options := options , This.Smoothing := smoothing
( GdipStart ) ? ( This.Token := Gdip_Startup() )
This._CreateWindow()
( autoShow ) ? ( This.ShowWindow() )
This._SetUpdateLayeredWindow()
( WinMover ) ? ( This._AddMoveTrigger( WinMover ) )
( BackgroundColor ) ? ( This.PaintBackground( BackgroundColor , 1 ) )
}
_CreateWindow(){
Gui , % This.Window ": New" , % " +E0x80000 +LastFound -Caption " This.Options
This.Hwnd := WinExist()
This.hbm := CreateDIBSection( This.W , This.H )
This.hdc := CreateCompatibleDC()
This.obm := SelectObject( This.hdc , This.hbm )
This.G := Gdip_GraphicsFromHDC( This.hdc )
Gdip_SetSmoothingMode( This.G , This.Smoothing )
}
_SetUpdateLayeredWindow(){
UpdateLayeredWindow( This.hwnd , This.hdc , This.X , This.Y , This.W , This.H )
}
UpdateWindow(){
UpdateLayeredWindow( This.hwnd , This.hdc )
}
ShowWindow( update := 1 , Position := "" ){
if( !Position )
Gui , % This.Window ": Show" , % "w" This.W " h" This.H , % ( This.Title ) ? ( This.Title ) : ( "" )
else
Gui , % This.Window ": Show" , % "x" Position.X " y" Position.Y "w" Position.W " h" Position.H , % ( This.Title ) ? ( This.Title ) : ( "" )
( update ) ? ( This.UpdateWindow() )
}
_AddMoveTrigger( positons ){
local hwnd , bd
Gui , % This.Window " : Add" , Text , % "x" positons.x " y" positons.y " w" positons.w " h" positons.h " hwndhwnd"
This.MoveHwnd := hwnd
bd := This._WindowMover.Bind( This )
GuiControl , % This.Window ": +G" , % This.MoveHwnd , % bd
}
_WindowMover(){
PostMessage, 0xA1 , 2
}
PaintBackground( BackgroundColor := "0xFF000000" , update := 0){
local Brush
This.BackgroundColor := BackgroundColor
Brush := Gdip_BrushCreateSolid( BackgroundColor )
Gdip_FillRectangle( This.G , Brush , 0 , 0 , This.W , This.H )
Gdip_DeleteBrush( Brush )
( update ) ? ( This.UpdateWindow() )
}
Draw( pBitmap , Positions := "" , update := 1 , disposeBitmap := 0 , PaintBackground := 0){
(PaintBackground) ? ( This.PaintBackground( This.BackgroundColor ) )
Gdip_DrawImage( This.G
, pBitmap
, ( Positions.X1 ) ? ( Positions.X1 ) : ( Positions.X ) ? ( Positions.X ) : ( "" )
, ( Positions.Y1 ) ? ( Positions.Y1 ) : ( Positions.Y ) ? ( Positions.Y ) : ( "" )
, ( Positions.W1 ) ? ( Positions.W1 ) : ( Positions.W ) ? ( Positions.W ) : ( "" )
, ( Positions.H1 ) ? ( Positions.H1 ) : ( Positions.H ) ? ( Positions.H ) : ( "" )
, ( Positions.X2 ) ? ( Positions.X2 ) : ( Positions.SX ) ? ( Positions.SX ) : ( "" )
, ( Positions.Y2 ) ? ( Positions.Y2 ) : ( Positions.SY ) ? ( Positions.SY ) : ( "" )
, ( Positions.W2 ) ? ( Positions.W2 ) : ( Positions.SW ) ? ( Positions.SW ) : ( "" )
, ( Positions.H2 ) ? ( Positions.H2 ) : ( Positions.SH ) ? ( Positions.SH ) : ( "" ) )
( update ) ? ( This.UpdateWindow() )
( disposeBitmap ) ? ( Gdip_DisposeImage( pBitmap ) )
}
ClearWindow( update := "" ){
Gdip_GraphicsClear( This.G )
( update ) ? ( This.UpdateWindow() )
}
Add_Trigger(PositionObject,Label:="GuiClose"){
Gui, % This.Window ": Add", Text, % "x" PositionObject.X " y" PositionObject.Y " w" PositionObject.W " h" PositionObject.H " g" Label " BackgroundTrans"
}
Draw_Text(PosObj,Text,Font:="Arial",FontSize:="12",Color1:="0xFFFFFFFF",Color2:="",PosObj2:="",update:=0){
local Brush
(!color2&&color2!="000000")?(Color2:=Color1)
(StrLen(Color1)=6)?( Color1 := "0xFF" Color1 )
(StrLen(Color2)=6)?( Color2 := "0xFF" Color2 )
(PosObj2="")?(PosObj2:=PosObj)
Brush := Gdip_CreateLineBrushFromRect( 0 , 0 , PosObj2.W , PosObj2.H , Color1 , Color2 , 1 , 1 )
Gdip_TextToGraphics(This.G, Text, "s" FontSize " c" Brush " Center vCenter Bold x" PosObj.X " y" PosObj.Y, Font , PosObj.W, PosObj.H)
Gdip_DeleteBrush( Brush )
( update ) ? ( This.UpdateWindow() )
}
Draw_Rectangle(Thickness:="5",PosObj:="",Color1:=0xFFFFFFFF,Color2:="",PosObj2:="",update:=0){
local Brush, pPen
(!color2)?(Color2:=Color1)
(StrLen(Color1)=6)?( Color1 := "0xFF" Color1 )
(StrLen(Color2)=6)?( Color2 := "0xFF" Color2 )
(PosObj2="")?(PosObj2:=PosObj)
Brush := Gdip_CreateLineBrushFromRect( 0 , 0 , PosObj2.W , PosObj2.H , Color1 , Color2 , 1 , 1 )
pPen := Gdip_CreatePenFromBrush(Brush, Thickness)
Gdip_DrawRectangle( This.G, pPen, PosObj.X , PosObj.Y , PosObj.W , PosObj.H )
Gdip_DeleteBrush( Brush )
Gdip_DeletePen(pPen)
( update ) ? ( This.UpdateWindow() )
}
DeleteWindow( TurnOffGdip := 0 ){
Gui, % This.Window " : Destroy"
SelectObject( This.hdc , This.obm )
DeleteObject( This.hbm )
DeleteDC( This.hdc )
Gdip_DeleteGraphics( This.G )
( TurnOffGdip && This.Token ) ? ( Gdip_Shutdown( This.Token ) )
}
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Banner
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
BannerTag(txt := "Wash Your Hands" , OBJ := "" ){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 160 , 30 ),G := Gdip_GraphicsFromImage( pBitmap ),Gdip_SetSmoothingMode( G , 2 )
;~ Brush := Gdip_BrushCreateSolid( "0xFF888888" )
Brush := Gdip_BrushCreateSolid((OBJ.StateColor=2)?("0xFFff0000"):(OBJ.StateColor=3)?("0xFFff0000"):("0xFF888888"))
Gdip_FillRoundedRectangle( G , Brush , 1 , 2 , 157 , 26 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF171719" )
;~ Brush := Gdip_BrushCreateSolid( (OBJ.StateColor=2)?("0xFFFFFF00"):(OBJ.StateColor=3)?("0xFF00FF00"):("0xFF171719") )
Gdip_FillRoundedRectangle( G , Brush , 2 , 3 , 155 , 24 , 3 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0xFFaaaaaa" )
Brush := Gdip_BrushCreateSolid( (OBJ.StateColor=2)?("0xFFff0000"):(OBJ.StateColor=3)?("0xFFff0000"):("0xFFaaaaaa") )
Gdip_TextToGraphics( G , txt , "s16 Center vCenter Bold c" Brush " x-1 y0" , "Segoe ui" , 160 , 30 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0xFF770000" )
Brush := Gdip_BrushCreateSolid( (OBJ.StateColor=2)?("0xFFffff00"):(OBJ.StateColor=3)?("0xFF00FF00"):("0xFF770000") )
Gdip_TextToGraphics( G , txt , "s16 Center vCenter Bold c" Brush " x0 y1" , "Segoe ui" , 160 , 30 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Always on top graphics
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
AlwaysSwitch(val := 1){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 280 , 30 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 2 )
Brush := Gdip_CreateLineBrushFromRect( 11 , 7 , 15 , 16 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 10 , 7 , 15 , 15 )
Gdip_DeleteBrush( Brush )
if(val=1)
;~ Brush := Gdip_CreateLineBrushFromRect( 11 , 7 , 15 , 16 , "0xFF990000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 11 , 7 , 15 , 16 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
else
Brush := Gdip_CreateLineBrushFromRect( 11 , 7 , 15 , 16 , "0x66171719" , "0x66000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 11 , 8 , 13 , 13 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "AlwaysOnTop" , "s16 vCenter Bold c" Brush " x27 y0" , "Segoe ui" , 150 , 30 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 29 , 7 , 107 , 16 , "0xFF880000" , "0xFF000000" , 1 , 1 )
;~ Brush := Gdip_CreateLineBrushFromRect( 29 , 7 , 107 , 16 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 29 , 7 , 107 , 16 , (val=1)?("0xFFff0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "AlwaysOnTop" , "s16 vCenter Bold c" Brush " x28 y1" , "Segoe ui" , 150 , 30 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Min and close button set
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
MinAndCloseButtons(){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 300 , 30 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 4 )
;min ;x5 y5 w20 h20
Brush := Gdip_BrushCreateSolid( "0x88666666" )
Gdip_FillEllipse( G , Brush , 5 , 5 , 20 , 20 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0x88171719" )
Gdip_FillEllipse( G , Brush , 6 , 6 , 18 , 18 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFaaaaaa" )
Gdip_TextToGraphics( G , "_" , "s28 Center vCenter Bold c" Brush " x5 y-7" , "Segoe ui" , 20 , 20 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF770000" )
Gdip_TextToGraphics( G , "_" , "s28 Center vCenter Bold c" Brush " x6 y-6" , "Segoe ui" , 20 , 20 )
Gdip_DeleteBrush( Brush )
;close ;x275 y5 w20 h20
Brush := Gdip_BrushCreateSolid( "0x88888888" )
Gdip_FillEllipse( G , Brush , 275 , 5 , 20 , 20 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0x88171719" )
Gdip_FillEllipse( G , Brush , 276 , 6 , 18 , 18 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFaaaaaa" )
Gdip_TextToGraphics( G , "x" , "s16 Center vCenter Bold c" Brush " x275 y4" , "Segoe ui" , 20 , 20 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF770000" )
Gdip_TextToGraphics( G , "x" , "s16 Center vCenter Bold c" Brush " x276 y5" , "Segoe ui" , 20 , 20 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Main window button set
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
TogClButtSet1(value:=0){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 280 , 150 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 2 )
Brush := Gdip_BrushCreateSolid( "0x01777777" )
Gdip_FillRectangle( G , Brush , 0 , 0 , 280 , 150 )
Gdip_DeleteBrush( Brush )
;Hotkeys
Brush := Gdip_CreateLineBrushFromRect( 29 , 36 , 221 , 28 , (Value=1)?("0xFFaa0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 30 , 35 , 220 , 30 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( (Value=1)?("0x44000000"):("0x44222222") )
Gdip_FillRoundedRectangle( G , Brush , 31 , 36 , 218 , 28 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Hotkeys" , "s16 Center vCenter Bold c" Brush " x30 y35" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 109 , 38 , 72 , 14 , (Value=1)?("0xFF000000"):("0xFF880000") , (Value=1)?("0xFF880000"):("0xFF000000") , 1 , 1 )
Gdip_TextToGraphics( G , "Hotkeys" , "s16 Center vCenter Bold c" Brush " x31 y36" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
;Click Speed
Brush := Gdip_CreateLineBrushFromRect( 30 , 74 , 219 , 29 ,(Value=2)?("0xFFaa0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 30 , 75 , 220 , 30 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( (Value=2)?("0x44000000"):("0x44222222") )
Gdip_FillRoundedRectangle( G , Brush , 31 , 76 , 218 , 28 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Click Speed" , "s16 Center vCenter Bold c" Brush " x30 y75" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 92 , 77 , 94 , 17 ,(Value=2)?("0xFF000000"):("0xFF880000") ,(Value=2)?("0xFF880000"):("0xFF000000") , 1 , 1 )
Gdip_TextToGraphics( G , "Click Speed" , "s16 Center vCenter Bold c" Brush " x31 y76" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
;More Options
Brush := Gdip_CreateLineBrushFromRect( 31 , 115 , 216 , 27 ,(Value=3)?("0xFFaa0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 30 , 115 , 220 , 30 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( (Value=3)?("0x44000000"):("0x44222222") )
Gdip_FillRoundedRectangle( G , Brush , 31 , 116 , 218 , 28 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "More Options" , "s16 Center vCenter Bold c" Brush " x30 y115" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
if(Value=3)
Brush := Gdip_CreateLineBrushFromRect( 87 , 116 , 105 , 18 , "0xFF000000" , "0xFF880000" , 1 , 1 )
else
Brush := Gdip_CreateLineBrushFromRect( 87 , 116 , 105 , 18 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "More Options" , "s16 Center vCenter Bold c" Brush " x31 y116" , "Segoe ui" , 218 , 28 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Hotkeys Window
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
HKWindow(obj){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 280 , 150 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 2 )
Brush := Gdip_BrushCreateSolid( "0x01777777" )
Gdip_FillRectangle( G , Brush , 0 , 0 , 280 , 150 )
Gdip_DeleteBrush( Brush )
Pen := Gdip_CreatePen( "0xFF440000" , 1 )
Gdip_DrawRectangle( G , Pen , 0 , 0 , 279 , 149 )
Gdip_DeletePen( Pen )
Pen := Gdip_CreatePen( "0xFF440000" , 1 )
Gdip_DrawRectangle( G , Pen , 10 , 5 , 259 , 31 )
Gdip_DeletePen( Pen )
Brush := Gdip_CreateLineBrushFromRect( 30 , 15 , 15 , 15 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 30 , 15 , 15 , 15 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 31 , 16 , 14 , 12 , "0xffff0000" , "0xff000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 31 , 16 , 14 , 12 ,(obj.MouseButton=1)?("0xffff0000"):("0x55ff0000") , "0xff000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 31 , 16 , 13 , 13 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Left Click" , "s16 Center vCenter Bold c" Brush " x37 y-3" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 53 , 16 , 70 , 12 , "0xFFff0000" , "0xFF440000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 53 , 16 , 70 , 12 , (obj.MouseButton=1)?("0xFFff0000"):("0xff880000") , (obj.MouseButton=1)?("0xFF440000"):("0xFF220000") , 1 , 1 )
Gdip_TextToGraphics( G , "Left Click" , "s16 Center vCenter Bold c" Brush " x38 y-2" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 151 , 15 , 14 , 14 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 150 , 15 , 15 , 15 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 150 , 15 , 14 , 13 , "0x55ff0000" , "0xff000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 150 , 15 , 14 , 13 , (obj.MouseButton=2)?("0xffff0000"):("0x55ff0000") , "0xff000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 151 , 16 , 13 , 13 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Right Click" , "s16 Center vCenter Bold c" Brush " x160 y-3" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 179 , 21 , 82 , 13 , "0xff880000" , "0xFF220000" , 1 , 1 )
;~ Brush := Gdip_CreateLineBrushFromRect( 179 , 21 , 82 , 13 , (obj.HKButton=2)?("0xFFff0000"):("0xff880000") , (obj.HKButton=2)?("0xFF440000"):("0xFF220000") , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 179 , 21 , 82 , 13 , (obj.MouseButton=2)?("0xFFff0000"):("0xff880000") , (obj.MouseButton=2)?("0xFF440000"):("0xFF220000") , 1 , 1 )
Gdip_TextToGraphics( G , "Right Click" , "s16 Center vCenter Bold c" Brush " x161 y-2" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
;toggle text
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
;toggle text
Gdip_TextToGraphics( G , "Toggle" , "s16 Center vCenter Bold c" Brush " x0 y27" , "Segoe ui" , 140 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 44 , 46 , 54 , 13 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "Toggle" , "s16 Center vCenter Bold c" Brush " x1 y28" , "Segoe ui" , 140 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 11 , 64 , 130 , 32 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Pen := Gdip_CreatePenFromBrush( Brush , 1 )
Gdip_DeleteBrush( Brush )
Gdip_DrawRectangle( G , Pen , 10 , 65 , 130 , 30 )
Gdip_DeletePen( Pen )
;~ Brush := Gdip_BrushCreateSolid( "0xFFff0000" )
Brush := Gdip_BrushCreateSolid( "0xFFffffff" )
;~ Gdip_TextToGraphics( G , "Shift + Ctrl + A" , "s12 Center vCenter Bold c" Brush " x10 y65" , "Segoe ui" , 130 , 30 )
Gdip_TextToGraphics( G , Obj.HotkeyDisplayValue , "s12 Center vCenter Bold c" Brush " x10 y65" , "Segoe ui" , 130 , 30 )
Gdip_DeleteBrush( Brush )
;Click text
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
;Click text
Gdip_TextToGraphics( G , "Activate" , "s16 Center vCenter Bold c" Brush " x140 y27" , "Segoe ui" , 140 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 193 , 44 , 34 , 13 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "Activate" , "s16 Center vCenter Bold c" Brush " x141 y28" , "Segoe ui" , 140 , 50 )
Gdip_DeleteBrush( Brush )
;Update Button ;<-----------------------------------------
;~ Brush := Gdip_CreateLineBrushFromRect( 25 , 110 , 120 , 30 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 25 , 110 , 120 , 30 , (obj.Active=0)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 25 , 110 , 120 , 30 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0x44222222" )
Brush := Gdip_BrushCreateSolid( (obj.Active=0)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 26 , 111 , 118 , 28 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "< Update" , "s16 Center vCenter Bold c" Brush " x25 y110" , "Segoe ui" , 120 , 30 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 49 , 120 , 76 , 12 , "0xFF880000" , "0xFF000000" , 1 , 1 )
;~ Brush := Gdip_CreateLineBrushFromRect( 49 , 120 , 76 , 12 , (obj.HKUpdate=0)?("0xFF880000"):("0xFF000000") , (obj.HKUpdate=0)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 49 , 115 , 76 , 22 , (obj.Active=0)?("0xFF880000"):("0xFF000000") , (obj.Active=0)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "< Update" , "s16 Center vCenter Bold c" Brush " x26 y111" , "Segoe ui" , 120 , 30 )
Gdip_DeleteBrush( Brush )
;~ pLB := Create_Sheets( LBB64 )
Gdip_DrawImage(G, (obj.MouseButton=1)?(pLB := Create_Sheets( LBB64 )):(pLB := Create_Sheets( RBB64 )), 185, 70, 50, 50) ;, sx="", sy="", sw="", sh="", Matrix=1)
Gdip_DisposeImage( pLB )
Gdip_DeleteGraphics( G )
return pBitmap
}
Create_Sheets( B65 ){
local ptr , uptr , pBitmap
VarSetCapacity(B64, strlen( B65 ) << !!A_IsUnicode)
B64 := B65
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr := A_PtrSize ? "Ptr" : "UInt" , &B64, "UInt", 0, "UInt", 0x01, Ptr, 0, "UIntP", DecLen, Ptr, 0, Ptr, 0)
Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr, &B64, "UInt", 0, "UInt", 0x01, Ptr, &Dec, "UIntP", DecLen, Ptr, 0, Ptr, 0)
Return False
DllCall("Kernel32.dll\RtlMoveMemory", Ptr, pData := DllCall("Kernel32.dll\GlobalLock", Ptr, hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, UPtr := A_PtrSize ? "UPtr" : "UInt" , DecLen, UPtr), UPtr) , Ptr, &Dec, UPtr, DecLen)
DllCall("Kernel32.dll\GlobalUnlock", Ptr, hData)
DllCall("Ole32.dll\CreateStreamOnHGlobal", Ptr, hData, "Int", True, Ptr "P", pStream)
DllCall("Gdiplus.dll\GdipCreateBitmapFromStream", Ptr, pStream, Ptr "P", pBitmap)
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; Click Speed Window
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
ClickWindow(obj){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 280 , 150 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 2 )
Pen := Gdip_CreatePen( "0xFF440000" , 1 )
Gdip_DrawRectangle( G , Pen , 0 , 0 , 279 , 149 )
Gdip_DeletePen( Pen )
Brush := Gdip_CreateLineBrushFromRect( 13 , 2 , 51 , 141 , "0x99440000" , "0x99aa0000" , 1 , 1 )
Pen := Gdip_CreatePenFromBrush( Brush , 1 )
Gdip_DeleteBrush( Brush )
Gdip_DrawRoundedRectangle( G , Pen , 14 , 5 , 50 , 138 , 5 )
Gdip_DeletePen( Pen )
Brush := Gdip_CreateLineBrushFromRect( 24 , 11 , 29 , 14 , "0xFF777777" , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "Min" , "s16 Center Bold c" Brush " x13 y7" , "Segoe ui" , 50 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 25 , 10 , 29 , 16 , "0xFFff0000" , "0xFF440000" , 1 , 1 )
Gdip_TextToGraphics( G , "Min" , "s16 Center Bold c" Brush " x14 y8" , "Segoe ui" , 50 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 28 , 30 , 22 , 82 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 28 , 30 , 22 , 82 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 28 , 29 , 25 , 84 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 29 , 31 , 20 , 80 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 39 , 34 , 7 , 72 , "0xaa441111" , "0xaaffffff" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 38 , 35 , 2 , 72 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFffffff" )
Gdip_TextToGraphics( G , obj.SliderValue1 , "s16 Center Bold c" Brush " x14 y116" , "Segoe ui" , 50 , 20 )
Gdip_DeleteBrush( Brush )
;Slider 1 thumb
Brush := Gdip_CreateLineBrushFromRect( 31 , obj.SliderPosition1 , 16 , 8 , "0xFF111111" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 31 , obj.SliderPosition1 , 16 , 8 , 3 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 32 , obj.SliderPosition1+1 , 14 , 7 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 32 , obj.SliderPosition1+1 , 14 , 7 , 3 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 213 , 5 , 53 , 138 , "0x99440000" , "0x99aa0000" , 1 , 1 )
Pen := Gdip_CreatePenFromBrush( Brush , 1 )
Gdip_DeleteBrush( Brush )
Gdip_DrawRoundedRectangle( G , Pen , 215 , 5 , 50 , 138 , 5 )
Gdip_DeletePen( Pen )
Brush := Gdip_CreateLineBrushFromRect( 24 , 11 , 29 , 14 , "0xFF777777" , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "Max" , "s16 Center Bold c" Brush " x214 y7" , "Segoe ui" , 50 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 223 , 12 , 33 , 14 , "0xFFff0000" , "0xFF440000" , 1 , 1 )
Gdip_TextToGraphics( G , "Max" , "s16 Center Bold c" Brush " x215 y8" , "Segoe ui" , 50 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 229 , 31 , 23 , 80 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 229 , 30 , 22 , 82 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 28 , 29 , 25 , 84 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 230 , 31 , 20 , 80 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 39 , 34 , 7 , 72 , "0xaa441111" , "0xaaffffff" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 239 , 35 , 2 , 72 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFffffff" )
Gdip_TextToGraphics( G , obj.SliderValue2 , "s16 Center Bold c" Brush " x215 y116" , "Segoe ui" , 50 , 20 )
Gdip_DeleteBrush( Brush )
;Slider 2 thumb
Brush := Gdip_CreateLineBrushFromRect( 232 , obj.SliderPosition2 , 16 , 8 , "0xFF111111" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 232 , obj.SliderPosition2 , 16 , 8 , 3 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 233 , obj.SliderPosition2+1 , 14 , 7 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 233 , obj.SliderPosition2+1 , 14 , 7 , 3 )
Gdip_DeleteBrush( Brush )
;Back Button
Brush := Gdip_CreateLineBrushFromRect( 81 , 113 , 120 , 28 , (obj.Active!=5)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 80 , 110 , 120 , 30 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( (obj.Active!=5)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 81 , 111 , 118 , 28 , 4 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "< Back " , "s16 Center vCenter Bold c" Brush " x79 y110" , "Segoe ui" , 120 , 30 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 121 , 117 , 38 , 12 , (obj.Active!=5)?("0xFF880000"):("0xFF000000") , (obj.Active!=5)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "< Back " , "s16 Center vCenter Bold c" Brush " x80 y111" , "Segoe ui" , 120 , 30 )
Gdip_DeleteBrush( Brush )
;Minus
;~ Brush := Gdip_CreateLineBrushFromRect( 80 , 40 , 28 , 27 , (obj.MinusH=0)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 80 , 40 , 28 , 27 , (obj.Active!=6)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 80 , 40 , 30 , 30 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( (obj.MinusH=0)?("0x44222222"):("0x44000000") )
Brush := Gdip_BrushCreateSolid( (obj.Active!=6)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 81 , 41 , 28 , 28 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "_" , "s36 Center vCenter Bold c" Brush " x80 y25" , "Segoe ui" , 30 , 30 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 87 , 53 , 14 , 6 , (obj.MinusH=0)?("0xFF880000"):("0xFF000000") , (obj.MinusH=0)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 87 , 53 , 14 , 6 , (obj.Active!=6)?("0xFF880000"):("0xFF000000") , (obj.Active!=6)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "_" , "s36 Center vCenter Bold c" Brush " x81 y26" , "Segoe ui" , 30 , 30 )
Gdip_DeleteBrush( Brush )
;Plus
;~ Brush := Gdip_CreateLineBrushFromRect( 170 , 41 , 29 , 28 , (obj.PlusH=0)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 170 , 41 , 29 , 28 , (obj.Active!=7)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 170 , 40 , 30 , 30 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( (obj.PlusH=0)?("0x44222222"):("0x44000000") )
Brush := Gdip_BrushCreateSolid( (obj.Active!=7)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 171 , 41 , 28 , 28 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "+" , "s22 Center vCenter Bold c" Brush " x171 y39" , "Segoe ui" , 30 , 30 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 179 , 49 , 11 , 11 , (obj.PlusH=0)?("0xFF880000"):("0xFF000000") , (obj.PlusH=0)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 179 , 49 , 11 , 11 , (obj.Active!=7)?("0xFF880000"):("0xFF000000") , (obj.Active!=7)?("0xFF000000"):("0xFF880000") , 1 , 1 )
;<-------------------------
;~ Gdip_TextToGraphics( G , "+" , "s22 Center vCenter Bold c" Brush " x172 y40" , "Segoe ui" , 30 , 30 )
Gdip_TextToGraphics( G , "+" , "s22 Center vCenter Bold c" Brush " x172 y40" , "Segoe ui" , 30 , 30 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Click Duration" , "s16 Center vCenter Bold c" Brush " x0 y0" , "Segoe ui" , 280 , 50 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 85 , 15 , 109 , 16 , "0xFFff0000" , "0xFF440000" , 1 , 1 )
Gdip_TextToGraphics( G , "Click Duration" , "s16 Center vCenter Bold c" Brush " x1 y1" , "Segoe ui" , 280 , 50 )
Gdip_DeleteBrush( Brush )
;CD
Brush := Gdip_BrushCreateSolid( "0xFFaaaaaa" )
;CD
Gdip_TextToGraphics( G , (obj.ClickDurationValue=1)?("Short"):(obj.ClickDurationValue=2)?("Med"):("Long") , "s16 Center vCenter Bold c" Brush " x110 y30" , "Segoe ui" , 60 , 50 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
; More Options Window
;--------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------
OptionsWindow(OBJ){
;Bitmap Created Using: HB Bitmap Maker
pBitmap:=Gdip_CreateBitmap( 280 , 150 )
G := Gdip_GraphicsFromImage( pBitmap )
Gdip_SetSmoothingMode( G , 2 )
Brush := Gdip_BrushCreateSolid( "0x01777777" )
Gdip_FillRectangle( G , Brush , 0 , 0 , 280 , 150 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 12 , 12 , 11 , 13 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 10 , 5 , 15 , 15 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 11 , 6 , 13 , 13 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 11 , 6 , 13 , 13 , (obj.SoundState=1)?("0xFFff0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 11 , 6 , 13 , 13 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Sounds" , "s16 Center vCenter Bold c" Brush " x9 y-12" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 10 , 6 , 100 , 13 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 10 , 6 , 100 , 13 , (obj.SoundState=1)?("0xFFff0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_TextToGraphics( G , "Sounds" , "s16 Center vCenter Bold c" Brush " x10 y-11" , "Segoe ui" , 100 , 50 )
Gdip_DeleteBrush( Brush )
;Button 1
;~ Brush := Gdip_CreateLineBrushFromRect( 25 , 110 , 120 , 30 , (obj.HKUpdate=0)?("0xFF880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
;~ Brush := Gdip_CreateLineBrushFromRect( 50 , 30 , 180 , 23 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 50 , 25 , 180 , 23 ,(obj.Active!=8)?("0xff880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 50 , 25 , 180 , 23 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0x44222222" )
Brush := Gdip_BrushCreateSolid( (obj.Active!=8)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 51 , 26 , 178 , 21 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "<-- Share Link -->" , "s16 Center vCenter Bold c" Brush " x50 y27" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 49 , 115 , 76 , 22 , (obj.HKUpdate=0)?("0xFF880000"):("0xFF000000") , (obj.HKUpdate=0)?("0xFF000000"):("0xFF880000") , 1 , 1 )
;~ Brush := Gdip_CreateLineBrushFromRect( 65 , 33 , 146 , 8 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 65 , 33 , 146 , 8 , (obj.Active!=8)?("0xFF880000"):("0xFF000000") , (obj.Active!=8)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "<-- Share Link -->" , "s16 Center vCenter Bold c" Brush " x51 y28" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;Button 2
;~ Brush := Gdip_CreateLineBrushFromRect( 50 , 60 , 180 , 23 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 50 , 55 , 180 , 23 , (obj.Active!=9)?("0xff880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 50 , 55 , 180 , 23 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0x44222222" )
Brush := Gdip_BrushCreateSolid( (obj.Active!=9)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 51 , 56 , 178 , 21 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "More Free Auto Clickers" , "s14 Center vCenter Bold c" Brush " x50 y57" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 60 , 64 , 161 , 8 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 60 , 64 , 161 , 8 , (obj.Active!=9)?("0xFF880000"):("0xFF000000") , (obj.Active!=9)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "More Free Auto Clickers" , "s14 Center vCenter Bold c" Brush " x51 y58" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;Button 3
;~ Brush := Gdip_CreateLineBrushFromRect( 50 , 90 , 180 , 23 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 50 , 85 , 180 , 23 , (obj.Active!=10)?("0xff880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 50 , 85 , 180 , 23 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0x44222222" )
Brush := Gdip_BrushCreateSolid( (obj.Active!=10)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 51 , 86 , 178 , 21 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Advaced Options" , "s16 Center vCenter Bold c" Brush " x50 y87" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 72 , 93 , 134 , 9 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 72 , 93 , 134 , 9 , (obj.Active!=10)?("0xFF880000"):("0xFF000000") , (obj.Active!=10)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "Advaced Options" , "s16 Center vCenter Bold c" Brush " x51 y88" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;Button 4
;~ Brush := Gdip_CreateLineBrushFromRect( 50 , 120 , 180 , 23 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 50 , 115 , 180 , 23 , (obj.Active!=11)?("0xff880000"):("0xFFAA0000") , "0xFF000000" , 1 , 1 )
Gdip_FillRoundedRectangle( G , Brush , 50 , 115 , 180 , 23 , 5 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_BrushCreateSolid( "0x44222222" )
Brush := Gdip_BrushCreateSolid( (obj.Active!=11)?("0x44222222"):("0x44000000") )
Gdip_FillRoundedRectangle( G , Brush , 51 , 116 , 178 , 21 , 5 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "<Back" , "s16 Center vCenter Bold c" Brush " x50 y117" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 109 , 121 , 59 , 11 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 109 , 121 , 59 , 11 , (obj.Active!=11)?("0xFF880000"):("0xFF000000") , (obj.Active!=11)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "<Back" , "s16 Center vCenter Bold c" Brush " x51 y118" , "Segoe ui" , 180 , 23 )
Gdip_DeleteBrush( Brush )
;------------------------------------------------------------
Pen := Gdip_CreatePen( "0xFF880000" , 1 )
Gdip_DrawRectangle( G , Pen , 0 , 0 , 279 , 149 )
Gdip_DeletePen( Pen )
Brush := Gdip_CreateLineBrushFromRect( 161 , 12 , 13 , 13 , "0xFF880000" , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 164 , 5 , 15 , 15 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 161 , 6 , 13 , 13 , (obj.AutoSaveState=1)?("0xFFff0000"):("0xFF880000") , "0xFF000000" , 1 , 1 )
Gdip_FillRectangle( G , Brush , 165 , 6 , 13 , 13 )
Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF777777" )
Gdip_TextToGraphics( G , "Auto Save" , "s16 Center vCenter Bold c" Brush " x138 y-11" , "Segoe ui" , 170 , 50 )
Gdip_DeleteBrush( Brush )
;~ Brush := Gdip_CreateLineBrushFromRect( 141 , 8 , 131 , 13 , "0xFFff0000" , "0xFF000000" , 1 , 1 )
Brush := Gdip_CreateLineBrushFromRect( 141 , 8 , 131 , 13 , (obj.AutoSaveState=1)?("0xFFff0000"):("0xFF000000") , (obj.AutoSaveState=1)?("0xFF000000"):("0xFF880000") , 1 , 1 )
Gdip_TextToGraphics( G , "Auto Save" , "s16 Center vCenter Bold c" Brush " x139 y-10" , "Segoe ui" , 170 , 50 )
Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
; <<<<<<<<<<<<<<<<<<<<<< GDIP LIB >>>>>>>>>>>>>>>>>>>>>>>>>>>>
;######################################################################################################################################
;##################################################### #######################################################
;##################################################### Gdip LITE #######################################################
;##################################################### #######################################################
;######################################################################################################################################
; 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
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)
}
Gdip_DrawImage(pGraphics, pBitmap, dx="", dy="", dw="", dh="", sx="", sy="", sw="", sh="", Matrix=1){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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", Ptr, pGraphics, Ptr, pBitmap, "float", dx, "float", dy, "float", dw, "float", dh, "float", sx, "float", sy, "float", sw, "float", sh, "int", 2, Ptr, ImageAttr, Ptr, 0, Ptr, 0)
if ImageAttr
Gdip_DisposeImageAttributes(ImageAttr)
return E
}
Gdip_SetImageAttributesColorMatrix(Matrix){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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", A_PtrSize ? "UPtr*" : "uint*", ImageAttr)
DllCall("gdiplus\GdipSetImageAttributesColorMatrix", Ptr, ImageAttr, "int", 1, "int", 1, Ptr, &ColourMatrix, Ptr, 0, "int", 0)
return ImageAttr
}
Gdip_GetImageWidth(pBitmap){
DllCall("gdiplus\GdipGetImageWidth", A_PtrSize ? "UPtr" : "UInt", pBitmap, "uint*", Width)
return Width
}
Gdip_GetImageHeight(pBitmap){
DllCall("gdiplus\GdipGetImageHeight", A_PtrSize ? "UPtr" : "UInt", pBitmap, "uint*", Height)
return Height
}
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)
}
CreateCompatibleDC(hdc=0){
return DllCall("CreateCompatibleDC", A_PtrSize ? "UPtr" : "UInt", hdc)
}
SelectObject(hdc, hgdiobj){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("SelectObject", Ptr, hdc, Ptr, hgdiobj)
}
DeleteObject(hObject){
return DllCall("DeleteObject", A_PtrSize ? "UPtr" : "UInt", hObject)
}
GetDC(hwnd=0){
return DllCall("GetDC", A_PtrSize ? "UPtr" : "UInt", hwnd)
}
GetDCEx(hwnd, flags=0, hrgnClip=0){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("GetDCEx", Ptr, hwnd, Ptr, hrgnClip, "int", flags)
}
ReleaseDC(hdc, hwnd=0){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("ReleaseDC", Ptr, hwnd, Ptr, hdc)
}
DeleteDC(hdc){
return DllCall("DeleteDC", A_PtrSize ? "UPtr" : "UInt", hdc)
}
Gdip_SetClipRegion(pGraphics, Region, CombineMode=0){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("gdiplus\GdipSetClipRegion", Ptr, pGraphics, Ptr, Region, "int", CombineMode)
}
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
}
Gdip_GraphicsFromImage(pBitmap){
DllCall("gdiplus\GdipGetImageGraphicsContext", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "UInt*", pGraphics)
return pGraphics
}
Gdip_GraphicsFromHDC(hdc){
DllCall("gdiplus\GdipCreateFromHDC", A_PtrSize ? "UPtr" : "UInt", hdc, A_PtrSize ? "UPtr*" : "UInt*", pGraphics)
return pGraphics
}
Gdip_GetDC(pGraphics){
DllCall("gdiplus\GdipGetDC", A_PtrSize ? "UPtr" : "UInt", pGraphics, A_PtrSize ? "UPtr*" : "UInt*", hdc)
return hdc
}
Gdip_Startup(){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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_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){
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_CreateLineBrush(x1, y1, x2, y2, ARGB1, ARGB2, WrapMode=1){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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
}
Gdip_CreateLineBrushFromRect(x, y, w, h, ARGB1, ARGB2, LinearGradientMode=1, WrapMode=1){
CreateRectF(RectF, x, y, w, h)
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){
DllCall("gdiplus\GdipCloneBrush", A_PtrSize ? "UPtr" : "UInt", pBrush, A_PtrSize ? "UPtr*" : "UInt*", pBrushClone)
return pBrushClone
}
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)
}
DllCall("gdiplus\GdipCreateFontFamilyFromName", Ptr, A_IsUnicode ? &Font : &wFont, "uint", 0, A_PtrSize ? "UPtr*" : "UInt*", hFamily)
return hFamily
}
Gdip_SetStringFormatAlign(hFormat, Align){
return DllCall("gdiplus\GdipSetStringFormatAlign", A_PtrSize ? "UPtr" : "UInt", hFormat, "int", Align)
}
Gdip_StringFormatCreate(Format=0, Lang=0){
DllCall("gdiplus\GdipCreateStringFormat", "int", Format, "int", Lang, A_PtrSize ? "UPtr*" : "UInt*", hFormat)
return hFormat
}
Gdip_FontCreate(hFamily, Size, Style=0){
DllCall("gdiplus\GdipCreateFont", A_PtrSize ? "UPtr" : "UInt", hFamily, "float", Size, "int", Style, "int", 0, A_PtrSize ? "UPtr*" : "UInt*", hFont)
return hFont
}
Gdip_CreatePen(ARGB, w){
DllCall("gdiplus\GdipCreatePen1", "UInt", ARGB, "float", w, "int", 2, A_PtrSize ? "UPtr*" : "UInt*", pPen)
return pPen
}
Gdip_CreatePenFromBrush(pBrush, w){
DllCall("gdiplus\GdipCreatePen2", A_PtrSize ? "UPtr" : "UInt", pBrush, "float", w, "int", 2, A_PtrSize ? "UPtr*" : "UInt*", pPen)
return pPen
}
Gdip_BrushCreateSolid(ARGB=0xff000000){
DllCall("gdiplus\GdipCreateSolidFill", "UInt", ARGB, A_PtrSize ? "UPtr*" : "UInt*", pBrush)
return pBrush
}
Gdip_BrushCreateHatch(ARGBfront, ARGBback, HatchStyle=0){
DllCall("gdiplus\GdipCreateHatchBrush", "int", HatchStyle, "UInt", ARGBfront, "UInt", ARGBback, A_PtrSize ? "UPtr*" : "UInt*", pBrush)
return pBrush
}
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")
}
Gdip_SetTextRenderingHint(pGraphics, RenderingHint){
return DllCall("gdiplus\GdipSetTextRenderingHint", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", RenderingHint)
}
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)
}
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
}
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")
}
CreateSizeF(ByRef SizeF, w, h){
VarSetCapacity(SizeF, 8)
NumPut(w, SizeF, 0, "float"), NumPut(h, SizeF, 4, "float")
}
CreatePointF(ByRef PointF, x, y){
VarSetCapacity(PointF, 8)
NumPut(x, PointF, 0, "float"), NumPut(y, PointF, 4, "float")
}
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)
}
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)
}
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)
}
Gdip_DrawLines(pGraphics, pPen, Points){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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", Ptr, pGraphics, Ptr, pPen, Ptr, &PointF, "int", Points0)
}
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)
}
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
}
Gdip_GetClipRegion(pGraphics){
Region := Gdip_CreateRegion()
DllCall("gdiplus\GdipGetClip", A_PtrSize ? "UPtr" : "UInt", pGraphics, "UInt*", Region)
return Region
}
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, Path, CombineMode=0){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("gdiplus\GdipSetClipPath", Ptr, pGraphics, Ptr, Path, "int", CombineMode)
}
Gdip_ResetClip(pGraphics){
return DllCall("gdiplus\GdipResetClip", A_PtrSize ? "UPtr" : "UInt", pGraphics)
}
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)
}
Gdip_FillRegion(pGraphics, pBrush, Region){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("gdiplus\GdipFillRegion", Ptr, pGraphics, Ptr, pBrush, Ptr, Region)
}
Gdip_FillPath(pGraphics, pBrush, Path){
Ptr := A_PtrSize ? "UPtr" : "UInt"
return DllCall("gdiplus\GdipFillPath", Ptr, pGraphics, Ptr, pBrush, Ptr, Path)
}
Gdip_CreateRegion(){
DllCall("gdiplus\GdipCreateRegion", "UInt*", Region)
return Region
}
Gdip_DeleteRegion(Region){
return DllCall("gdiplus\GdipDeleteRegion", A_PtrSize ? "UPtr" : "UInt", Region)
}
Gdip_CreateBitmap(Width, Height, Format=0x26200A){
DllCall("gdiplus\GdipCreateBitmapFromScan0", "int", Width, "int", Height, "int", 0, "int", Format, A_PtrSize ? "UPtr" : "UInt", 0, A_PtrSize ? "UPtr*" : "uint*", pBitmap)
Return pBitmap
}
Gdip_SetSmoothingMode(pGraphics, SmoothingMode){
return DllCall("gdiplus\GdipSetSmoothingMode", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", SmoothingMode)
}
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)
}
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
}
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)
}
Gdip_CreateHBITMAPFromBitmap(pBitmap, Background=0xffffffff){
DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", A_PtrSize ? "UPtr" : "UInt", pBitmap, A_PtrSize ? "UPtr*" : "uint*", hbm, "int", Background)
return hbm
}
SetImage(hwnd, hBitmap){
SendMessage, 0x172, 0x0, hBitmap,, ahk_id %hwnd%
E := ErrorLevel
DeleteObject(E)
return E
}
Gdip_FillPolygon(pGraphics, pBrush, Points, FillMode=0){
Ptr := A_PtrSize ? "UPtr" : "UInt"
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", Ptr, pGraphics, Ptr, pBrush, Ptr, &PointF, "int", Points0, "int", FillMode)
}
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 = "")
WinGetPos,,, w, h, ahk_id %hwnd%
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)
}
Gdip_GraphicsClear(pGraphics, ARGB=0x00ffffff)
{
return DllCall("gdiplus\GdipGraphicsClear", A_PtrSize ? "UPtr" : "UInt", pGraphics, "int", ARGB)
}
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
}