Guest User

Untitled

a guest
Oct 3rd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #SingleInstance, Force
  2. #NoEnv
  3. SetBatchLines, -1
  4. DetectHiddenWindows, On
  5. SetWinDelay, -1
  6.  
  7. pToken := Gdip_Startup()
  8. Windows := []
  9. Width := A_ScreenWidth, Height := A_ScreenHeight
  10. Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
  11. Gui, 1: Show
  12.  
  13. Menu, MyMenu, UseErrorLevel
  14.  
  15. OnMessage(0x20, "WM_SETCURSOR")
  16. OnMessage(0x02A3, "WM_MOUSELEAVE")
  17.  
  18. hwnd1 := WinExist()
  19. GoSub, StartG
  20.  
  21. ++WinCt
  22. pBrush1 := Gdip_BrushCreateSolid(0xffff0000)
  23. Window1 := {X: 100, Y: 500, W: 200, H: 300, FName: "Gdip_FillEllipse", Utensil: pBrush1, Color: "ff0000", Trans: "ff"}
  24. Gdip_FillEllipse(G, Window1["Utensil"], Window1["X"], Window1["Y"], Window1["W"], Window1["H"])
  25.  
  26. ++WinCt
  27. pBrush2 := Gdip_BrushCreateSolid(0x660000ff)
  28. Window2 := {X: 250, Y: 80, W: 300, H: 200, FName: "Gdip_FillRectangle", Utensil: pBrush2, Color: "0000ff", Trans: 66}
  29. Gdip_FillRectangle(G, Window2["Utensil"], Window2["X"], Window2["Y"], Window2["W"], Window2["H"])
  30.  
  31. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  32. GoSub, FinishG
  33. Return
  34.  
  35. Esc::
  36. Exit:
  37. Gdip_Shutdown(pToken)
  38. ExitApp
  39.  
  40. #If (MouseCon() = hwnd1)
  41. RButton::
  42. Loop, % WinCt
  43. {
  44.     If (MX > Window%A_Index%["X"] && MX < Window%A_Index%["X"] + Window%A_Index%["W"] && MY > Window%A_Index%["Y"] && MY < Window%A_Index%["Y"] + Window%A_Index%["H"])
  45.         WNum := A_Index
  46. }
  47. FormDesc := (Window%WNum%["FName"] = "Gdip_FillRectangle" || Window%WNum%["FName"] = "Gdip_DrawRectangle") ? "Round Edges" : (InStr(Window%WNum%["FName"], "Ellipse") || InStr(Window%WNum%["FName"], "Rounded")) ? "Square Edges"
  48. StringReplace, FormLabel, FormDesc, %A_Space%,, All
  49. Menu, MyMenu, DeleteAll
  50. Menu, MyMenu, Add, Resize Me, ReSizeShape
  51. Menu, MyMenu, Add, Change Color, ColorSlider
  52. Menu, MyMenu, Add, Change Transparency, ChangeTrans
  53. If (FormDesc)
  54.     Menu, MyMenu, Add, %FormDesc%, %FormLabel%
  55. Menu, MyMenu, Show
  56. return
  57. #If
  58.  
  59. ReSizeShape:
  60. Gui, 85: Add, Text,, New Width:
  61. Gui, 85: Add, Text,, New Height:
  62. Gui, 85: Add, Edit, vNewW ym, % Window%WNum%["W"]
  63. Gui, 85: Add, Edit, vNewH, % Window%WNum%["H"]
  64. Gui, 85: Add, Button, default gSubmitNewSize, Submit
  65. Gui, 85: Show,, Resize Your Window
  66. return
  67.  
  68. SubmitNewSize:
  69. Gui, 85: Submit
  70. Gui, 85: Destroy
  71. If (!NewW || !NewH)
  72. {
  73.     MsgBox Invalid Params
  74.     return
  75. }
  76. Window%WNum%.Insert("W", NewW), Window%WNum%.Insert("H", NewH)
  77. GoSub, StartG
  78. Loop, % WinCt
  79.     FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"])
  80. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  81. GoSub, FinishG
  82. return
  83.  
  84. RoundEdges:
  85. RectP := InStr(Window%WNum%["FName"], "Rectangle")
  86. NewFName := SubStr(Window%WNum%["FName"], 1, RectP - 1) . "Rounded" . SubStr(Window%WNum%["FName"], RectP)
  87. SmallestSide := (Window%WNum%["W"] < Window%WNum%["H"]) ? Window%WNum%["W"] : Window%WNum%["W"]
  88. Gui, 85: Add, Slider, % "vRoundedSlide gRoundedSlide +AltSubmit Range0-" . SmallestSide // 3, (Window%WNum%["R"]) ? Window%WNum%["R"] : 0
  89. Gui, 85: Add, Button, gSubmitShape, Submit
  90. Gui, 85: Show,, %FormDesc%
  91. return
  92.  
  93. 85GuiClose:
  94. Gui, 85: Destroy
  95. GoSub, StartG
  96. Loop, % WinCt
  97.     FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  98. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  99. GoSub, FinishG
  100. return
  101.  
  102. RoundedSlide:
  103. GuiControlGet, RoundedSlide, 85:, RoundedSlide
  104. GoSub, StartG
  105. Loop, % WinCt
  106. {
  107.     If (A_Index = WNum)
  108.         %NewFName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], RoundedSlide)
  109.     Else
  110.         FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"])
  111. }
  112. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  113. GoSub, FinishG
  114. return
  115.  
  116. SubmitShape:
  117. Gui, Destroy
  118. Window%WNum%.Insert("FName", NewFName), Window%WNum%.Insert("R", RoundedSlide)
  119. return
  120.  
  121. ChangeTrans:
  122. Gui, 85: Add, Slider, Invert vTransSlide gTransSlide +AltSubmit Range0-255, % "0x" . Window%WNum%["Trans"] + 0
  123. Gui, 85: Add, Button, gSubmitTrans, Submit
  124. Gui, 85: Show,, Change TransParency
  125. return
  126.  
  127. TransSlide:
  128. GuiControlGet, TransSlide, 85:, TransSlide
  129. SetFormat, Integer, h
  130. TransSlide += 0
  131. SetFormat, Integer, d
  132. TransSlide := SubStr(TransSlide, 3)
  133. GoSub, StartG
  134. pTempBrush := Gdip_BrushCreateSolid("0x" . TransSlide . Window%WNum%["Color"])
  135. Loop, % WinCt
  136. {
  137.     If (A_Index = WNum)
  138.         FName := Window%A_Index%["FName"], %FName%(G, pTempBrush, Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  139.     Else
  140.         FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  141. }
  142. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  143. GoSub, FinishG
  144. return
  145.  
  146. SubmitTrans:
  147. Gui, 85: Destroy
  148. Gdip_DeleteBrush(Window%WNum%["Utensil"])
  149. Window%WNum%.Insert("Trans", TransSlide), Window%WNum%.Insert("Utensil", pTempBrush)
  150.  
  151. return
  152.  
  153. StartG:
  154. hbm := CreateDIBSection(Width, Height)
  155. hdc := CreateCompatibleDC()
  156. obm := SelectObject(hdc, hbm)
  157. G := Gdip_GraphicsFromHDC(hdc)
  158. Gdip_SetSmoothingMode(G, 4)
  159. return
  160.  
  161. FinishG:
  162. SelectObject(hdc, obm)
  163. DeleteObject(hbm)
  164. DeleteDC(hdc)
  165. Gdip_DeleteGraphics(G)
  166. return
  167.  
  168. WM_SETCURSOR(wParam, lParam)
  169. {
  170.     global
  171.    
  172.     If (HiWord(lParam) = 513)
  173.     {
  174.         MouseGetPos, MX, MY
  175.         LastMX := MX, LastMY := MY
  176.         WinNum := False
  177.         Loop, % WinCt
  178.         {
  179.             If (MX > Window%A_Index%["X"] && MX < Window%A_Index%["X"] + Window%A_Index%["W"] && MY > Window%A_Index%["Y"] && MY < Window%A_Index%["Y"] + Window%A_Index%["H"])
  180.                 WinNum := A_Index
  181.         }
  182.         OnMessage(0x0202, "WM_MOUSELEAVE")
  183.     }
  184.     Else If (HiWord(lParam) = 512 && WinNum)
  185.     {  
  186.         MouseGetPos, MX, MY
  187.         WinMoved := True
  188.         GoSub, StartG
  189.         Loop, % WinCt
  190.         {
  191.             If (A_Index = WinNum)
  192.                 FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], NewX := MX - LastMX + Window%A_Index%["X"], NewY := MY - LastMY + Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  193.             Else
  194.                 FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  195.         }
  196.         UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  197.         GoSub, FinishG
  198.     }
  199. }
  200.  
  201. MouseCon()
  202. {
  203.     global MX, MY
  204.    
  205.     MouseGetPos, MX, MY, Win
  206.     return Win
  207. }
  208.  
  209. HiWord(Param){
  210.     return Param >> 16
  211. }
  212.  
  213. LoWord(Param){
  214.     return Param & 0xFFFF
  215. }
  216.  
  217. WM_MOUSELEAVE()
  218. {
  219.     global WinNum, MX, MY, NewX, NewY, WinMoved
  220.    
  221.     If (WinMoved)
  222.     {
  223.         WinMoved := False
  224.         Window%WinNum%.Insert("X", NewX)
  225.         Window%WinNum%.Insert("Y", NewY)
  226.     }
  227.     WinNum := False
  228.     OnMessage(0x0202, "")
  229. }
  230.  
  231. ColorSlider:
  232. Gui, 10: Destroy
  233. Gui, 10: Add, Picture, x70 y10 0xE v_VPRGS_ HWND_PRGS_ gChooseColor
  234. Gui, 10: Add, Picture, x35 y10 0xE v_VBAR HWND_BAR gInvoke_Slide
  235. Gui, 10: Add, Slider, Line10 NoTicks Range0-510 Vertical +AltSubmit +BackgroundTrans vCS gCS h526 x5 y2
  236. BAR := Gdip_CreateBitmap(15, 510)
  237. BG := Gdip_GraphicsFromImage(BAR)
  238. Gdip_SetSmoothingMode(BG, 1)
  239. Loop, 255
  240. {
  241.     CS := A_Index, CSDiv := 42.5
  242.     gosub,  CalcCS
  243.     B_PBRUSH:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 15, 2, "0xFF" . HexFromRGB(CSR, CSG, CSB), "0xFF" . HexFromRGB(CSR, CSG, CSB), 0, 0)
  244.     Gdip_FillRectangle(BG, B_PBRUSH, 0, A_Index*2-1, 15, 2)
  245. }
  246. B_HBITMAP:=Gdip_CreateHBITMAPFromBitmap(BAR)
  247. SetImage(_BAR, B_HBITMAP)
  248.  
  249. CreateSpectrum(255, 0, 0, True)
  250. Gui, 10: Show, w600 h550 na
  251. return
  252.  
  253. Invoke_Slide:
  254. MouseGetPos,, CSY
  255. CSY -= 33
  256. GuiControl, 10:, CS, % CSY
  257.  
  258. CS:
  259. GuiControlGet, CS, 10:, CS
  260. CSDiv := 85
  261. gosub CalcCS
  262. CreateSpectrum(CSR, CSG, CSB)
  263.  
  264. If (A_EventInfo = 4)
  265. {
  266.     Gdip_DeleteGraphics(_G_)
  267.     Gdip_DisposeImage(_PROGRESS_)
  268.     DeleteObject(_HBITMAP_)
  269. }
  270. return
  271.  
  272. CalcCS:
  273. If (CS//CSDiv = 0 || CS//CSDiv = 3)
  274.     CSR := (CS//CSDiv = 0) ? 255 : 0, CSG := (CS//CSDiv = 0) ? 0 : 255, CSB := (CS//CSDiv = 0) ? Round((CS/CSDiv - CS//CSDiv) * 255) : 255 - Round((CS/CSDiv - CS//CSDiv) * 255)
  275. Else If (CS//CSDiv = 1 || CS//CSDiv = 4)
  276.     CSR := (CS//CSDiv = 1) ? 255 - Round((CS/CSDiv - CS//CSDiv) * 255) : Round((CS/CSDiv - CS//CSDiv) * 255), CSG := (CS//CSDiv = 1) ? 0 : 255, CSB := (CS//CSDiv = 1) ? 255 : 0
  277. Else If (CS//CSDiv = 2 || CS//CSDiv = 5)
  278.     CSR := (CS//CSDiv = 2) ? 0 : 255, CSG := (CS//CSDiv = 2) ? Round((CS/CSDiv - CS//CSDiv) * 255) : 255 - Round((CS/CSDiv - CS//CSDiv) * 255), CSB := (CS//CSDiv = 2) ? 255 : 0
  279. return
  280.  
  281. ChooseColor:
  282. MouseGetPos, X, Y
  283. PixelGetColor, NewColor, % X, % Y, RGB
  284. Window%WNum%.Insert("Color", SubStr(NewColor, 3))
  285. GoSub, StartG
  286. Window%WNum%.Insert("Utensil", Gdip_BrushCreateSolid("0x" . Window%WNum%["Trans"] . Window%WNum%["Color"]))
  287. Loop, % WinCt
  288. {
  289.         FName := Window%A_Index%["FName"], %FName%(G, Window%A_Index%["Utensil"], Window%A_Index%["X"], Window%A_Index%["Y"], Window%A_Index%["W"], Window%A_Index%["H"], Window%A_Index%["R"])
  290. }
  291. UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width, Height)
  292. GoSub, FinishG
  293. return
  294.  
  295. HexFromRGB(@colorR, @colorG, @colorB)
  296. {
  297.     SetFormat Integer, Hex
  298.     color := 0x1000000 + (@colorR << 16) + (@colorG << 8) + @colorB
  299.     StringTrimLeft color, color, 3
  300.     SetFormat Integer, D
  301.     return color
  302. }
  303.  
  304. CreateSpectrum(R=255,G=0,B=0,Setup=False)
  305. {
  306.     global
  307.  
  308.     If (Setup)
  309.     {
  310.         _PROGRESS_:=Gdip_CreateBitmap(510, 510)
  311.         _G_:=Gdip_GraphicsFromImage(_PROGRESS_)
  312.         Gdip_SetSmoothingMode(_G_, 1)
  313.         Loop, 255
  314.         {
  315.             _PBRUSH_:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 510, 2, "0xFF" . HexFromRGB(256 - A_Index, 256 - A_Index, 256 - A_Index), "0xFF" . HexFromRGB(R - A_Index, 0, 0), 0, 0)
  316.             Gdip_FillRectangle(_G_, _PBRUSH_, 0, A_Index*2-1, 510, 2)
  317.         }
  318.     }
  319.     Else
  320.     {
  321.         Loop, 255
  322.         {
  323.             _PBRUSH_:=Gdip_CreateLineBrushFromRect(0, A_Index*2-1, 510, 2, "0xFF" . HexFromRGB(256 - A_Index, 256 - A_Index, 256 - A_Index), "0xFF" . HexFromRGB((R - Ceil(A_Index / Floor(256 / R)) < 0) ? 0 : R - Ceil(A_Index / Floor(256 / R)), (G - Ceil(A_Index / Floor(256 / G)) < 0) ? 0 : G - Ceil(A_Index / Floor(256 / G)), (B - Ceil(A_Index / Floor(256 / B)) < 0) ? 0 : B - Ceil(A_Index / Floor(256 / B))), 0, 0)
  324.             Gdip_FillRectangle(_G_, _PBRUSH_, 0, A_Index*2-1, 510, 2)
  325.         }
  326.     }
  327.     _HBITMAP_:=Gdip_CreateHBITMAPFromBitmap(_PROGRESS_)
  328.     SetImage(_PRGS_, _HBITMAP_)
  329.     SetImage(_PRGS_BU, _HBITMAP_)
  330. }
Add Comment
Please, Sign In to add comment