GDI+ Color Transformer v0.9.5 build 2013-05-23 Autolt


SUBMITTED BY: Guest

DATE: May 28, 2013, 8:20 a.m.

FORMAT: Text only

SIZE: 134.3 kB

HITS: 1089

  1. ;IMPORTANT: You are not allowed to sell this code or just parts of it in a commercial project or modify it and distribute it with a different name!
  2. ;Distributing copies of the program in compiled pe format (exe) must be free of any fee!
  3. #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
  4. #AutoIt3Wrapper_UseX64=n
  5. #AutoIt3Wrapper_Icon=Color.ico
  6. ;#AutoIt3Wrapper_Res_Field=CompanyName|UEZ Software Development
  7. ;#AutoIt3Wrapper_Res_Field=ProductName|GDI+ Color Transformer
  8. ;#AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer%
  9. #AutoIt3Wrapper_Res_Fileversion=0.9.5.0
  10. ;#AutoIt3Wrapper_Res_Field=Build|2013-05-23
  11. #AutoIt3Wrapper_Res_LegalCopyright=UEZ Software Development
  12. #AutoIt3Wrapper_Res_Language=1033
  13. ;#AutoIt3Wrapper_Res_Field=URL|http://www.autoitscript.com/forum/index.php?showtopic=151155
  14. #AutoIt3Wrapper_Run_Obfuscator=y
  15. #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
  16. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
  17. #AutoIt3Wrapper_UseUpx=y
  18. #AutoIt3Wrapper_UPX_Parameters=--best --lzma
  19. #include <ButtonConstants.au3>
  20. #include <EditConstants.au3>
  21. #include <GDIPlus.au3>
  22. #include <GUIConstantsEx.au3>
  23. #include <GUIMenu.au3>
  24. #include <Memory.au3>
  25. #include <Misc.au3>
  26. #include <SliderConstants.au3>
  27. #include <StaticConstants.au3>
  28. #include <TabConstants.au3>
  29. #include <WindowsConstants.au3>
  30. If Not _GDIPlus11_Startup() Then
  31. Global $sUrl = "http://www.winsxs.org/?OtherTech/thread-13-1-1"
  32. Global $iChoice = MsgBox(4 + 16 + 262144, "Error", _
  33. "GDIPlus.dll v1.1 is needed to run this script properly!" & @CRLF & _
  34. "How to use GDI+ v1.1 e.g. on WinXP: " & $sUrl & @CRLF & @CRLF & "Open site with default browser?")
  35. If $iChoice = 6 Then ShellExecute($sUrl)
  36. Exit
  37. EndIf
  38. Global Const $GDIP_BLUREFFECT = "{633C80A4-1843-482b-9EF2-BE2834C5FDD4}"
  39. Global Const $GDIP_BRIGHTNESSCONTRASTEFFECT = "{D3A1DBE1-8EC4-4c17-9F4C-EA97AD1C343D}"
  40. Global Const $GDIP_COLORBALANCEEFFECT = "{537E597D-251E-48da-9664-29CA496B70F8}"
  41. Global Const $GDIP_COLORCURVEEFFECT = "{DD6A0022-58E4-4a67-9D9B-D48EB881A53D}"
  42. Global Const $GDIP_COLORLUTEFFECT = "{A7CE72A9-0F7F-40d7-B3CC-D0C02D5C3212}"
  43. Global Const $GDIP_COLORMATRIXEFFECT = "{718F2615-7933-40e3-A511-5F68FE14DD74}"
  44. Global Const $GDIP_HUESATURATIONLIGHTNESSEFFECT = "{8B2DD6C3-EB07-4d87-A5F0-7108E26A9C5F}"
  45. Global Const $GDIP_LEVELSEFFECT = "{99C354EC-2A31-4f3a-8C34-17A803B33A25}"
  46. Global Const $GDIP_REDEYECORRECTIONEFFECT = "{74D29D05-69A4-4266-9549-3CC52836B632}"
  47. Global Const $GDIP_SHARPENEFFECT = "{63CBF3EE-C526-402c-8F71-62C540BF5142}"
  48. Global Const $GDIP_TINTEFFECT = "{1077AF00-2848-4441-9489-44AD4C2D7A2C}"
  49. Global Const $tagCOLORLUTPARAMS = "byte ColorChannelLUTB[256];byte ColorChannelLUTG[256];byte ColorChannelLUTR[256];byte ColorChannelLUTA[256]"
  50. Global Const $tagBLURPARAMS = "float radius;bool expandEdge" ;0-255; False/True
  51. Global Const $tagBRIGHTNESSCONTRASTPARAMS = "int brightnessLevel;int contrastLevel" ;-255-255; -100-100
  52. Global Const $tagCOLORBALANCEPARAMS = "int cyanRed;int magentaGreen;int yellowBlue" ;-100-100; -100-100; -100-100
  53. Global Const $tagCOLORCURVEEFFECTPARAMS = "int type;int channel;int value"
  54. Global Const $tagGDIPCOLORMATRIXPARAMS = "float m[25];"
  55. Global Const $tagHUESATURATIONLIGHTNESSPARAMS = "int hueLevel;int saturationLevel;int lightnessLevel" ;-180-180; -100-100; -100-100
  56. Global Const $tagLEVELSPARAMS = "int highlight;int midtone;int shadow" ;0-100; -100-100; 0-100
  57. Global Const $tagSHARPENPARAMS = "float radius;float amount" ;0-255; 0-100
  58. Global Const $tagTINTPARAMS = "int hue;int amount" ;-180-180; -100-100
  59. Global Const $tagGDIPCOLORMATRIX = "float m[25];" ; [5][5] matrix; [0][0] - red, [1][1] - green, [2][2] - blue; [3][3] - alpha, [4][4] - ~should~ be 1
  60. Global $tColorLUT = DllStructCreate($tagCOLORLUTPARAMS), $tColorColorChannelLUT
  61. Global $tRECTF = DllStructCreate($tagGDIPRECTF)
  62. DllStructSetData($tRECTF, "X", 0)
  63. DllStructSetData($tRECTF, "Y", 0)
  64. Global $tBlur = DllStructCreate($tagBLURPARAMS)
  65. Global $tBrightnessContrast = DllStructCreate($tagBRIGHTNESSCONTRASTPARAMS)
  66. Global $tColorBalance = DllStructCreate($tagCOLORBALANCEPARAMS)
  67. Global Enum $iAdjustExposure = 0, $iAdjustDensity, $iAdjustContrast, $iAdjustHighlight, $iAdjustShadow, _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms534098(v=vs.85).aspx
  68. $iAdjustMidtone, $iAdjustWhiteSaturation, $iAdjustBlackSaturation
  69. Global Enum $iCurveChannelAll = 0, $iCurveChannelRed, $iCurveChannelGreen, $iCurveChannelBlue ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms534100(v=vs.85).aspx
  70. Global $tColorCurve = DllStructCreate($tagCOLORCURVEEFFECTPARAMS), $iType = $iAdjustExposure, $iChannel = $iCurveChannelAll
  71. Global $tColorMatrix = DllStructCreate($tagGDIPCOLORMATRIXPARAMS)
  72. Global $tHueSaturationLightness = DllStructCreate($tagHUESATURATIONLIGHTNESSPARAMS)
  73. Global $tLevels = DllStructCreate($tagLEVELSPARAMS)
  74. Global $tSharpen = DllStructCreate($tagSHARPENPARAMS)
  75. Global $tTint = DllStructCreate($tagTINTPARAMS)
  76. Global $bUpdatePreview = False
  77. Global $hGUI = GUICreate("GDI+ Color Transformer by UEZ v0.9.5 build 2013-05-23", 1201, 691, -1, -1, Default, $WS_EX_TOPMOST + $WS_EX_ACCEPTFILES)
  78. GUISetFont(12, 400, 0, "Times New Roman")
  79. GUISetBkColor(0xFFFFFF, $hGUI)
  80. Global $iTab = GUICtrlCreateTab(824, 232, 369, 393, $TCS_MULTILINE, $TCS_EX_FLATSEPARATORS)
  81. Global $iSlider_BWThreshold_Default = 50, $iSlider_BlurRadius_Default = 0, $iSlider_BCBrightness_Default = 0, $iSlider_BCContrast_Default = 0, _
  82. $iSlider_CBCyanRed_Default = 0, $iSlider_CBMagentaGreen_Default = 0, $iSlider_CBYellowBlue_Default = 0, _
  83. $iSlider_CMRed_Default = 100, $iSlider_CMGreen_Default = 100, $iSlider_CMBlue_Default = 100, $iSlider_SharpenRadius_Default = 0, $iSlider_SharpenAmount_Default = 0, _
  84. $iSlider_HSLLightnLevel_Default = 0, $iSlider_HSLHueLevel_Default = 0, $iSlider_HSLSatLevel_Default = 0, _
  85. $iSlider_LevelsShadow_Default = 0, $iSlider_LevelsHighlight_Default = 100, $iSlider_LevelsMidtone_Default = 0, _
  86. $iSlider_TintHue_Default = 0, $iSlider_TintAmount_Default = 0, _
  87. $iSlider_GSLumRed_Default = 31, $iSlider_GSLumGreen_Default = 61, $iSlider_GSLumBlue_Default = 8
  88. Global $GDIP_RLUM = $iSlider_GSLumRed_Default / 100, $GDIP_GLUM = $iSlider_GSLumGreen_Default / 100, $GDIP_BLUM = $iSlider_GSLumBlue_Default / 100; ; Colors luminace
  89. Global $iTabSelection = 0, $iBGDefColor = 0xFFFFFF
  90. #region Tabs
  91. #region B/W
  92. Global $iBW = GUICtrlCreateTabItem("Black / White")
  93. Global $iLabel_BWThreshold = GUICtrlCreateLabel("Threshold", 837, 411, 93, 27)
  94. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  95. GUICtrlSetBkColor(-1, 0xFFFFFF)
  96. Global $iSlider_BWThreshold = GUICtrlCreateSlider(837, 443, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  97. GUICtrlSetBkColor(-1, 0xFFFFFF)
  98. GUICtrlSetLimit(-1, 100, 0)
  99. GUICtrlSetData(-1, $iSlider_BWThreshold_Default)
  100. GUICtrlSetTip(-1, "Range is from 0 to 1")
  101. Global $hSlider_BWThreshold = GUICtrlGetHandle($iSlider_BWThreshold)
  102. Global $iInp_BWThreshold = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_BWThreshold_Default / 100), 1126, 455, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  103. #endregion B/W
  104. #region Blur
  105. Global $iBlur = GUICtrlCreateTabItem("Blur")
  106. ;~ GUICtrlSetState(-1, $GUI_SHOW)
  107. Global $iCheckbox_BlurExpandEdge = GUICtrlCreateCheckbox("Expand Edge", 838, 381, 177, 25)
  108. GUICtrlSetFont(-1, 12, 400, 0, "Arial")
  109. GUICtrlSetTip(-1, "If set, the bitmap expands by an amount equal to the radius so that it can have soft edges." & @CRLF & _
  110. "the bitmap remains the same size and the soft edges are clipped.")
  111. Global $iLabel_BlurRadius = GUICtrlCreateLabel("Radius", 838, 445, 64, 27)
  112. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  113. GUICtrlSetBkColor(-1, 0xFFFFFF)
  114. Global $iSlider_BlurRadius = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  115. GUICtrlSetLimit(-1, 255, 0)
  116. GUICtrlSetBkColor(-1, 0xFFFFFF)
  117. GUICtrlSetTip(-1, "Range is from 0 to 255")
  118. GUICtrlSetData(-1, $iSlider_BlurRadius_Default)
  119. Global $hSlider_BlurRadius = GUICtrlGetHandle($iSlider_BlurRadius)
  120. Global $iInp_BlurRadius = GUICtrlCreateInput($iSlider_BlurRadius_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  121. #endregion Blur
  122. #region BC
  123. Global $iBC = GUICtrlCreateTabItem("Brightness / Contrast")
  124. Global $iLabel_BCBrightness = GUICtrlCreateLabel("Brightness", 838, 377, 99, 27)
  125. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  126. GUICtrlSetBkColor(-1, 0xFFFFFF)
  127. Global $iSlider_BCBrightness = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  128. GUICtrlSetLimit(-1, 255, -255)
  129. GUICtrlSetBkColor(-1, 0xFFFFFF)
  130. GUICtrlSetTip(-1, "Range is from -255 to 255")
  131. GUICtrlSetData(-1, $iSlider_BCBrightness_Default)
  132. Global $hSlider_BCBrightness = GUICtrlGetHandle($iSlider_BCBrightness)
  133. Global $iInp_BCBrightness = GUICtrlCreateInput($iSlider_BCBrightness_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  134. Global $iLabel_BCContrast = GUICtrlCreateLabel("Contrast", 838, 504, 80, 27)
  135. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  136. GUICtrlSetBkColor(-1, 0xFFFFFF)
  137. Global $iSlider_BCContrast = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  138. GUICtrlSetLimit(-1, 100, -100)
  139. GUICtrlSetBkColor(-1, 0xFFFFFF)
  140. GUICtrlSetTip(-1, "Range is from -100 to 100")
  141. GUICtrlSetData(-1, $iSlider_BCContrast_Default)
  142. Global $hSlider_BCContrast = GUICtrlGetHandle($iSlider_BCContrast)
  143. Global $iInp_BCContrast = GUICtrlCreateInput($iSlider_BCContrast_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  144. #endregion BC
  145. #region CB
  146. Global $iCB = GUICtrlCreateTabItem("Color Balance")
  147. Global $iLabel_CBCyanRed = GUICtrlCreateLabel("Cyan Red", 838, 355, 87, 27)
  148. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  149. GUICtrlSetBkColor(-1, 0xFFFFFF)
  150. Global $iSlider_CBCyanRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  151. GUICtrlSetLimit(-1, 100, -100)
  152. GUICtrlSetBkColor(-1, 0xFFFFFF)
  153. GUICtrlSetData(-1, $iSlider_CBCyanRed_Default)
  154. GUICtrlSetTip(-1, "Range is from -100 to 100")
  155. Global $hSlider_CBCyanRed = GUICtrlGetHandle($iSlider_CBCyanRed)
  156. Global $iInp_CBCyanRed = GUICtrlCreateInput($iSlider_CBCyanRed_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  157. Global $iLabel_CBMagentaGreen = GUICtrlCreateLabel("Magenta Green", 838, 445, 139, 27)
  158. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  159. GUICtrlSetBkColor(-1, 0xFFFFFF)
  160. Global $iSlider_CBMagentaGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  161. GUICtrlSetLimit(-1, 100, -100)
  162. GUICtrlSetBkColor(-1, 0xFFFFFF)
  163. GUICtrlSetData(-1, $iSlider_CBMagentaGreen_Default)
  164. GUICtrlSetTip(-1, "Range is from -100 to 100")
  165. Global $hSlider_CBMagentaGreen = GUICtrlGetHandle($iSlider_CBMagentaGreen)
  166. Global $iInp_CBMagentaGreen = GUICtrlCreateInput($iSlider_CBMagentaGreen_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  167. Global $iLabel_CBYellowBlue = GUICtrlCreateLabel("Yellow Blue", 838, 535, 107, 27)
  168. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  169. GUICtrlSetBkColor(-1, 0xFFFFFF)
  170. Global $iSlider_CBYellowBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  171. GUICtrlSetLimit(-1, 100, -100)
  172. GUICtrlSetBkColor(-1, 0xFFFFFF)
  173. GUICtrlSetData(-1, $iSlider_CBYellowBlue_Default)
  174. GUICtrlSetTip(-1, "Range is from -100 to 100")
  175. Global $hSlider_CBYellowBlue = GUICtrlGetHandle($iSlider_CBYellowBlue)
  176. Global $iInp_CBYellowBlue = GUICtrlCreateInput($iSlider_CBYellowBlue_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  177. #endregion CB
  178. #region CC
  179. Global $iCC = GUICtrlCreateTabItem("Color Curve")
  180. Global $iLabel_CCCurveAdjust = GUICtrlCreateLabel("Curve Adjustments", 838, 355, 171, 27)
  181. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  182. GUICtrlSetBkColor(-1, 0xFFFFFF)
  183. GUICtrlCreateGroup("", 0, 0, 0, 0)
  184. Global $iRadio_CCExposure = GUICtrlCreateRadio("Exposure", 837, 387, 73, 17)
  185. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  186. GUICtrlSetState(-1, $GUI_CHECKED)
  187. Global $iRadio_CCDensity = GUICtrlCreateRadio("Density", 927, 387, 73, 17)
  188. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  189. Global $iRadio_CCContrast = GUICtrlCreateRadio("Contrast", 1017, 387, 73, 17)
  190. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  191. Global $iRadio_CCHighlight = GUICtrlCreateRadio("Highlight", 1107, 387, 65, 17)
  192. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  193. Global $iRadio_CCShadow = GUICtrlCreateRadio("Shadow", 837, 411, 73, 17)
  194. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  195. Global $iRadio_CCMidtone = GUICtrlCreateRadio("Midtone", 927, 411, 73, 17)
  196. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  197. Global $iRadio_CCWhiteSaturation = GUICtrlCreateRadio("White Satur.", 1017, 411, 81, 17)
  198. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  199. Global $iRadio_CCBlackSaturation = GUICtrlCreateRadio("Black Satur.", 1107, 411, 73, 17)
  200. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  201. Global $iLabel_CCCurveChannel = GUICtrlCreateLabel("Curve Channel", 838, 445, 132, 27)
  202. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  203. GUICtrlSetBkColor(-1, 0xFFFFFF)
  204. GUICtrlCreateGroup("", -99, -99, 1, 1)
  205. GUICtrlCreateGroup("", 0, 0, 0, 0)
  206. Global $iRadio_CCCurveAllChannel = GUICtrlCreateRadio("All Channel", 837, 477, 73, 17)
  207. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  208. GUICtrlSetState(-1, $GUI_CHECKED)
  209. Global $iRadio_CCCurveRed = GUICtrlCreateRadio("Red", 927, 477, 73, 17)
  210. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  211. Global $iRadio_CCCurveGreen = GUICtrlCreateRadio("Green", 1017, 477, 73, 17)
  212. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  213. Global $iRadio_CCCurveBlue = GUICtrlCreateRadio("Blue", 1107, 477, 65, 17)
  214. GUICtrlSetFont(-1, 8, 400, 0, "Arial")
  215. GUICtrlCreateGroup("", -99, -99, 1, 1)
  216. Global $iLabel_CCValue = GUICtrlCreateLabel("Value", 838, 535, 54, 27)
  217. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  218. GUICtrlSetBkColor(-1, 0xFFFFFF)
  219. Global $iSlider_CCValue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  220. GUICtrlSetBkColor(-1, 0xFFFFFF)
  221. GUICtrlSetLimit(-1, 255, -255)
  222. GUICtrlSetData(-1, 0)
  223. GUICtrlSetTip(-1, "Range is from -255 to 255")
  224. Global $hSlider_CCValue = GUICtrlGetHandle($iSlider_CCValue)
  225. Global $iInp_CCValue = GUICtrlCreateInput(0, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  226. #endregion CC
  227. #region CLUT
  228. Global $iCL = GUICtrlCreateTabItem("Color LUT")
  229. Global $iLabel_CLUT = GUICtrlCreateLabel("Coming soon!", 838, 425, 340, 60)
  230. GUICtrlSetFont(-1, 34, 400, 0, "Arial Black", 4)
  231. GUICtrlSetBkColor(-1, 0xFFFFFF)
  232. #endregion CLUT
  233. #region CM
  234. Global $iCM = GUICtrlCreateTabItem("Color Matrix")
  235. Global $iLabel_CMRed = GUICtrlCreateLabel("Red", 838, 355, 38, 27)
  236. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  237. GUICtrlSetBkColor(-1, 0xFFFFFF)
  238. Global $iSlider_CMRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  239. GUICtrlSetBkColor(-1, 0xFFFFFF)
  240. GUICtrlSetLimit(-1, 100, 0)
  241. GUICtrlSetData(-1, $iSlider_CMRed_Default)
  242. GUICtrlSetTip(-1, "Range is from 0 to 1")
  243. Global $hSlider_CMRed = GUICtrlGetHandle($iSlider_CMRed)
  244. Global $iInp_CMRed = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMRed_Default / 100), 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  245. Global $iLabel_CMGreen = GUICtrlCreateLabel("Green", 838, 445, 57, 27)
  246. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  247. GUICtrlSetBkColor(-1, 0xFFFFFF)
  248. Global $iSlider_CMGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  249. GUICtrlSetBkColor(-1, 0xFFFFFF)
  250. GUICtrlSetLimit(-1, 100, 0)
  251. GUICtrlSetData(-1, $iSlider_CMGreen_Default)
  252. GUICtrlSetTip(-1, "Range is from 0 to 1")
  253. Global $hSlider_CMGreen = GUICtrlGetHandle($iSlider_CMGreen)
  254. Global $iInp_CMGreen = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMGreen_Default / 100), 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  255. Global $iLabel_CMBlue = GUICtrlCreateLabel("Blue", 838, 535, 43, 27)
  256. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  257. GUICtrlSetBkColor(-1, 0xFFFFFF)
  258. Global $iSlider_CMBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  259. GUICtrlSetBkColor(-1, 0xFFFFFF)
  260. GUICtrlSetLimit(-1, 100, 0)
  261. GUICtrlSetData(-1, $iSlider_CMBlue_Default)
  262. GUICtrlSetTip(-1, "Range is from 0 to 1")
  263. Global $hSlider_CMBlue = GUICtrlGetHandle($iSlider_CMBlue)
  264. Global $iInp_CMBlue = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMBlue_Default / 100), 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  265. #endregion CM
  266. #region Greyscale
  267. Global $iGreyscale = GUICtrlCreateTabItem("Greyscale")
  268. Global $iLabel_GSLumRed = GUICtrlCreateLabel("Luminance Red", 838, 355, 138, 27)
  269. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  270. GUICtrlSetBkColor(-1, 0xFFFFFF)
  271. Global $iSlider_GSLumRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  272. GUICtrlSetBkColor(-1, 0xFFFFFF)
  273. GUICtrlSetLimit(-1, 100, 0)
  274. GUICtrlSetData(-1, $iSlider_GSLumRed_Default)
  275. GUICtrlSetTip(-1, "Range is from 0 to 1")
  276. Global $hSlider_GSLumRed = GUICtrlGetHandle($iSlider_GSLumRed)
  277. Global $iInp_GSLumRed = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumRed_Default / 100), 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  278. Global $iLabel_GSLumGreen = GUICtrlCreateLabel("Luminance Green", 838, 445, 157, 27)
  279. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  280. GUICtrlSetBkColor(-1, 0xFFFFFF)
  281. Global $iSlider_GSLumGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  282. GUICtrlSetBkColor(-1, 0xFFFFFF)
  283. GUICtrlSetLimit(-1, 100, 0)
  284. GUICtrlSetData(-1, $iSlider_GSLumGreen_Default)
  285. GUICtrlSetTip(-1, "Range is from 0 to 1")
  286. Global $hSlider_GSLumGreen = GUICtrlGetHandle($iSlider_GSLumGreen)
  287. Global $iInp_GSLumGreen = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumGreen_Default / 100), 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  288. Global $iLabel_GSLumBlue = GUICtrlCreateLabel("Luminance Blue", 838, 535, 143, 27)
  289. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  290. GUICtrlSetBkColor(-1, 0xFFFFFF)
  291. Global $iSlider_GSLumBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  292. GUICtrlSetBkColor(-1, 0xFFFFFF)
  293. GUICtrlSetLimit(-1, 100, 0)
  294. GUICtrlSetData(-1, $iSlider_GSLumBlue_Default)
  295. GUICtrlSetTip(-1, "Range is from 0 to 1")
  296. Global $hSlider_GSLumBlue = GUICtrlGetHandle($iSlider_GSLumBlue)
  297. Global $iInp_GSLumBlue = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumBlue_Default / 100), 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  298. #endregion Greyscale
  299. #region HSL
  300. Global $iHSL = GUICtrlCreateTabItem("Hue / Sat. / Lightn.")
  301. Global $iLabel_HSLHueLevel = GUICtrlCreateLabel("Hue Level", 838, 355, 92, 27)
  302. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  303. GUICtrlSetBkColor(-1, 0xFFFFFF)
  304. Global $iSlider_HSLHueLevel = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  305. GUICtrlSetLimit(-1, 180, -180)
  306. GUICtrlSetBkColor(-1, 0xFFFFFF)
  307. GUICtrlSetData(-1, $iSlider_HSLHueLevel_Default)
  308. GUICtrlSetTip(-1, "Range is from -180 to 180")
  309. Global $hSlider_HSLHueLevel = GUICtrlGetHandle($iSlider_HSLHueLevel)
  310. Global $iInp_HSLHueLevel = GUICtrlCreateInput($iSlider_HSLHueLevel_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  311. Global $iLabel_HSLSatLevel = GUICtrlCreateLabel("Saturation Level", 838, 445, 150, 27)
  312. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  313. GUICtrlSetBkColor(-1, 0xFFFFFF)
  314. Global $iSlider_HSLSatLevel = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  315. GUICtrlSetLimit(-1, 100, -100)
  316. GUICtrlSetBkColor(-1, 0xFFFFFF)
  317. GUICtrlSetData(-1, $iSlider_HSLSatLevel_Default)
  318. GUICtrlSetTip(-1, "Range is from -100 to 100")
  319. Global $hSlider_HSLSatLevel = GUICtrlGetHandle($iSlider_HSLSatLevel)
  320. Global $iInp_HSLSatLevel = GUICtrlCreateInput($iSlider_HSLSatLevel_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  321. Global $iLabel_HSLLightnLevel = GUICtrlCreateLabel("Lightness Level", 838, 535, 144, 27)
  322. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  323. GUICtrlSetBkColor(-1, 0xFFFFFF)
  324. Global $iSlider_HSLLightnLevel = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  325. GUICtrlSetLimit(-1, 100, -100)
  326. GUICtrlSetBkColor(-1, 0xFFFFFF)
  327. GUICtrlSetLimit(-1, 100, -100)
  328. GUICtrlSetData(-1, $iSlider_HSLLightnLevel_Default)
  329. GUICtrlSetTip(-1, "Range is from -100 to 100")
  330. Global $hSlider_HSLLightnLevel = GUICtrlGetHandle($iSlider_HSLLightnLevel)
  331. Global $iInp_HSLLightnLevel = GUICtrlCreateInput($iSlider_HSLLightnLevel_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  332. #endregion HSL
  333. #region Levels
  334. Global $iLevels = GUICtrlCreateTabItem("Levels")
  335. Global $iLabel_LevelsHighlight = GUICtrlCreateLabel("Highlight", 838, 355, 83, 27)
  336. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  337. GUICtrlSetBkColor(-1, 0xFFFFFF)
  338. Global $iSlider_LevelsHighlight = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  339. GUICtrlSetBkColor(-1, 0xFFFFFF)
  340. GUICtrlSetLimit(-1, 100, 0)
  341. GUICtrlSetData(-1, $iSlider_LevelsHighlight_Default)
  342. GUICtrlSetTip(-1, "Range is from 0 to 100")
  343. Global $hSlider_LevelsHighlight = GUICtrlGetHandle($iSlider_LevelsHighlight)
  344. Global $iInp_LevelsHighlight = GUICtrlCreateInput($iSlider_LevelsHighlight_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  345. Global $iLabel_LevelsMidtone = GUICtrlCreateLabel("Midtone", 838, 445, 75, 27)
  346. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  347. GUICtrlSetBkColor(-1, 0xFFFFFF)
  348. Global $iSlider_LevelsMidtone = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  349. GUICtrlSetLimit(-1, 100, -100)
  350. GUICtrlSetBkColor(-1, 0xFFFFFF)
  351. GUICtrlSetLimit(-1, 100, -100)
  352. GUICtrlSetData(-1, $iSlider_LevelsMidtone_Default)
  353. GUICtrlSetTip(-1, "Range is from -100 to 100")
  354. Global $hSlider_LevelsMidtone = GUICtrlGetHandle($iSlider_LevelsMidtone)
  355. Global $iInp_LevelsMidtone = GUICtrlCreateInput($iSlider_LevelsMidtone_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  356. Global $iLabel_LevelsShadow = GUICtrlCreateLabel("Shadow", 838, 535, 75, 27)
  357. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  358. GUICtrlSetBkColor(-1, 0xFFFFFF)
  359. Global $iSlider_LevelsShadow = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  360. GUICtrlSetBkColor(-1, 0xFFFFFF)
  361. GUICtrlSetLimit(-1, 100, 0)
  362. GUICtrlSetData(-1, $iSlider_LevelsShadow_Default)
  363. GUICtrlSetTip(-1, "Range is from 0 to 100")
  364. Global $hSlider_LevelsShadow = GUICtrlGetHandle($iSlider_LevelsShadow)
  365. Global $iInp_LevelsShadow = GUICtrlCreateInput($iSlider_LevelsShadow_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  366. #endregion Levels
  367. #region Negative
  368. Global $iNegative = GUICtrlCreateTabItem("Negative")
  369. Global $iLabel_Negative = GUICtrlCreateLabel("Nothing to configure", 838, 445, 340, 60)
  370. GUICtrlSetFont(-1, 23, 400, 0, "Arial Black", 4)
  371. GUICtrlSetBkColor(-1, 0xFFFFFF)
  372. #endregion Negative
  373. #region Sharpen
  374. Global $iSharpen = GUICtrlCreateTabItem("Sharpen")
  375. Global $iLabel_SharpenRadius = GUICtrlCreateLabel("Radius", 838, 377, 64, 27)
  376. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  377. GUICtrlSetBkColor(-1, 0xFFFFFF)
  378. Global $iSlider_SharpenRadius = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  379. GUICtrlSetBkColor(-1, 0xFFFFFF)
  380. GUICtrlSetLimit(-1, 255, 0)
  381. GUICtrlSetData(-1, $iSlider_SharpenRadius_Default)
  382. GUICtrlSetTip(-1, "Range is from 0 to 255")
  383. Global $hSlider_SharpenRadius = GUICtrlGetHandle($iSlider_SharpenRadius)
  384. Global $iInp_SharpenRadius = GUICtrlCreateInput($iSlider_SharpenRadius_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  385. Global $iLabelSharpenAmount = GUICtrlCreateLabel("Amount", 838, 504, 72, 27)
  386. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  387. GUICtrlSetBkColor(-1, 0xFFFFFF)
  388. Global $iSlider_SharpenAmount = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  389. GUICtrlSetBkColor(-1, 0xFFFFFF)
  390. GUICtrlSetLimit(-1, 100, 0)
  391. GUICtrlSetData(-1, $iSlider_SharpenAmount_Default)
  392. GUICtrlSetTip(-1, "Range is from 0 to 100")
  393. Global $hSlider_SharpenAmount = GUICtrlGetHandle($iSlider_SharpenAmount)
  394. Global $iInp_SharpenAmount = GUICtrlCreateInput($iSlider_SharpenAmount_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  395. #endregion Sharpen
  396. #region Tint
  397. Global $iTint = GUICtrlCreateTabItem("Tint")
  398. ;~ GUICtrlSetState(-1, $GUI_SHOW)
  399. Global $iLabel_TintHue = GUICtrlCreateLabel("Hue", 838, 377, 39, 27)
  400. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  401. GUICtrlSetBkColor(-1, 0xFFFFFF)
  402. Global $iSlider_TintHue = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  403. GUICtrlSetBkColor(-1, 0xFFFFFF)
  404. GUICtrlSetLimit(-1, 180, -180)
  405. GUICtrlSetData(-1, $iSlider_TintHue_Default)
  406. GUICtrlSetTip(-1, "Range is from -180 to 180")
  407. Global $hSlider_TintHue = GUICtrlGetHandle($iSlider_TintHue)
  408. Global $iInp_TintHue = GUICtrlCreateInput($iSlider_TintHue_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  409. Global $iLabel_TintAmount = GUICtrlCreateLabel("Amount", 838, 504, 72, 27)
  410. GUICtrlSetFont(-1, 12, 400, 0, "Arial Black")
  411. GUICtrlSetBkColor(-1, 0xFFFFFF)
  412. Global $iSlider_TintAmount = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  413. GUICtrlSetBkColor(-1, 0xFFFFFF)
  414. GUICtrlSetLimit(-1, 100, -100)
  415. GUICtrlSetData(-1, $iSlider_TintAmount_Default)
  416. GUICtrlSetTip(-1, "Range is from -100 to 100")
  417. Global $hSlider_TintAmount = GUICtrlGetHandle($iSlider_TintAmount)
  418. Global $iInp_TintAmount = GUICtrlCreateInput($iSlider_TintAmount_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY))
  419. #endregion Tint
  420. GUICtrlCreateTabItem("")
  421. #endregion Tabs
  422. Global Const $STM_SETIMAGE = 0x0172, $IMAGE_BITMAP = 0
  423. Global $hTmp = _GDIPlus_BMPFromMemory(_Logo(), True)
  424. Global $iPicLogo = GUICtrlCreatePic("", 8, 8, 1184, 196, BitOR($SS_CENTERIMAGE, $GUI_SS_DEFAULT_PIC, $WS_BORDER))
  425. Global $hB = GUICtrlSendMsg($iPicLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $hTmp)
  426. If $hB Then _WinAPI_DeleteObject($hB)
  427. _WinAPI_DeleteObject($hTmp)
  428. Global $iW_Prev = 800, $iH_Prev = 450
  429. Global $iPicPreview = GUICtrlCreatePic("", 8, 232, $iW_Prev, $iH_Prev, BitOR($GUI_SS_DEFAULT_PIC, $WS_BORDER, $SS_CENTERIMAGE))
  430. Global $hPicPreview = GUICtrlGetHandle($iPicPreview)
  431. Global $iBtnSave = GUICtrlCreateButton("&Save Image", 1117, 634, 75, 49, $BS_MULTILINE)
  432. GUICtrlSetState(-1, $GUI_DISABLE)
  433. Global $iBtnLoad = GUICtrlCreateButton("&Load Image", 1036, 634, 75, 49, $BS_MULTILINE)
  434. Global $iBtnApply = GUICtrlCreateButton("&Apply Effect", 825, 634, 75, 49, $BS_MULTILINE)
  435. GUICtrlSetState(-1, $GUI_DISABLE)
  436. Global $iBtnUndo = GUICtrlCreateButton("&Undo Effect", 905, 634, 75, 49, $BS_MULTILINE)
  437. GUICtrlSetState(-1, $GUI_DISABLE)
  438. Global $iLabelImg = GUICtrlCreateLabel(" Image Info:", 8, 214, 68, 16)
  439. GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  440. GUICtrlSetBkColor(-1, 0xE0E0E0)
  441. Global $iLabelImgInfo = GUICtrlCreateLabel("", 76, 214, 731, 16)
  442. GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  443. GUICtrlSetBkColor(-1, 0xE0E0E0)
  444. Global $iLabel_BgColor = GUICtrlCreateLabel("Bg Color", 986, 634, 47, 19)
  445. GUICtrlSetFont(-1, 9, 400, 0, "Times New Roman")
  446. Global $iBtnBgColor = GUICtrlCreateButton("", 992, 654, 32, 28, $WS_BORDER)
  447. GUICtrlSetBkColor(-1, $iBGDefColor)
  448. GUICtrlSetTip(-1, "Change image background color (used also for save format)." & @CRLF & "PNG file format is excluded by background color")
  449. Global Enum $iReset = 0x400
  450. Global $hQMenu = _GUICtrlMenu_CreatePopup()
  451. _GUICtrlMenu_InsertMenuItem($hQMenu, 0, "Reset to default", $iReset)
  452. $hTmp = _GDIPlus_BMPFromMemory(Reset_Icon())
  453. Global $hBmp_Reset = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU)
  454. _GUICtrlMenu_SetItemBmp($hQMenu, 0, $hBmp_Reset)
  455. _GDIPlus_BitmapDispose($hTmp)
  456. GUISetState(@SW_SHOW)
  457. Global $hDLL_GDI32 = DllOpen("gdi32.dll")
  458. Global $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_Prev, "int", $iH_Prev, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0)
  459. Global $hHBitmap_Preview = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aResult[6])
  460. _GDIPlus_BitmapDispose($aResult[6])
  461. Global $hDC = _WinAPI_GetWindowDC($hPicPreview)
  462. Global $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC)
  463. Global $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap_Preview)
  464. Global $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer)
  465. _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGDefColor)
  466. Global $hIA = _GDIPlus_ImageAttributesCreate()
  467. Global $tGUID = DllStructCreate($tagGUID)
  468. Global $hImage = 0, $hBmp_Preview = 0, $hBmp_tmp = 0, $hBmp_Save = 0, $hBmp_Save_1bpp = 0, $hCtx_tmp, $hBmp_Undo, $hBmp_Empty, _
  469. $iWidth, $iHeight, $aPixelFormat, $aImageRawFormat, $hEffect, $aAnim, $sPrefix, $sFile, $iBGColor = $iBGDefColor, _
  470. $bDnD = False, $bStart = False, $bDrawFX = False, $t
  471. GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
  472. GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
  473. GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")
  474. GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES")
  475. GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")
  476. GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
  477. While 1
  478. Switch GUIGetMsg()
  479. Case $GUI_EVENT_CLOSE
  480. GUIRegisterMsg($WM_HSCROLL, "")
  481. GUIRegisterMsg($WM_NOTIFY, "")
  482. GUIRegisterMsg($WM_ERASEBKGND, "")
  483. GUIRegisterMsg($WM_DROPFILES, "")
  484. GUIRegisterMsg($WM_CONTEXTMENU, "")
  485. GUIRegisterMsg($WM_COMMAND, "")
  486. If $hBmp_tmp Then
  487. _GDIPlus_GraphicsDispose($hCtx_tmp)
  488. _GDIPlus_BitmapDispose($hBmp_tmp)
  489. EndIf
  490. _GDIPlus_ImageAttributesDispose($hIA)
  491. _WinAPI_DeleteObject($hBmp_Reset)
  492. _GDIPlus_GraphicsDispose($hGraphic)
  493. _WinAPI_SelectObject($hDC_backbuffer, $DC_obj)
  494. _WinAPI_DeleteObject($hHBitmap_Preview)
  495. _WinAPI_ReleaseDC($hPicPreview, $hDC)
  496. _WinAPI_DeleteDC($hDC)
  497. If $hImage Then _GDIPlus_ImageDispose($hImage)
  498. GUIDelete()
  499. _GDIPlus_Shutdown()
  500. DllClose($hDLL_GDI32)
  501. Exit
  502. Case $iBtnApply
  503. If $hBmp_Undo Then _GDIPlus_BitmapDispose($hBmp_Undo)
  504. $hBmp_Undo = _GDIPlus_ImageClone($hImage)
  505. Switch $iTabSelection
  506. Case 0
  507. _GDIPlus_BlackAndWhite($hImage, $hCtx_tmp, $hIA, GUICtrlRead($iInp_BWThreshold), False)
  508. Case 7
  509. _GDIPlus_Greyscale($hImage, $hCtx_tmp, $hIA, False)
  510. EndSwitch
  511. _GDIPlus_BitmapDispose($hImage)
  512. $hImage = _GDIPlus_ImageClone($hBmp_tmp)
  513. $bUpdatePreview = True
  514. GUICtrlSetState($iBtnUndo, $GUI_ENABLE)
  515. ResetSettings()
  516. Case $iBtnUndo
  517. _GDIPlus_BitmapDispose($hImage)
  518. $hImage = _GDIPlus_ImageClone($hBmp_Undo)
  519. If $hBmp_tmp Then
  520. _GDIPlus_GraphicsDispose($hCtx_tmp)
  521. _GDIPlus_BitmapDispose($hBmp_tmp)
  522. EndIf
  523. $hBmp_tmp = _GDIPlus_ImageClone($hImage)
  524. $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp)
  525. $bUpdatePreview = True
  526. Case $iBtnBgColor
  527. $t = $iBGColor
  528. $iBGColor = _ChooseColor(2, 0xFF0000, 2, $hGUI)
  529. If @error Then $iBGColor = $t
  530. _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor)
  531. GUICtrlSetBkColor($iBtnBgColor, $iBGColor)
  532. $bUpdatePreview = True
  533. Case $iRadio_CCExposure, $iRadio_CCDensity
  534. GUICtrlSetLimit($iSlider_CCValue, 255, -255)
  535. GUICtrlSetData($iSlider_CCValue, 0)
  536. GUICtrlSetData($iInp_CCValue, 0)
  537. GUICtrlSetTip($iSlider_CCValue, "Range is from -255 to 255")
  538. If BitAND(GUICtrlRead($iRadio_CCExposure), $GUI_CHECKED) Then
  539. $iType = $iAdjustExposure
  540. Else
  541. $iType = $iAdjustDensity
  542. EndIf
  543. $bUpdatePreview = True
  544. Case $iRadio_CCBlackSaturation, $iRadio_CCWhiteSaturation
  545. If BitAND(GUICtrlRead($iRadio_CCBlackSaturation), $GUI_CHECKED) Then
  546. $iType = $iAdjustBlackSaturation
  547. GUICtrlSetLimit($iSlider_CCValue, 254, 0)
  548. GUICtrlSetData($iSlider_CCValue, 0)
  549. GUICtrlSetData($iInp_CCValue, 0)
  550. GUICtrlSetTip($iSlider_CCValue, "Range is from 0 to 254")
  551. Else
  552. $iType = $iAdjustWhiteSaturation
  553. GUICtrlSetLimit($iSlider_CCValue, 255, 1)
  554. GUICtrlSetData($iSlider_CCValue, 255)
  555. GUICtrlSetData($iInp_CCValue, 255)
  556. GUICtrlSetTip($iSlider_CCValue, "Range is from 1 to 255")
  557. EndIf
  558. $bUpdatePreview = True
  559. Case $iRadio_CCContrast, $iRadio_CCHighlight, $iRadio_CCShadow, $iRadio_CCMidtone
  560. GUICtrlSetLimit($iSlider_CCValue, 100, -100)
  561. GUICtrlSetData($iSlider_CCValue, 0)
  562. GUICtrlSetData($iInp_CCValue, 0)
  563. GUICtrlSetTip($iSlider_CCValue, "Range is from -100 to 100")
  564. If BitAND(GUICtrlRead($iRadio_CCBlackSaturation), $GUI_CHECKED) Then
  565. $iType = $iAdjustContrast
  566. ElseIf BitAND(GUICtrlRead($iRadio_CCHighlight), $GUI_CHECKED) Then
  567. $iType = $iAdjustHighlight
  568. ElseIf BitAND(GUICtrlRead($iRadio_CCShadow), $GUI_CHECKED) Then
  569. $iType = $iAdjustShadow
  570. Else
  571. $iType = $iAdjustMidtone
  572. EndIf
  573. $bUpdatePreview = True
  574. Case $iRadio_CCCurveAllChannel
  575. $iChannel = $iCurveChannelAll
  576. $bUpdatePreview = True
  577. Case $iRadio_CCCurveRed
  578. $iChannel = $iCurveChannelRed
  579. $bUpdatePreview = True
  580. Case $iRadio_CCCurveGreen
  581. $iChannel = $iCurveChannelGreen
  582. $bUpdatePreview = True
  583. Case $iRadio_CCCurveBlue
  584. $iChannel = $iCurveChannelBlue
  585. $bUpdatePreview = True
  586. Case $iCheckbox_BlurExpandEdge
  587. $bUpdatePreview = True
  588. Case $iBtnLoad
  589. If Not $bDnD Then
  590. $sFile = FileOpenDialog("Load an image", "", "Images (*.jpg;*.bmp;*.png;*.gif;*.tif)|All (*.*)", 3, "", $hGUI)
  591. If @error Then ContinueLoop
  592. EndIf
  593. If $hImage Then _GDIPlus_ImageDispose($hImage)
  594. $hImage = _GDIPlus_ImageLoadFromFile($sFile)
  595. If Not $hImage Then ContinueLoop
  596. $iWidth = _GDIPlus_ImageGetWidth($hImage)
  597. $iHeight = _GDIPlus_ImageGetHeight($hImage)
  598. $aAnim = DllCall($ghGDIPDll, "uint", "GdipImageGetFrameDimensionsCount", "handle", $hImage, "int*", 0)
  599. DllCall($ghGDIPDll, "uint", "GdipImageGetFrameDimensionsList", "handle", $hImage, "struct*", $tGUID, "int", $aAnim[2])
  600. $aAnim = DllCall($ghGDIPDll, "uint", "GdipImageGetFrameCount", "handle", $hImage, "struct*", $tGUID, "uint*", 0)
  601. $aPixelFormat = _GDIPlus_ImageGetPixelFormat($hImage)
  602. $aImageRawFormat = _GDIPlus_ImageGetRawFormat($hImage)
  603. $sPrefix = ""
  604. If $aAnim[3] > 1 Then $sPrefix = "animated "
  605. ;~ CopyImage2Gfx($hImage, $hGraphic, $hDC, $hDC_backbuffer, $iWidth, $iHeight)
  606. GUICtrlSetData($iLabelImgInfo, StringRegExpReplace($sFile, ".*\\(.*)", "$1") & ", " & $sPrefix & $aImageRawFormat[1] & ", " & $iWidth & "x" & $iHeight & ", " & $aPixelFormat[1] & ", " & Round(FileGetSize($sFile) / 1024, 2) & " kb")
  607. $bDnD = False
  608. $bStart = True
  609. $bUpdatePreview = True
  610. DllStructSetData($tRECTF, "Width", $iWidth)
  611. DllStructSetData($tRECTF, "Height", $iHeight)
  612. If $hBmp_tmp Then
  613. _GDIPlus_GraphicsDispose($hCtx_tmp)
  614. _GDIPlus_BitmapDispose($hBmp_tmp)
  615. EndIf
  616. $hBmp_tmp = _GDIPlus_ImageClone($hImage)
  617. $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp)
  618. GUICtrlSetState($iBtnApply, $GUI_ENABLE)
  619. GUICtrlSetState($iBtnSave, $GUI_ENABLE)
  620. If $hBmp_Undo Then _GDIPlus_BitmapDispose($hBmp_Undo)
  621. $hBmp_Undo = _GDIPlus_ImageClone($hImage)
  622. If $hBmp_Empty Then _GDIPlus_BitmapDispose($hBmp_Empty)
  623. $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0)
  624. $hBmp_Empty = $aResult[6]
  625. Case $iBtnSave
  626. $sFile = FileSaveDialog("Save Image", "", "Image (*.png;*.jpg;*.bmp;*.gif;*.tif)", 2, "", $hGUI)
  627. If @error Then ContinueLoop
  628. If $hBmp_tmp Then
  629. _GDIPlus_GraphicsDispose($hCtx_tmp)
  630. _GDIPlus_BitmapDispose($hBmp_tmp)
  631. EndIf
  632. $hBmp_tmp = _GDIPlus_ImageClone($hBmp_Empty)
  633. $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp)
  634. DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_tmp, "int", 7)
  635. Switch $iTabSelection
  636. Case 0 ;Black & White
  637. DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_tmp, "int", 5)
  638. _GDIPlus_BlackAndWhite($hImage, $hCtx_tmp, $hIA, GUICtrlRead($iInp_BWThreshold), False)
  639. Case 1 ;Blur
  640. $hEffect = _GDIPlus_Blur($tBlur, GUICtrlRead($iInp_BlurRadius), BitAND(GUICtrlRead($iCheckbox_BlurExpandEdge), $GUI_CHECKED))
  641. Case 2 ;Brightness / Contrast
  642. $hEffect = _GDIPlus_BrightnessContrast($tBrightnessContrast, GUICtrlRead($iInp_BCBrightness), GUICtrlRead($iInp_BCContrast))
  643. Case 3 ;Color Balance
  644. $hEffect = _GDIPlus_ColorBalance($tColorBalance, GUICtrlRead($iInp_CBCyanRed), GUICtrlRead($iInp_CBMagentaGreen), GUICtrlRead($iInp_CBYellowBlue))
  645. Case 4 ;Color Curve
  646. $hEffect = _GDIPlus_ColorCurve($tColorCurve, $iType, $iChannel, GUICtrlRead($iInp_CCValue))
  647. Case 5 ;Color LUT
  648. Case 6 ;Color Matrix
  649. $hEffect = _GDIPlus_ColorMatrix($tColorMatrix, GUICtrlRead($iInp_CMRed), GUICtrlRead($iInp_CMGreen), GUICtrlRead($iInp_CMBlue), 1)
  650. Case 7 ;Greyscale
  651. _GDIPlus_Greyscale($hImage, $hCtx_tmp, $hIA, False)
  652. Case 8 ;Hue / Saturation / Lightness
  653. $hEffect = _GDIPlus_HueSaturationLightness($tHueSaturationLightness, GUICtrlRead($iInp_HSLHueLevel), GUICtrlRead($iInp_HSLSatLevel), GUICtrlRead($iInp_HSLLightnLevel))
  654. Case 9 ;Levels
  655. $hEffect = _GDIPlus_Levels($tLevels, GUICtrlRead($iInp_LevelsHighlight), GUICtrlRead($iInp_LevelsMidtone), GUICtrlRead($iInp_LevelsShadow))
  656. Case 10;Negative
  657. _GDIPlus_Negative($hImage, $hCtx_tmp, $hIA)
  658. Case 11;Sharpen
  659. $hEffect = _GDIPlus_Sharpen($tSharpen, GUICtrlRead($iInp_SharpenRadius), GUICtrlRead($iInp_SharpenAmount))
  660. Case 12;Tint
  661. $hEffect = _GDIPlus_Tint($tTint, GUICtrlRead($iInp_TintHue), GUICtrlRead($iInp_TintAmount))
  662. EndSwitch
  663. If $iTabSelection <> 0 And $iTabSelection <> 7 Then
  664. _GDIPlus_DrawImageFX($hCtx_tmp, $hImage, $tRECTF, $hEffect)
  665. _GDIPlus_EffectDispose($hEffect)
  666. EndIf
  667. _GDIPlus_SaveBitmap($sFile, $hBmp_tmp, 90, $iBGColor)
  668. ;~ Switch _GDIPlus_ImageSaveToFile($hBmp_tmp, $sFile)
  669. ;~ Case 0
  670. ;~ MsgBox(16 + 262144, "Error", "Image couldn't be saved!", 20, $hGUI)
  671. ;~ Case Else
  672. ;~ MsgBox(64 + 262144, "Information", "Image has been successfully saved!", 20, $hGUI)
  673. ;~ EndSwitch
  674. Case $iTab
  675. Switch GUICtrlRead($iTab)
  676. Case 0 ;Black & White
  677. $iTabSelection = 0
  678. Case 1 ;Blur
  679. $iTabSelection = 1
  680. Case 2 ;Brightness / Contrast
  681. $iTabSelection = 2
  682. Case 3 ;Color Balance
  683. $iTabSelection = 3
  684. Case 4 ;Color Curve
  685. $iTabSelection = 4
  686. Case 5 ;Color LUT
  687. $iTabSelection = 5
  688. Case 6 ;Color Matrix
  689. $iTabSelection = 6
  690. Case 7 ;Greyscale
  691. $iTabSelection = 7
  692. Case 8 ;Hue / Saturation / Lightness
  693. $iTabSelection = 8
  694. Case 9 ;Levels
  695. $iTabSelection = 9
  696. Case 10;Negative
  697. $iTabSelection = 10
  698. Case 11;Sharpen
  699. $iTabSelection = 11
  700. Case 12;Tint
  701. $iTabSelection = 12
  702. EndSwitch
  703. $bUpdatePreview = True
  704. EndSwitch
  705. If $bUpdatePreview And $bStart Then
  706. $bUpdatePreview = False
  707. DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hGraphic, "int", 7)
  708. Switch $iTabSelection
  709. Case 0 ;Black & White
  710. DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hGraphic, "int", 5)
  711. _GDIPlus_BlackAndWhite($hImage, $hGraphic, $hIA, GUICtrlRead($iInp_BWThreshold))
  712. $bDrawFX = False
  713. Case 1 ;Blur
  714. $hEffect = _GDIPlus_Blur($tBlur, GUICtrlRead($iInp_BlurRadius), BitAND(GUICtrlRead($iCheckbox_BlurExpandEdge), $GUI_CHECKED))
  715. $bDrawFX = True
  716. Case 2 ;Brightness / Contrast
  717. $hEffect = _GDIPlus_BrightnessContrast($tBrightnessContrast, GUICtrlRead($iInp_BCBrightness), GUICtrlRead($iInp_BCContrast))
  718. $bDrawFX = True
  719. Case 3 ;Color Balance
  720. $hEffect = _GDIPlus_ColorBalance($tColorBalance, GUICtrlRead($iInp_CBCyanRed), GUICtrlRead($iInp_CBMagentaGreen), GUICtrlRead($iInp_CBYellowBlue))
  721. $bDrawFX = True
  722. Case 4 ;Color Curve
  723. $hEffect = _GDIPlus_ColorCurve($tColorCurve, $iType, $iChannel, GUICtrlRead($iInp_CCValue))
  724. $bDrawFX = True
  725. Case 5 ;Color LUT
  726. $bDrawFX = False
  727. Case 6 ;Color Matrix
  728. $hEffect = _GDIPlus_ColorMatrix($tColorMatrix, GUICtrlRead($iInp_CMRed), GUICtrlRead($iInp_CMGreen), GUICtrlRead($iInp_CMBlue), 1)
  729. $bDrawFX = True
  730. Case 7 ;Greyscale
  731. _GDIPlus_Greyscale($hImage, $hGraphic, $hIA)
  732. $bDrawFX = False
  733. Case 8 ;Hue / Saturation / Lightness
  734. $hEffect = _GDIPlus_HueSaturationLightness($tHueSaturationLightness, GUICtrlRead($iInp_HSLHueLevel), GUICtrlRead($iInp_HSLSatLevel), GUICtrlRead($iInp_HSLLightnLevel))
  735. $bDrawFX = True
  736. Case 9 ;Levels
  737. $hEffect = _GDIPlus_Levels($tLevels, GUICtrlRead($iInp_LevelsHighlight), GUICtrlRead($iInp_LevelsMidtone), GUICtrlRead($iInp_LevelsShadow))
  738. $bDrawFX = True
  739. Case 10;Negative
  740. _GDIPlus_Negative($hImage, $hGraphic, $hIA)
  741. $bDrawFX = False
  742. Case 11;Sharpen
  743. $hEffect = _GDIPlus_Sharpen($tSharpen, GUICtrlRead($iInp_SharpenRadius), GUICtrlRead($iInp_SharpenAmount))
  744. $bDrawFX = True
  745. Case 12;Tint
  746. $hEffect = _GDIPlus_Tint($tTint, GUICtrlRead($iInp_TintHue), GUICtrlRead($iInp_TintAmount))
  747. $bDrawFX = True
  748. EndSwitch
  749. If $bDrawFX Then
  750. _GDIPlus_GraphicsClear($hCtx_tmp, 0xFF000000 + $iBGColor)
  751. _GDIPlus_DrawImageFX($hCtx_tmp, $hImage, $tRECTF, $hEffect)
  752. _GDIPlus_EffectDispose($hEffect)
  753. CopyImage2Gfx($hBmp_tmp, $hGraphic, $hDC, $hDC_backbuffer, $iWidth, $iHeight)
  754. Else
  755. DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY)
  756. EndIf
  757. EndIf
  758. WEnd
  759. Func ResetSettings()
  760. Switch $iTabSelection
  761. Case 0 ;Black & White
  762. GUICtrlSetData($iSlider_BWThreshold, $iSlider_BWThreshold_Default)
  763. GUICtrlSetData($iInp_BWThreshold, StringFormat("%04.2f", $iSlider_BWThreshold_Default / 100))
  764. $bUpdatePreview = True
  765. Case 1 ;Blur
  766. GUICtrlSetData($iSlider_BlurRadius, $iSlider_BlurRadius_Default)
  767. GUICtrlSetData($iInp_BlurRadius, $iSlider_BlurRadius_Default)
  768. GUICtrlSetState($iCheckbox_BlurExpandEdge, $GUI_UNCHECKED)
  769. $bUpdatePreview = True
  770. Case 2 ;Brightness / Contrast
  771. GUICtrlSetData($iSlider_BCBrightness, $iSlider_BCBrightness_Default)
  772. GUICtrlSetData($iInp_BCBrightness, $iSlider_BCBrightness_Default)
  773. GUICtrlSetData($iSlider_BCContrast, $iSlider_BCContrast_Default)
  774. GUICtrlSetData($iInp_BCContrast, $iSlider_BCContrast_Default)
  775. $bUpdatePreview = True
  776. Case 3 ;Color Balance
  777. GUICtrlSetData($iSlider_CBCyanRed, $iSlider_CBCyanRed_Default)
  778. GUICtrlSetData($iInp_CBCyanRed, $iSlider_CBCyanRed_Default)
  779. GUICtrlSetData($iSlider_CBMagentaGreen, $iSlider_CBMagentaGreen_Default)
  780. GUICtrlSetData($iInp_CBMagentaGreen, $iSlider_CBMagentaGreen_Default)
  781. GUICtrlSetData($iSlider_CBYellowBlue, $iSlider_CBYellowBlue_Default)
  782. GUICtrlSetData($iInp_CBYellowBlue, $iSlider_CBYellowBlue_Default)
  783. $bUpdatePreview = True
  784. Case 4 ;Color Curve
  785. GUICtrlSetData($iSlider_CCValue, 0)
  786. GUICtrlSetData($iInp_CCValue, 0)
  787. GUICtrlSetState($iRadio_CCExposure, $GUI_CHECKED)
  788. GUICtrlSetState($iRadio_CCCurveAllChannel, $GUI_CHECKED)
  789. $bUpdatePreview = True
  790. Case 5 ;Color LUT
  791. ;~ $bUpdatePreview = True
  792. Case 6 ;Color Matrix
  793. GUICtrlSetData($iSlider_CMRed, $iSlider_CMRed_Default)
  794. GUICtrlSetData($iInp_CMRed, StringFormat("%04.2f", $iSlider_CMRed_Default / 100))
  795. GUICtrlSetData($iSlider_CMGreen, $iSlider_CMGreen_Default)
  796. GUICtrlSetData($iInp_CMGreen, StringFormat("%04.2f", $iSlider_CMGreen_Default / 100))
  797. GUICtrlSetData($iSlider_CMBlue, $iSlider_CMBlue_Default)
  798. GUICtrlSetData($iInp_CMBlue, StringFormat("%04.2f", $iSlider_CMBlue_Default / 100))
  799. $bUpdatePreview = True
  800. Case 7 ;Greyscale
  801. GUICtrlSetData($iSlider_GSLumRed, $iSlider_GSLumRed_Default)
  802. GUICtrlSetData($iInp_GSLumRed, StringFormat("%04.2f", $iSlider_GSLumRed_Default / 100))
  803. GUICtrlSetData($iSlider_GSLumGreen, $iSlider_GSLumGreen_Default)
  804. GUICtrlSetData($iInp_GSLumGreen, StringFormat("%04.2f", $iSlider_GSLumGreen_Default / 100))
  805. GUICtrlSetData($iSlider_GSLumBlue, $iSlider_GSLumBlue_Default)
  806. GUICtrlSetData($iInp_GSLumBlue, StringFormat("%04.2f", $iSlider_GSLumBlue_Default / 100))
  807. $GDIP_RLUM = $iSlider_GSLumRed_Default / 100
  808. $GDIP_GLUM = $iSlider_GSLumGreen_Default / 100
  809. $GDIP_BLUM = $iSlider_GSLumBlue_Default / 100
  810. $bUpdatePreview = True
  811. Case 8 ;Hue / Saturation / Lightness
  812. GUICtrlSetData($iSlider_HSLHueLevel, $iSlider_HSLHueLevel_Default)
  813. GUICtrlSetData($iInp_HSLHueLevel, $iSlider_HSLHueLevel_Default)
  814. GUICtrlSetData($iSlider_HSLSatLevel, $iSlider_HSLSatLevel_Default)
  815. GUICtrlSetData($iInp_HSLSatLevel, $iSlider_HSLSatLevel_Default)
  816. GUICtrlSetData($iSlider_HSLLightnLevel, $iSlider_HSLLightnLevel_Default)
  817. GUICtrlSetData($iInp_HSLLightnLevel, $iSlider_HSLLightnLevel_Default)
  818. $bUpdatePreview = True
  819. Case 9 ;Levels
  820. GUICtrlSetData($iSlider_LevelsHighlight, $iSlider_LevelsHighlight_Default)
  821. GUICtrlSetData($iInp_LevelsHighlight, $iSlider_LevelsHighlight_Default)
  822. GUICtrlSetData($iSlider_LevelsMidtone, $iSlider_LevelsMidtone_Default)
  823. GUICtrlSetData($iInp_LevelsMidtone, $iSlider_LevelsMidtone_Default)
  824. GUICtrlSetData($iSlider_LevelsShadow, $iSlider_LevelsShadow_Default)
  825. GUICtrlSetData($iInp_LevelsShadow, $iSlider_LevelsShadow_Default)
  826. $bUpdatePreview = True
  827. Case 10;Negative
  828. $bUpdatePreview = True
  829. Case 11;Sharpen
  830. GUICtrlSetData($iSlider_SharpenRadius, $iSlider_SharpenRadius_Default)
  831. GUICtrlSetData($iInp_SharpenRadius, $iSlider_SharpenRadius_Default)
  832. GUICtrlSetData($iSlider_SharpenAmount, $iSlider_SharpenAmount_Default)
  833. GUICtrlSetData($iInp_SharpenAmount, $iSlider_SharpenAmount_Default)
  834. $bUpdatePreview = True
  835. Case 12;Tint
  836. GUICtrlSetData($iSlider_TintHue, $iSlider_TintHue_Default)
  837. GUICtrlSetData($iInp_TintHue, $iSlider_TintHue_Default)
  838. GUICtrlSetData($iSlider_TintAmount, $iSlider_TintAmount_Default)
  839. GUICtrlSetData($iInp_TintAmount, $iSlider_TintAmount_Default)
  840. $bUpdatePreview = True
  841. EndSwitch
  842. EndFunc ;==>ResetSettings
  843. #region GDI+ FX functions
  844. Func _GDIPlus_BlackAndWhite($hBitmap, $hGraphics, $hIA, $iThreshold, $bUpdate = True)
  845. Local $tBWMatrix, $pBWMatrix
  846. _GDIPlus_ImageAttributesSetThreshold($hIA, 0, True, $iThreshold)
  847. $tBWMatrix = _GDIPlus_ColorMatrixCreateGrayScale()
  848. $pBWMatrix = DllStructGetPtr($tBWMatrix)
  849. _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pBWMatrix)
  850. Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap)
  851. If $bUpdate Then
  852. CopyImage2Gfx($hBitmap, $hGraphics, $hDC, $hDC_backbuffer, $iW, $iH, $hIA)
  853. Else
  854. _GDIPlus_GraphicsClear($hGraphics, 0xFF000000 + $iBGColor)
  855. _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iW, $iH, 0, 0, $iW, $iH, $hIA)
  856. EndIf
  857. _GDIPlus_ImageAttributesSetThreshold($hIA, 0, False)
  858. EndFunc ;==>_GDIPlus_BlackAndWhite
  859. Func _GDIPlus_Blur($tBlur, $fRadius, $bExpandEdge = False)
  860. If Not IsDllStruct($tBlur) Then Return SetError(1, @error, 0)
  861. DllStructSetData($tBlur, "radius", $fRadius)
  862. DllStructSetData($tBlur, "expandEdge", $bExpandEdge)
  863. Local $pEffect = _GDIPlus_EffectCreate($GDIP_BLUREFFECT)
  864. If @error Then Return SetError(2, @error, 0)
  865. _GDIPlus_EffectsSetParameters($pEffect, $tBlur)
  866. If @error Then Return SetError(3, @error, 0)
  867. Return $pEffect
  868. EndFunc ;==>_GDIPlus_Blur
  869. Func _GDIPlus_BrightnessContrast($tBrightnessContrast, $iBrightnessLevel, $iContrastLevel)
  870. If Not IsDllStruct($tBrightnessContrast) Then Return SetError(1, @error, 0)
  871. DllStructSetData($tBrightnessContrast, "brightnessLevel", $iBrightnessLevel)
  872. DllStructSetData($tBrightnessContrast, "contrastLevel", $iContrastLevel)
  873. Local $pEffect = _GDIPlus_EffectCreate($GDIP_BRIGHTNESSCONTRASTEFFECT)
  874. If @error Then Return SetError(2, @error, 0)
  875. _GDIPlus_EffectsSetParameters($pEffect, $tBrightnessContrast)
  876. If @error Then Return SetError(3, @error, 0)
  877. Return $pEffect
  878. EndFunc ;==>_GDIPlus_BrightnessContrast
  879. Func _GDIPlus_ColorBalance($tColorBalance, $iCyanRed, $iMagentaGreen, $iYellowBlue)
  880. If Not IsDllStruct($tColorBalance) Then Return SetError(1, @error, 0)
  881. DllStructSetData($tColorBalance, "cyanRed", $iCyanRed)
  882. DllStructSetData($tColorBalance, "magentaGreen", $iMagentaGreen)
  883. DllStructSetData($tColorBalance, "yellowBlue", $iYellowBlue)
  884. Local $pEffect = _GDIPlus_EffectCreate($GDIP_COLORBALANCEEFFECT)
  885. If @error Then Return SetError(2, @error, 0)
  886. _GDIPlus_EffectsSetParameters($pEffect, $tColorBalance)
  887. If @error Then Return SetError(3, @error, 0)
  888. Return $pEffect
  889. EndFunc ;==>_GDIPlus_ColorBalance
  890. Func _GDIPlus_ColorCurve($tColorCurve, $iType, $iChannel, $iValue)
  891. If Not IsDllStruct($tColorCurve) Then Return SetError(1, @error, 0)
  892. DllStructSetData($tColorCurve, "type", $iType)
  893. DllStructSetData($tColorCurve, "channel", $iChannel)
  894. DllStructSetData($tColorCurve, "value", $iValue)
  895. Local $pEffect = _GDIPlus_EffectCreate($GDIP_COLORCURVEEFFECT)
  896. If @error Then Return SetError(2, @error, 0)
  897. _GDIPlus_EffectsSetParameters($pEffect, $tColorCurve)
  898. If @error Then Return SetError(3, @error, 0)
  899. Return $pEffect
  900. EndFunc ;==>_GDIPlus_ColorCurve
  901. Func _GDIPlus_ColorMatrix($tColorMatrix, $fRed, $fGreen, $fBlue, $fAlpha)
  902. If Not IsDllStruct($tColorMatrix) Then Return SetError(1, @error, 0)
  903. DllStructSetData($tColorMatrix, "m", $fRed, 1)
  904. DllStructSetData($tColorMatrix, "m", $fGreen, 7)
  905. DllStructSetData($tColorMatrix, "m", $fBlue, 13)
  906. DllStructSetData($tColorMatrix, "m", $fAlpha, 19)
  907. DllStructSetData($tColorMatrix, "m", 1, 25) ;the element in the fifth row and fifth column of a 5×5 homogeneous matrix must be 1, and all of the other elements in the fifth column must be 0
  908. Local $pEffect = _GDIPlus_EffectCreate($GDIP_COLORMATRIXEFFECT)
  909. If @error Then Return SetError(2, @error, 0)
  910. _GDIPlus_EffectsSetParameters($pEffect, $tColorMatrix)
  911. If @error Then Return SetError(3, @error, 0)
  912. Return $pEffect
  913. EndFunc ;==>_GDIPlus_ColorMatrix
  914. Func _GDIPlus_Greyscale($hBitmap, $hGraphic, $hIA, $bUpdate = True)
  915. Local $tGreyscaleMatrix = _GDIPlus_ColorMatrixCreateGrayScale()
  916. Local $pGreyscaleMatrix = DllStructGetPtr($tGreyscaleMatrix)
  917. _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pGreyscaleMatrix)
  918. Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap)
  919. If $bUpdate Then
  920. CopyImage2Gfx($hBitmap, $hGraphic, $hDC, $hDC_backbuffer, $iW, $iH, $hIA)
  921. Else
  922. _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor)
  923. _GDIPlus_GraphicsDrawImageRectRectIA($hGraphic, $hBitmap, 0, 0, $iW, $iH, 0, 0, $iW, $iH, $hIA)
  924. EndIf
  925. _GDIPlus_ImageAttributesSetThreshold($hIA, 0, False)
  926. EndFunc ;==>_GDIPlus_Greyscale
  927. Func _GDIPlus_HueSaturationLightness($tHueSaturationLightness, $iHueLevel, $iSaturationLevel, $iLightnessLevel)
  928. If Not IsDllStruct($tHueSaturationLightness) Then Return SetError(1, @error, 0)
  929. DllStructSetData($tHueSaturationLightness, "hueLevel", $iHueLevel)
  930. DllStructSetData($tHueSaturationLightness, "saturationLevel", $iSaturationLevel)
  931. DllStructSetData($tHueSaturationLightness, "lightnessLevel", $iLightnessLevel)
  932. Local $pEffect = _GDIPlus_EffectCreate($GDIP_HUESATURATIONLIGHTNESSEFFECT)
  933. If @error Then Return SetError(2, @error, 0)
  934. _GDIPlus_EffectsSetParameters($pEffect, $tHueSaturationLightness)
  935. If @error Then Return SetError(3, @error, 0)
  936. Return $pEffect
  937. EndFunc ;==>_GDIPlus_HueSaturationLightness
  938. Func _GDIPlus_Levels($tLevels, $iHighlight, $iMidtone, $iShadow)
  939. If Not IsDllStruct($tLevels) Then Return SetError(1, @error, 0)
  940. DllStructSetData($tLevels, "highlight", $iHighlight)
  941. DllStructSetData($tLevels, "midtone", $iMidtone)
  942. DllStructSetData($tLevels, "shadow", $iShadow)
  943. Local $pEffect = _GDIPlus_EffectCreate($GDIP_LEVELSEFFECT)
  944. If @error Then Return SetError(2, @error, 0)
  945. _GDIPlus_EffectsSetParameters($pEffect, $tLevels)
  946. If @error Then Return SetError(3, @error, 0)
  947. Return $pEffect
  948. EndFunc ;==>_GDIPlus_Levels
  949. Func _GDIPlus_Negative($hBitmap, $hGraphic, $hIA)
  950. Local $tNegMatrix = _GDIPlus_ColorMatrixCreateNegative()
  951. Local $pNegMatrix = DllStructGetPtr($tNegMatrix)
  952. _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pNegMatrix)
  953. CopyImage2Gfx($hBitmap, $hGraphic, $hDC, $hDC_backbuffer, _GDIPlus_ImageGetWidth($hBitmap), _GDIPlus_ImageGetHeight($hBitmap), $hIA)
  954. _GDIPlus_ImageAttributesSetThreshold($hIA, 0, False)
  955. EndFunc ;==>_GDIPlus_Negative
  956. Func _GDIPlus_Sharpen($tSharpen, $fRadius, $fAmount)
  957. If Not IsDllStruct($tSharpen) Then Return SetError(1, @error, 0)
  958. DllStructSetData($tSharpen, "radius", $fRadius)
  959. DllStructSetData($tSharpen, "amount", $fAmount)
  960. Local $pEffect = _GDIPlus_EffectCreate($GDIP_SHARPENEFFECT)
  961. If @error Then Return SetError(2, @error, 0)
  962. _GDIPlus_EffectsSetParameters($pEffect, $tSharpen)
  963. If @error Then Return SetError(3, @error, 0)
  964. Return $pEffect
  965. EndFunc ;==>_GDIPlus_Sharpen
  966. Func _GDIPlus_Tint($tTint, $iHue, $iAmount)
  967. If Not IsDllStruct($tTint) Then Return SetError(1, @error, 0)
  968. DllStructSetData($tTint, "hue", $iHue)
  969. DllStructSetData($tTint, "amount", $iAmount)
  970. Local $pEffect = _GDIPlus_EffectCreate($GDIP_TINTEFFECT)
  971. If @error Then Return SetError(2, @error, 0)
  972. _GDIPlus_EffectsSetParameters($pEffect, $tTint)
  973. If @error Then Return SetError(3, @error, 0)
  974. Return $pEffect
  975. EndFunc ;==>_GDIPlus_Tint
  976. #endregion GDI+ FX functions
  977. #region Message Functions
  978. Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
  979. #forceref $hWnd, $Msg, $wParam
  980. Switch $lParam
  981. Case $hSlider_BWThreshold
  982. GUICtrlSetData($iInp_BWThreshold, StringFormat("%04.2f", GUICtrlRead($iSlider_BWThreshold) / 100))
  983. $bUpdatePreview = True
  984. Case $hSlider_BlurRadius
  985. GUICtrlSetData($iInp_BlurRadius, GUICtrlRead($iSlider_BlurRadius))
  986. $bUpdatePreview = True
  987. Case $hSlider_BCBrightness
  988. GUICtrlSetData($iInp_BCBrightness, GUICtrlRead($iSlider_BCBrightness))
  989. $bUpdatePreview = True
  990. Case $hSlider_BCContrast
  991. GUICtrlSetData($iInp_BCContrast, GUICtrlRead($iSlider_BCContrast))
  992. $bUpdatePreview = True
  993. Case $hSlider_CBCyanRed
  994. GUICtrlSetData($iInp_CBCyanRed, GUICtrlRead($iSlider_CBCyanRed))
  995. $bUpdatePreview = True
  996. Case $hSlider_CBMagentaGreen
  997. GUICtrlSetData($iInp_CBMagentaGreen, GUICtrlRead($iSlider_CBMagentaGreen))
  998. $bUpdatePreview = True
  999. Case $hSlider_CBYellowBlue
  1000. GUICtrlSetData($iInp_CBYellowBlue, GUICtrlRead($iSlider_CBYellowBlue))
  1001. $bUpdatePreview = True
  1002. Case $hSlider_CCValue
  1003. GUICtrlSetData($iInp_CCValue, GUICtrlRead($iSlider_CCValue))
  1004. $bUpdatePreview = True
  1005. Case $hSlider_CMBlue
  1006. GUICtrlSetData($iInp_CMBlue, StringFormat("%04.2f", GUICtrlRead($iSlider_CMBlue) / 100))
  1007. $bUpdatePreview = True
  1008. Case $hSlider_CMGreen
  1009. GUICtrlSetData($iInp_CMGreen, StringFormat("%04.2f", GUICtrlRead($iSlider_CMGreen) / 100))
  1010. $bUpdatePreview = True
  1011. Case $hSlider_CMRed
  1012. GUICtrlSetData($iInp_CMRed, StringFormat("%04.2f", GUICtrlRead($iSlider_CMRed) / 100))
  1013. $bUpdatePreview = True
  1014. Case $hSlider_GSLumBlue
  1015. GUICtrlSetData($iInp_GSLumBlue, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumBlue) / 100))
  1016. $GDIP_BLUM = GUICtrlRead($iSlider_GSLumBlue) / 100
  1017. $bUpdatePreview = True
  1018. Case $hSlider_GSLumGreen
  1019. GUICtrlSetData($iInp_GSLumGreen, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumGreen) / 100))
  1020. $GDIP_GLUM = GUICtrlRead($iSlider_GSLumGreen) / 100
  1021. $bUpdatePreview = True
  1022. Case $hSlider_GSLumRed
  1023. GUICtrlSetData($iInp_GSLumRed, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumRed) / 100))
  1024. $GDIP_RLUM = GUICtrlRead($iSlider_GSLumRed) / 100
  1025. $bUpdatePreview = True
  1026. Case $hSlider_HSLHueLevel
  1027. GUICtrlSetData($iInp_HSLHueLevel, GUICtrlRead($iSlider_HSLHueLevel))
  1028. $bUpdatePreview = True
  1029. Case $hSlider_HSLLightnLevel
  1030. GUICtrlSetData($iInp_HSLLightnLevel, GUICtrlRead($iSlider_HSLLightnLevel))
  1031. $bUpdatePreview = True
  1032. Case $hSlider_HSLSatLevel
  1033. GUICtrlSetData($iInp_HSLSatLevel, GUICtrlRead($iSlider_HSLSatLevel))
  1034. $bUpdatePreview = True
  1035. Case $hSlider_LevelsHighlight
  1036. GUICtrlSetData($iInp_LevelsHighlight, GUICtrlRead($iSlider_LevelsHighlight))
  1037. $bUpdatePreview = True
  1038. Case $hSlider_LevelsMidtone
  1039. GUICtrlSetData($iInp_LevelsMidtone, GUICtrlRead($iSlider_LevelsMidtone))
  1040. $bUpdatePreview = True
  1041. Case $hSlider_LevelsShadow
  1042. GUICtrlSetData($iInp_LevelsShadow, GUICtrlRead($iSlider_LevelsShadow))
  1043. $bUpdatePreview = True
  1044. Case $hSlider_SharpenAmount
  1045. GUICtrlSetData($iInp_SharpenAmount, GUICtrlRead($iSlider_SharpenAmount))
  1046. $bUpdatePreview = True
  1047. Case $hSlider_SharpenRadius
  1048. GUICtrlSetData($iInp_SharpenRadius, GUICtrlRead($iSlider_SharpenRadius))
  1049. $bUpdatePreview = True
  1050. Case $hSlider_TintAmount
  1051. GUICtrlSetData($iInp_TintAmount, GUICtrlRead($iSlider_TintAmount))
  1052. $bUpdatePreview = True
  1053. Case $hSlider_TintHue
  1054. GUICtrlSetData($iInp_TintHue, GUICtrlRead($iSlider_TintHue))
  1055. $bUpdatePreview = True
  1056. EndSwitch
  1057. Return "GUI_RUNDEFMSG"
  1058. EndFunc ;==>WM_HSCROLL
  1059. Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
  1060. #forceref $hWnd, $Msg, $lParam
  1061. Switch $wParam
  1062. Case $iReset
  1063. ResetSettings()
  1064. EndSwitch
  1065. Return "GUI_RUNDEFMSG"
  1066. EndFunc ;==>WM_COMMAND
  1067. Func WM_CONTEXTMENU($hWnd, $Msg, $wParam, $lParam)
  1068. #forceref $Msg, $wParam, $lParam
  1069. Local $aCI = GUIGetCursorInfo(HWnd($hGUI))
  1070. If Not @error Then
  1071. If $aCI[4] = $iTab Then
  1072. _GUICtrlMenu_TrackPopupMenu($hQMenu, $hWnd)
  1073. Return True
  1074. EndIf
  1075. EndIf
  1076. Return "GUI_RUNDEFMSG"
  1077. EndFunc ;==>WM_CONTEXTMENU
  1078. Func WM_ERASEBKGND($hWnd, $Msg, $wParam, $lParam)
  1079. #forceref $hWnd, $Msg,$wParam, $lParam
  1080. DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY)
  1081. Return 1
  1082. EndFunc ;==>WM_ERASEBKGND
  1083. Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
  1084. #forceref $hWnd, $Msg,$wParam, $lParam
  1085. DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY)
  1086. Return "GUI_RUNDEFMSG"
  1087. EndFunc ;==>WM_NOTIFY
  1088. Func WM_DROPFILES($hWnd, $Msg, $wParam, $lParam)
  1089. #forceref $hWnd, $Msg, $lParam
  1090. Local $aRet = DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", -1, "ptr", 0, "int", 0)
  1091. If @error Then Return SetError(1, 0, 0)
  1092. Local $sDroppedFile, $tBuffer = DllStructCreate("char[256]")
  1093. If $aRet[0] = 1 Then
  1094. DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", 0, "ptr", DllStructGetPtr($tBuffer), "int", DllStructGetSize($tBuffer))
  1095. $sDroppedFile = DllStructGetData($tBuffer, 1)
  1096. If StringInStr(FileGetAttrib($sDroppedFile), "D") Then
  1097. DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
  1098. Return MsgBox(16 + 262144, "Error", "This is not a file ;-)", 20, $hGUI)
  1099. EndIf
  1100. EndIf
  1101. DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
  1102. $sFile = $sDroppedFile
  1103. $bDnD = True
  1104. GUICtrlSendMsg($iBtnLoad, $BM_CLICK, 0, 0)
  1105. Return "GUI_RUNDEFMSG"
  1106. EndFunc ;==>WM_DROPFILES
  1107. #endregion Message Functions
  1108. #region needed additional functions
  1109. Func _GDIPlus_SaveBitmap($sFilename, $hBmp, $iJPGQual = 90, $iTpColor = 0)
  1110. Local $bError = False, $bResult, $aResult, $hBmp_BG, $hBmp1bpp, $hCtxt1bpp; $hBmp8bpp, $hCtxt8bpp
  1111. Local $sSaveTypes = "|jpg|bmp|gif|png|tif|", $sSaveType = "jpg"
  1112. Local $sSuffix = StringRight($sFilename, 3)
  1113. If StringInStr($sSaveTypes, $sSuffix) Then
  1114. $sSaveType = $sSuffix
  1115. Else
  1116. $sFilename &= "." & $sSaveType
  1117. EndIf
  1118. If FileExists($sFilename) Then
  1119. Local $iChoice = MsgBox(4 + 32 + 256 + 262144, "Warning", "'" & $sFilename & "' already exists!" & @CRLF & @CRLF & "Overwrite file?", 0, $hGUI)
  1120. If $iChoice = 7 Then Return 0
  1121. EndIf
  1122. If Not $iTabSelection Then
  1123. $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF01INDEXED, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap
  1124. $hBmp1bpp = $aResult[6]
  1125. $hCtxt1bpp = _GDIPlus_ImageGetGraphicsContext($hBmp1bpp)
  1126. DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt1bpp, "int", 5)
  1127. _GDIPlus_GraphicsDrawImageRect($hCtxt1bpp, $hBmp, 0, 0, $iWidth, $iHeight)
  1128. _GDIPlus_GraphicsDispose($hCtxt1bpp)
  1129. $hBmp = $hBmp1bpp
  1130. ;~ ElseIf $iTabSelection = 7 Then
  1131. ;~ $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF08INDEXED, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap
  1132. ;~ $hBmp8bpp = $aResult[6]
  1133. ;~ $hCtxt8bpp = _GDIPlus_ImageGetGraphicsContext($hBmp8bpp)
  1134. ;~ DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt8bpp, "int", 0)
  1135. ;~ _GDIPlus_GraphicsDrawImageRect($hCtxt8bpp, $hBmp, 0, 0, $iWidth, $iHeight)
  1136. ;~ _GDIPlus_GraphicsDispose($hCtxt8bpp)
  1137. ;~ $hBmp = $hBmp8bpp
  1138. EndIf
  1139. Switch $sSaveType
  1140. Case "jpg"
  1141. Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
  1142. Local $tParams = _GDIPlus_ParamInit(1)
  1143. Local $tData = DllStructCreate("int Quality")
  1144. DllStructSetData($tData, "Quality", $iJPGQual)
  1145. Local $pData = DllStructGetPtr($tData)
  1146. _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
  1147. Local $pParams = DllStructGetPtr($tParams)
  1148. If $iTpColor Then
  1149. $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor)
  1150. $bResult = _GDIPlus_ImageSaveToFileEx($hBmp_BG, $sFilename, $sCLSID, $pParams)
  1151. _GDIPlus_BitmapDispose($hBmp_BG)
  1152. Else
  1153. $bResult = _GDIPlus_ImageSaveToFileEx($hBmp, $sFilename, $sCLSID, $pParams)
  1154. EndIf
  1155. If Not $bResult Then
  1156. $bError = True
  1157. Else
  1158. $bError = False
  1159. EndIf
  1160. $tData = ""
  1161. $tParams = ""
  1162. Case Else
  1163. If $iTpColor And $sSuffix <> "png" Then
  1164. $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor)
  1165. $bResult = _GDIPlus_ImageSaveToFile($hBmp_BG, $sFilename)
  1166. _GDIPlus_BitmapDispose($hBmp_BG)
  1167. Else
  1168. $bResult = _GDIPlus_ImageSaveToFile($hBmp, $sFilename)
  1169. EndIf
  1170. If Not $bResult Then
  1171. $bError = True
  1172. Else
  1173. $bError = False
  1174. EndIf
  1175. EndSwitch
  1176. If Not $iTabSelection Then _GDIPlus_BitmapDispose($hBmp)
  1177. If $bError Then
  1178. MsgBox(16 + 262144, "ERROR", "An error has occured - the image couldn't saved!", 30, $hGUI)
  1179. Return 0
  1180. EndIf
  1181. MsgBox(64 + 262144, "Information", "Image successfully saved to '" & $sFilename & "'", 10, $hGUI)
  1182. Return 1
  1183. EndFunc ;==>_GDIPlus_SaveBitmap
  1184. Func _GDIPlus_ChangeBGColor($hBitmap, $iBGColor)
  1185. Local $iW_TP = _GDIPlus_ImageGetWidth($hBitmap), $iH_TP = _GDIPlus_ImageGetHeight($hBitmap)
  1186. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_TP, "int", $iH_TP, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap
  1187. Local $hBmp_TP = $aResult[6]
  1188. Local $hCtxt_TP = _GDIPlus_ImageGetGraphicsContext($hBmp_TP)
  1189. _GDIPlus_GraphicsClear($hCtxt_TP, $iBGColor)
  1190. _GDIPlus_GraphicsDrawImageRect($hCtxt_TP, $hBitmap, 0, 0, $iW_TP, $iH_TP)
  1191. _GDIPlus_GraphicsDispose($hCtxt_TP)
  1192. Return $hBmp_TP
  1193. EndFunc ;==>_GDIPlus_ChangeBGColor
  1194. Func _GDIPlus_ImageClone($hImage)
  1195. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCloneImage", "handle", $hImage, "int*", 0)
  1196. If @error Then Return SetError(@error, @extended, 0)
  1197. Return $aResult[2]
  1198. EndFunc ;==>_GDIPlus_ImageClone
  1199. Func _GDIPlus_ImageAttributesCreate()
  1200. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateImageAttributes", "int*", 0)
  1201. If @error Then Return SetError(@error, @extended, 0)
  1202. Return $aResult[1]
  1203. EndFunc ;==>_GDIPlus_ImageAttributesCreate
  1204. Func _GDIPlus_ImageAttributesSetThreshold($hImageAttributes, $iColorAdjustType = 0, $fEnable = False, $nThershold = 0)
  1205. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetImageAttributesThreshold", "handle", $hImageAttributes, "int", $iColorAdjustType, "int", $fEnable, "float", $nThershold)
  1206. If @error Then Return SetError(@error, @extended, False)
  1207. Return $aResult[0] = 0
  1208. EndFunc ;==>_GDIPlus_ImageAttributesSetThreshold
  1209. Func _GDIPlus_ImageAttributesDispose($hImageAttributes)
  1210. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDisposeImageAttributes", "handle", $hImageAttributes)
  1211. If @error Then Return SetError(@error, @extended, False)
  1212. Return $aResult[0] = 0
  1213. EndFunc ;==>_GDIPlus_ImageAttributesDispose
  1214. Func _GDIPlus_ImageAttributesSetColorMatrix($hImageAttributes, $iColorAdjustType = 0, $fEnable = False, $pClrMatrix = 0, $pGrayMatrix = 0, $iColorMatrixFlags = 0)
  1215. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetImageAttributesColorMatrix", "handle", $hImageAttributes, "int", $iColorAdjustType, "int", $fEnable, "ptr", $pClrMatrix, "ptr", $pGrayMatrix, "int", $iColorMatrixFlags)
  1216. If @error Then Return SetError(@error, @extended, False)
  1217. Return $aResult[0] = 0
  1218. EndFunc ;==>_GDIPlus_ImageAttributesSetColorMatrix
  1219. Func _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hImage, $nSrcX, $nSrcY, $nSrcWidth, $nSrcHeight, $nDstX, $nDstY, $nDstWidth, $nDstHeight, $hImageAttributes = 0, $iUnit = 2)
  1220. Local $aResult = DllCall($ghGDIPDll, "int", "GdipDrawImageRectRect", "handle", $hGraphics, "handle", $hImage, "float", $nDstX, "float", _
  1221. $nDstY, "float", $nDstWidth, "float", $nDstHeight, "float", $nSrcX, "float", $nSrcY, "float", $nSrcWidth, "float", _
  1222. $nSrcHeight, "int", $iUnit, "handle", $hImageAttributes, "int", 0, "int", 0)
  1223. If @error Then Return SetError(@error, @extended, False)
  1224. Return $aResult[0] = 0
  1225. EndFunc ;==>_GDIPlus_GraphicsDrawImageRectRectIA
  1226. Func _GDIPlus_ColorMatrixCreateGrayScale()
  1227. Local $iI, $iJ, $tCM, $aLums[4] = [$GDIP_RLUM, $GDIP_GLUM, $GDIP_BLUM, 0]
  1228. $tCM = DllStructCreate($tagGDIPCOLORMATRIX)
  1229. For $iI = 0 To 3
  1230. For $iJ = 1 To 3
  1231. DllStructSetData($tCM, "m", $aLums[$iI], $iI * 5 + $iJ)
  1232. Next
  1233. Next
  1234. DllStructSetData($tCM, "m", 1, 19)
  1235. DllStructSetData($tCM, "m", 1, 25)
  1236. Return $tCM
  1237. EndFunc ;==>_GDIPlus_ColorMatrixCreateGrayScale
  1238. Func _GDIPlus_ColorMatrixCreateNegative()
  1239. Local $iI, $tCM
  1240. $tCM = _GDIPlus_ColorMatrixCreateScale(-1, -1, -1, 1)
  1241. For $iI = 1 To 4
  1242. DllStructSetData($tCM, "m", 1, 20 + $iI)
  1243. Next
  1244. Return $tCM
  1245. EndFunc ;==>_GDIPlus_ColorMatrixCreateNegative
  1246. Func _GDIPlus_ColorMatrixCreateScale($nRed, $nGreen, $nBlue, $nAlpha = 1)
  1247. Local $tCM
  1248. $tCM = DllStructCreate($tagGDIPCOLORMATRIX)
  1249. DllStructSetData($tCM, "m", $nRed, 1)
  1250. DllStructSetData($tCM, "m", $nGreen, 7)
  1251. DllStructSetData($tCM, "m", $nBlue, 13)
  1252. DllStructSetData($tCM, "m", $nAlpha, 19)
  1253. DllStructSetData($tCM, "m", 1, 25)
  1254. Return $tCM
  1255. EndFunc ;==>_GDIPlus_ColorMatrixCreateScale
  1256. Func _GDIPlus_EffectCreate($sEffectGUID, $pEffect = 0)
  1257. Local $iI, $tGUID, $pGUID, $tElem, $aElem[4], $aResult
  1258. $tGUID = _WinAPI_GUIDFromString($sEffectGUID)
  1259. $pGUID = DllStructGetPtr($tGUID)
  1260. $tElem = DllStructCreate("uint[4]", $pGUID)
  1261. For $iI = 1 To 4
  1262. $aElem[$iI - 1] = DllStructGetData($tElem, 1, $iI)
  1263. Next
  1264. $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateEffect", "uint", $aElem[0], "uint", $aElem[1], "uint", $aElem[2], "uint", $aElem[3], "uint*", $pEffect)
  1265. If @error Then Return SetError(@error, @extended, 0)
  1266. Return SetError($aResult[0], 0, $aResult[5])
  1267. EndFunc ;==>_GDIPlus_EffectCreate
  1268. Func _GDIPlus_EffectsSetParameters($pEffectObject, $tEffectParameters, $iSizeAdj = 1)
  1269. Local $aSize = DllCall($ghGDIPDll, "uint", "GdipGetEffectParameterSize", "ptr", $pEffectObject, "uint*", 0)
  1270. Local $iSize = $aSize[2] * $iSizeAdj
  1271. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetEffectParameters", "ptr", $pEffectObject, "struct*", $tEffectParameters, "uint", $iSize)
  1272. If @error Then Return SetError(@error, @extended, 0)
  1273. Return SetError($aResult[0], 0, $aResult[3])
  1274. EndFunc ;==>_GDIPlus_EffectsSetParameters
  1275. Func _GDIPlus_EffectDispose($pEffect)
  1276. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDeleteEffect", "ptr", $pEffect)
  1277. If @error Then Return SetError(@error, @extended, 0)
  1278. Return SetError($aResult[0], 0, $aResult[0] = 0)
  1279. EndFunc ;==>_GDIPlus_EffectDispose
  1280. Func _GDIPlus_DrawImageFX($hGraphics, $hBitmap, $tRECTF, $pEffect, $hMatrix = 0, $pImgAttributes = 0, $iUnit = 2)
  1281. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDrawImageFX", _
  1282. "handle", $hGraphics, _
  1283. "handle", $hBitmap, _
  1284. "struct*", $tRECTF, _
  1285. "handle", $hMatrix, _
  1286. "ptr", $pEffect, _
  1287. "ptr", $pImgAttributes, _
  1288. "uint", $iUnit)
  1289. If @error Then Return SetError(@error, @extended, 0)
  1290. Return SetError($aResult[0], 0, $aResult[0] = 0)
  1291. EndFunc ;==>_GDIPlus_DrawImageFX
  1292. Func CopyImage2Gfx($hBmp, $hGraphic, $hDC, $hDC_backbuffer, $bW, $bH, $hIA = 0)
  1293. Local $f, $iXPos, $iYPos, $iImgW, $iImgH
  1294. _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor)
  1295. If $bW < $iW_Prev And $bH < $iH_Prev Then
  1296. $iXPos = ($iW_Prev - $bW) / 2
  1297. $iYPos = ($iH_Prev - $bH) / 2
  1298. $iImgW = $bW
  1299. $iImgH = $bH
  1300. Else
  1301. If $bW > $bH Then
  1302. $f = $bW / $iW_Prev
  1303. If ($bH / $f) > $iH_Prev Then $f = $bH / $iH_Prev
  1304. Else
  1305. $f = $bH / $iH_Prev
  1306. EndIf
  1307. $iImgW = Int($bW / $f)
  1308. $iImgH = Int($bH / $f)
  1309. $iXPos = ($iW_Prev - $iImgW) / 2 - 2
  1310. $iYPos = ($iH_Prev - $iImgH) / 2 - 2
  1311. EndIf
  1312. If $hIA Then
  1313. _GDIPlus_GraphicsDrawImageRectRectIA($hGraphic, $hBmp, 0, 0, $bW, $bH, $iXPos, $iYPos, $iImgW, $iImgH, $hIA)
  1314. Else
  1315. _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBmp, $iXPos, $iYPos, $iImgW, $iImgH)
  1316. EndIf
  1317. DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY)
  1318. EndFunc ;==>CopyImage2Gfx
  1319. Func _GDIPlus11_Startup() ;code by Authenticity - modified by UEZ
  1320. Local $tInput, $tToken, $aResult, $sGDIPDLL, $sVer
  1321. $giGDIPRef += 1
  1322. If $giGDIPRef > 1 Then Return True
  1323. Switch @OSVersion
  1324. Case "WIN_VISTA", "WIN_2008"
  1325. $sGDIPDLL = @WindowsDir & "\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.6000.16386_none_8df21b8362744ace\gdiplus.dll"
  1326. Case Else
  1327. $sGDIPDLL = @SystemDir & "\gdiplus.dll"
  1328. EndSwitch
  1329. $sVer = FileGetVersion($sGDIPDLL)
  1330. If $sVer < "6.0" Then Return SetError(1, 0, False) ;For XP you need a GDIPlus.dll v1.1 in the script directory, refer to: http://www.winsxs.org/?OtherTech/thread-13-1-1
  1331. $ghGDIPDll = DllOpen($sGDIPDLL)
  1332. $tInput = DllStructCreate($tagGDIPSTARTUPINPUT)
  1333. $tToken = DllStructCreate("int Data")
  1334. DllStructSetData($tInput, "Version", 1)
  1335. $aResult = DllCall($ghGDIPDll, "int", "GdiplusStartup", "struct*", $tToken, "struct*", $tInput, "ptr", 0)
  1336. If @error Then Return SetError(2, @extended, False)
  1337. $giGDIPToken = DllStructGetData($tToken, "Data")
  1338. Return $aResult[0] = 0
  1339. EndFunc ;==>_GDIPlus11_Startup
  1340. Func _GDIPlus_Convert2HBitmap($hBitmap, $iColor); removes alpha backround using system color and converts to gdi bitmap
  1341. Local $iBGColor = _WinAPI_GetSysColor($iColor)
  1342. $iBGColor = 0x10000 * BitAND($iBGColor, 0xFF) + BitAND($iBGColor, 0x00FF00) + BitShift($iBGColor, 16)
  1343. Local $iWidth = _GDIPlus_ImageGetWidth($hBitmap), $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
  1344. Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1345. Local $hBitmap_New = $aResult[6]
  1346. Local $hCtx_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_New)
  1347. Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $iBGColor)
  1348. _GDIPlus_GraphicsFillRect($hCtx_new, 0, 0, $iWidth, $iHeight, $hBrush)
  1349. _GDIPlus_GraphicsDrawImageRect($hCtx_new, $hBitmap, 0, 0, $iWidth, $iHeight)
  1350. Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_New)
  1351. _GDIPlus_BrushDispose($hBrush)
  1352. _GDIPlus_BitmapDispose($hBitmap_New)
  1353. _GDIPlus_GraphicsDispose($hCtx_new)
  1354. Return $hHBitmap
  1355. EndFunc ;==>_GDIPlus_Convert2HBitmap
  1356. Func _GDIPlus_BMPFromMemory($bImage, $hHBitmap = False)
  1357. If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
  1358. Local $aResult
  1359. Local Const $memBitmap = Binary($bImage) ;load image saved in variable (memory) and convert it to binary
  1360. Local Const $len = BinaryLen($memBitmap) ;get length of image
  1361. Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
  1362. Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
  1363. Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
  1364. DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
  1365. _MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE
  1366. $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
  1367. If @error Then Return SetError(2, 0, 0)
  1368. Local Const $hStream = $aResult[3]
  1369. $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
  1370. If @error Then Return SetError(3, 0, 0)
  1371. Local Const $hBitmap = $aResult[2]
  1372. Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
  1373. DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
  1374. "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
  1375. $tMem = 0
  1376. $tVARIANT = 0
  1377. If $hHBitmap Then
  1378. Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
  1379. _GDIPlus_BitmapDispose($hBitmap)
  1380. Return $hHBmp
  1381. EndIf
  1382. Return $hBitmap
  1383. EndFunc ;==>_GDIPlus_BMPFromMemory
  1384. Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
  1385. Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
  1386. $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
  1387. If (@error) Or ($aRet[0]) Then Return 0
  1388. $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
  1389. $pBits = DllStructGetData($tData, 'Scan0')
  1390. If Not $pBits Then Return 0
  1391. $tBIHDR = DllStructCreate('dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd183381(v=vs.85).aspx
  1392. 'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;' & _
  1393. 'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
  1394. 'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
  1395. 'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
  1396. DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
  1397. DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
  1398. DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
  1399. DllStructSetData($tBIHDR, 'bV5Planes', 1)
  1400. DllStructSetData($tBIHDR, 'bV5BitCount', 32)
  1401. DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
  1402. DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
  1403. DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
  1404. DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
  1405. DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
  1406. DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
  1407. DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
  1408. DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
  1409. $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
  1410. If (Not @error) And ($hResult[0]) Then
  1411. DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
  1412. $hResult = $hResult[0]
  1413. Else
  1414. $hResult = 0
  1415. EndIf
  1416. _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
  1417. $tData = 0
  1418. $tBIHDR = 0
  1419. Return $hResult
  1420. EndFunc ;==>_WinAPI_BitmapCreateDIBFromBitmap
  1421. ;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17
  1422. Func Reset_Icon()
  1423. Local $Reset_Icon
  1424. $Reset_Icon &= "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACC0lEQVR42mNkIAKwxjMJM/9i8vjx9M86hkMM35HlGAlpZslmcFMxllssrMcidq7/Ydr3pX9nE2dANIOImD7HXCltAT9hUX4GEUkhhps7vj+/kHpBCq8B7BHMvPwezFUCnHylopI8zOxM7AyszGwMAvwCDPwK3Axz9Hf6/rv9fwtOA5itGIPlUvjXiMryMPDy8jFwMHMwcLJzMgjw8jNoK6gwrF9y/vGh2MNy+L3AwcDGYMRgoJMivdLQWUOBm4WbgYebh4HxNyPDP5FvDPNd92S92/N5OsFAtFqj8cDCVVeenY2D4fyxa3c4jkvclnDm9fzw4BvDishNjAQNCDhu/VbfREPo28/vDA8OvPq42mePQGRKLPfyOYu/EhWNQUdt3uiaawh//PKR4cdhln8zfJczo6vBa4DHJtPHZj66Mm/fvWf4tov5//yoNUwwuf///7MwMjL+wWuAzUyd97ZpJgJvnr5h2H/i9Ls7IS+FQeJrVq1nDAkL/E/QBYELvK+yeX3UYv/Ew7Dn7u4HDGdzjJ9VTXxHtBeCZwR1vOO9H8tjwyL15fC3R5/OftQ62//kK9EGgIDaZMmez4ovikV5JRmYtvBmXui+OQMkPmPxSsaM2PD/BA0AgfA6t9gzpqcX/WT6yiC6V0n3fN+NK/uOXmZ0stYlzgAQiOwOdb/14+yEs5z3/jOUMGjBxAESN7ER3OAlewAAAABJRU5ErkJggg=="
  1425. Return Binary(_Base64Decode($Reset_Icon))
  1426. EndFunc ;==>Reset_Icon
  1427. Func _Logo($bSaveBinary = False, $sSavePath = @ScriptDir)
  1428. Local $Logo
  1429. $Logo &= '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'
  1430. $Logo &= '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'
  1431. $Logo &= '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'
  1432. $Logo &= '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'
  1433. $Logo &= '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'
  1434. $Logo &= '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'
  1435. $Logo &= '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'
  1436. $Logo &= '61490/cfL1K2f/dnU/yNdN8TtGluLtNS0+9m0/UrVSILuFVY4PO11YEOmcHB/AjJrzq++LPxV8KXgGo+HPCni2wVhuNvG+mXm3uRuMkTH/vj8KALkPjq0MnzXcQHqZBXTaD4ktL+33wTxyqDglGDAH04q78GfjP4P+I91dabp2ky6XrdhEJbvR9VhWG4SMnHmKV3JImTjcjHBIzjIrzq98RRah8WPFwtLNLOGx1UWYjibKOyQxF3AwMEuzA/7tAGp8Sr5TauQe1dV+zBbGD4XvM/W81CebJ9MhR/6DXl3xBvSbFsntXc/AHxtp3/AApXw9Mtje7ZrYyA4TLZdjn73frQByWrOY/jZryk9b4EZ/3Er3r4cvus4/oK+eviBrOmzftAXsFm0iyvY2t08bpt4fegYeuTE2fcV7v8LbjdZx4PYUAem23MYFFxGGUgj6U2zbMQNPmcBSaAOL8dWSPavle1fLnxus1t5nmRRmNtw47jmvqjxxcoto+T2r5e+OFykskiKwBY4BJ6UAe+eHJXvPDum3knLT2cUrepZkBP868v+Mka2/xgtJUGGn06Mvj1DuP5AV6z4VtxD4X0u3LKTDYwocHPIjAryP4rSG8+NrQqDi0tIY/xOW/rQB618OZD9gjz6VpeLrnbZtk9qyfA37nTkz/dqj8QdTWO1Ybu3rQBwN3C2sfELRNNVQyXGqQ+bnsitvOP++Kt+OJhefG/XrkSblikhtQP7vlxrn9WNW/2f7Bta+Kk+sMMw6PbttbP/LWT5QCP93ca5a0vkvvGOr6khz9r1KeU8/7ZHH4AUAet+GrtILVctjis/wAbaxCbVgWHT1rlNS14WNizs+1UUknPQVz/AIk0v4g3Ol2t7FoN1dRahD58P2SNnMaknCvjocYPuDQBw/jLUBH4usLmFsSR3sTKR2O8V9OeOJVsfB2rXuceRZTMD7hDj9cV8q6h4F+JVx4gs7iXwdqywR3UbyOYD8qhwScdelfTHx0t9UvvhPrVlotrJdX9xb+XBCg5ZiwoA+XvhrrqQMhZsEnJ5r2jw/4/tLC2y5mnkRC/k26b3wBknHQADJySBxXH/Bf9nXVmiivPF+om0Q4P2WD/AFh9ie3+eK7v4tx+H/DGm2Pgbw9p8Nv9vKzajIBmSSJWyFZup3MOmeOMCgD1fwbrBvbOGYo8ZkQMUf7y5HQ+4rsbV90deXfDWV5LdCfSvTdN/wBSPpQBLdNiEmvO/iVd+XayYOOK9CvjiGvKvizIRayfQ0AeafCuyGu/G2GWX5otJhe7ZSON33EP1BJP4V1P7WF1/wAUPp9gH2tdanG31VFYkfmRVH9miAPr3iK9I+ZVhiB9iXP9BVL9riWRZPDW4ERCeYgn+9hf6UAXvg3ZL5cZx6V7toEASFeO1eJ/BmZDBHz6V7hojKYFwe1AGmgwKUgGkX7tLQBHJGD1Garz26Bc4q5Ve8OI2oA5jxROttbsemBXz98XvEU7Sm2tcyTStsjQdWY8AcV7H8TLzyrOTB7GvGvhrYrr/wAXGupxvh0iI3G1hwXJwp+oPNAHUfC/wlD4V0ovdBX1i+UNc3B/hBwfLX0A7+uPYV0kkbztlTuHY+tTX0XnSbc9xg+9eQ/Hz4hapaakvhHQJDDceWPtdwnVe20en0/PjqAegXV9oWnNJHqOs2NvIJGyklwoYc9xnipdKuNF1KQJp2q2dy5HCRTqzflnNfP2j+BLjUV+0XbSTSNyWkL/P1jVfWPCF7o0n2mwllt5UOQ0Zx09fWgD6p0O2KXHlum5WVgVIyCMEGvFtY0w+DfihfaPBuFnIwuLX2R+dv4HIrv/ANl/xVdeKvDstrqj79R0xtjuesiEcH3+vuPrWF+09AsPxF0OdeHewdWx6CTj+ZoAuXF35+n8nPy1B8HLoaT418TaxgbbHw48ufUiTIH/AI7WXa3J+wgZ7Vc0mDyvhH4n1Z3ZTrN9b6TbvtwVVXBfHqCS35UAR/CjTTHZ27SIwkZd8gbr'
  1437. $Logo &= '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'
  1438. $Logo &= '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'
  1439. $Logo &= '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'
  1440. $Logo &= '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'
  1441. $Logo &= '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'
  1442. $Logo &= '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'
  1443. $Logo &= 'Sud1TSUtfjJ4LlVQrDxFEoOOm6ORT+asR+Nb/wC2g3n2vhDw3DhVvtae8kHd47eBzjHp5kkNAHz54qtJZPCNzYRMY/tMP2YMP4d+Ez+Ga+3NRGnJor6bdWME+nxw+W1rJErxmNRwpVuCMAcGvknx94eurjwbfxWe5blrZzAVGSJAMr+oFfRng/xXYeK/BOk+ItPlUxanZxziMt80bMPmQg91bKn3BoA81079qLSNMsza/Df4Xx29vKcrJezw2MXP8YjgWQsPqVP0qhqnxq+MfiUFX8W6f4fgY/6rQtLQPt9DLcGU591C1yHjr4K+ItH8U3Nz4Hitb7Q7qVpYbF7gQz2BY5Mal/leMEnbyCowuDjNGleA/iWBg6FYwYH/AC31WPn/AL43UAW9Q0KHxHMJfFWqat4kfeGH9talLdop/wBmN28tR7BQK7XwToOm2qrFaWsEEf8AcijCr+QrnfDvw8+KF9fLG83hbToyWAaW/nnf5UZs7ViUdv71Hxq8CeIvD/ge2trv4kXVxq/iG9TT9OsdHsRYxRswJkklkLyStHHEsjHaUy20HrigD2rQ4LRrAvbyRyKrMhZGBAZSVYcdwQQR2IrzX9pKLzvhzrFpGMveQfZVHqZWEY/9DrtPBFvY+H/Btloump5drYW6wxA9SAOrHuxOST3JJrj/ABa7a78S/BvhiMlm1LxHazTRgZ3QWrfa5c+gxAF/4FQB1P7RMX9oftRWVowylh4SikX2M93MD+f2cflXefDzw5C8SHywfwrhPjNe+Z+1hJ5isPP8IafsLH+5eX+7/wBGrXsfwwCtbx8dhQB0mk+HYURfkH5Vv2OmpFjC1b09B5QNWwvrQBHDGFXAqbpR0ooAKKKKACqt9FvjIxVqmyDNAHmXxE0MXVvJ8navlr4seG9d8L+MYPHXhSASarp6GK4s2bbHqdqTl4HPY8bkb+FgOoJr7d1ixE0ZBHWvMPiB4SS6jf8AdZ/CgDjvh34x0Dx94bXXvD0zmPf5VxbTKEuLOYfehmQcq4/I8EEgg15N4g+EGjXjNrXhbULjwpq0zFpjaxiSzuWyfmltzgZ/2kKE9STU3jX4e65oHitvFngjUn0TWwu2V1j329+g6R3EXSRfQ8MueCKj0j4sx6dCtj8RPDl5oFxGdp1Gyie70+U5wG3IC8WfR1wMj5jQBlrZfF3w42yfw/aa/Ap/4+NEv1D7fUwzlCD7KzUo8feIwGiufB3jKF16j/hHbuYH6NFGy/rXpXh3xT4U11Vl0LxVo+oKe1tfxuw9ioOQfY1vxxzMjFTkN0INAHzr4m8R+Ir6NjH4S8YsD3/4RfUB/OGuu/ZQ1bXNJ8C6vouqafqVjZWeqPLpseoWM1q8ccoDuirKqkqJC5GB/GR2r16aRl0/yyoaVV2rmTG35ickfj/ntm3GnpNNuaSMkdywoAzfiV4glsvg/wCKdQGVkj0C/MQ9ZDaShR/30RXm3w/3afoFtb/88IETj2UD+ldl+0kkdv8ABu+tYDHHLql7ZafbQmQFpDLcRxsBzzhWYn2B+lYC6c9pp33ccUAZui2PxN8Z+AbLxfovhPSbrTtSR3gih8Qxi5j2uyMsqSIiKwZCCA5x0zXJa5o/jyyYtqHgLW4mH3lh8m6x/wB+JHzXbfs7eLF8PeIvEvgO6uVht7pm1rSd7gAbyFuYx6Yk2OB/01b0ra8QeMIIrpwdQtxk95xQB5Jp+q63bSYfwj4sUj08O3jfqsRrorHxj4ghAWLwh4vZvT/hHLxP1aMCujtfGCfbVzfQ7W45lFbkfiiPyI40ljaV5M+YZxtx6f5//WAcemtfEnVmEOl+BdW+b70l/NDaIn1Dvv8AyU1e0v4VeKPEciy+PfFUdnZMfn0vQGcNIP7r3TgNjsQiL7NXY+Hryaa7l3SfN5rEZbsc4/Sq3jL4meFfCEn2CW6k1jXCMw6LpY8+6c/7YHES/wC05AxnGelAHZ+E9F8M+C/C5tNIsrHRNJtA0spGI414'
  1444. $Logo &= '+aSR2PJ7lmJPqa8q8a+P9Z+JszeGvh9Jc2HhqQmPUPEYUpLfL0aKzB5VTyDMR67fU0P+Ee8ZfE/UIbzx9IsWmxyCS18OWbn7JCRyDO3W4cep+UEcLXuXw78BRW0UarbqqqAAAuAB6CgDE+D3w/s9H0q2srKyjt7a3QJFEi4CivUZrIWdhwMYFdL4f0GO2hUBB09Kb4lsCbVlC9qAPl79orX9ShktdA0CH7V4g164+x6TbZ+9IRlpG9I41y7HsB71t+C/Bdl4I8GWfhyx3XDQlpb28cfvLydsmSZ/dm/IYHQCodT0Dxh4T+Nmu+OLHw5oXiIahZw2mnNf6xNZzaZEozLGgW3mUiR/mJGDwB2qC/8AHXxCknYN8NvD+W9PFc//AMgUAZnx+guW8L+EbJmby7rxbFnc2chLS6lA/wC+oxXqvwdsCLePK9hXmfiaPx94+h8O2Fx4N0DSYdI1y31B7qPxHPcPsTzEdVjNmgJKTOBlgM19BfDvRzbQoNuOBQB0D2Kmz+72ryz4rWA8mTC9q9ta3/0fHtXmXxr8NanrXhe/0/SNRGm3l1EY4r3yfMNvnguq5GWAzjng4POMUAeM/sn+HJL238TfEArG39uak1jp7lx/x52jNECMngNMZz7gLU37SGmTf8JZ4DicL895edHVv+WGegNM8O+F/id4L8P2nhzw/wCO4V0vToRDawXGgwyeWo9WBDMepJYkkk5NWLLw38S/EvjnQb3xdqegXenaG08kL2WnS21xM8sYTDgyOmBycjH0oA9G+FOjqtvHlOw7V6/o1giRr8tc14G0n7NCgK44rubOPbGBQA+GMKuAPxqYDFHSigBsgzXOeKrPzrdxjtXSnkYqnfwiSM8fWgD5U/aI8FW+t6HfaddREw3UTRvjgjPcehHBHuK4n4L+KLnXPC83h7W3A8UeGyLfUVPW6Tny7pfVZAOfRgw44r6f+IXh9bq3k+TPHpXy98Z/AWrWWvW/inwvcLYa9pm77PMykxzxnloJgPvRtj6g4IwRQBqeOND0jxbokuieI4nniZlkimSTbPbSj7skT9Vcev1BBBIrgI9O+I3gY74Im8XaTF0ubBQl/Goz/rICcSHpzGcnrtFdh4F8Z6Z40WWzeBtJ8RWK/wCn6NcN+8j/AOmkZ/5axHs6+ozg8VoXE89m0nOKAMzwD8Z9Ov8AMVvqA86E7ZreTKTRHuHRsMp+oru7X4pJ5f8Ax8D86888XDwT4g09R4m8P6bf30CbIriQ7J4RuJyJFw6jnsf/AK2L/wAIr8Koo8Kt9Gq9h4pv1A/AT0Aepat8V4IIXllu0jjQZZ3fAA9STXO6V8ZrnX5pIvB+g654pdNw8zS7Um3DD+E3DlYgc/7RrjLHRPhGniWO5bQ4bpI9+xNV1afUI1Iicg7Z5XXIfYc47/hXp3hXx5p8t1b2di1vBbxRBAEmXbkegHQf5+oBY8CeOj4psLqK7sZ9N1HT7qSz1CwuGDPazIxVlLKSrDgEMDggg965b40eD31/Rz9nnltLy3lW5sbuE4ktZ0O6ORfcEfiMik0+8t5v2h/FktsIgZ47AytGB87CDGSR1OMDPsK9htdDF/p4yucj0oA8i+FPigeOIJ9I1aK30/xfpaD+0bBplQTDIxcQbiN8TdeOVJ2nsT1t34aa7sZtM1Oys7yzuIzHPbzyRvHIp6hlJwRWP8UvhJZ6xNDdlJ7a+s332l/ZymG5tm9Y5F5H06HuKwtP1f4v+Fx9nuF0fxhax/da+Bsb4j+6ZY1aNuMcmME9zQBPp/wD8OC+26J4k8SaJBg/6HbXUVxCn+4J45GX6bse1dNafCP4OeANGbxj49vLnV4dLxKb3xLemeKNgcjbbqFiZycbQIyxOAOa53/hPPindeZHongTRNGkZiRc6nqkl3jPpFEiZx7uPpSaH8NdZ8SeIrfX/Hmt3niXULZ91qtygjtLM9Mw26/IpwfvHc3HWgBrX2v/ABo8fWni3XLGfTvDekuT4a0S'
  1445. $Logo &= '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'
  1446. $Logo &= '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'
  1447. $Logo &= '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'
  1448. $Logo &= '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'
  1449. $Logo &= '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'
  1450. $Logo &= 'bhWGGIbJDDPP4gisLwv4U0HUvjJba14S0yPTLHQwVkuLcFRdseCPQg8ge2T6UAexUUUUAFFFFABRRRQAUUUUAFJgelLRQA3b70bfenUUAN2+9Gz3p1FAFW6gDqeKwNW0dJgcrXUMM1G8QPVaAPPp/CUMkmTGPyqex8JwJ/yyHHtXb/Z0/umnrCo/hoA56z0CGMACMflWlb6bGn8IFaQQU7A9KAK0Vsi9BU6oBTqKAAADpRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSMAaWigCGaFW6j8az73TI5RyorWpCoNAHHan4agmzmMflXO6l4Ht5M/uR+VeoNGD1ANRvbIf4aAPGrj4ewFuIR+VT6b4DhikB8kflXrJs4/QUq2cYOcCgDlfD/h+O1C4Tp7V1VjAIkGBU0cKr0FSqMUACjApaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA81Xuot64NWKRhmgDmNX0hJ85QH8Kxm8LQl8mIflXePGD1FNECZ+6aAOZ0vw/DDjEY/Kt6zskiA+XFW1jA6DFPAAoAbGgA6U+iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBCAaY6Z6jNSUUAZ99aLIp4rn9U0CKYnKA11zLnpTWiB6igDg4/CkHmf6oflWpp3h6GLH7sflXTCFf7tPWMCgCjZ2CRL0xV2NABwMU8ACloAQqKY0YPUVJRQBCsSg/dqRV9adRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFHXrRRQA3b70bfenUUAAGOlFFFABRRRQAV518dND13UNS0W/wBItZrxIDNDNHHjNuXUbJlHXII5x6Dp1r0WigDwvXvCfivwrZ6bqV94mMkcOnyWjJ5h3ec+doUdgeMgH+EnI4I9A+A+ianoPgOG01MKHkczKMksN3XP5D9eB0Gl4g8Jw6z4tsdYvbyWSCxU7LMgeXu9fx4znOcCuiq7sAAA898a+CfENwB+PLnWtB1W3gALXV7AWmpQTAC8nb91lI7Y4ACPTPrxhN4J8QA+i/DTw5Z2OgBlrqF7ouomewCLV5sLMpJGQQDvxj8/qK9fogCAPMfHI+K+qQDg2dbOw023mgByqNaxzHcYzwDe+bk+x5HGeACtb4bab4z0+wALG2voNL0+1gAD++giJd5c9QAluefy6DtxXSDFFABRRVgDgen/WV3/Af8B/wD/AP8A/wD/AAP/AP8AAf/Z'
  1451. $Logo = _Base64Decode($Logo)
  1452. Local $tSource = DllStructCreate('byte[' & BinaryLen($Logo) & ']')
  1453. DllStructSetData($tSource, 1, $Logo)
  1454. Local $tDecompress
  1455. _WinAPI_LZNTDecompress($tSource, $tDecompress, 33819)
  1456. $tSource = 0
  1457. Local $bString = Binary(DllStructGetData($tDecompress, 1))
  1458. If $bSaveBinary Then
  1459. Local $hFile = FileOpen($sSavePath & "\GDI+ Color Transformer 07.2.1.jpg", 18)
  1460. FileWrite($hFile, $bString)
  1461. FileClose($hFile)
  1462. EndIf
  1463. Return $bString
  1464. EndFunc ;==>_Logo
  1465. Func _Base64Decode($sB64String)
  1466. Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
  1467. If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
  1468. Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
  1469. $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
  1470. If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
  1471. Return DllStructGetData($bBuffer, 1)
  1472. EndFunc ;==>_Base64Decode
  1473. Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
  1474. $tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
  1475. If @error Then Return SetError(1, 0, 0)
  1476. Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
  1477. If @error Then Return SetError(2, 0, 0)
  1478. If $aRet[0] Then Return SetError(3, $aRet[0], 0)
  1479. Return $aRet[6]
  1480. EndFunc ;==>_WinAPI_LZNTDecompress
  1481. #endregion needed additional functions

comments powered by Disqus