Thanks @thebbandit
I do have a basic class for the sliders. You can find it here.
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=61051&p=259167
Color Picker
-
- Posts: 45
- Joined: 02 Jul 2019, 11:34
Re: Color Picker
Wow, you never cease to amaze. Thank you for your continued efforts with AHK, you are doing a great service to the community.
Re: Color Picker
White theme only modified background and font colors. Make it look clearer.
Code: Select all
;111111 -> F0F0F0
;330000 -> FFF0F0
;330000 -> FFF0F0
;AA2222 -> FF0000
;22AA22 -> 00FF00
;2222AA -> 0000FF
;003300 -> EBFFEB
;000033 -> C8C8FF
;333333 -> D3D3D3
;F2F2F2 -> F2F2F2
;caaaaaa -> C000000
;"F0F0F0","777777","252525","880000","992222" -> "000000","000000","FFFFFF","FFF0F0","FEC9D8"
;252525
;003366 -> F0F0F0
;003388 -> F3F3F3
#SingleInstance, Force
SetBatchLines,-1
#NoEnv
SetWorkingDir,%A_ScriptDir%
pButton_StartUp()
global pButton:={}
global Press_active:=0,Hover_On:=0,Active_Button
global Main_Window:={Y: 0 , W: 300 , H: 600 }
Main_Window.X:=(A_ScreenWidth-Main_Window.W)-100
global RedSliderValue := 0 , GreenSliderValue := 0 , BlueSliderValue := 0 , GreyScaleSliderValue := 0
;global RGBColorBlock := "000000"
global RGBColorBlock := "FFFFFF"
;global GreyScaleColorBlock := "000000"
global GreyScaleColorBlock := "FFFFFF"
global RedTrigger , GreenTrigger , BlueTrigger , GreyScaleTrigger , OutputColor
global RedHexValue := "00" , GreenHexValue := "00" , BlueHexValue := "00" , GreyScaleHexValue := "00"
global RedDecValue := "0" , GreenDecValue := "0" , BlueDecValue := "0" , GreyScaleDecValue := GreyScaleSliderValue
global RedMin1:=0 , RedMax1:=255 , RedMin2:=0 , RedMax2:=255
global GreenMin1:=0 , GreenMax1:=255 , GreenMin2:=0 , GreenMax2:=255
global BlueMin1:=0 , BlueMax1:=255 , BlueMin2:=0 , BlueMax2:=255
global Saved_Colors_List:= [] , savedcoloredit:="" , allownewsavedvalue:=0
IfExist, Color_Picker_v2_Saved_Colors_List.txt
{
FileRead,svdcol,Color_Picker_v2_Saved_Colors_List.txt
Loop, Parse, svdcol ,*
Saved_Colors_List[A_Index]:=A_LoopField
}
IfNotExist, Color_Picker_v2_Saved_Colors_List.txt
{
Loop, 150 {
Saved_Colors_List[A_Index]:="777777",tempcollist:="777777*"
FileAppend,%tempcollist%,Color_Picker_v2_Saved_Colors_List.txt
}
}
Create_Main_Window(),Create_SUB_Window(),CREATE_MIXER_WINDOW(),CREATE_SAVED_WINDOW(),CREATE_RANDOM_WINDOW()
SetTimer,SETPICKERONTOP,400
return
GuiClose:
ExitApp
GuiContextMenu:
(Tog:=!Tog)?(Main_Window.H:=40):(Main_Window.H:=600)
Gui,1:Show,% "h" Main_Window.H " NA"
return
CREATE_MIXER_WINDOW(){
Gui, 3: +Parent2 -DPIScale -Caption
;Gui, 3: Color, D3D3D3 , D3D3D3
Gui, 3: Color, FFFFFF , D3D3D3
DRAW_OUTLINE( 3 , 0 , 0 ,250 , 470 , "444444" , "black" ),DRAW_OUTLINE( 3 , 1 , 1 ,248 , 468 , "D3D3D3" , "F0F0F0" )
ADD_COLOR_DISPLAYS(),ADD_RGB_SLIDERS(),ADD_GREYSCALE_SLIDERS(),ADD_MIXER_BUTTONS()
Gui, 3: Show,x7 y10 w250 h470
}
CREATE_SAVED_WINDOW(){
global
Gui, 4: +Parent2 -DPIScale -Caption
;Gui, 4: Color,D3D3D3,F2F2F2
Gui, 4: Color,FFFFFF,F2F2F2
x:=25
Loop, 11 {
Gui,4:Add,Progress,x%x% y40 w1 h300 BackgroundBlack
x+=20
}
y:=40
Loop, 16 {
Gui,4:Add,Progress,x25 y%y% w200 h1 BackgroundBlack
y+=20
}
y:=41,i:=1
Loop, 15 {
x:=26
Loop, 10 {
Gui,4:Add,Text,x%x% y%y% w19 h19 BackgroundTrans vGUISavedColorTRIGGER_%i% gChange_Colors
Gui,4:Add,Progress,% "x" x " y" y " w19 h19 Background" Saved_Colors_List[i] " vGUISavedColor_" i
i++,x+=20
}
y+=20
}
Gui,4:Font,C000000 s10 w500,Segoe ui
Gui,4:add,Edit, x75 y355 w100 h20 Center Uppercase -E0x200 vSAVEDCOLOREDIT gSubmit_4,
DRAW_OUTLINE( 4 , 74 , 354 ,102 , 22 , "777777" , "666666" )
pButton.Push(New Progress_Button("4",pButton.Length()+1,"SETADDTOSAVEDLIST",10,390,110,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","ADD COLOR",1))
pButton.Push(New Progress_Button("4",pButton.Length()+1,"SETREMOVEFROMSAVEDLIST",130,390,110,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","REMOVE COLOR",1))
pButton.Push(New Progress_Button("4",pButton.Length()+1,"CLEARALLSAVEDCOLORS",50,420,150,30,"000000","000000","FFFFFF","FFF0F0","FEC9D8","CLEAR ALL COLORS",7))
Gui, 4: Show,x7 y10 w250 h470
Gui, 4: Hide
}
CLEARALLSAVEDCOLORS(){
stime:=A_TickCount
While(GETKEYSTATE("LBUTTON")){
if(A_TickCount-stime>3000){
Loop 150 {
GuiControl,% "4:+Background777777", GUISavedColor_%A_Index%
Saved_Colors_List[A_Index]:="777777"
}
SAVECOLORLISTTOFILE()
return
}
}
}
Change_Colors(){
if(ALLOWNEWSAVEDVALUE=1){
ALLOWNEWSAVEDVALUE:=0
StringTrimLeft,tsop,A_GUICONTROL,21
Saved_Colors_List[tsop]:=SAVEDCOLOREDIT
GuiControl,% "4:+Background" Saved_Colors_List[tsop], GUISavedColor_%tsop%
SAVECOLORLISTTOFILE()
}else if(ALLOWNEWSAVEDVALUE=2){
ALLOWNEWSAVEDVALUE:=0
StringTrimLeft,tsop,A_GUICONTROL,21
Saved_Colors_List[tsop]:="777777"
GuiControl,% "4:+Background" Saved_Colors_List[tsop], GUISavedColor_%tsop%
SAVECOLORLISTTOFILE()
}
}
Submit_4(){
Gui,4:Submit,NoHide
}
SETREMOVEFROMSAVEDLIST(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
ALLOWNEWSAVEDVALUE:=2
}
SETADDTOSAVEDLIST(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
ALLOWNEWSAVEDVALUE:=1
}
SAVECOLORLISTTOFILE(){
FileDelete,Color_Picker_v2_Saved_Colors_List.txt
Loop, 150 {
tvtstf:=Saved_Colors_List[A_Index] "*"
FileAppend,%tvtstf%,Color_Picker_v2_Saved_Colors_List.txt
}
}
Move_Window(){
POSTMESSAGE , 0XA1 , 2
SETTIMER , WATCH_HOVER , OFF
WHILE( GETKEYSTATE( "LBUTTON" ) )
SLEEP , 10
SETTIMER , WATCH_HOVER , ON
}
DRAW_OUTLINE( GUI_NAME , X , Y , W , H , COLOR1 :="BLACK", COLOR2 := "BLACK" , THICKNESS := 1 ) {
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" W " H" THICKNESS " BACKGROUND" COLOR1
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" THICKNESS " H" H " BACKGROUND" COLOR1
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y + H - THICKNESS " W" W " H" THICKNESS " BACKGROUND" COLOR2
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X + W - THICKNESS " Y" Y " W" THICKNESS " H" H " BACKGROUND" COLOR2
}
DRAW_LINE( GUI_NAME , X , Y , W , H , COLOR ) {
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" W " H" H " BACKGROUND" COLOR
}
ADD_GREYSCALE_SLIDERS(){
Gui, 3:Font,C000000 s10 w600 , Segoe UI
Gui, 3:Add,Text,x190 y140 w20 h256 vGREYSCALETRIGGER gADJUST_SLIDER
Gui, 3:Add,Progress,x165 y110 w70 h316 BackgroundF0F0F0
Gui, 3:Add,Edit,x170 y115 w60 h20 Center -E0x200 Disabled vGreyScaleHexValue ,% GreyScaleHexValue
Gui, 3:Add,Progress,x190 y140 w20 h256 BackgroundD3D3D3 c888888 Range0-255 Vertical vGREYSCALESLIDERVALUE ,% GreyScaleSliderValue
Gui, 3:Add,Edit,x170 y401 w60 h20 Center -E0x200 Disabled vGreyScaleDecValue ,% GreyScaleDecValue
}
ADD_RGB_SLIDERS(){
Gui, 3:Add,Text,x30 y140 w20 h256 vREDTRIGGER gADJUST_SLIDER
Gui, 3:Add,Text,x73 y140 w20 h256 vGREENTRIGGER gADJUST_SLIDER
Gui, 3:Add,Text,x115 y140 w20 h256 vBLUETRIGGER gADJUST_SLIDER
Gui, 3:Add,Progress,x10 y110 w145 h316 BackgroundF0F0F0
Gui, 3:Font,cffffff s10 w600 , Segoe UI
Gui, 3:Add,Edit,x25 y115 w30 h20 Center -E0x200 Disabled vRedHexValue ,% RedHexValue
Gui, 3:Add,Edit,x68 y115 w30 h20 Center -E0x200 Disabled vGreenHexValue ,% GreenHexValue
Gui, 3:Add,Edit,x110 y115 w30 h20 Center -E0x200 Disabled vBlueHexValue ,% BlueHexValue
Gui, 3:Add,Progress,x30 y140 w20 h256 BackgroundFFF0F0 cFF0000 Range0-255 Vertical vREDSLIDERVALUE,% RedSliderValue
Gui, 3:Add,Progress,x73 y140 w20 h256 BackgroundEBFFEB c00FF00 Range0-255 Vertical vGREENSLIDERVALUE,% GreenSliderValue
Gui, 3:Add,Progress,x115 y140 w20 h256 BackgroundC8C8FF c0000FF Range0-255 Vertical vBLUESLIDERVALUE,% BlueSliderValue
Gui, 3:Add,Edit,x25 y401 w30 h20 Center -E0x200 Disabled vRedDecValue ,% RedDecValue
Gui, 3:Add,Edit,x68 y401 w30 h20 Center -E0x200 Disabled vGreenDecValue ,% GreenDecValue
Gui, 3:Add,Edit,x110 y401 w30 h20 Center -E0x200 Disabled vBlueDecValue ,% BlueDecValue
}
GETCOLORFROMSCREEN(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
While(!GetKeyState("Ctrl")){
CoordMode,Mouse,Screen
CoordMode,Pixel,Screen
Tooltip, Press ""Ctrl"" to lock color. %OutputColor%
MouseGetPos,tcx,tcy
PixelGetColor,OutputColor,tcx,tcy,RGB
UPDATECOLORDISPLAYS(OutputColor)
}
ToolTip,
StringTrimLeft,OutputColor,OutputColor,2
Clipboard:=OutputColor
GuiControl,4:,SAVEDCOLOREDIT,% OutputColor
}
UPDATECOLORDISPLAYS(OutputColor){
StringTrimLeft,OutputColor,OutputColor,2
StringLeft , r , OutputColor , 2
StringTrimLeft,OutputColor,OutputColor,2
StringLeft , g , OutputColor , 2
StringTrimLeft,OutputColor,OutputColor,2
StringLeft , b , OutputColor , 2
r:= "0x" r,g:="0x" g,b:="0x" b
RedSliderValue:=r+0,GreenSliderValue:=g+0,BlueSliderValue:=b+0
GreyScaleSliderValue:=Round((RedSliderValue+GreenSliderValue+BlueSliderValue)/3)
GuiControl,3:,RedSliderValue,% RedSliderValue
GuiControl,3:,GreenSliderValue,% GreenSliderValue
GuiControl,3:,BlueSliderValue,% BlueSliderValue
GuiControl,3:,GreyScaleSliderValue,% GreyScaleSliderValue
UPDATERGBCOLORBLOCK(RedSliderValue,GreenSliderValue,BlueSliderValue,GreyScaleSliderValue)
}
ADJUST_SLIDER(){
Coordmode,Mouse,Client
SLIDERVALUE:=0
While(GETKEYSTATE("LButton")){
MouseGetPos,Rx,Ry
if(GETKEYSTATE("UP")){
if(ry-1>194)
MouseMove,Rx,ry-1
KeyWait,Up,Up
}else if(GETKEYSTATE("Down")){
if(ry+1<451)
MouseMove,Rx,ry+1
KeyWait,Down,Up
}else if(GETKEYSTATE("Left")){
if(ry+1<451)
MouseMove,Rx,ry+1
}else if(GETKEYSTATE("Right")){
if(ry-1>194)
MouseMove,Rx,ry-1
}
SLIDERVALUE:=(RY-195) * -1
(SLIDERVALUE < -255) ? (SLIDERVALUE:=-255) : (SLIDERVALUE > 0) ? (SLIDERVALUE:=0)
if(A_GuiControl="RedTrigger"){
RedSliderValue:=SLIDERVALUE+255
GuiControl,3:,RedSliderValue,% RedSliderValue
ToolTip,% RedSliderValue
}else if(A_GuiControl="GreenTrigger"){
GreenSliderValue:=SLIDERVALUE+255
GuiControl,3:,GreenSliderValue,% GreenSliderValue
ToolTip,% GreenSliderValue
}else if(A_GuiControl="BlueTrigger"){
BlueSliderValue:=SLIDERVALUE+255
GuiControl,3:,BlueSliderValue,% BlueSliderValue
ToolTip,% BlueSliderValue
}else if(A_GuiControl="GreyScaleTrigger"){
GreyScaleSliderValue:=SLIDERVALUE+255
GuiControl,3:,GreyScaleSliderValue,% GreyScaleSliderValue
ToolTip,% GreyScaleSliderValue
}
UPDATERGBCOLORBLOCK(RedSliderValue,GreenSliderValue,BlueSliderValue,GreyScaleSliderValue)
}
ToolTip,
}
Create_SUB_Window(){
Gui, 2: +Parent1 -DPIScale -Caption
Gui, 2: Color, F0F0F0
DRAW_OUTLINE( 2 , 0 , 0 ,260 , 575, "444444" , "black" ),DRAW_OUTLINE( 2 , 1 , 1 ,258 , 573, "D3D3D3" , "F0F0F0" )
Gui, 2: Show,% "x30 y45 w" Main_Window.W-40 " h" Main_Window.H - 75
}
SETPICKERONTOP(){
WINGETTITLE,CWIN,A
IF(CWIN!="HB Color Picker v2.0.1")
GUI,1:SHOW,NA
}
Create_Main_Window(){
Gui, 1: +AlwaysOnTop -DPIScale -Caption +LastFound
Winset,Transcolor,112343
Gui, 1: Color,112343
Gui,1:Font,C000000 s10 w600 , Segoe UI
pButton.Push(New Progress_Button("1",pButton.Length()+1,"Move_Window",floor((Main_Window.W-150)//2),10,150,30,"BLACK","777777","D3D3D3","F0F0F0","BLACK","HB Color Picker",5))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"RGBSUBWINDOW",6,60,23,120,"444444","777777","D3D3D3","F0F0F0","F3F3F3","M`nI`nX`nE`nR",15))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"SAVEDSUBWINDOW",6,190,23,120,"444444","777777","D3D3D3","F0F0F0","F3F3F3","S`nA`nV`nE`nD",15))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"RANDOMSUBWINDOW",6,320,23,120,"444444","777777","D3D3D3","F0F0F0","F3F3F3","R`nA`nN`nD`nO`nM",8))
;pButton.Push(New Progress_Button("1",pButton.Length()+1,"GETCOLORFROMSCREEN",75,530,170,30,"F0F0F0","777777","252525","008833","992222","GET COLOR",5))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"GETCOLORFROMSCREEN",75,530,170,30,"F0F0F0","777777","F0F0F0","FFF0F0","FEC9D8","GET COLOR",5))
;Gui, 1: Show,% "x" Main_Window.X " y" Main_Window.Y " w" Main_Window.W " h" Main_Window.H , HB Color Picker v2.0.1
Gui, 1: Show,% " w" Main_Window.W " h" Main_Window.H , HB Color Picker v2.0.1
}
CREATE_RANDOM_WINDOW(){
Gui, 5: +Parent2 -DPIScale -Caption
;Gui, 5: Color, F2F2F2,D3D3D3
Gui, 5: Color, FFFFFF,D3D3D3
DRAW_OUTLINE( 5 , 0 , 0 ,250 , 470 , "444444" , "black" ),DRAW_OUTLINE( 5 , 1 , 1 ,248 , 468 , "D3D3D3" , "F0F0F0" )
;Gui,5:Font,cdddddd s10 ,Segoe Ui
Gui,5:Font,c000000 s10 ,Segoe Ui
Gui,5:Add,Text,cRed x15 y5 w65 h18 BackgroundTrans Center ,RED
Gui,5:Add,Text,cGreen x90 y5 w65 h18 BackgroundTrans Center ,GREEN
Gui,5:Add,Text,c0055ff x165 y5 w65 h18 BackgroundTrans Center ,BLUE
Gui,5:Add,Edit,x15 y25 w30 h18 -e0x200 Center Number Limit3 vRedMin1 gSUBMIT_5 , % RedMin1
Gui,5:Add,Edit,x50 y25 w30 h18 -e0x200 Center Number Limit3 vRedMAX1 gSUBMIT_5 , % RedMAX1
Gui,5:Add,Edit,x90 y25 w30 h18 -e0x200 Center Number Limit3 vGreenMin1 gSUBMIT_5 , % GreenMin1
Gui,5:Add,Edit,x125 y25 w30 h18 -e0x200 Center Number Limit3 vGreenMAX1 gSUBMIT_5 , % GreenMAX1
Gui,5:Add,Edit,x165 y25 w30 h18 -e0x200 Center Number Limit3 vBlueMIN1 gSUBMIT_5 , % BlueMIN1
Gui,5:Add,Edit,x200 y25 w30 h18 -e0x200 Center Number Limit3 vBlueMAX1 gSUBMIT_5 , % BlueMAX1
pButton.Push(New Progress_Button("5",pButton.Length()+1,"Create_RANDOM_SET",60,200,130,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","GENERATE",0))
Gui,5:Add,Text,cRed x15 y225 w65 h18 BackgroundTrans Center ,RED
Gui,5:Add,Text,cGreen x90 y225 w65 h18 BackgroundTrans Center ,GREEN
Gui,5:Add,Text,c0055ff x165 y225 w65 h18 BackgroundTrans Center ,BLUE
Gui,5:Add,Edit,x15 y245 w30 h18 -e0x200 Center Number Limit3 vRedMin2 gSUBMIT_5 , % RedMin2
Gui,5:Add,Edit,x50 y245 w30 h18 -e0x200 Center Number Limit3 vRedMAX2 gSUBMIT_5 , % RedMAX2
Gui,5:Add,Edit,x90 y245 w30 h18 -e0x200 Center Number Limit3 vGreenMin2 gSUBMIT_5 , % GreenMin2
Gui,5:Add,Edit,x125 y245 w30 h18 -e0x200 Center Number Limit3 vGreenMAX2 gSUBMIT_5 , % GreenMAX2
Gui,5:Add,Edit,x165 y245 w30 h18 -e0x200 Center Number Limit3 vBlueMIN2 gSUBMIT_5 , % BlueMIN2
Gui,5:Add,Edit,x200 y245 w30 h18 -e0x200 Center Number Limit3 vBlueMAX2 gSUBMIT_5 , % BlueMAX2
pButton.Push(New Progress_Button("5",pButton.Length()+1,"Create_RANDOM_SET",60,440,130,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","GENERATE",0))
Gui, 5: Show,x7 y10 w250 h470
}
SUBMIT_5(){
Gui,5:Submit,NoHide
}
Create_RANDOM_SET(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
(A_GuiControl=11)?(GENERATERANDOMCOLORWINDOWS(6,RedMin1,RedMAX1,GreenMin1,GreenMAX1,BlueMIN1,BlueMAX1,50,7))
:(A_GuiControl=12)?(GENERATERANDOMCOLORWINDOWS(7,RedMin2,RedMAX2,GreenMin2,GreenMAX2,BlueMIN2,BlueMAX2,270,8))
}
GENERATERANDOMCOLORWINDOWS(genWindow,RMIN,RMAX,GMIN,GMAX,BMIN,BMAX,yttt,lc){
Gui,% genWindow ": Destroy"
Gui,% genWindow ": +Parent5 -Caption -DPISCALE"
Gui,% genWindow ":Color" ,F2F2F2
y:=0,tw:=20,th:=tw
Loop, % LC {
x:=0
Loop, 10 {
RandomColor:=Random_Colour(RMIN,RMAX,GMIN,GMAX,BMIN,BMAX)
Gui,% genWindow ": Add" ,Progress,x%x% y%y% w%tw% h%th% Background%RandomColor%
x+=tw
}
y+=th
}
Gui,% genWindow ": Show",x25 y%yttt% w200 h160
}
ADD_MIXER_BUTTONS(){
pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPRGB",20,438,100,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","CLIP RGB",1))
;pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPGREYSCALE",130,438,100,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","CLIP GREY",1))
;pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPGREYSCALE",130,438,100,20,"FFFFFF","000000","F0F0F0","FFF0F0","992222","CLIP GREY",1))
;pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPGREYSCALE",130,438,100,20,"000000","000000","F0F0F0","FFF0F0","992222","CLIP GREY",1))
pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPGREYSCALE",130,438,100,20,"000000","000000","FFFFFF","FFF0F0","FEC9D8","CLIP GREY",1))
DRAW_LINE( 3 , 21 , 458 , 100 , 1 , "F2F2F2" ),DRAW_LINE( 3 , 120 , 439 , 1 , 20 , "F2F2F2" ),DRAW_LINE( 3 , 131 , 458 , 100 , 1 , "F2F2F2" ),DRAW_LINE( 3 , 230 , 439 , 1 , 20 , "F2F2F2" )
}
RGBSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,3:Show
Gui,4:Hide
Gui,5:Hide
}
SAVEDSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,4:Show
Gui,3:Hide
Gui,5:Hide
}
RANDOMSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,5:Show
Gui,3:Hide
Gui,4:Hide
}
CLIPRGB(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
Clipboard := RGBColorBlock
GuiControl,4:,SAVEDCOLOREDIT,% RGBColorBlock
}
CLIPGREYSCALE(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
Clipboard := GreyScaleColorBlock
GuiControl,4:,SAVEDCOLOREDIT,% GreyScaleColorBlock
}
UPDATERGBCOLORBLOCK(REDSLIDERVALUEt,GREENSLIDERVALUEt,BLUESLIDERVALUEt,GREYSCALESLIDERVALUEt){
GuiControl,3:,GreyScaleDecValue,% GREYSCALESLIDERVALUEt
GuiControl,3:,RedDecValue,% REDSLIDERVALUEt
GuiControl,3:,GreenDecValue,% GREENSLIDERVALUEt
GuiControl,3:,BlueDecValue,% BLUESLIDERVALUEt
SETFORMAT , INTEGER , HEX
REDSLIDERVALUEt += 0 , GREENSLIDERVALUEt += 0 , BLUESLIDERVALUEt += 0 , GREYSCALESLIDERVALUEt += 0
StringTrimLeft,GREYSCALESLIDERVALUEt,GREYSCALESLIDERVALUEt,2
StringTrimLeft,REDSLIDERVALUEt,REDSLIDERVALUEt,2
StringTrimLeft,GREENSLIDERVALUEt,GREENSLIDERVALUEt,2
StringTrimLeft,BLUESLIDERVALUEt,BLUESLIDERVALUEt,2
SETFORMAT , INTEGER , DECIMAL
(strlen(GREYSCALESLIDERVALUEt)=1)?(GREYSCALESLIDERVALUEt:="0" GREYSCALESLIDERVALUEt)
(strlen(REDSLIDERVALUEt)=1)?(REDSLIDERVALUEt:="0" REDSLIDERVALUEt)
(strlen(GREENSLIDERVALUEt)=1)?(GREENSLIDERVALUEt:="0" GREENSLIDERVALUEt)
(strlen(BLUESLIDERVALUEt)=1)?(BLUESLIDERVALUEt:="0" BLUESLIDERVALUEt)
GuiControl,3:,GreyScaleHexValue,% GREYSCALESLIDERVALUEt
GREYSCALESLIDERVALUEt.= GREYSCALESLIDERVALUEt GREYSCALESLIDERVALUEt
GreyScaleColorBlock := GREYSCALESLIDERVALUEt
GuiControl,3:,RedHexValue,% REDSLIDERVALUEt
GuiControl,3:,GreenHexValue,% GREENSLIDERVALUEt
GuiControl,3:,BlueHexValue,% BLUESLIDERVALUEt
RGBColorBlock:= REDSLIDERVALUEt . GREENSLIDERVALUEt . BLUESLIDERVALUEt
GuiControl, 3: +c%RGBColorBlock% , RGBColorBlock,
GuiControl, 3: +c%GreyScaleColorBlock% , GreyScaleColorBlock,
}
ADD_COLOR_DISPLAYS(){
Gui,3:Add,Progress,x7 y6 w235 h100 BackgroundF2F2F2
DRAW_OUTLINE( 3 , 6 , 5 , 237 , 102 , "444444" , "black" )
Gui, 3:Add,Progress,x20 y15 w130 h80 BackgroundBlack c%RGBColorBlock% vRGBCOLORBLOCK, 100
DRAW_OUTLINE( 3 , 19 , 14 , 132 , 82 , "F0F0F0" , "F0F0F0" )
Gui, 3:Add,Progress,x160 y15 w70 h80 BackgroundBlack c%GreyScaleColorBlock% vGREYSCALECOLORBLOCK, 100
DRAW_OUTLINE( 3 , 159 , 14 , 72 , 82 , "F0F0F0" , "F0F0F0" )
}
Random_Colour(Range_R_Min:=0,Range_R_Max:=255,Range_G_Min:=0,Range_G_Max:=255,Range_B_Min:=0,Range_B_Max:=255){
RGBCOLOR := { 1 : ( Random( Range_R_Min , Range_R_Max ) ) , 2 : Random( Range_G_Min , Range_G_Max ) , 3 : Random( Range_B_Min , Range_B_Max ) }
FOR COLOR IN RGBCOLOR {
SETFORMAT , INTEGER , HEX
RGBCOLOR[ A_INDEX ] += 0
TEMP := RGBCOLOR[A_INDEX]
STRINGREPLACE , TEMP , TEMP , 0x
RGBCOLOR[A_INDEX] := TEMP
SETFORMAT , INTEGER , DECIMAL
IF( STRLEN( RGBCOLOR[ A_INDEX ] ) < 2 )
RGBCOLOR[ A_INDEX ] := "0" RGBCOLOR[ A_INDEX ]
TEMPCOLOR .= RGBCOLOR[ A_INDEX ]
}
RETURN TEMPCOLOR
}
Random(MIN,MAX){
Random,OUTPUT,MIN,MAX
return OUTPUT
}
pButton_StartUp(){
SetTimer,Watch_Hover,10
}
Watch_Hover(){
global
if(Press_active=0){
if(Hover_On=0){
MouseGetPos,,,,ctrl,2
loop,% pButton.Length() {
GuiControlGet,cName,% pButton[A_Index].Window_Name ":Name",% ctrl
cut:=Strlen(cName)
StringLeft,bName,cName,cut-2
if(bname=pButton[A_Index].Button_Name){
pButton[A_Index].Button_Hover_On()
Hover_On:=1,Active_Button:=bname,win:=pButton[A_Index].Window_Name
return
}
}
}else if(Hover_On=1){
MouseGetPos,,,,ctrl,2
GuiControlGet,cName,%win%:Name,% ctrl
cut:=Strlen(cName)
StringLeft,nBName,cName,cut-2
if(NbName!=Active_Button){
pButton[Active_Button].Button_Hover_Off(),Hover_On:=0,Active_Button:=""
}
}
}
}
Class Progress_Button {
__New(Window_Name,Button_Name,Label,x,y,w,h,BC,TRC,TC1,TC2,TC3,Button_Text,Text_Offset:=0){
This.Text_Offset:=Text_Offset,This.Window_Name:=Window_Name,This.Button_Name:=Button_Name,This.Label:=Label
This.Button_ID1:=Button_Name "_1",This.Button_ID2:=Button_Name "_2",This.Button_ID3:=Button_Name "_3",This.Button_ID4:=Button_Name "_4"
This.Button_Text:=Button_Text,This.X:=x,This.Y:=y,This.W:=w,This.H:=h
This.Bottom_Color:=BC,This.Trim_Color:=TRC,This.Top_Color_1:=TC1,This.Top_Color_2:=TC2,This.Top_Color_3:=TC3
This.Add_Button()
}
Add_Button(){
global
Gui,% This.Window_Name ":Add",Text,% "x" This.X " y" This.Y " w" This.W " h" This.H " v" This.Button_Name " g" This.Label
Gui,% This.Window_Name ":Add",Progress,% "x" This.X " y" This.Y " w" This.W " h" This.H " Background" This.Bottom_Color " v" This.Button_ID1
Gui,% This.Window_Name ":Add",Progress,% "x" This.X " y" This.Y " w" This.W-1 " h" This.H-1 " Background" This.Trim_Color " v" This.Button_ID2
Gui,% This.Window_Name ":Add",Progress,% "x" This.X+1 " y" This.Y+1 " w" This.W-2 " h" This.H-2 " Background" This.Top_Color_1 " v" This.Button_ID3
Gui,% This.Window_Name ":Add",Text,% "x" This.X+1 " y" This.Y+This.Text_Offset " w" This.W-2 " Center BackgroundTrans v" This.Button_ID4,% This.Button_Text
}
Button_Press(){
global
Press_Active:=1
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X+1 " y" This.Y+1+This.Text_Offset
sleep,-1
GuiControl,% This.Window_Name ":Hide",This.Button_ID2
GuiControl,% This.Window_Name ":+Background" This.Top_Color_3,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
While(GetKeyState("LButton"))
Sleep, 10
MouseGetPos,,,,ctrl,2
GuiControlGet,cName,% win ":Name",% ctrl
cut:=Strlen(cName)
StringLeft,bName,cName,cut-2
if(bname=This.Button_Name){
GuiControl,% This.Window_Name ":Show",This.Button_ID2
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID2
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X " y" This.Y+This.Text_Offset
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
%bName%.Button_Hover_On(),Hover_On:=0,Active_Button:=bname,Press_Active:=0
sleep,10
return true
}
GuiControl,% This.Window_Name ":Show",This.Button_ID2
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X " y" This.Y+This.Text_Offset
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID2
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
Hover_On:=0,Press_Active:=0
sleep,10
return False
}
Button_Hover_On(){
global
GuiControl,% This.Window_Name ":+Background" This.Top_Color_2,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
}
Button_Hover_Off(){
global
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
}
}
esc::ExitApp
- Attachments
-
- Color_Picker_White_Theme.png (15.29 KiB) Viewed 1053 times
Re: Color Picker
@Hellbent
I know this is old, but it wasn't working on my quad 58" 4k setup, even when I turned all except one 4k, so I fixed it, but everything else works great. I hope this helps someone in the future, at least until Pulover's Macro Creator for AHK V2. I do hope that is a thing; I love it; it's better than the paid maco creators like Jitbit, a program I own.
I know this is old, but it wasn't working on my quad 58" 4k setup, even when I turned all except one 4k, so I fixed it, but everything else works great. I hope this helps someone in the future, at least until Pulover's Macro Creator for AHK V2. I do hope that is a thing; I love it; it's better than the paid maco creators like Jitbit, a program I own.
Code: Select all
if not A_IsAdmin
{
Run *RunAs "%A_ScriptFullPath%" ; Requires v1.0.92.01+
ExitApp
}
#SingleInstance, Force
SetBatchLines,-1
#NoEnv
SetWorkingDir,%A_ScriptDir%
pButton_StartUp()
global pButton:={}
global Press_active:=0,Hover_On:=0,Active_Button
global Main_Window:={Y: 0 , W: 300 , H: 600 }
Main_Window.X:=(A_ScreenWidth-Main_Window.W)-100
global REDSLIDERVALUE := 0 , GREENSLIDERVALUE := 0 , BLUESLIDERVALUE := 0 , RGBCOLORBLOCK := "000000" , GREYSCALESLIDERVALUE := 0 , GREYSCALECOLORBLOCK := "000000"
global REDTRIGGER , GREENTRIGGER , BLUETRIGGER , GREYSCALETRIGGER , OUTPUTCOLOR
global REDHEXVALUE := "00" , GREENHEXVALUE := "00" , BLUEHEXVALUE := "00" , GREYSCALEHEXVALUE := "00"
global REDDECVALUE := "0" , GREENDECVALUE := "0" , BLUEDECVALUE := "0" , GREYSCALEDECVALUE := GREYSCALESLIDERVALUE
global REDMIN1:=0 , REDMAX1:=255 , REDMIN2:=0 , REDMAX2:=255
global GREENMIN1:=0 , GREENMAX1:=255 , GREENMIN2:=0 , GREENMAX2:=255
global BLUEMIN1:=0 , BLUEMAX1:=255 , BLUEMIN2:=0 , BLUEMAX2:=255
global Saved_Colors_List:= [] , SAVEDCOLOREDIT:="" , ALLOWNEWSAVEDVALUE:=0
IfExist, Color_Picker_v2_Saved_Colors_List.txt
{
FileRead,svdcol,Color_Picker_v2_Saved_Colors_List.txt
Loop, Parse, svdcol ,*
Saved_Colors_List[A_Index]:=A_LoopField
}
IfNotExist, Color_Picker_v2_Saved_Colors_List.txt
{
Loop, 150 {
Saved_Colors_List[A_Index]:="777777",tempcollist:="777777*"
FileAppend,%tempcollist%,Color_Picker_v2_Saved_Colors_List.txt
}
}
Create_Main_Window(),Create_SUB_Window(),CREATE_MIXER_WINDOW(),CREATE_SAVED_WINDOW(),CREATE_RANDOM_WINDOW()
SetTimer,SETPICKERONTOP,400
return
GuiClose:
ExitApp
GuiContextMenu:
(Tog:=!Tog)?(Main_Window.H:=40):(Main_Window.H:=600)
Gui,1:Show,% "h" Main_Window.H " NA"
return
CREATE_MIXER_WINDOW(){
Gui, 3: +Parent2 +DPIScale -Caption
Gui, 3: Color, 333333 , 333333
DRAW_OUTLINE( 3 , 0 , 0 ,250 , 470 , "444444" , "black" ),DRAW_OUTLINE( 3 , 1 , 1 ,248 , 468 , "333333" , "111111" )
ADD_COLOR_DISPLAYS(),ADD_RGB_SLIDERS(),ADD_GREYSCALE_SLIDERS(),ADD_MIXER_BUTTONS()
Gui, 3: Show,x7 y10 w250 h470
}
CREATE_SAVED_WINDOW(){
global
Gui, 4: +Parent2 +DPIScale -Caption
Gui, 4: Color,333333,222222
x:=25
Loop, 11 {
Gui,4:Add,Progress,x%x% y40 w1 h300 BackgroundBlack
x+=20
}
y:=40
Loop, 16 {
Gui,4:Add,Progress,x25 y%y% w200 h1 BackgroundBlack
y+=20
}
y:=41,i:=1
Loop, 15 {
x:=26
Loop, 10 {
Gui,4:Add,Text,x%x% y%y% w19 h19 BackgroundTrans vGUISavedColorTRIGGER_%i% gChange_Colors
Gui,4:Add,Progress,% "x" x " y" y " w19 h19 Background" Saved_Colors_List[i] " vGUISavedColor_" i
i++,x+=20
}
y+=20
}
Gui,4:Font,caaaaaa s10 w500,Segoe ui
Gui,4:add,Edit, x75 y355 w100 h20 Center Uppercase -E0x200 vSAVEDCOLOREDIT gSubmit_4,
DRAW_OUTLINE( 4 , 74 , 354 ,102 , 22 , "777777" , "666666" )
pButton.Push(New Progress_Button("4",pButton.Length()+1,"SETADDTOSAVEDLIST",10,390,110,20,"111111","777777","252525","880000","992222","ADD COLOR",1))
pButton.Push(New Progress_Button("4",pButton.Length()+1,"SETREMOVEFROMSAVEDLIST",130,390,110,20,"111111","777777","252525","880000","992222","REMOVE COLOR",1))
pButton.Push(New Progress_Button("4",pButton.Length()+1,"CLEARALLSAVEDCOLORS",50,420,150,30,"111111","777777","252525","880000","992222","CLEAR ALL COLORS",7))
Gui, 4: Show,x7 y10 w250 h470
Gui, 4: Hide
}
CLEARALLSAVEDCOLORS(){
stime:=A_TickCount
While(GETKEYSTATE("LBUTTON")){
if(A_TickCount-stime>3000){
Loop 150 {
GuiControl,% "4:+Background777777", GUISavedColor_%A_Index%
Saved_Colors_List[A_Index]:="777777"
}
SAVECOLORLISTTOFILE()
return
}
}
}
Change_Colors(){
if(ALLOWNEWSAVEDVALUE=1){
ALLOWNEWSAVEDVALUE:=0
StringTrimLeft,tsop,A_GUICONTROL,21
Saved_Colors_List[tsop]:=SAVEDCOLOREDIT
GuiControl,% "4:+Background" Saved_Colors_List[tsop], GUISavedColor_%tsop%
SAVECOLORLISTTOFILE()
}else if(ALLOWNEWSAVEDVALUE=2){
ALLOWNEWSAVEDVALUE:=0
StringTrimLeft,tsop,A_GUICONTROL,21
Saved_Colors_List[tsop]:="777777"
GuiControl,% "4:+Background" Saved_Colors_List[tsop], GUISavedColor_%tsop%
SAVECOLORLISTTOFILE()
}
}
Submit_4(){
Gui,4:Submit,NoHide
}
SETREMOVEFROMSAVEDLIST(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
ALLOWNEWSAVEDVALUE:=2
}
SETADDTOSAVEDLIST(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
ALLOWNEWSAVEDVALUE:=1
}
SAVECOLORLISTTOFILE(){
FileDelete,Color_Picker_v2_Saved_Colors_List.txt
Loop, 150 {
tvtstf:=Saved_Colors_List[A_Index] "*"
FileAppend,%tvtstf%,Color_Picker_v2_Saved_Colors_List.txt
}
}
Move_Window(){
POSTMESSAGE , 0XA1 , 2
SETTIMER , WATCH_HOVER , OFF
WHILE( GETKEYSTATE( "LBUTTON" ) )
SLEEP , 10
SETTIMER , WATCH_HOVER , ON
}
DRAW_OUTLINE( GUI_NAME , X , Y , W , H , COLOR1 :="BLACK", COLOR2 := "BLACK" , THICKNESS := 1 ) {
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" W " H" THICKNESS " BACKGROUND" COLOR1
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" THICKNESS " H" H " BACKGROUND" COLOR1
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y + H - THICKNESS " W" W " H" THICKNESS " BACKGROUND" COLOR2
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X + W - THICKNESS " Y" Y " W" THICKNESS " H" H " BACKGROUND" COLOR2
}
DRAW_LINE( GUI_NAME , X , Y , W , H , COLOR ) {
GUI , % GUI_NAME ": ADD" , PROGRESS , % "X" X " Y" Y " W" W " H" H " BACKGROUND" COLOR
}
ADD_GREYSCALE_SLIDERS(){
Gui, 3:Font,caaaaaa s10 w600 , Segoe UI
Gui, 3:Add,Text,x190 y140 w20 h256 vGREYSCALETRIGGER gADJUST_SLIDER
Gui, 3:Add,Progress,x165 y110 w70 h316 Background111111
Gui, 3:Add,Edit,x170 y115 w60 h20 Center -E0x200 Disabled vGREYSCALEHEXVALUE ,% GREYSCALEHEXVALUE
Gui, 3:Add,Progress,x190 y140 w20 h256 Background333333 c888888 Range0-255 Vertical vGREYSCALESLIDERVALUE ,% GREYSCALESLIDERVALUE
Gui, 3:Add,Edit,x170 y401 w60 h20 Center -E0x200 Disabled vGREYSCALEDECVALUE ,% GREYSCALEDECVALUE
}
ADD_RGB_SLIDERS(){
Gui, 3:Add,Text,x30 y140 w20 h256 vREDTRIGGER gADJUST_SLIDER
Gui, 3:Add,Text,x73 y140 w20 h256 vGREENTRIGGER gADJUST_SLIDER
Gui, 3:Add,Text,x115 y140 w20 h256 vBLUETRIGGER gADJUST_SLIDER
Gui, 3:Add,Progress,x10 y110 w145 h316 Background111111
Gui, 3:Font,cffffff s10 w600 , Segoe UI
Gui, 3:Add,Edit,x25 y115 w30 h20 Center -E0x200 Disabled vREDHEXVALUE ,% REDHEXVALUE
Gui, 3:Add,Edit,x68 y115 w30 h20 Center -E0x200 Disabled vGREENHEXVALUE ,% GREENHEXVALUE
Gui, 3:Add,Edit,x110 y115 w30 h20 Center -E0x200 Disabled vBLUEHEXVALUE ,% BLUEHEXVALUE
Gui, 3:Add,Progress,x30 y140 w20 h256 Background330000 caa2222 Range0-255 Vertical vREDSLIDERVALUE,% REDSLIDERVALUE
Gui, 3:Add,Progress,x73 y140 w20 h256 Background003300 c22aa22 Range0-255 Vertical vGREENSLIDERVALUE,% GREENSLIDERVALUE
Gui, 3:Add,Progress,x115 y140 w20 h256 Background000033 c2222aa Range0-255 Vertical vBLUESLIDERVALUE,% BLUESLIDERVALUE
Gui, 3:Add,Edit,x25 y401 w30 h20 Center -E0x200 Disabled vREDDECVALUE ,% REDDECVALUE
Gui, 3:Add,Edit,x68 y401 w30 h20 Center -E0x200 Disabled vGREENDECVALUE ,% GREENDECVALUE
Gui, 3:Add,Edit,x110 y401 w30 h20 Center -E0x200 Disabled vBLUEDECVALUE ,% BLUEDECVALUE
}
GETCOLORFROMSCREEN(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
While(!GetKeyState("Ctrl")){
CoordMode,Mouse,Screen
CoordMode,Pixel,Screen
Tooltip, Press ""Ctrl"" to lock color. %OUTPUTCOLOR%
MouseGetPos,tcx,tcy
tcx:=tcx*3
tcy:=tcy*3
PixelGetColor,OUTPUTCOLOR,tcx,tcy,RGB
UPDATECOLORDISPLAYS(OUTPUTCOLOR)
}
ToolTip,
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
Clipboard:=OUTPUTCOLOR
GuiControl,4:,SAVEDCOLOREDIT,% OUTPUTCOLOR
}
UPDATECOLORDISPLAYS(OUTPUTCOLOR){
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , r , OUTPUTCOLOR , 2
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , g , OUTPUTCOLOR , 2
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , b , OUTPUTCOLOR , 2
r:= "0x" r,g:="0x" g,b:="0x" b
REDSLIDERVALUE:=r+0,GreenSLIDERVALUE:=g+0,BlueSLIDERVALUE:=b+0
GreyScaleSLIDERVALUE:=Round((REDSLIDERVALUE+GreenSLIDERVALUE+BlueSLIDERVALUE)/3)
GuiControl,3:,REDSLIDERVALUE,% REDSLIDERVALUE
GuiControl,3:,GreenSLIDERVALUE,% GreenSLIDERVALUE
GuiControl,3:,BlueSLIDERVALUE,% BlueSLIDERVALUE
GuiControl,3:,GreyScaleSLIDERVALUE,% GreyScaleSLIDERVALUE
UPDATERGBCOLORBLOCK(REDSLIDERVALUE,GreenSLIDERVALUE,BlueSLIDERVALUE,GreyScaleSLIDERVALUE)
}
ADJUST_SLIDER(){
Coordmode,Mouse,Client
SLIDERVALUE:=0
While(GETKEYSTATE("LButton")){
MouseGetPos,Rx,Ry
if(GETKEYSTATE("UP")){
if(ry-1>194)
MouseMove,Rx,ry-1
KeyWait,Up,Up
}else if(GETKEYSTATE("Down")){
if(ry+1<451)
MouseMove,Rx,ry+1
KeyWait,Down,Up
}else if(GETKEYSTATE("Left")){
if(ry+1<451)
MouseMove,Rx,ry+1
}else if(GETKEYSTATE("Right")){
if(ry-1>194)
MouseMove,Rx,ry-1
}
SLIDERVALUE:=(RY-195) * -1
(SLIDERVALUE < -255) ? (SLIDERVALUE:=-255) : (SLIDERVALUE > 0) ? (SLIDERVALUE:=0)
if(A_GuiControl="REDTRIGGER"){
REDSLIDERVALUE:=SLIDERVALUE+255
GuiControl,3:,REDSLIDERVALUE,% REDSLIDERVALUE
ToolTip,% REDSLIDERVALUE
}else if(A_GuiControl="GREENTRIGGER"){
GREENSLIDERVALUE:=SLIDERVALUE+255
GuiControl,3:,GREENSLIDERVALUE,% GREENSLIDERVALUE
ToolTip,% GREENSLIDERVALUE
}else if(A_GuiControl="BLUETRIGGER"){
BLUESLIDERVALUE:=SLIDERVALUE+255
GuiControl,3:,BLUESLIDERVALUE,% BLUESLIDERVALUE
ToolTip,% BLUESLIDERVALUE
}else if(A_GuiControl="GREYSCALETRIGGER"){
GREYSCALESLIDERVALUE:=SLIDERVALUE+255
GuiControl,3:,GREYSCALESLIDERVALUE,% GREYSCALESLIDERVALUE
ToolTip,% GREYSCALESLIDERVALUE
}
UPDATERGBCOLORBLOCK(REDSLIDERVALUE,GREENSLIDERVALUE,BLUESLIDERVALUE,GREYSCALESLIDERVALUE)
}
ToolTip,
}
Create_SUB_Window(){
Gui, 2: +Parent1 +DPIScale -Caption
Gui, 2: Color, 111111
DRAW_OUTLINE( 2 , 0 , 0 ,260 , 575, "444444" , "black" ),DRAW_OUTLINE( 2 , 1 , 1 ,258 , 573, "333333" , "111111" )
Gui, 2: Show,% "x30 y45 w" Main_Window.W-40 " h" Main_Window.H - 75
}
SETPICKERONTOP(){
WINGETTITLE,CWIN,A
IF(CWIN!="HB Color Picker v2.0.1")
GUI,1:SHOW,NA
}
Create_Main_Window(){
Gui, 1: +AlwaysOnTop +DPIScale -Caption +LastFound
Winset,Transcolor,112343
Gui, 1: Color,112343
Gui,1:Font,caaaaaa s10 w600 , Segoe UI
pButton.Push(New Progress_Button("1",pButton.Length()+1,"Move_Window",floor((Main_Window.W-150)//2),10,150,30,"BLACK","777777","333333","003366","BLACK","HB Color Picker",5))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"RGBSUBWINDOW",6,60,23,120,"444444","777777","333333","003366","003388","M`nI`nX`nE`nR",15))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"SAVEDSUBWINDOW",6,190,23,120,"444444","777777","333333","003366","003388","S`nA`nV`nE`nD",15))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"RANDOMSUBWINDOW",6,320,23,120,"444444","777777","333333","003366","003388","R`nA`nN`nD`nO`nM",8))
pButton.Push(New Progress_Button("1",pButton.Length()+1,"GETCOLORFROMSCREEN",75,530,170,30,"111111","777777","252525","008833","992222","GET COLOR",5))
Gui, 1: Show,% "x" Main_Window.X " y" Main_Window.Y " w" Main_Window.W " h" Main_Window.H , HB Color Picker v2.0.1
}
CREATE_RANDOM_WINDOW(){
Gui, 5: +Parent2 +DPIScale -Caption
Gui, 5: Color, 222222,333333
DRAW_OUTLINE( 5 , 0 , 0 ,250 , 470 , "444444" , "black" ),DRAW_OUTLINE( 5 , 1 , 1 ,248 , 468 , "333333" , "111111" )
Gui,5:Font,cdddddd s10 ,Segoe Ui
Gui,5:Add,Text,cRed x15 y5 w65 h18 BackgroundTrans Center ,RED
Gui,5:Add,Text,cGreen x90 y5 w65 h18 BackgroundTrans Center ,GREEN
Gui,5:Add,Text,c0055ff x165 y5 w65 h18 BackgroundTrans Center ,BLUE
Gui,5:Add,Edit,x15 y25 w30 h18 -e0x200 Center Number Limit3 vREDMIN1 gSUBMIT_5 , % REDMIN1
Gui,5:Add,Edit,x50 y25 w30 h18 -e0x200 Center Number Limit3 vREDMAX1 gSUBMIT_5 , % REDMAX1
Gui,5:Add,Edit,x90 y25 w30 h18 -e0x200 Center Number Limit3 vGREENMIN1 gSUBMIT_5 , % GREENMIN1
Gui,5:Add,Edit,x125 y25 w30 h18 -e0x200 Center Number Limit3 vGREENMAX1 gSUBMIT_5 , % GREENMAX1
Gui,5:Add,Edit,x165 y25 w30 h18 -e0x200 Center Number Limit3 vBLUEMIN1 gSUBMIT_5 , % BLUEMIN1
Gui,5:Add,Edit,x200 y25 w30 h18 -e0x200 Center Number Limit3 vBLUEMAX1 gSUBMIT_5 , % BLUEMAX1
pButton.Push(New Progress_Button("5",pButton.Length()+1,"Create_RANDOM_SET",60,200,130,20,"BLACK","777777","333333","003366","BLACK","GENERATE",0))
Gui,5:Add,Text,cRed x15 y225 w65 h18 BackgroundTrans Center ,RED
Gui,5:Add,Text,cGreen x90 y225 w65 h18 BackgroundTrans Center ,GREEN
Gui,5:Add,Text,c0055ff x165 y225 w65 h18 BackgroundTrans Center ,BLUE
Gui,5:Add,Edit,x15 y245 w30 h18 -e0x200 Center Number Limit3 vREDMIN2 gSUBMIT_5 , % REDMIN2
Gui,5:Add,Edit,x50 y245 w30 h18 -e0x200 Center Number Limit3 vREDMAX2 gSUBMIT_5 , % REDMAX2
Gui,5:Add,Edit,x90 y245 w30 h18 -e0x200 Center Number Limit3 vGREENMIN2 gSUBMIT_5 , % GREENMIN2
Gui,5:Add,Edit,x125 y245 w30 h18 -e0x200 Center Number Limit3 vGREENMAX2 gSUBMIT_5 , % GREENMAX2
Gui,5:Add,Edit,x165 y245 w30 h18 -e0x200 Center Number Limit3 vBLUEMIN2 gSUBMIT_5 , % BLUEMIN2
Gui,5:Add,Edit,x200 y245 w30 h18 -e0x200 Center Number Limit3 vBLUEMAX2 gSUBMIT_5 , % BLUEMAX2
pButton.Push(New Progress_Button("5",pButton.Length()+1,"Create_RANDOM_SET",60,440,130,20,"BLACK","777777","333333","003366","BLACK","GENERATE",0))
Gui, 5: Show,x7 y10 w250 h470
}
SUBMIT_5(){
Gui,5:Submit,NoHide
}
Create_RANDOM_SET(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
(A_GuiControl=11)?(GENERATERANDOMCOLORWINDOWS(6,REDMIN1,REDMAX1,GREENMIN1,GREENMAX1,BLUEMIN1,BLUEMAX1,50,7))
:(A_GuiControl=12)?(GENERATERANDOMCOLORWINDOWS(7,REDMIN2,REDMAX2,GREENMIN2,GREENMAX2,BLUEMIN2,BLUEMAX2,270,8))
}
GENERATERANDOMCOLORWINDOWS(genWindow,RMIN,RMAX,GMIN,GMAX,BMIN,BMAX,yttt,lc){
Gui,% genWindow ": Destroy"
Gui,% genWindow ": +Parent5 -Caption +DPISCALE"
Gui,% genWindow ":Color" ,222222
y:=0,tw:=20,th:=tw
Loop, % LC {
x:=0
Loop, 10 {
RandomColor:=Random_Colour(RMIN,RMAX,GMIN,GMAX,BMIN,BMAX)
Gui,% genWindow ": Add" ,Progress,x%x% y%y% w%tw% h%th% Background%RandomColor%
x+=tw
}
y+=th
}
Gui,% genWindow ": Show",x25 y%yttt% w200 h160
}
ADD_MIXER_BUTTONS(){
pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPRGB",20,438,100,20,"111111","777777","252525","880000","992222","CLIP RGB",1))
pButton.Push(New Progress_Button("3",pButton.Length()+1,"CLIPGREYSCALE",130,438,100,20,"111111","777777","252525","880000","992222","CLIP GREY",1))
DRAW_LINE( 3 , 21 , 458 , 100 , 1 , "222222" ),DRAW_LINE( 3 , 120 , 439 , 1 , 20 , "222222" ),DRAW_LINE( 3 , 131 , 458 , 100 , 1 , "222222" ),DRAW_LINE( 3 , 230 , 439 , 1 , 20 , "222222" )
}
RGBSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,3:Show
Gui,4:Hide
Gui,5:Hide
}
SAVEDSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,4:Show
Gui,3:Hide
Gui,5:Hide
}
RANDOMSUBWINDOW(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
GUI,5:Show
Gui,3:Hide
Gui,4:Hide
}
CLIPRGB(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
Clipboard := RGBCOLORBLOCK
GuiControl,4:,SAVEDCOLOREDIT,% RGBCOLORBLOCK
}
CLIPGREYSCALE(){
IF( !PBUTTON[ A_GUICONTROL ].BUTTON_PRESS() )
RETURN
Clipboard := GREYSCALECOLORBLOCK
GuiControl,4:,SAVEDCOLOREDIT,% GREYSCALECOLORBLOCK
}
UPDATERGBCOLORBLOCK(REDSLIDERVALUEt,GREENSLIDERVALUEt,BLUESLIDERVALUEt,GREYSCALESLIDERVALUEt){
GuiControl,3:,GREYSCALEDECVALUE,% GREYSCALESLIDERVALUEt
GuiControl,3:,REDDECVALUE,% REDSLIDERVALUEt
GuiControl,3:,GREENDECVALUE,% GREENSLIDERVALUEt
GuiControl,3:,BLUEDECVALUE,% BLUESLIDERVALUEt
SETFORMAT , INTEGER , HEX
REDSLIDERVALUEt += 0 , GREENSLIDERVALUEt += 0 , BLUESLIDERVALUEt += 0 , GREYSCALESLIDERVALUEt += 0
StringTrimLeft,GREYSCALESLIDERVALUEt,GREYSCALESLIDERVALUEt,2
StringTrimLeft,REDSLIDERVALUEt,REDSLIDERVALUEt,2
StringTrimLeft,GREENSLIDERVALUEt,GREENSLIDERVALUEt,2
StringTrimLeft,BLUESLIDERVALUEt,BLUESLIDERVALUEt,2
SETFORMAT , INTEGER , DECIMAL
(strlen(GREYSCALESLIDERVALUEt)=1)?(GREYSCALESLIDERVALUEt:="0" GREYSCALESLIDERVALUEt)
(strlen(REDSLIDERVALUEt)=1)?(REDSLIDERVALUEt:="0" REDSLIDERVALUEt)
(strlen(GREENSLIDERVALUEt)=1)?(GREENSLIDERVALUEt:="0" GREENSLIDERVALUEt)
(strlen(BLUESLIDERVALUEt)=1)?(BLUESLIDERVALUEt:="0" BLUESLIDERVALUEt)
GuiControl,3:,GREYSCALEHEXVALUE,% GREYSCALESLIDERVALUEt
GREYSCALESLIDERVALUEt.= GREYSCALESLIDERVALUEt GREYSCALESLIDERVALUEt
GREYSCALECOLORBLOCK := GREYSCALESLIDERVALUEt
GuiControl,3:,REDHEXVALUE,% REDSLIDERVALUEt
GuiControl,3:,GREENHEXVALUE,% GREENSLIDERVALUEt
GuiControl,3:,BLUEHEXVALUE,% BLUESLIDERVALUEt
RGBCOLORBLOCK:= REDSLIDERVALUEt . GREENSLIDERVALUEt . BLUESLIDERVALUEt
GuiControl, 3: +c%RGBCOLORBLOCK% , RGBCOLORBLOCK,
GuiControl, 3: +c%GREYSCALECOLORBLOCK% , GREYSCALECOLORBLOCK,
}
ADD_COLOR_DISPLAYS(){
Gui,3:Add,Progress,x7 y6 w235 h100 Background222222
DRAW_OUTLINE( 3 , 6 , 5 , 237 , 102 , "444444" , "black" )
Gui, 3:Add,Progress,x20 y15 w130 h80 BackgroundBlack c%RGBCOLORBLOCK% vRGBCOLORBLOCK, 100
DRAW_OUTLINE( 3 , 19 , 14 , 132 , 82 , "111111" , "111111" )
Gui, 3:Add,Progress,x160 y15 w70 h80 BackgroundBlack c%GREYSCALECOLORBLOCK% vGREYSCALECOLORBLOCK, 100
DRAW_OUTLINE( 3 , 159 , 14 , 72 , 82 , "111111" , "111111" )
}
Random_Colour(Range_R_Min:=0,Range_R_Max:=255,Range_G_Min:=0,Range_G_Max:=255,Range_B_Min:=0,Range_B_Max:=255){
RGBCOLOR := { 1 : ( Random( Range_R_Min , Range_R_Max ) ) , 2 : Random( Range_G_Min , Range_G_Max ) , 3 : Random( Range_B_Min , Range_B_Max ) }
FOR COLOR IN RGBCOLOR {
SETFORMAT , INTEGER , HEX
RGBCOLOR[ A_INDEX ] += 0
TEMP := RGBCOLOR[A_INDEX]
STRINGREPLACE , TEMP , TEMP , 0x
RGBCOLOR[A_INDEX] := TEMP
SETFORMAT , INTEGER , DECIMAL
IF( STRLEN( RGBCOLOR[ A_INDEX ] ) < 2 )
RGBCOLOR[ A_INDEX ] := "0" RGBCOLOR[ A_INDEX ]
TEMPCOLOR .= RGBCOLOR[ A_INDEX ]
}
RETURN TEMPCOLOR
}
Random(MIN,MAX){
Random,OUTPUT,MIN,MAX
return OUTPUT
}
pButton_StartUp(){
SetTimer,Watch_Hover,10
}
Watch_Hover(){
global
if(Press_active=0){
if(Hover_On=0){
MouseGetPos,,,,ctrl,2
loop,% pButton.Length() {
GuiControlGet,cName,% pButton[A_Index].Window_Name ":Name",% ctrl
cut:=Strlen(cName)
StringLeft,bName,cName,cut-2
if(bname=pButton[A_Index].Button_Name){
pButton[A_Index].Button_Hover_On()
Hover_On:=1,Active_Button:=bname,win:=pButton[A_Index].Window_Name
return
}
}
}else if(Hover_On=1){
MouseGetPos,,,,ctrl,2
GuiControlGet,cName,%win%:Name,% ctrl
cut:=Strlen(cName)
StringLeft,nBName,cName,cut-2
if(NbName!=Active_Button){
pButton[Active_Button].Button_Hover_Off(),Hover_On:=0,Active_Button:=""
}
}
}
}
Class Progress_Button {
__New(Window_Name,Button_Name,Label,x,y,w,h,BC,TRC,TC1,TC2,TC3,Button_Text,Text_Offset:=0){
This.Text_Offset:=Text_Offset,This.Window_Name:=Window_Name,This.Button_Name:=Button_Name,This.Label:=Label
This.Button_ID1:=Button_Name "_1",This.Button_ID2:=Button_Name "_2",This.Button_ID3:=Button_Name "_3",This.Button_ID4:=Button_Name "_4"
This.Button_Text:=Button_Text,This.X:=x,This.Y:=y,This.W:=w,This.H:=h
This.Bottom_Color:=BC,This.Trim_Color:=TRC,This.Top_Color_1:=TC1,This.Top_Color_2:=TC2,This.Top_Color_3:=TC3
This.Add_Button()
}
Add_Button(){
global
Gui,% This.Window_Name ":Add",Text,% "x" This.X " y" This.Y " w" This.W " h" This.H " v" This.Button_Name " g" This.Label
Gui,% This.Window_Name ":Add",Progress,% "x" This.X " y" This.Y " w" This.W " h" This.H " Background" This.Bottom_Color " v" This.Button_ID1
Gui,% This.Window_Name ":Add",Progress,% "x" This.X " y" This.Y " w" This.W-1 " h" This.H-1 " Background" This.Trim_Color " v" This.Button_ID2
Gui,% This.Window_Name ":Add",Progress,% "x" This.X+1 " y" This.Y+1 " w" This.W-2 " h" This.H-2 " Background" This.Top_Color_1 " v" This.Button_ID3
Gui,% This.Window_Name ":Add",Text,% "x" This.X+1 " y" This.Y+This.Text_Offset " w" This.W-2 " Center BackgroundTrans v" This.Button_ID4,% This.Button_Text
}
Button_Press(){
global
Press_Active:=1
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X+1 " y" This.Y+1+This.Text_Offset
sleep,-1
GuiControl,% This.Window_Name ":Hide",This.Button_ID2
GuiControl,% This.Window_Name ":+Background" This.Top_Color_3,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
While(GetKeyState("LButton"))
Sleep, 10
MouseGetPos,,,,ctrl,2
GuiControlGet,cName,% win ":Name",% ctrl
cut:=Strlen(cName)
StringLeft,bName,cName,cut-2
if(bname=This.Button_Name){
GuiControl,% This.Window_Name ":Show",This.Button_ID2
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID2
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X " y" This.Y+This.Text_Offset
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
%bName%.Button_Hover_On(),Hover_On:=0,Active_Button:=bname,Press_Active:=0
sleep,10
return true
}
GuiControl,% This.Window_Name ":Show",This.Button_ID2
GuiControl,% This.Window_Name ":Move",% This.Button_ID4,% "x" This.X " y" This.Y+This.Text_Offset
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID1
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID2
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
Hover_On:=0,Press_Active:=0
sleep,10
return False
}
Button_Hover_On(){
global
GuiControl,% This.Window_Name ":+Background" This.Top_Color_2,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
}
Button_Hover_Off(){
global
GuiControl,% This.Window_Name ":+Background" This.Top_Color_1,% This.Button_ID3
GuiControl,% This.Window_Name ":+Redraw",% This.Button_ID4
}
}
Re: Color Picker
Version 3.1
Requires Windows 8+
.
.
.
.
Requires Windows 8+
.
.
.
.
Code: Select all
;Color Picker v3.1
;Written By: HB
;Date Written: Feb 1st, 2023
;Last Edit: Feb 1st, 2023
;Log: 2nd to last color swatch is based off of the first two saved colors in the top left of the window.
;
;****************************************************************************************************************************************************************************
#Include <My Altered GDIP LIB> ;<<<--- ( GDIP ) https://www.autohotkey.com/boards/viewtopic.php?f=6&t=6517
;~ #Include <PopUpWindow_V2> ; At the bottom of the script
;~ #Include <HB Vectors v2> ; At the bottom of the script
;****************************************************************************************************************************************************************************
#SingleInstance, Force
SetBatchLines, -1
SetControlDelay, -1
Gdip_Startup()
Scale := 1
Gui1 := New PopUpWindow( { AutoShow: 1 , X: A_ScreenWidth - 400 * Scale , Y: 150 , W: 370 * Scale , H: 220 * Scale , Options: " -DPIScale +AlwaysOnTop " } )
Gui1.Scale := Scale
Gui1.Controls := {}
Gui1.Handles := []
Gui1.Controls.MoveButton := { X: 44 , Y: 40 , W: 170 , H: 15 , Method: "MoveWindow" } ;Done
Gui1.Controls.CloseButton := { X: 315 , Y: 40 , W: 18 , H: 15 , Method: "GuiClose" } ;Done
Gui1.Controls.RedHex := { X: 224 , Y: 40 , W: 20 , H: 15 , Method: "AdjustRedHexValue" } ;Done
Gui1.Controls.GreenHex := { X: 254 , Y: 40 , W: 20 , H: 15 , Method: "AdjustGreenHexValue" } ;Done
Gui1.Controls.BlueHex := { X: 284 , Y: 40 , W: 20 , H: 15 , Method: "AdjustBlueHexValue" } ;Done
Gui1.Controls.ColorPalette := { X: 20 , Y: 80 , W: 332 , H: 72 , Method: "SelectColorFromPalette" } ;Done
Gui1.Controls.ActiveColorDisplay := { X: 20 , Y: 170 , W: 30 , H: 30 , Method: "ClipboardColor" } ;Done
Gui1.Controls.UseHexPrefixCheckBox := { X: 60 , Y: 165 , W: 50 , H: 35 , Method: "ToggleUseHexPrefix" , Value: 1 } ;Done
Gui1.Controls.RGBRadio := { X: 120 , Y: 165 , W: 50 , H: 35 , Method: "SetRGBOutputType" } ;Done
Gui1.Controls.ARGBRadio := { X: 180 , Y: 165 , W: 50 , H: 35 , Method: "SetARGBOutputType" } ;Done
Gui1.Controls.ListCheckbox := { X: 240 , Y: 165 , W: 50 , H: 35 , Method: "CreateColorList" , Value: 0 } ;Done
Gui1.Controls.AutoClipCheckbox := { X: 300 , Y: 165 , W: 50 , H: 35 , Method: "ToggleAutoClip" , Value: 0 } ;Done
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
Gui, % Gui1.Hwnd ":Add", Text, % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale " hwndhwnd g" cc.Method
cc.Hwnd := Hwnd
cc.Name := k
Gui1.Handles[ hwnd ] := cc
}
Gui1.SavedColors := []
Loop, 36 {
iniRead, outColor, % A_ScriptFullPath, SavedColorData , Color_%A_Index%
Gui1.SavedColors[ A_Index ] := outColor
}
Gui1.SavedColorButtons := [] ;Done
Index := 0
w := 15 , h := 15
y := 20
;colors 1 - 34
Loop, 2 {
x := 18
Loop, 17 {
++Index
Gui1.SavedColorButtons[ Index ] := { X: x , Y: y , W: w , H: h , Method: "SavedColorsPalette" , Color: Gui1.SavedColors[ Index ] , Index: Index }
x += 20
}
y += 40
}
;color 35
++Index
Gui1.SavedColorButtons[ Index ] := { X: 18 , Y: 40 , W: w , H: h , Method: "SavedColorsPalette" , Color: Gui1.SavedColors[ Index ] , Index: Index }
;color 36
++Index
Gui1.SavedColorButtons[ Index ] := { X: ( 18 + 16 * 20 ) , Y: 40 , W: w , H: h , Method: "SavedColorsPalette" , Color: Gui1.SavedColors[ Index ] , Index: Index }
Loop, 36 {
cc := Gui1.SavedColorButtons[ A_Index ]
Gui, % Gui1.Hwnd ":Add", Text, % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale " hwndhwnd g" cc.Method
Gui1.Handles[ hwnd ] := cc
cc.Hwnd := hwnd
}
Gui1.ColorList := ""
Gui1.OutputType := 2
Gui1.AlphaValue := "FF"
Gui1.RedValue := "FF"
Gui1.GreenValue := "FF"
Gui1.BlueValue := "FF"
Gui1.AlphaDec := 255
Gui1.RedDec := 255
Gui1.GreenDec := 255
Gui1.BlueDec := 255
Gui1.Tog := 0
Gui1.LastScale := Gui1.Scale
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
return
GuiClose:
;~ *ESC::
ExitApp
#If WinActive( "ahk_Id " Gui1.Hwnd )
^UP::
Gui1.Tog := 0
ls := Gui1.Scale
( ( Gui1.Scale += .25 ) > 3 ) ? ( Gui1.Scale := 3 )
if( ls != Gui1.Scale ){
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Loop, 36 {
cc := Gui1.SavedColorButtons[ A_Index ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Gui1.UpdateSettings( { X: A_ScreenWidth - 400 * Gui1.Scale , Y: 150 , W: 370 * Gui1.Scale , H: 220 * Gui1.Scale } , 1 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
}
Sleep, 100
return
^Down::
Gui1.Tog := 0
ls := Gui1.Scale
( ( Gui1.Scale -= .25 ) < .25 ) ? ( Gui1.Scale := .25 )
if( ls != Gui1.Scale ){
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Loop, 36 {
cc := Gui1.SavedColorButtons[ A_Index ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Gui1.UpdateSettings( { X: A_ScreenWidth - 400 * Gui1.Scale , Y: 150 , W: 370 * Gui1.Scale , H: 220 * Gui1.Scale } , 1 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
}
Sleep, 100
return
Left::
MouseMove, -1 , 0 ,, R
return
Right::
MouseMove, 1 , 0 ,, R
return
+Left::
MouseMove, -10 , 0 ,, R
return
+Right::
MouseMove, 10 , 0 ,, R
return
Down::
+Down::
Up::
+Up::
gosub, SelectColorFromPalette
return
#If
GuiContextMenu:
if( Gui1.Tog := !Gui1.Tog ){
Gui1.LastScale := Gui1.Scale
Gui1.Scale := 0.25
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Loop, 36 {
cc := Gui1.SavedColorButtons[ A_Index ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
}else{
Gui1.Scale := Gui1.LastScale
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
Loop, 36 {
cc := Gui1.SavedColorButtons[ A_Index ]
GuiControl, % Gui1.Hwnd ":Move" , % cc.Hwnd , % "x" cc.X * Gui1.Scale " y" cc.Y * Gui1.Scale " w" cc.W * Gui1.Scale " h" cc.H * Gui1.Scale
}
}
Gui1.UpdateSettings( { X: A_ScreenWidth - 400 * Gui1.Scale , Y: 150 , W: 370 * Gui1.Scale , H: 220 * Gui1.Scale } , 1 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
return
MoveWindow:
if( GetKeyState( "Shift" ) ){
oV := Gui1.AlphaValue := "FF"
oD := Gui1.AlphaDec := 255
CoordMode, Mouse, Client
MouseGetPos, x , y
StartVector := New Vector( x , y )
While( GetKeyState( "LButton" , "P" ) ){
MouseGetPos, x , y
EndVector := New Vector( x , y )
dist := Floor( StartVector.Dist( EndVector ) - 30 )
( ( Gui1.AlphaDec := 255 - Dist ) > 255 ) ? ( Gui1.AlphaDec := 255 ) : ( Gui1.AlphaDec < 0 ) ? ( Gui1.AlphaDec := 0 )
Gui1.AlphaValue := FHex( Gui1.AlphaDec )
( Gui1.AlphaDec <= 15 ) ? ( Gui1.AlphaValue := "0" SubStr( Gui1.AlphaValue , 3 ) ) : ( Gui1.AlphaValue := SubStr( Gui1.AlphaValue , 3 ) )
if( oD != Gui1.AlphaDec || oV != Gui1.AlphaValue ){
oV := Gui1.AlphaValue
oD := Gui1.AlphaDec
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
ToolTip, % Gui1.AlphaDec "`n" Gui1.AlphaValue
Sleep, 30
}
}
ToolTip,
}else{
PostMessage, 0xA1, 2
While( GetKeyState( "LButton" , "P" ) )
Sleep, 30
WinGetPos, x, y,,, % "ahk_id " Gui1.Hwnd
Gui1.X := x , Gui1.Y := y
}
return
SavedColorsPalette:
MouseGetPos,,,, ctrl , 2
cc := Gui1.Handles[ ctrl ]
if( GetKeyState( "Shift" ) ){
CoordMode, Mouse, Screen
CoordMode, Pixel, Screen
colorWindow := New PopUpWindow( { AutoShow: 1 , X: "Center" , Y: "Center" , W: 60 , H: 60 , Options: " +AlwaysOnTop -DPIScale +Owner" Gui1.Hwnd } )
While( !GetKeyState( "ctrl" ) ){
ToolTip, Press ctrl to capture a color
MouseGetPos, x , y
PixelGetColor, oc , x , y , RGB
colorwindow.UpdateSettings( { X: x + 50 , Y: y - 60 } )
colorwindow.ClearWindow()
colorwindow.PaintBackground( { Color: "0xFF" SubStr( oc , 3 ) , X: 2 , Y: 2 , W: colorwindow.W - 4 , H: colorwindow.H - 4 , Round: 10 } , AutoUpdate := 1 )
Sleep, 30
}
ToolTip,
colorwindow.DeleteWindow()
cc.Color := SubStr( oc , 3 )
IniWrite, % cc.Color , % A_ScriptFullPath , SavedColorData , % "Color_" cc.Index
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 100
}else{
Gui1.RedValue := SubStr( cc.Color , 1 , 2 )
Gui1.GreenValue := SubStr( cc.Color , 3 , 2 )
Gui1.BlueValue := SubStr( cc.Color , 5 , 2 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 100
}
GoSub, CheckList
return
AdjustRedHexValue:
oV := Gui1.RedValue := "FF"
oD := Gui1.RedDec := 255
CoordMode, Mouse, Client
MouseGetPos, x , y
StartVector := New Vector( x , y )
While( GetKeyState( "LButton" , "P" ) ){
MouseGetPos, x , y
EndVector := New Vector( x , y )
dist := Floor( StartVector.Dist( EndVector ) - 10 )
( ( Gui1.RedDec := 255 - Dist ) > 255 ) ? ( Gui1.RedDec := 255 ) : ( Gui1.RedDec < 0 ) ? ( Gui1.RedDec := 0 )
Gui1.RedValue := FHex( Gui1.RedDec )
( Gui1.RedDec <= 15 ) ? ( Gui1.RedValue := "0" SubStr( Gui1.RedValue , 3 ) ) : ( Gui1.RedValue := SubStr( Gui1.RedValue , 3 ) )
if( oD != Gui1.RedDec || oV != Gui1.RedValue ){
oV := Gui1.RedValue
oD := Gui1.RedDec
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
ToolTip, % Gui1.RedDec "`n" Gui1.RedValue
Sleep, 30
}
}
ToolTip,
return
AdjustGreenHexValue:
oV := Gui1.GreenValue := "FF"
oD := Gui1.GreenDec := 255
CoordMode, Mouse, Client
MouseGetPos, x , y
StartVector := New Vector( x , y )
While( GetKeyState( "LButton" , "P" ) ){
MouseGetPos, x , y
EndVector := New Vector( x , y )
dist := Floor( StartVector.Dist( EndVector ) - 10 )
( ( Gui1.GreenDec := 255 - Dist ) > 255 ) ? ( Gui1.GreenDec := 255 ) : ( Gui1.GreenDec < 0 ) ? ( Gui1.GreenDec := 0 )
Gui1.GreenValue := FHex( Gui1.GreenDec )
( Gui1.GreenDec <= 15 ) ? ( Gui1.GreenValue := "0" SubStr( Gui1.GreenValue , 3 ) ) : ( Gui1.GreenValue := SubStr( Gui1.GreenValue , 3 ) )
if( oD != Gui1.GreenDec || oV != Gui1.GreenValue ){
oV := Gui1.GreenValue
oD := Gui1.GreenDec
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
ToolTip, % Gui1.GreenDec "`n" Gui1.GreenValue
Sleep, 30
}
}
ToolTip,
return
AdjustBlueHexValue:
oV := Gui1.BlueValue := "FF"
oD := Gui1.BlueDec := 255
CoordMode, Mouse, Client
MouseGetPos, x , y
StartVector := New Vector( x , y )
While( GetKeyState( "LButton" , "P" ) ){
MouseGetPos, x , y
EndVector := New Vector( x , y )
dist := Floor( StartVector.Dist( EndVector ) - 10 )
( ( Gui1.BlueDec := 255 - Dist ) > 255 ) ? ( Gui1.BlueDec := 255 ) : ( Gui1.BlueDec < 0 ) ? ( Gui1.BlueDec := 0 )
Gui1.BlueValue := FHex( Gui1.BlueDec )
( Gui1.BlueDec <= 15 ) ? ( Gui1.BlueValue := "0" SubStr( Gui1.BlueValue , 3 ) ) : ( Gui1.BlueValue := SubStr( Gui1.BlueValue , 3 ) )
if( oD != Gui1.BlueDec || oV != Gui1.BlueValue ){
oV := Gui1.BlueValue
oD := Gui1.BlueDec
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
ToolTip, % Gui1.BlueDec "`n" Gui1.BlueValue
Sleep, 30
}
}
ToolTip,
return
SelectColorFromPalette:
CoordMode, Pixel , client
CoordMode, Mouse , client
MouseGetPos, x , y
PixelGetColor, outColor , x , y , RGB
Gui1.RedValue := SubStr( outColor , 3 , 2 )
Gui1.GreenValue := SubStr( outColor , 5 , 2 )
Gui1.BlueValue := SubStr( outColor , 7 , 2 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
While( GetKeyState( "LButton" , "P" ) ){
MouseGetPos, x , y
PixelGetColor, outColor , x , y , RGB
Gui1.RedValue := SubStr( outColor , 3 , 2 )
Gui1.GreenValue := SubStr( outColor , 5 , 2 )
Gui1.BlueValue := SubStr( outColor , 7 , 2 )
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
}
CheckList:
if( Gui1.Controls.AutoClipCheckbox.Value ){
if( Gui1.Controls.ListCheckbox.Value ){
if( Gui1.Controls.UseHexPrefixCheckBox.Value ){
if( Gui1.OutputType = 1 ){
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}else{
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}
}else{
if( Gui1.OutputType = 1 ){
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}else{
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}
}
}else{
Clipboard := ( Gui1.Controls.UseHexPrefixCheckBox.Value ) ? ( ( Gui1.OutputType = 1 ) ? ( "0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) : ( "0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) ) : ( ( Gui1.OutputType = 1 ) ? ( Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) : ( Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) )
}
SoundBeep,
}
return
ClipboardColor:
if( Gui1.Controls.ListCheckbox.Value ){
if( Gui1.Controls.UseHexPrefixCheckBox.Value ){
if( Gui1.OutputType = 1 ){
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}else{
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}
}else{
if( Gui1.OutputType = 1 ){
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}else{
if( StrLen( Gui1.ColorList ) < 6 ){
Clipboard := Gui1.ColorList .= """" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}else{
Gui1.ColorList := SubStr( Gui1.ColorList , 1 , StrLen( Gui1.ColorList ) - 1 )
Clipboard := Gui1.ColorList .= ", " """" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue """" " ]"
}
}
}
;~ SoundBeep,
}else{
Clipboard := ( Gui1.Controls.UseHexPrefixCheckBox.Value ) ? ( ( Gui1.OutputType = 1 ) ? ( "0x" Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) : ( "0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) ) : ( ( Gui1.OutputType = 1 ) ? ( Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) : ( Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) )
}
SoundBeep,
return
ToggleUseHexPrefix:
Gui1.Controls.UseHexPrefixCheckBox.Value := !Gui1.Controls.UseHexPrefixCheckBox.Value
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
return
SetRGBOutputType:
Gui1.OutputType := 1
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
return
SetARGBOutputType:
Gui1.OutputType := 2
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
return
CreateColorList:
Gui1.ColorList := "[ "
Gui1.Controls.ListCheckbox.Value := !Gui1.Controls.ListCheckbox.Value
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
return
ToggleAutoClip:
Gui1.Controls.AutoClipCheckbox.Value := !Gui1.Controls.AutoClipCheckbox.Value
Gui1.ClearWindow()
Gui1.DrawBitmap( ColorPickerv3Graphics( Gui1 , Gui1.Scale ) , { X: 0 , Y: 0 , W: Gui1.W , H: Gui1.H } , dispose := 1 , AutoUpdate := 1 )
Sleep, 30
return
_GetGray( OUTPUTCOLOR ){ ;From HB color picker v2
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , r , OUTPUTCOLOR , 2
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , g , OUTPUTCOLOR , 2
StringTrimLeft,OUTPUTCOLOR,OUTPUTCOLOR,2
StringLeft , b , OUTPUTCOLOR , 2
r := "0x" r , g := "0x" g , b := "0x" b
REDSLIDERVALUE:=r+0,GreenSLIDERVALUE:=g+0,BlueSLIDERVALUE:=b+0
GreyScaleSLIDERVALUE:=Round((REDSLIDERVALUE+GreenSLIDERVALUE+BlueSLIDERVALUE)/3)
return GreyScaleSLIDERVALUE
}
ColorPickerv3Graphics( Gui1 , ScaleFactor := 1 ){
;Bitmap Created Using: HB Bitmap Maker
pBitmap := Gdip_CreateBitmap( 370 * ScaleFactor , 220 * ScaleFactor ) , G := Gdip_GraphicsFromImage( pBitmap ) , Gdip_SetSmoothingMode( G , 2 )
Brush := Gdip_BrushCreateSolid( "0x99004444" ) , Gdip_FillRoundedRectangle( G , Brush , 10 * ScaleFactor , 10 * ScaleFactor , 350 * ScaleFactor , 200 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrush( 166 * ScaleFactor , 43 * ScaleFactor , 220 * ScaleFactor , 62 * ScaleFactor , "0x3300ff00" , "0x33ffff00" , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 10 * ScaleFactor , 10 * ScaleFactor , 350 * ScaleFactor , 200 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 173 * ScaleFactor , 11 * ScaleFactor , 187 * ScaleFactor , 149 * ScaleFactor , "0xff444444" , "0xff222222" , 0 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 15 * ScaleFactor , 15 * ScaleFactor , 340 * ScaleFactor , 140 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
w := 15 , h := 15
y := 20
Index := 0
;colors 1 - 34
Loop, 2 {
x := 18
Loop, 17 {
Brush := Gdip_BrushCreateSolid( "0xFF" Gui1.SavedColorButtons[ ++Index ].Color ) , Gdip_FillEllipse( G , Brush , x * ScaleFactor , y * ScaleFactor , w * ScaleFactor , h * ScaleFactor ) , Gdip_DeleteBrush( Brush )
x += 20
}
y += 40
}
;color 35
Brush := Gdip_BrushCreateSolid( "0xFF" Gui1.SavedColorButtons[ ++Index ].Color ) , Gdip_FillEllipse( G , Brush , 18 * ScaleFactor , 40 * ScaleFactor , w * ScaleFactor , h * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;color 36
Brush := Gdip_BrushCreateSolid( "0xFF" Gui1.SavedColorButtons[ ++Index ].Color ) , Gdip_FillEllipse( G , Brush , ( 18 + 16 * 20 ) * ScaleFactor , 40 * ScaleFactor , w * ScaleFactor , h * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;red
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 80 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFFff0000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 80 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 80 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFFF0000" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 80 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Yellow
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 85 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFFffFF00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 85 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 85 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFFFFF00" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 85 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Green
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 90 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFF00FF00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 90 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 90 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00FF00" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 90 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Aqua
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 95 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFF00FFFF" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 95 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 95 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00ffff" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 95 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Blue
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 100 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFF0000ff" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 100 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 100 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF0000ff" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 100 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Purple
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 105 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFFff00FF" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 105 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 105 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFff00ff" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 105 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red and Yellow
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 110 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFFFFF00" , "0xFFff0000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 110 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red and green
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 110 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFff0000" , "0xFF00FF00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 110 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red and aqua
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 115 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00FFFF" , "0xFFff0000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 115 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red and blue
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 115 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFff0000" , "0xFF0000ff" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 115 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red and Purple
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 120 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFFF00ff" , "0xFFff0000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 120 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Yellow and green
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 120 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffFF00" , "0xFF00FF00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 120 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Yellow and aqua
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 115 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00FFFF" , "0xFFffff00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 125 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Yellow and Blue
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 125 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFffff00" , "0xFF0000ff" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 125 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Yellow and Purple
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 130 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFFFF00ff" , "0xFFffff00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 130 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Grenn and Aqua
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 130 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00ff00" , "0xFF00FFFF" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 130 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Green and Blue
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 135 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF0000fF" , "0xFF00ff00" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 135 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Green and Purple
Brush := Gdip_CreateLineBrushFromRect( 185 * ScaleFactor , 135 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor , "0xFF00ff00" , "0xFFff00ff" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 185 * ScaleFactor , 135 * ScaleFactor , 165 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;User colors ( Uses the first two saved colors )
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 140 * ScaleFactor , 330 * ScaleFactor , 5 * ScaleFactor , "0xFF" Gui1.SavedColorButtons[ 1 ].Color , "0xFF" Gui1.SavedColorButtons[ 2 ].Color , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 140 * ScaleFactor , 330 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Black and White
Brush := Gdip_CreateLineBrushFromRect( 20 * ScaleFactor , 145 * ScaleFactor , 330 * ScaleFactor , 5 * ScaleFactor , "0xFFffffff" , "0xFF000000" , 0 , 1 ) , Gdip_FillRectangle( G , Brush , 20 * ScaleFactor , 145 * ScaleFactor , 330 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 173 * ScaleFactor , 11 * ScaleFactor , 187 * ScaleFactor , 149 * ScaleFactor , "0xff444444" , "0xff222222" , 0 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 15 * ScaleFactor , 160 * ScaleFactor , 340 * ScaleFactor , 45 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;active color
Brush := Gdip_CreateLineBrushFromRect( 22 * ScaleFactor , 172 * ScaleFactor , 30 * ScaleFactor , 25 * ScaleFactor , "0xaaF0F0F0" , "0xFF000000" , 1 , 1 ) , Gdip_FillEllipse( G , Brush , 20 * ScaleFactor , 170 * ScaleFactor , 30 * ScaleFactor , 30 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 28 * ScaleFactor , 176 * ScaleFactor , 16 * ScaleFactor , 17 * ScaleFactor , "0xaaF0F0F0" , "0xFF000000" , 1 , 1 ) , Gdip_FillEllipse( G , Brush , 22 * ScaleFactor , 172 * ScaleFactor , 26 * ScaleFactor , 26 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0x" Gui1.AlphaValue Gui1.RedValue Gui1.GreenValue Gui1.BlueValue ) , Gdip_FillEllipse( G , Brush , 23 * ScaleFactor , 173 * ScaleFactor , 24 * ScaleFactor , 24 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;0x Button
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 164 * ScaleFactor , 46 * ScaleFactor , 35 * ScaleFactor , "0x66000000" , "0x66F0F0F0" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 60 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 61 * ScaleFactor , 166 * ScaleFactor , 50 * ScaleFactor , 33 * ScaleFactor , "0x99F0F0F0" , "0x99000000" , 1 , 1 ) , Pen := Gdip_CreatePenFromBrush( Brush , 1 ) , Gdip_DeleteBrush( Brush ) , Gdip_DrawRectangle( G , Pen , 60 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeletePen( Pen )
if( Gui1.Controls.UseHexPrefixCheckBox.Value ){
;active
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 62 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;active
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 64 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;active
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "0x" , "s" 20 * ScaleFactor " Center vCenter c" Brush " x" 66 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;active
Brush := Gdip_BrushCreateSolid( "0xFF00ffff" ) , Gdip_TextToGraphics( G , "0x" , "s" 20 * ScaleFactor " Center vCenter c" Brush " x" 65 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}else{
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF62666a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 62 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;not active
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF32363a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 64 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Not active
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "0x" , "s" 20 * ScaleFactor " Center vCenter c" Brush " x" 66 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Not active
Brush := Gdip_BrushCreateSolid( "0xFFF0F0F0" ) , Gdip_TextToGraphics( G , "0x" , "s" 20 * ScaleFactor " Center vCenter c" Brush " x" 65 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}
;RGB
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 164 * ScaleFactor , 46 * ScaleFactor , 35 * ScaleFactor , "0x66000000" , "0x66F0F0F0" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 120 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 61 * ScaleFactor , 166 * ScaleFactor , 50 * ScaleFactor , 33 * ScaleFactor , "0x99F0F0F0" , "0x99000000" , 1 , 1 ) , Pen := Gdip_CreatePenFromBrush( Brush , 1 ) , Gdip_DeleteBrush( Brush ) , Gdip_DrawRectangle( G , Pen , 120 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeletePen( Pen )
if( Gui1.OutputType = 1 ){
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 122 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 124 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "RGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 126 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF00ffff" ) , Gdip_TextToGraphics( G , "RGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 125 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}else{
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF62666a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 122 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF32363a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 124 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "RGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 126 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFF0F0F0" ) , Gdip_TextToGraphics( G , "RGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 125 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}
;ARGB
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 164 * ScaleFactor , 46 * ScaleFactor , 35 * ScaleFactor , "0x66000000" , "0x66F0F0F0" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 180 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 61 * ScaleFactor , 166 * ScaleFactor , 50 * ScaleFactor , 33 * ScaleFactor , "0x99F0F0F0" , "0x99000000" , 1 , 1 ) , Pen := Gdip_CreatePenFromBrush( Brush , 1 ) , Gdip_DeleteBrush( Brush ) , Gdip_DrawRectangle( G , Pen , 180 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeletePen( Pen )
if( Gui1.OutputType = 2 ){
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 182 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 184 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "ARGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 186 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF00ffff" ) , Gdip_TextToGraphics( G , "ARGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 185 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}else{
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF62666a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 182 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF32363a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 184 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "ARGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 186 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFF0F0F0" ) , Gdip_TextToGraphics( G , "ARGB" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 185 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}
;List
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 164 * ScaleFactor , 46 * ScaleFactor , 35 * ScaleFactor , "0x66000000" , "0x66F0F0F0" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 240 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 61 * ScaleFactor , 166 * ScaleFactor , 50 * ScaleFactor , 33 * ScaleFactor , "0x99F0F0F0" , "0x99000000" , 1 , 1 ) , Pen := Gdip_CreatePenFromBrush( Brush , 1 ) , Gdip_DeleteBrush( Brush ) , Gdip_DrawRectangle( G , Pen , 240 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeletePen( Pen )
if( Gui1.Controls.ListCheckbox.Value ){
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 242 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 244 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "List" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 246 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF00ffff" ) , Gdip_TextToGraphics( G , "List" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 245 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}else{
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF62666a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 242 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF32363a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 244 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "List" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 246 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFF0F0F0" ) , Gdip_TextToGraphics( G , "List" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 245 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}
;Auto Clip
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 164 * ScaleFactor , 46 * ScaleFactor , 35 * ScaleFactor , "0x66000000" , "0x66F0F0F0" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 300 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 61 * ScaleFactor , 166 * ScaleFactor , 50 * ScaleFactor , 33 * ScaleFactor , "0x99F0F0F0" , "0x99000000" , 1 , 1 ) , Pen := Gdip_CreatePenFromBrush( Brush , 1 ) , Gdip_DeleteBrush( Brush ) , Gdip_DrawRectangle( G , Pen , 300 * ScaleFactor , 165 * ScaleFactor , 50 * ScaleFactor , 35 * ScaleFactor ) , Gdip_DeletePen( Pen )
if( Gui1.Controls.AutoClipCheckbox.Value ){
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 302 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF2121FF" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 304 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "Auto Clip" , "s" 8 * ScaleFactor " Center vCenter Bold c" Brush " x" 306 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF00ffff" ) , Gdip_TextToGraphics( G , "Auto Clip" , "s" 8 * ScaleFactor " Center vCenter Bold c" Brush " x" 305 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}else{
Brush := Gdip_CreateLineBrushFromRect( 62 * ScaleFactor , 167 * ScaleFactor , 45 * ScaleFactor , 29 * ScaleFactor , "0xFF62666a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 302 * ScaleFactor , 167 * ScaleFactor , 46 * ScaleFactor , 31 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_CreateLineBrushFromRect( 67 * ScaleFactor , 170 * ScaleFactor , 41 * ScaleFactor , 92 * ScaleFactor , "0xFF32363a" , "0xFF000000" , 1 , 1 ) , Gdip_FillRoundedRectangle( G , Brush , 304 * ScaleFactor , 169 * ScaleFactor , 42 * ScaleFactor , 27 * ScaleFactor , 5 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "Auto Clip" , "s" 8 * ScaleFactor " Center vCenter Bold c" Brush " x" 306 * ScaleFactor " y" 171 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFF0F0F0" ) , Gdip_TextToGraphics( G , "Auto Clip" , "s" 8 * ScaleFactor " Center vCenter Bold c" Brush " x" 305 * ScaleFactor " y" 170 * ScaleFactor , "Comic Sans Ms" , 42 * ScaleFactor , 27 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
}
;cp move
Brush := Gdip_CreateLineBrushFromRect( 315 * ScaleFactor , 40 * ScaleFactor , 18 * ScaleFactor , 15 * ScaleFactor , "0xFF444444" , "0xFF22262a" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 44 * ScaleFactor , 40 * ScaleFactor , 170 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "HB Color Picker v3" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 44 * ScaleFactor " y" 40 * ScaleFactor , "Segoe UI" , 170 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF222222" ) , Gdip_TextToGraphics( G , "HB Color Picker v3" , "s" 12 * ScaleFactor " Center vCenter Bold c" Brush " x" 44 * ScaleFactor " y" 40 * ScaleFactor , "Segoe UI" , 170 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;close button
Brush := Gdip_CreateLineBrushFromRect( 315 * ScaleFactor , 40 * ScaleFactor , 18 * ScaleFactor , 15 * ScaleFactor , "0xFF444444" , "0xFF22262a" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 314 * ScaleFactor , 40 * ScaleFactor , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF000000" ) , Gdip_TextToGraphics( G , "x" , "s" 16 * ScaleFactor " Center vCenter Bold c" Brush " x" 316 * ScaleFactor " y" 40 * ScaleFactor , "Segoe UI" , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFacacac" ) , Gdip_TextToGraphics( G , "x" , "s" 16 * ScaleFactor " Center vCenter Bold c" Brush " x" 315 * ScaleFactor " y" 39 * ScaleFactor , "Segoe UI" , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Red Hex
Brush := Gdip_CreateLineBrushFromRect( 315 * ScaleFactor , 40 * ScaleFactor , 18 * ScaleFactor , 15 * ScaleFactor , "0xFF444444" , "0xFF22262a" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 224 * ScaleFactor , 40 * ScaleFactor , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF222222" ) , Gdip_FillRectangle( G , Brush , 226 * ScaleFactor , 42 * ScaleFactor , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xff000000" ) , Gdip_TextToGraphics( G , Gui1.RedValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 228 * ScaleFactor " y" 43 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFFFF0000" ) , Gdip_TextToGraphics( G , Gui1.RedValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 227 * ScaleFactor " y" 42 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Green Hex
Brush := Gdip_CreateLineBrushFromRect( 315 * ScaleFactor , 40 * ScaleFactor , 18 * ScaleFactor , 15 * ScaleFactor , "0xFF444444" , "0xFF22262a" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 254 * ScaleFactor , 40 * ScaleFactor , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF222222" ) , Gdip_FillRectangle( G , Brush , 256 * ScaleFactor , 42 * ScaleFactor , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xff000000" ) , Gdip_TextToGraphics( G , Gui1.GreenValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 258 * ScaleFactor " y" 43 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF00ff00" ) , Gdip_TextToGraphics( G , Gui1.GreenValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 257 * ScaleFactor " y" 42 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
;Blue Hex
Brush := Gdip_CreateLineBrushFromRect( 315 * ScaleFactor , 40 * ScaleFactor , 18 * ScaleFactor , 15 * ScaleFactor , "0xFF444444" , "0xFF22262a" , 1 , 1 ) , Gdip_FillRectangle( G , Brush , 284 * ScaleFactor , 40 * ScaleFactor , 20 * ScaleFactor , 15 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF222222" ) , Gdip_FillRectangle( G , Brush , 286 * ScaleFactor , 42 * ScaleFactor , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xff000000" ) , Gdip_TextToGraphics( G , Gui1.BlueValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 288 * ScaleFactor " y" 43 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Brush := Gdip_BrushCreateSolid( "0xFF0000FF" ) , Gdip_TextToGraphics( G , Gui1.BlueValue , "s" 8 * ScaleFactor " Center vCenter c" Brush " x" 287 * ScaleFactor " y" 42 * ScaleFactor , "Segoe UI" , 16 * ScaleFactor , 11 * ScaleFactor ) , Gdip_DeleteBrush( Brush )
Gdip_DeleteGraphics( G )
return pBitmap
}
;*******************************************************************************************************************
;*******************************************************************************************************************
FHex( int, pad=0 ) { ; Function by [VxE]. Formats an integer (decimals are truncated) as hex.
;https://www.autohotkey.com/board/topic/85571-dec-hex-without-setformat-command/
; "Pad" may be the minimum number of digits that should appear on the right of the "0x".
Static hx := "0123456789ABCDEF"
If !( 0 < int |= 0 )
Return !int ? "0x0" : "-" FHex( -int, pad )
s := 1 + Floor( Ln( int ) / Ln( 16 ) )
h := SubStr( "0x0000000000000000", 1, pad := pad < s ? s + 2 : pad < 16 ? pad + 2 : 18 )
u := A_IsUnicode = 1
Loop % s
NumPut( *( &hx + ( ( int & 15 ) << u ) ), h, pad - A_Index << u, "UChar" ), int >>= 4
Return h
}
;*******************************************************************************************************************
;*******************************************************************************************************************
/*
[ SavedColorData ]
Color_1=B4D52A
Color_2=007689
Color_3=F9F906
Color_4=FFFF98
Color_5=006767
Color_6=007272
Color_7=007777
Color_8=007B7B
Color_9=008B8B
Color_10=009B9B
Color_11=00ABAB
Color_12=00BBBB
Color_13=00CBCB
Color_14=00DBDB
Color_15=00EBEB
Color_16=00FBFB
Color_17=FF00FF
Color_18=FBFFFF
Color_19=DCFFFF
Color_20=BDFFFF
Color_21=9DFFFF
Color_22=7EFFFF
Color_23=60FFFF
Color_24=3FFFFF
Color_25=20FFFF
Color_26=02FFFF
Color_27=00E3E3
Color_28=00C3C3
Color_29=00A3A3
Color_30=008585
Color_31=006868
Color_32=004646
Color_33=002929
Color_34=000909
Color_35=FF0000
Color_36=0B0BFF
*/
;####################################################################################################################################################################################
;####################################################################################################################################################################################
;####################################################################################################################################################################################
;####################################################################################################################################################################################
class PopUpWindow {
;PopUpWindow v2.2
;Date Written: Oct 28th, 2021
;Last Edit: Feb 7th, 2022 :Changed the trigger method.
;Written By: Hellbent aka CivReborn
;SpcThanks: teadrinker , malcev
static Index := 0 , Windows := [] , Handles := [] , EditHwnd , HelperHwnd
__New( obj := "" ){
This._SetDefaults()
This.UpdateSettings( obj )
This._CreateWindow()
This._CreateWindowGraphics()
if( This.AutoShow )
This.ShowWindow( This.Title )
}
_SetDefaults(){
This.X := 10
This.Y := 10
This.W := 10
This.H := 10
This.Smoothing := 2
This.Options := " -DPIScale +AlwaysOnTop "
This.AutoShow := 0
This.GdipStartUp := 0
This.Title := ""
This.Controls := []
This.Handles := []
This.Index := 0
}
AddTrigger( obj ){
local k , v , cc , bd
This.Controls[ ++This.Index ] := { X: 10
, Y: 10
, W: 10
, H: 10 }
for k, v in obj
This.Controls[ This.Index ][ k ] := obj[ k ]
cc := This.Controls[ This.Index ]
Gui, % This.Hwnd ":Add", Text, % "x" cc.X " y" cc.Y " w" cc.W " h" cc.H " hwndhwnd"
This.Handles[ hwnd ] := This.Index
This.Controls[ This.Index ].Hwnd := hwnd
if( IsObject( cc.Label ) ){
bd := cc.Label
GuiControl, % This.Hwnd ":+G" , % hwnd , % bd
}else{
bd := This._TriggerCall.Bind( This )
GuiControl, % This.Hwnd ":+G" , % hwnd , % bd
}
return hwnd
}
_TriggerCall(){
MouseGetPos,,,, ctrl, 2
Try
;~ SetTimer, % This.Controls[ This.Handles[ ctrl ] ].Label, -0
gosub, % This.Controls[ This.Handles[ ctrl ] ].Label
}
DrawTriggers( color := "0xFFFF0000" , AutoUpdate := 0 ){
local brush , cc
Brush := Gdip_BrushCreateSolid( color )
Gdip_SetSmoothingMode( This.G , 3 )
loop, % This.Controls.Length() {
cc := This.Controls[ A_Index ]
Gdip_FillRectangle( This.G , Brush , cc.x , cc.y , cc.w , cc.h )
}
Gdip_DeleteBrush( Brush )
Gdip_SetSmoothingMode( This.G , This.Smoothing )
if( AutoUpdate )
This.UpdateWindow()
}
UpdateSettings( obj := "" , UpdateGraphics := 0 ){
local k , v
if( IsObject( obj ) )
for k, v in obj
This[ k ] := obj[ k ]
( This.X = "Center" ) ? ( This.X := ( A_ScreenWidth - This.W ) / 2 )
( This.Y = "Center" ) ? ( This.Y := ( A_ScreenHeight - This.H ) / 2 )
if( UpdateGraphics ){
This._DestroyWindowsGraphics()
This._CreateWindowGraphics()
}
}
_CreateWindow(){
local hwnd
Gui , New, % " +LastFound +E0x80000 hwndhwnd -Caption " This.Options
PopUpWindow.Index++
This.Index := PopUpWindow.Index
PopUpWindow.Windows[ PopUpWindow.Index ] := This
This.Hwnd := hwnd
PopUpWindow.Handles[ hwnd ] := PopUpWindow.Index
if( This.GdipStartUp && !PopUpWindow.pToken )
PopUpWindow.pToken := GDIP_STARTUP()
}
_DestroyWindowsGraphics(){
Gdip_DeleteGraphics( This.G )
SelectObject( This.hdc , This.obm )
DeleteObject( This.hbm )
DeleteDC( This.hdc )
}
_CreateWindowGraphics(){
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 )
}
ShowWindow( Title := "" ){
Gui , % This.Hwnd ":Show", % "x" This.X " y" This.Y " w" This.W " h" This.H " NA", % Title
}
HideWindow(){
Gui , % This.Hwnd ":Hide",
}
UpdateWindow( alpha := 255 ){
UpdateLayeredWindow( This.hwnd , This.hdc , This.X , This.Y , This.W , This.H , alpha )
}
ClearWindow( AutoUpdate := 0 ){
Gdip_GraphicsClear( This.G )
if( Autoupdate )
This.UpdateWindow()
}
DrawBitmap( pBitmap , obj , dispose := 1 , AutoUpdate := 0 ){
Gdip_DrawImage( This.G , pBitmap , obj.X , obj.Y , obj.W , obj.H )
if( dispose )
Gdip_DisposeImage( pBitmap )
if( Autoupdate )
This.UpdateWindow()
}
PaintBackground( color := "0xFF000000" , AutoUpdate := 0 ){
if( isObject( color ) ){
Brush := Gdip_BrushCreateSolid( ( color.HasKey( "Color" ) ) ? ( color.Color ) : ( "0xFF000000" ) )
if( color.Haskey( "Round" ) )
Gdip_FillRoundedRectangle( This.G , Brush , color.X , color.Y , color.W , color.H , color.Round )
else
Gdip_FillRectangle( This.G , Brush , color.X , color.Y , color.W , color.H )
}else{
Brush := Gdip_BrushCreateSolid( color )
Gdip_FillRectangle( This.G , Brush , -1 , -1 , This.W + 2 , This.H + 2 )
}
Gdip_DeleteBrush( Brush )
if( AutoUpdate )
This.UpdateWindow()
}
DeleteWindow( GDIPShutdown := 0 ){
Gui, % This.Hwnd ":Destroy"
SelectObject( This.hdc , This.obm )
DeleteObject( This.hbm )
DeleteDC( This.hdc )
Gdip_DeleteGraphics( This.G )
hwnd := This.Hwnd
for k, v in PopUpWindow.Windows[ Hwnd ]
This[k] := ""
PopUpWindow.Windows[ Hwnd ] := ""
if( GDIPShutdown ){
Gdip_Shutdown( PopUpWindow.pToken )
PopUpWindow.pToken := ""
}
}
_OnClose( wParam ){
if( wParam = 0xF060 ){ ;SC_CLOSE ;[ clicking on the gui close button ]
Try{
Gui, % PopUpWindow.HelperHwnd ":Destroy"
SoundBeep, 555
}
}
}
CreateCachedBitmap( pBitmap , Dispose := 0 ){
local pCachedBitmap
if( This.CachedBitmap )
This.DisposeCachedbitmap()
DllCall( "gdiplus\GdipCreateCachedBitmap" , "Ptr" , pBitmap , "Ptr" , this.G , "PtrP" , pCachedBitmap )
This.CachedBitmap := pCachedBitmap
if( Dispose )
Gdip_DisposeImage( pBitmap )
}
DrawCachedBitmap( AutoUpdate := 0 ){
DllCall( "gdiplus\GdipDrawCachedBitmap" , "Ptr" , this.G , "Ptr" , This.CachedBitmap , "Int" , 0 , "Int" , 0 )
if( AutoUpdate )
This.UpdateWindow()
}
DisposeCachedbitmap(){
DllCall( "gdiplus\GdipDeleteCachedBitmap" , "Ptr" , This.CachedBitmap )
}
Helper(){
local hwnd , MethodList := ["__New","UpdateSettings","ShowWindow","HideWindow","UpdateWindow","ClearWindow","DrawBitmap","PaintBackground","DeleteWindow" , "AddTrigger" , "DrawTriggers", "CreateCachedBitmap" , "DrawCachedBitmap" , "DisposeCachedbitmap" ]
Gui, New, +AlwaysOnTop +ToolWindow +HwndHwnd
PopUpWindow.HelperHwnd := hwnd
Gui, Add, Edit, xm ym w250 r1 Center hwndhwnd, Gui1
PopUpWindow.EditHwnd := hwnd
loop, % MethodList.Length()
Gui, Add, Button, xm y+1 w250 r1 gPopUpWindow._HelperClip, % MethodList[ A_Index ]
Gui, Show,,
OnMessage( 0x112 , This._OnClose.Bind( hwnd ) )
}
_HelperClip(){
local ClipList
GuiControlGet, out, % PopUpWindow.HelperHwnd ":", % PopUpWindow.EditHwnd
ClipList := { __New: " := New PopUpWindow( { AutoShow: 1 , X: 0 , Y: 0 , W: A_ScreenWidth , H: A_ScreenHeight , Options: "" -DPIScale +AlwaysOnTop "" } )"
, UpdateSettings: ".UpdateSettings( { X: """" , Y: """" , W: """" , H: """" } , UpdateGraphics := 0 )"
, ShowWindow: ".ShowWindow( Title := """" )"
, HideWindow: ".HideWindow()"
, UpdateWindow: ".UpdateWindow()"
, ClearWindow: ".ClearWindow( AutoUpdate := 0 )"
, DrawBitmap: ".DrawBitmap( pBitmap := """" , { X: 0 , Y: 0 , W: " Out ".W , H: " Out ".H } , dispose := 1 , AutoUpdate := 0 )"
, PaintBackground: ".PaintBackground( color := ""0xFF000000"" , AutoUpdate := 0 ) " ";{ Color: ""0xFF000000"" , X: 2 , Y: 2 , W: " Out ".W - 4 , H: " Out ".H - 4 , Round: 10 }"
, DeleteWindow: ".DeleteWindow( GDIPShutdown := 0 )"
, AddTrigger: ".AddTrigger( { X: """" , Y: """" , W: """" , H: """" , Value: """" , Label: """" } )"
, DrawTriggers: ".DrawTriggers( color := ""0xFFFF0000"" , AutoUpdate := 0 )"
, CreateCachedBitmap: ".CreateCachedBitmap( pBitmap , Dispose := 0 )"
, DrawCachedBitmap: ".DrawCachedBitmap( AutoUpdate := 0 )"
, DisposeCachedbitmap: ".DisposeCachedbitmap()" }
clipboard := Out ClipList[ A_GuiControl ]
}
}
;************
;Vector Class
;**************************************************************************************************************************************************************************
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;**************************************************************************************************************************************************************************
Class Vector {
;Written By: HB
;Date: Sept 23rd, 2022
;Last Edit: Sept 24th, 2022
;Purpose: Vector math class
;Credit: Rohwedder
;Resources:
;Line intercept concepts and code: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=37175
;Create an Arrow: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=92039&p=479129#p478944
;Getting an angle: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=108760&p=483661#p483678
;Setting an Angle: https://www.autohotkey.com/boards/viewtopic.php?f=76&t=108760&p=483786#p483811
;
static RadToDeg := 45 / ATan( 1 )
, DegToRad := ATan( 1 ) / 45
__New( x := 0 , y := 0 , rotate := 0 ){
if( IsObject( x ) ){
if( rotate = 3 ){
This.X := x.X * -1
,This.Y := x.Y * -1
}else if( rotate = 2 ){
This.X := x.Y
,This.Y := x.X * -1
}else if( rotate = 1 ){
This.X := x.Y * -1
,This.Y := x.X
}else{
This.X := x.X
,This.Y := x.Y
}
}else{
if( rotate = 3 ){
This.X := X * -1
,This.Y := Y * -1
}else if( rotate = 2 ){
This.X := Y
,This.Y := X * -1
}else if( rotate = 1 ){
This.X := Y * -1
,This.Y := X
}else{
This.X := X
,This.Y := Y
}
}
}
Add( x , y := "" ){
if( IsObject( x ) ){
This.X += x.X
,This.Y += x.Y
}else if( y = "" ){
This.X += x
,This.Y += x
}else{
This.X += x
,This.Y += y
}
}
Sub( x , y := "" ){
if( IsObject( x ) ){
This.X -= x.X
,This.Y -= x.Y
}else if( y = "" ){
This.X -= X
,This.Y -= X
}else{
This.X -= X
,This.Y -= Y
}
}
Div( x , y := "" ){
if( IsObject( x ) ){
This.X /= x.X
,This.Y /= x.Y
}else if( x && y = "" ){
This.X /= x
,This.Y /= x
}else{
This.X /= X
,This.Y /= Y
}
}
Mult( x , y := "" ){
if( IsObject( x ) ){
This.X *= x.X
,This.Y *= x.Y
}else if( x && y = "" ){
This.X *= x
,This.Y *= x
}else{
This.X *= X
,This.Y *= Y
}
}
Dist( x , y := "" ){
if( IsObject( x ) )
return Sqrt( ( ( This.X - x.X ) **2 ) + ( ( This.Y - x.Y ) **2 ) )
else
return Sqrt( ( ( This.X - X ) **2 ) + ( ( This.Y - Y ) **2 ) )
}
GetMag(){
return Sqrt( This.X * This.X + This.Y * This.Y )
}
SetMag( magnitude ){
local m := This.GetMag()
This.X := This.X * magnitude / m
,This.Y := This.Y * magnitude / m
}
MagSq(){
return This.GetMag()**2
}
Dot( x , y := "" ){
if( IsObject( x ) )
return ( This.X * x.X ) + ( This.Y * x.Y )
else
return ( This.X * X ) + ( This.Y * Y )
}
Cross( x , y := "" ){
if( IsObject( x ) )
return This.X * x.Y - This.Y * x.X
else
return This.X * Y - This.Y * X
}
Norm(){
local m := This.GetMag()
This.X /= m
This.Y /= m
}
GetAngle(){
local angle
( ( angle := Vector.RadToDeg * DllCall( "msvcrt\atan2" , "Double" , This.Y , "Double" , This.X , "CDECL Double" ) ) < 0 ) ? ( angle += 360 )
return angle
}
SetAngle( newAngle := 0 , NewVector := 0 ){
local Angle := This.GetAngle()
, ChangeAngle := newAngle - Angle
, Co := Cos( Vector.DegToRad * ChangeAngle )
, Si := Sin( Vector.DegToRad * ChangeAngle )
, X := This.X
, Y := This.Y
, X2 := X * Co - Y * Si
, Y2 := X * Si + Y * Co
if( !NewVector )
This.X := X2 , This.Y := Y2
else
return New Vector( X2 , Y2 )
}
RotateAngle( rotationAmount := 90 , NewVector := 0 ){
local Co := Cos( Vector.DegToRad * rotationAmount )
, Si := Sin( Vector.DegToRad * rotationAmount )
, X := This.X
, Y := This.Y
, X2 := X * Co - Y * Si
, Y2 := X * Si + Y * Co
if( !NewVector )
This.X := X2 , This.Y := Y2
else
return New Vector( X2 , Y2 )
}
;********************************************
;class methods
TestLineInterceptPoint( interceptPoint , Line1 , Line2 ){ ; Line = { Start: { X: , Y: } , End: { X: , Y: } } , interceptPoint = { X: , Y: }
local
for k , v in [ "X" , "Y" ]
M%v%_Min := min( Line1.Start[ v ] , Line1.End[ v ] )
,M%v%_Max := max( Line1.Start[ v ] , Line1.End[ v ] )
,L%v%_Min := min( Line2.Start[ v ] , Line2.End[ v ] )
,L%v%_Max := max( Line2.Start[ v ] , Line2.End[ v ] )
if( !( interceptPoint.X < Mx_Min || interceptPoint.X > Mx_Max || interceptPoint.X < Lx_Min || interceptPoint.X > Lx_Max ) && !( interceptPoint.Y < My_Min || interceptPoint.Y > My_Max || interceptPoint.Y < Ly_Min || interceptPoint.Y > Ly_Max ) )
return 1
return 0
}
GetLineInterceptPoint( Line1 , Line2 ){ ; Line = { Start: { X: , Y: } , End: { X: , Y: } }
local A1 := Line1.End.Y - Line1.Start.Y
,B1 := Line1.Start.X - Line1.End.X
,C1 := A1 * Line1.Start.X + B1 * Line1.Start.Y
,A2 := Line2.End.Y - Line2.Start.Y
,B2 := Line2.Start.X - Line2.End.X
,C2 := A2 * Line2.Start.X + B2 * Line2.Start.Y
,Denominator := A1 * B2 - A2 * B1
return New Vector( { X: ( ( B2 * C1 - B1 * C2 ) / Denominator ) , Y: ( ( A1 * C2 - A2 * C1 ) / Denominator ) } )
}
;********************************************
}
;**************************************************************************************************************************************************************************
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000 00000 <<<>>> 00000
;**************************************************************************************************************************************************************************