daily pastebin goal
13%
SHARE
TWEET

AutoIt Watermark Image v0.89 beta build 2014-08-25

UEZ Nov 28th, 2012 (edited) 518 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 format (exe) must be free of any fee!
  3.  
  4. ;~ #AutoIt3Wrapper_Version=b
  5. #AutoIt3Wrapper_UseX64=n
  6. #AutoIt3Wrapper_Compile_Both=n
  7. #AutoIt3Wrapper_Icon=W 2.1.ico
  8. #AutoIt3Wrapper_Res_Field=CompanyName|UEZ Software Development
  9. #AutoIt3Wrapper_Res_Field=ProductName|AutoIt Watermark Image
  10. #AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer%
  11. #AutoIt3Wrapper_Res_Fileversion=0.8.9.0
  12. #AutoIt3Wrapper_Res_Field=Build|2014-08-25
  13. #AutoIt3Wrapper_Res_LegalCopyright=UEZ Software Development
  14. #AutoIt3Wrapper_Res_Language=1033
  15. #AutoIt3Wrapper_Res_Field=URL|http://www.autoitscript.com/forum/index.php?showtopic=145873
  16. #AutoIt3Wrapper_Change2CUI=n
  17. #AutoIt3Wrapper_Run_Au3Stripper=y
  18. #Au3Stripper_Parameters=/so
  19. ;~ #Obfuscator_Parameters=/so /om
  20. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"
  21. #AutoIt3Wrapper_UseUpx=n
  22. #AutoIt3Wrapper_UPX_Parameters=--best --lzma
  23.  
  24. #include <Clipboard.au3>
  25. #include <Array.au3>
  26. ;~ #include <ButtonConstants.au3>;~~~
  27. #include <ComboConstants.au3>
  28. #include <Constants.au3>
  29. #include <EditConstants.au3>
  30. #include <GDIPlus.au3>
  31. #include <GuiButton.au3>
  32. #include <GUIConstantsEx.au3>
  33. #include <GuiMenu.au3>
  34. #include <Misc.au3>
  35. #include <SliderConstants.au3>
  36. #include <StaticConstants.au3>
  37. #include <UpDownConstants.au3>
  38. #include <WinAPISys.au3>
  39. #include <WindowsConstants.au3>
  40. #include "NoFocusLines.au3"
  41.  
  42. Break(0)
  43. Opt("MustDeclareVars", 1)
  44. Opt("GUICloseOnESC", 1)
  45. Opt("GUIOnEventMode", 0)
  46.  
  47. Global Const $sTitle = "AutoIt Watermark Image "
  48. Global Const $ver = "v0.89 beta build 2014-08-25"
  49.  
  50. If @OSBuild < 2600 Then Exit _WinAPI_ShowError($sTitle & @LF & @LF & "is not running on " & @OSVersion & " !!! :-(", False)
  51.  
  52. _GDIPlus_Startup()
  53. Global $hBmp = 0, $bW, $bH, $iGUI_MinW, $iGUI_MinH, $hGUI_WM
  54. Global Const $iW_Grp_WM = 722, $iH_Grp_WM = 468, $iGUI_W = 953, $iGUI_H = 703
  55. Global Const $STM_SETIMAGE = 0x0172
  56. Global $iW_Pic_WM = $iW_Grp_WM - 20, $iH_Pic_WM = $iH_Grp_WM - 30
  57. Global Const $iMinFontSize_WM = 4, $iMaxFontSize_WM = 256, $iRadius_Max_WM = 500, $iRadius_Min_WM = 8
  58. Global $hBitmap_WM, $hBitmapUndo_WM, $hBmp_Preview_WM, $hBitmapStamp_WM, $hBitmapStampPreview_WM, $iColorFont_WM = 0xFF0000, $sText_WM, $sFont_WM, $fAlpha_WM, $iFontSize_WM
  59. Global $iPos_WM, $iRadius_WM, $iRotation_WM, $idInputText_WM, $idComboFont_WM, $hComboFont_WM, $idInputOpaque_WM, $idInputFSize_WM, $idInputRadius_WM, $idInputDegree_WM, $idPicPreview_WM
  60. Global $idCheckboxCircular_WM, $idLabelRadius_WM, $idSliderRadius_WM, $idRadioUpperLeft_WM, $idRadioUpperMid_WM, $idRadioUpperRight_WM, $idRadioMidLeft_WM, $idRadioCenter_WM, $idUpdown_WM
  61. Global $hUpdown_WM, $idRadioMidRight_WM, $idRadioButtomLeft_WM, $idRadioButtomMid_WM, $idRadioButtomRight_WM, $idSliderDegree_WM, $hSliderDegree_WM, $idSliderOpaque_WM, $iGUI_WM_color = 0xF0F0F0
  62. Global $hSliderOpaque_WM, $hSliderRadius_WM, $idRadioImagePreview_WM, $idRadioColor_WM, $bStamp_WM = False, $hBitmap_Preview_WM, $hDC_WM, $hDC_backbuffer_WM, $DC_obj_WM, $hGraphic_WM
  63. Global $idRadioSaveJPG_WM, $idRadioSaveBMP_WM, $idRadioSavePNG_WM, $idSliderJPGQual_WM, $idRadioSaveTIF_WM, $idRadioSaveGIF_WM, $idInputJPGQual_WM, $hSliderJPGQual_WM, $idCheckboxFill_WM
  64. Global $idInputSavePath_WM, $idSliderAdjX_WM, $idSliderAdjY_WM, $hSliderAdjX_WM, $hSliderAdjY_WM, $idRadioTxtFXDefault_WM, $idButtonLoadFont_WM, $idButtonTPColor_WM, $iColorImgTP_WM = 0x000000
  65. Global $bUpdate_WM = False, $sFX_WM = "Default", $bDnD = False, $bResize = False, $bUndo = False, $__Enum
  66. Global $idButtonLoadImage_WM, $sFileImage_WM, $idButtonColor_WM, $idRadioTxtFXOutline_WM, $idRadioTxtFXOutlineFilled_WM, $idRadioTxtFXEmbossed_WM, $idLabelImgDimSize, $idButtonSaveImage_WM
  67. Global $idDummy_Resize, $idDummy_Clipboard, $idDummy_WinResized, $idDummy_Batch
  68. ;~ Global Const $tagGDIPCOLORMATRIX = "float m[25];"
  69. Global $hAttribute_Alpha = _GDIPlus_ImageAttributesCreate()
  70.  
  71. Global Const $hDwmApiDll = DllOpen("dwmapi.dll")
  72. Global $sChkAero = DllStructCreate("int;")
  73. DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero))
  74. Global $bAero = DllStructGetData($sChkAero, 1)
  75.  
  76. Global $iGUI_WM_color = 0xF0F0F0, $red, $green, $blue
  77.  
  78. If Not $bAero Then
  79.         $iGUI_WM_color = _WinAPI_GetSysColor($COLOR_BTNFACE)
  80.         $blue = Hex(BitShift($iGUI_WM_color, 16), 2)
  81.         $green = Hex(BitAND(BitShift($iGUI_WM_color, 8), 0xFF), 2)
  82.         $red = Hex(BitAND($iGUI_WM_color, 0xFF), 2)
  83.         $iGUI_WM_color = "0x" & $red & $green & $blue ;converted from BGR to RGB format
  84. EndIf
  85.  
  86. Global Enum $idResize_WM = 1000, $idClipboard_WM, $idBrowse_WM, $idBatch_WM
  87. Global Enum $id_ChkUpd = 1100, $id_VisitWeb, $id_About
  88. Global $idLabel_WM_SizeC, $idLabel_WM_SizeN, $idInput_WM_W, $idInput_WM_H, $idInput_WM_WP, $idInput_WM_HP, $idChkBox_WM_AR, $bFill = False, $bStoppMove = False
  89. Global $iPos_WM = 9, $sSaveType = "jpg", $iJPGQual_WM, $iColorFont_Embossed_WM = 0x000000, $iManPosX = 0, $iManPosY = 0, $iAdjX_WM = 0, $iAdjY_WM = 0
  90. Global Const $fRad = 180 / ACos(-1), $sFXs = "Default;Outlined;OutlinedFilled;Embossed;"
  91.  
  92. Global Const $tagTT_OFFSET_TABLE = "USHORT uMajorVersion;USHORT uMinorVersion;USHORT uNumOfTables;USHORT uSearchRange;USHORT uEntrySelector;USHORT uRangeShift"
  93. Global Const $tagTT_TABLE_DIRECTORY = "char szTag[4];ULONG uCheckSum;ULONG uOffset;ULONG uLength"
  94. Global Const $tagTT_NAME_TABLE_HEADER = "USHORT uFSelector;USHORT uNRCount;USHORT uStorageOffset"
  95. Global Const $tagTT_NAME_RECORD = "USHORT uPlatformID;USHORT uEncodingID;USHORT uLanguageID;USHORT uNameID;USHORT uStringLength;USHORT uStringOffset"
  96.  
  97. ;~ Global Const $sFonts = "Arial|Courier New|Impact|Lucida Console|Lucida Sans Unicode|Marlett|Palatino Linotype|Symbol|Tahoma|Times New Roman|Verdana|Webdings|Wingdings"
  98. Global Const $GDIP_LF_FACESIZE = 32
  99. Global $hFontCollection = _GDIPlus_FontCollectionCreate()
  100. Global $aFontFamilies = _GDIPlus_FontCollectionGetFamilyList($hFontCollection), $hFontFamily, $sFonts
  101. For $i = 1 To UBound($aFontFamilies) - 1
  102.         $hFontFamily = $aFontFamilies[$i]
  103.         $sFonts &= _GDIPlus_FontFamilyGetFamilyName($hFontFamily) & "|"
  104. Next
  105. $sFonts = StringTrimRight($sFonts, 1)
  106.  
  107. Global $bFontMan = False, $hCollection_WM, $sFileFont, $sFileFontName, $sAddFonts = ""
  108.  
  109. $hCollection_WM = DllCall($__g_hGDIPDll, 'int', 'GdipNewPrivateFontCollection', 'ptr*', 0)
  110. $hCollection_WM = $hCollection_WM[1]
  111.  
  112. If $CmdLine[0] Then Cmd()
  113.  
  114. Watermark()
  115.  
  116. Exit
  117.  
  118. Func Watermark()
  119.         #region GUI
  120. ;~      Local Const $hGUI_WM = GUICreate($sTitle, 953, 703, -1, -1, $GUI_SS_DEFAULT_GUI, $WS_EX_ACCEPTFILES)
  121. ;~      $hGUI_WM = GUICreate($sTitle & $ver, $iGUI_W, $iGUI_H, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), $WS_EX_ACCEPTFILES)
  122.         $hGUI_WM = GUICreate($sTitle & $ver, $iGUI_W, $iGUI_H, -1, -1, BitXOR(BitOR($GUI_SS_DEFAULT_GUI, $WS_TABSTOP), $WS_MAXIMIZEBOX), $WS_EX_ACCEPTFILES)
  123.         GUISetFont(8, 400, 0, "Times New Roman")
  124.         GUISetBkColor($iGUI_WM_color, $hGUI_WM)
  125.         Local Const $idPicLogo_WM = GUICtrlCreatePic("", $iW_Grp_WM + 32, 14, 189, 161)
  126.  
  127.         Local Const $idGroupText_WM = GUICtrlCreateGroup(" Text Settings ", 16, 8, 337, 168)
  128.         $idInputText_WM = GUICtrlCreateInput("Watermarked by UEZ", 64, 26, 274, 23)
  129.         GUICtrlSetFont(-1, 9, 400, 0, "Times New Roman")
  130.         GUICtrlSetState(-1, $GUI_DISABLE)
  131.         Local Const $hInputText_WM = GUICtrlGetHandle($idInputText_WM)
  132.         Local Const $sInputTextNN = _WinAPI_GetClassName($hInputText_WM) & _GetNN($hInputText_WM)
  133.         Local Const $idLabelText_WM = GUICtrlCreateLabel("Text", 24, 25, 31, 23)
  134.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  135.         Local Const $idLabelFont_WM = GUICtrlCreateLabel("Font", 24, 59, 29, 19)
  136.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  137.         $idComboFont_WM = GUICtrlCreateCombo("", 64, 58, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_SORT, $WS_VSCROLL))
  138.         GUICtrlSetData(-1, $sFonts, "Arial")
  139.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  140.         GUICtrlSetTip(-1, "Some fonts from the list might be not displayed on the image properly!")
  141.         GUICtrlSetState(-1, $GUI_DISABLE)
  142.         $hComboFont_WM = GUICtrlGetHandle($idComboFont_WM)
  143.         $idButtonLoadFont_WM = GUICtrlCreateButton("Load Font", 268, 57, 71, 25)
  144.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  145.         GUICtrlSetTip(-1, "Loads and adds a TrueType Font to the list")
  146.         GUICtrlSetState(-1, $GUI_DISABLE)
  147.         Local Const $hButtonLoadFont_WM = GUICtrlGetHandle($idButtonLoadFont_WM)
  148.         Local Const $sButtonLoadFontNN = _WinAPI_GetClassName($hButtonLoadFont_WM) & _GetNN($hButtonLoadFont_WM)
  149.         Local Const $idLabelSize_WM = GUICtrlCreateLabel("Size", 24, 96, 29, 23)
  150.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  151.         $idInputFSize_WM = GUICtrlCreateInput("24", 64, 96, 48, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
  152.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  153.         GUICtrlSetState(-1, $GUI_DISABLE)
  154.         Local Const $hInputFSize_WM= GUICtrlGetHandle($idInputFSize_WM)
  155.         Local Const $sInputFSizeNN = _WinAPI_GetClassName($hInputFSize_WM) & _GetNN($hInputFSize_WM)
  156.         $idUpdown_WM = GUICtrlCreateUpdown($idInputFSize_WM, $UDS_ARROWKEYS)
  157.         GUICtrlSetLimit(-1, $iMaxFontSize_WM, $iMinFontSize_WM)
  158.         GUICtrlSetState(-1, $GUI_DISABLE)
  159.         $hUpdown_WM = GUICtrlGetHandle($idUpdown_WM)
  160.         $idRadioColor_WM = GUICtrlCreateRadio("Text", 126, 97, 50, 17)
  161.         GUICtrlSetState(-1, $GUI_CHECKED)
  162.         GUICtrlSetState(-1, $GUI_DISABLE)
  163.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  164.         $idButtonColor_WM = GUICtrlCreateButton("", 180, 94, 27, 25, BitOR($BS_FLAT, $WS_BORDER, $BS_PUSHLIKE))
  165.         GUICtrlSetBkColor(-1, $iColorFont_WM)
  166.         GUICtrlSetTip(-1, "Change color of font")
  167.         GUICtrlSetCursor(-1, 0)
  168.         GUICtrlSetState(-1, $GUI_DISABLE)
  169.         Local Const $hButtonColor_WM = GUICtrlGetHandle($idButtonColor_WM)
  170.         Local Const $sButtonColorNN = _WinAPI_GetClassName($hButtonColor_WM) & _GetNN($hButtonColor_WM)
  171.         $idRadioImagePreview_WM = GUICtrlCreateRadio("Image", 223, 87, 55, 17)
  172.         GUICtrlSetState(-1, $GUI_DISABLE)
  173.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  174.         GUICtrlSetTip(-1, "Click on picture control to the right to use an image")
  175.         $idCheckboxFill_WM = GUICtrlCreateCheckbox("Fill ", 223, 111)
  176.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  177.         GUICtrlSetState(-1, $GUI_DISABLE)
  178.         GUICtrlSetTip(-1, "Filles the images onto background using tiling without flipping mode")
  179.         Local Const $hPicStampPreview_WM = GUICtrlCreatePic("", 287, 87, 50, 40, BitOR($GUI_SS_DEFAULT_PIC, $SS_CENTERIMAGE, $SS_SUNKEN))
  180.         GUICtrlSetTip(-1, "Click here to add an image instead of using a text")
  181.         GUICtrlSetState(-1, $GUI_DISABLE)
  182.         Local Const $hPicImagePreview_WM = GUICtrlGetHandle($hPicStampPreview_WM)
  183.         Local Const $iOpaque_Max_WM = 255
  184.         Local Const $iOpaque_Min_WM = 1
  185.         Local Const $idLabelOpaque_WM = GUICtrlCreateLabel("Opaque", 24, 140, 53, 23)
  186.         GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
  187.         $idSliderOpaque_WM = GUICtrlCreateSlider(78, 130, 226, 38, BitOR($TBS_TOP, $TBS_LEFT, $TBS_BOTH, $TBS_ENABLESELRANGE))
  188.         GUICtrlSetLimit(-1, $iOpaque_Max_WM, $iOpaque_Min_WM)
  189.         GUICtrlSetData(-1, 92)
  190.         GUICtrlSetTip(-1, "Set opaque level of font")
  191.         GUICtrlSetState(-1, $GUI_DISABLE)
  192.         $hSliderOpaque_WM = GUICtrlGetHandle($idSliderOpaque_WM)
  193.         $idInputOpaque_WM = GUICtrlCreateInput("92", 305, 141, 33, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
  194.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  195.         GUICtrlSetState(-1, $GUI_DISABLE)
  196.         Local Const $hInputOpaque_WM= GUICtrlGetHandle($idInputOpaque_WM)
  197.         Local Const $sInputOpaqueNN = _WinAPI_GetClassName($hInputOpaque_WM) & _GetNN($hInputOpaque_WM)
  198.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  199.  
  200.         Local Const $idGroupPos_WM = GUICtrlCreateGroup(" Position ", 360, 8, 378, 168)
  201.         $idRadioUpperLeft_WM = GUICtrlCreateRadio("", 376, 32, 12, 17)
  202.         GUICtrlSetState(-1, $GUI_DISABLE)
  203.         $idRadioUpperMid_WM = GUICtrlCreateRadio("", 440, 32, 12, 17)
  204.         GUICtrlSetState(-1, $GUI_DISABLE)
  205.         $idRadioUpperRight_WM = GUICtrlCreateRadio("", 504, 32, 12, 17)
  206.         GUICtrlSetState(-1, $GUI_DISABLE)
  207.         $idRadioMidRight_WM = GUICtrlCreateRadio("", 504, 86, 12, 17)
  208.         GUICtrlSetState(-1, $GUI_DISABLE)
  209.         $idRadioCenter_WM = GUICtrlCreateRadio("", 440, 86, 12, 17)
  210.         GUICtrlSetState(-1, $GUI_DISABLE)
  211.         $idRadioMidLeft_WM = GUICtrlCreateRadio("", 376, 86, 12, 17)
  212.         GUICtrlSetState(-1, $GUI_DISABLE)
  213.         $idRadioButtomRight_WM = GUICtrlCreateRadio("", 504, 143, 12, 17)
  214.         GUICtrlSetState(-1, $GUI_DISABLE)
  215.         GUICtrlSetState(-1, $GUI_CHECKED)
  216.         $idRadioButtomMid_WM = GUICtrlCreateRadio("", 440, 143, 12, 17)
  217.         GUICtrlSetState(-1, $GUI_DISABLE)
  218.         $idRadioButtomLeft_WM = GUICtrlCreateRadio("", 376, 143, 12, 17)
  219.         GUICtrlSetState(-1, $GUI_DISABLE)
  220.         Local Const $idLabelDelimiter_WM = GUICtrlCreateLabel("", 532, 18, 2, 158, $SS_ETCHEDVERT)
  221.         Local Const $iDegree_Max_WM = 180
  222.         Local Const $iDegree_Min_WM = -180
  223.         $idSliderDegree_WM = GUICtrlCreateSlider(544, 16, 30, 158, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_VERT, $TBS_ENABLESELRANGE))
  224.         GUICtrlSetLimit(-1, $iDegree_Max_WM, $iDegree_Min_WM)
  225.         GUICtrlSetTip(-1, "Set degree of text / % size of image")
  226.         GUICtrlSetCursor(-1, 0)
  227.         GUICtrlSetState(-1, $GUI_DISABLE)
  228.         $hSliderDegree_WM = GUICtrlGetHandle($idSliderDegree_WM)
  229.         $idInputDegree_WM = GUICtrlCreateInput("0", 578, 147, 30, 22, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
  230.         GUICtrlSetLimit(-1, 3)
  231.         GUICtrlSetState(-1, $GUI_DISABLE)
  232.         Local Const $hInputDegree_WM= GUICtrlGetHandle($idInputDegree_WM)
  233.         Local Const $sInputDegreeNN = _WinAPI_GetClassName($hInputDegree_WM) & _GetNN($hInputDegree_WM)
  234.         Local Const $idLabelDegree_WM = GUICtrlCreateLabel("° Rotation / % Size", 612, 150, 108, 19)
  235.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  236.         $idCheckboxCircular_WM = GUICtrlCreateCheckbox("Arrange Circular", 612, 24, 105, 17)
  237.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  238.         GUICtrlSetTip(-1, "When 'Arrange Circular' is activated then rotation is deactivated")
  239.         GUICtrlSetState(-1, $GUI_DISABLE)
  240.         $idInputRadius_WM = GUICtrlCreateInput("64", 612, 58, 28, 22, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
  241.         GUICtrlSetLimit(-1, $iRadius_Min_WM)
  242.         GUICtrlSetState(-1, $GUI_DISABLE)
  243.         Local Const $hInputRadius_WM= GUICtrlGetHandle($idInputRadius_WM)
  244.         Local Const $sInputRadiusNN = _WinAPI_GetClassName($hInputRadius_WM) & _GetNN($hInputRadius_WM)
  245.         Local Const $idLabelRadius_WM = GUICtrlCreateLabel("Radius", 644, 59, 41, 19)
  246.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  247.         $idSliderRadius_WM = GUICtrlCreateSlider(606, 82, 130, 37, $TBS_BOTH)
  248.         GUICtrlSetLimit(-1, $iRadius_Max_WM, $iRadius_Min_WM)
  249.         GUICtrlSetData(-1, 60)
  250.         GUICtrlSetState(-1, $GUI_DISABLE)
  251.         GUICtrlSetTip(-1, "Change radius of circular text")
  252.         $hSliderRadius_WM = GUICtrlGetHandle($idSliderRadius_WM)
  253.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  254.  
  255.         Local Const $idGroupPreview_WM = GUICtrlCreateGroup(" Preview (" & $iW_Pic_WM & "x" & $iH_Pic_WM & ") ", 16, 176, $iW_Grp_WM, $iH_Grp_WM)
  256.         $idPicPreview_WM = GUICtrlCreatePic("", 26, 194, $iW_Pic_WM, $iH_Pic_WM)
  257.         GUICtrlSetState(-1, $GUI_DISABLE)
  258.         GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
  259.         Local Const $hPicPreview_WM = GUICtrlGetHandle($idPicPreview_WM)
  260.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  261.  
  262.         Local Const $idGroupTxtEffects_WM = GUICtrlCreateGroup(" Text Effects ", $iW_Grp_WM + 52, 176, 170, 160)
  263.         $idRadioTxtFXDefault_WM = GUICtrlCreateRadio("Default", 790, 210, 59, 17)
  264.         GUICtrlSetState(-1, $GUI_CHECKED)
  265.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  266.         Local Const $hRadioTxtFXDefault_WM= GUICtrlGetHandle($idRadioTxtFXDefault_WM)
  267.         Local Const $sRadioTxtFXDefaultNN = _WinAPI_GetClassName($hRadioTxtFXDefault_WM) & _GetNN($hRadioTxtFXDefault_WM)
  268.  
  269.         $idRadioTxtFXOutline_WM = GUICtrlCreateRadio("Outlined", 790, 240, 65, 17)
  270.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  271.         GUICtrlSetState(-1, $GUI_DISABLE)
  272.         Local Const $hRadioTxtFXOutline_WM= GUICtrlGetHandle($idRadioTxtFXOutline_WM)
  273.         Local Const $sRadioTxtFXOutlineNN = _WinAPI_GetClassName($hRadioTxtFXOutline_WM) & _GetNN($hRadioTxtFXOutline_WM)
  274.  
  275.         $idRadioTxtFXOutlineFilled_WM = GUICtrlCreateRadio("Outlined Filled", 790, 270, 95, 17)
  276.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  277.         GUICtrlSetState(-1, $GUI_DISABLE)
  278.         Local Const $hRadioTxtFXOutlineFilled_WM= GUICtrlGetHandle($idRadioTxtFXOutlineFilled_WM)
  279.         Local Const $sRadioTxtFXOutlineFilledNN = _WinAPI_GetClassName($hRadioTxtFXOutlineFilled_WM) & _GetNN($hRadioTxtFXOutlineFilled_WM)
  280.  
  281.         $idRadioTxtFXEmbossed_WM = GUICtrlCreateRadio("Embossed", 790, 300, 75, 17)
  282.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  283.         GUICtrlSetState(-1, $GUI_DISABLE)
  284.         Local Const $hRadioTxtFXEmbossed_WM= GUICtrlGetHandle($idRadioTxtFXEmbossed_WM)
  285.         Local Const $sRadioTxtFXEmbossedNN = _WinAPI_GetClassName($hRadioTxtFXEmbossed_WM) & _GetNN($hRadioTxtFXEmbossed_WM)
  286.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  287.  
  288.         Local Const $idGroupSave_WM = GUICtrlCreateGroup(" Save Settings ", $iW_Grp_WM + 52, 346, 170, 298)
  289.         $idRadioSaveJPG_WM = GUICtrlCreateRadio("JPG", 790, 460, 49, 17)
  290.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  291.         GUICtrlSetState(-1, $GUI_CHECKED)
  292.         $idRadioSaveBMP_WM = GUICtrlCreateRadio("BMP", 790, 500, 49, 17)
  293.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  294.         $idRadioSavePNG_WM = GUICtrlCreateRadio("PNG", 790, 540, 49, 17)
  295.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  296.         $idRadioSaveGIF_WM = GUICtrlCreateRadio("GIF", 873, 460, 49, 17)
  297.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  298.         $idRadioSaveTIF_WM = GUICtrlCreateRadio("TIF", 873, 500, 49, 17)
  299.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  300.         $idSliderJPGQual_WM = GUICtrlCreateSlider(776, 396, 164, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE))
  301.         GUICtrlSetData(-1, 90)
  302.         GUICtrlSetState(-1, $GUI_DISABLE)
  303.         $idButtonTPColor_WM = GUICtrlCreateButton("", 872, 540, 16, 16, BitOR($BS_FLAT, $WS_BORDER, $BS_PUSHLIKE))
  304.         GUICtrlSetBkColor(-1, $iColorImgTP_WM)
  305.         GUICtrlSetResizing(-1, $GUI_DOCKAUTO + $GUI_DOCKSIZE)
  306.         GUICtrlSetTip(-1, "Change background color for transparent images")
  307.         Local Const $hButtonTPColor_WM = GUICtrlGetHandle($idButtonTPColor_WM)
  308.         Local Const $sButtonTPColorNN = _WinAPI_GetClassName($hButtonTPColor_WM) & _GetNN($hButtonTPColor_WM)
  309.         Local $idLabelTPColor_WM = GUICtrlCreateLabel("Transp." & @LF & "Bg Color", 893, 537, 39, 25)
  310.         GUICtrlSetFont(-1, 8, 400, 0, "Times New Roman")
  311.         GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
  312.         $hSliderJPGQual_WM = GUICtrlGetHandle($idSliderJPGQual_WM)
  313.         Local Const $idLabelJPGQuality = GUICtrlCreateLabel("JPG Quality", 782, 372, 69, 17)
  314.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  315.         $idInputJPGQual_WM = GUICtrlCreateInput("90", 856, 370, 30, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
  316.         GUICtrlSetLimit(-1, 3)
  317.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  318.         GUICtrlSetTip(-1, "0 - 100 (0 worst - 100 best)")
  319.         GUICtrlSetState(-1, $GUI_DISABLE)
  320.         Local Const $idLabelSavePath = GUICtrlCreateLabel("Path to File:", 782, 592, 69, 17)
  321.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  322.         $idInputSavePath_WM = GUICtrlCreateInput("", 777, 612, 164, 21, $ES_READONLY + $ES_AUTOHSCROLL)
  323.         GUICtrlSetLimit(-1, 100, 0)
  324.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  325.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  326.  
  327.         Local Const $idButtonApply_WM = GUICtrlCreateButton("Apply", 655, 670, 75, 25)
  328.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  329.         GUICtrlSetTip(-1, "Apply current settings to image")
  330.         GUICtrlSetState(-1, $GUI_DISABLE)
  331.         Local Const $hButtonApply_WM = GUICtrlGetHandle($idButtonApply_WM)
  332.         Local Const $sButtonApplyNN = _WinAPI_GetClassName($hButtonApply_WM) & _GetNN($hButtonApply_WM)
  333.         $idButtonLoadImage_WM = GUICtrlCreateButton("Load Image", 16, 670, 75, 25)
  334.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  335.         GUICtrlSetTip(-1, "Load a GDI+ compatible image")
  336.         Local Const $hButtonLoadImage_WM = GUICtrlGetHandle($idButtonLoadImage_WM)
  337.         Local Const $sButtonLoadImageNN = _WinAPI_GetClassName($hButtonLoadImage_WM) & _GetNN($hButtonLoadImage_WM)
  338.         Local Const $idButtonUndo_WM = GUICtrlCreateButton("Undo", 740, 670, 75, 25)
  339.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  340.         GUICtrlSetTip(-1, "Undo made last change")
  341.         GUICtrlSetState(-1, $GUI_DISABLE)
  342.         Local Const $hButtonUndo_WM = GUICtrlGetHandle($idButtonUndo_WM)
  343.         Local Const $sButtonUndoNN = _WinAPI_GetClassName($hButtonUndo_WM) & _GetNN($hButtonUndo_WM)
  344.         $idButtonSaveImage_WM = GUICtrlCreateButton("Save", 825, 670, 75, 25)
  345.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  346.         GUICtrlSetTip(-1, "Save current image")
  347.         GUICtrlSetState(-1, $GUI_DISABLE)
  348.         Local Const $hButtonSaveImage_WM = GUICtrlGetHandle($idButtonSaveImage_WM)
  349.         Local Const $sButtonSaveImageNN = _WinAPI_GetClassName($hButtonSaveImage_WM) & _GetNN($hButtonSaveImage_WM)
  350.         Local Const $idButtonExit_WM = GUICtrlCreateButton("Exit", 908, 660, 36, 36, $BS_ICON)
  351.         _GUICtrlButton_SetImage($idButtonExit_WM, "shell32.dll", 27, True)
  352.         GUICtrlSetTip(-1, "Close program")
  353.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman")
  354.         Local Const $hButtonExit_WM = GUICtrlGetHandle($idButtonExit_WM)
  355.         Local Const $sButtonExitNN = _WinAPI_GetClassName($hButtonExit_WM) & _GetNN($hButtonExit_WM)
  356.         $idSliderAdjY_WM = GUICtrlCreateSlider($iW_Grp_WM + 16, 172, 30, $iH_Pic_WM + 44, $TBS_VERT + $TBS_AUTOTICKS + $TBS_LEFT)
  357.         GUICtrlSetData(-1, 0)
  358.         GUICtrlSetLimit(-1, 0, 0)
  359.         GUICtrlSetTip(-1, "Adjust text position on y axis")
  360.         GUICtrlSetState(-1, $GUI_DISABLE)
  361.         $hSliderAdjY_WM = GUICtrlGetHandle($idSliderAdjY_WM)
  362.         $idSliderAdjX_WM = GUICtrlCreateSlider(8, 645, $iW_Grp_WM + 16, 22, $TBS_AUTOTICKS)
  363.         GUICtrlSetData(-1, 0)
  364.         GUICtrlSetLimit(-1, 0, 0)
  365.         GUICtrlSetTip(-1, "Adjust text position on x axis")
  366.         GUICtrlSetState(-1, $GUI_DISABLE)
  367.         $hSliderAdjX_WM = GUICtrlGetHandle($idSliderAdjX_WM)
  368.         Local Const $idLabelImgFN = GUICtrlCreateLabel("File: ", 100, 675, 25)
  369.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 5)
  370.         Local Const $iLIN_Width = 260
  371.         Local Const $iLIN_Height = 20
  372.         Local Const $sLIN_Font = "Times New Roman"
  373.         Local Const $sLIN_FontSize = 10
  374.         Local Const $idLabelImgName = GUICtrlCreateLabel(" -", 128, 675, $iLIN_Width, $iLIN_Height, $SS_LEFTNOWORDWRAP)
  375.         GUICtrlSetFont(-1, $sLIN_FontSize, 400, 0, $sLIN_Font, 5)
  376.         GUICtrlSetColor(-1, 0x000080)
  377.         Local Const $idLabelImgDim = GUICtrlCreateLabel("Image Dimension: ", 395, 675, 98)
  378.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 5)
  379.         $idLabelImgDimSize = GUICtrlCreateLabel("0 x 0 ", 495, 675, 70)
  380.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 5)
  381.         GUICtrlSetColor(-1, 0x000080)
  382.         Local Const $idButtonMore_WM = GUICtrlCreateButton("More", 570, 670, 75, 25)
  383.         GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 5)
  384.         Local Const $hButtonMore_WM = GUICtrlGetHandle($idButtonMore_WM)
  385.         Local Const $sButtonMoreNN = _WinAPI_GetClassName($hButtonMore_WM) & _GetNN($hButtonMore_WM)
  386.         Local Const $hMenu_More_WM = _GUICtrlMenu_CreatePopup()
  387.         _GUICtrlMenu_InsertMenuItem($hMenu_More_WM, 0, "Resize Image", $idResize_WM)
  388.         _GUICtrlMenu_SetItemDisabled($hMenu_More_WM, 0)
  389.         $idDummy_Resize = GUICtrlCreateDummy()
  390.         Local Const $hBMP_Resize_WM = _GDIPlus_BitmapCreateFromMemory(_Resize_Icon(), True)
  391.         _GUICtrlMenu_SetItemBmp($hMenu_More_WM, 0, $hBMP_Resize_WM)
  392.         _GUICtrlMenu_InsertMenuItem($hMenu_More_WM, 1, "", 0)
  393.         _GUICtrlMenu_InsertMenuItem($hMenu_More_WM, 2, "Put image to clipboard", $idClipboard_WM)
  394.         _GUICtrlMenu_SetItemDisabled($hMenu_More_WM, 2)
  395.         Local $hTmp = _GUICtrlMenu_CreateBitmap(@SystemDir & "\Shell32.dll", 260)
  396.         $hTmp = _GDIPlus_BitmapCreateFromHBITMAP($hTmp)
  397.         Local $hBMP_Clipboard = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU)
  398.         _GUICtrlMenu_SetItemBmp($hMenu_More_WM, 2, $hBMP_Clipboard)
  399.         _GDIPlus_BitmapDispose($hTmp)
  400.         $idDummy_Clipboard = GUICtrlCreateDummy()
  401.         _GUICtrlMenu_InsertMenuItem($hMenu_More_WM, 3, "", 0)
  402.         _GUICtrlMenu_InsertMenuItem($hMenu_More_WM, 4, "Batch Conversion", $idBatch_WM)
  403.         _GUICtrlMenu_SetItemDisabled($hMenu_More_WM, 4)
  404.         $hTmp = _GDIPlus_BitmapCreateFromMemory(_BatchConvert_Icon())
  405.         Local $hBMP_Batch_WM = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU)
  406.         _GUICtrlMenu_SetItemBmp($hMenu_More_WM, 4, $hBMP_Batch_WM)
  407.         _GDIPlus_BitmapDispose($hTmp)
  408.         $idDummy_Batch = GUICtrlCreateDummy()
  409.  
  410. ;~      DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hGUI_WM, "int",  200, "int", $AW_BLEND)
  411. ;~      DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", $hGUI_WM, "wstr", "", "wstr", "")
  412.  
  413.         Local $hSysMenu_WM = _GUICtrlMenu_GetSystemMenu(HWnd($hGUI_WM))
  414.         _GUICtrlMenu_AppendMenu($hSysMenu_WM, $MF_SEPARATOR, 0, 0)
  415.         _GUICtrlMenu_AppendMenu($hSysMenu_WM, $MF_STRING, $id_ChkUpd, "Check for updates")
  416.         _GUICtrlMenu_AppendMenu($hSysMenu_WM, $MF_STRING, $id_VisitWeb, "Visit Web Site")
  417.         _GUICtrlMenu_AppendMenu($hSysMenu_WM, $MF_STRING, $id_About, "About")
  418.         Local $hBMP_ChkUpd_WM = _GUICtrlMenu_CreateBitmap(@SystemDir & "\Shell32.dll", 13)
  419.         _GUICtrlMenu_SetItemBmp($hSysMenu_WM, 8, $hBMP_ChkUpd_WM)
  420.  
  421.         $hTmp = _GDIPlus_BitmapCreateFromMemory(_Visit_BMP())
  422.         Local $hBMP_VisitWeb_WM = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU)
  423.         _GUICtrlMenu_SetItemBmp($hSysMenu_WM, 9, $hBMP_VisitWeb_WM)
  424.         _GDIPlus_BitmapDispose($hTmp)
  425.  
  426.         $hTmp = _GDIPlus_BitmapCreateFromMemory(_Info_BMP())
  427.         Local $hBMP_About_WM = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU)
  428.         _GDIPlus_BitmapDispose($hTmp)
  429.         _GUICtrlMenu_SetItemBmp($hSysMenu_WM, 10, $hBMP_About_WM)
  430.  
  431.         $idDummy_WinResized = GUICtrlCreateDummy()
  432.         GUISetState(@SW_SHOW, $hGUI_WM)
  433.         #endregion GUI
  434.  
  435.         Local $aWinPos = WinGetPos($hGUI_WM)
  436.         $iGUI_MinW = $aWinPos[2]
  437.         $iGUI_MinH = $aWinPos[3]
  438.         Local $aPos, $hCtx_Stamp, $hHBitmap_Stamp, $hB, $hBitmap_Stamp_w, $hBitmap_Stamp_h, $w, $h, $f, $iFS, $hCtx_WM_BMP, $fAccel, $iMsgBox, $sFolderBatch
  439.         Local $iSaveColor_WM = $iColorFont_WM, $iColorFont_Current_WM = $iColorFont_WM
  440.         Local $b1stRun = True, $sFilename_WM, $aButton, $iBtnPosX, $iBtnPosY, $sFn, $aMPos, $iOPosX, $iOPosY, $t, $iTimer, $iTimerCloseTT, $iBlobTime, $iMRot, $iODeg, $aCtrlSize
  441.  
  442.         Local Const $hBITMAP_Logo_WM = _GDIPlus_BitmapCreateFromMemory(_W_Logo()), $iW_Logo = _GDIPlus_ImageGetWidth($hBITMAP_Logo_WM), $iH_Logo = _GDIPlus_ImageGetHeight($hBITMAP_Logo_WM)
  443.         _GDIPlus_ImageRotateFlip($hBITMAP_Logo_WM, 6)
  444.         Local Const $hHBITMAP_Logo_WM = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBITMAP_Logo_WM)
  445.         _GDIPlus_BitmapDispose($hBITMAP_Logo_WM)
  446. ;~      $hB = GUICtrlSendMsg($idPicLogo_WM, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBITMAP_Logo_WM)
  447. ;~      If $hB Then _WinAPI_DeleteObject($hB)
  448.         Local Const $iWaterRadius = 5, $iWaterHeight = 50
  449.         If Not FileExists(@ScriptDir & "\WaterCtrl.dll") Then _WaterCtrl(True)
  450.         Local Const $hWaterDll = DllOpen(@ScriptDir & "\WaterCtrl.dll")
  451.         DllCall($hWaterDll, 'int', 'enablewater', 'hwnd', $hGUI_WM, 'int', $iW_Grp_WM + 32, 'int', 14, 'hwnd', $hHBITMAP_Logo_WM, 'int', $iWaterRadius, 'int', $iWaterHeight)
  452.  
  453.  
  454.         Local $aCID[6] = [$idSliderAdjX_WM, $idSliderAdjY_WM, $idSliderDegree_WM, $idSliderJPGQual_WM, $idSliderOpaque_WM, $idSliderRadius_WM] ; Place multiple ControlIDs in an array
  455.         _NoFocusLines_Set($aCID)
  456.  
  457.         Local $iMemX = 0, $iMemY = 0, $hBmp_tmp, $iGUIGetMsg
  458.         GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_WM")
  459.         GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_WM")
  460.         GUIRegisterMsg($WM_SIZE, "WM_SIZE_WM")
  461.         GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO_WM")
  462.         GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND_WM")
  463.  
  464.         ;$sInputFSizeNN, $sInputOpaqueNN, $sInputDegreeNN, $sInputRadiusNN
  465.         $iTimer = TimerInit()
  466.         $iBlobTime = Random(60000, 300000, 1)
  467.         While 1
  468.                 If TimerDiff($iTimer) > $iBlobTime Then
  469.                         DllCall($hWaterDll, 'int', 'waterblob', 'int', Random($iW_Logo * 0.25, $iW_Logo * 0.75, 1), 'int', Random($iH_Logo * 0.25, $iH_Logo * 0.75, 1), 'int', $iWaterRadius, 'int', $iWaterHeight * 20)
  470.                         $iTimer = TimerInit()
  471.                         $iBlobTime = Random(60000, 300000, 1)
  472.                 EndIf
  473.                 $iGUIGetMsg = GUIGetMsg()
  474.                 Switch $iGUIGetMsg
  475.                         Case $idButtonLoadImage_WM
  476.                                 If ControlGetFocus($hGUI_WM) <> $sButtonLoadImageNN Then ContinueCase
  477.                                 If (Not $bDnD) And (Not $bResize) Then $sFileImage_WM = FileOpenDialog("Select an image", "", "Images (*.jpg;*.bmp;*png;*gif;*tif)", 3, "", $hGUI_WM)
  478.                                 If (Not @error) Or $bDnD Or $bResize Then
  479.                                         If Not $bResize Then
  480.                                                 If $hBmp Then _GDIPlus_BitmapDispose($hBmp)
  481.                                                 $hBmp_tmp = _GDIPlus_BitmapCreateFromFile($sFileImage_WM)
  482.                                                 If @error Then ContinueCase
  483.                                                 $bW = _GDIPlus_ImageGetWidth($hBmp_tmp)
  484.                                                 $bH = _GDIPlus_ImageGetHeight($hBmp_tmp)
  485.                                                 $hBmp = _GDIPlus_BitmapClone($hBmp_tmp, $bW, $bH)
  486.                                                 _GDIPlus_BitmapDispose($hBmp_tmp)
  487.                                         EndIf
  488.                                         If Not $b1stRun Then
  489.                                                 _GDIPlus_GraphicsDispose($hGraphic_WM)
  490.                                                 _WinAPI_SelectObject($hDC_backbuffer_WM, $DC_obj_WM)
  491.                                                 _WinAPI_DeleteObject($hBitmap_Preview_WM)
  492.                                                 _WinAPI_ReleaseDC($hPicPreview_WM, $hDC_WM)
  493. ;~                                                      _WinAPI_DeleteDC($hDC_backbuffer_WM)
  494.                                                 _WinAPI_DeleteDC($hDC_WM)
  495.                                         EndIf
  496.                                         $hBitmap_Preview_WM = _WinAPI_CreateDIB($iW_Pic_WM, $iH_Pic_WM)
  497.                                         $hDC_WM = _WinAPI_GetWindowDC($hPicPreview_WM)
  498.                                         $hDC_backbuffer_WM = _WinAPI_CreateCompatibleDC($hDC_WM)
  499.                                         $DC_obj_WM = _WinAPI_SelectObject($hDC_backbuffer_WM, $hBitmap_Preview_WM)
  500.                                         $hGraphic_WM = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer_WM)
  501.                                         _GDIPlus_GraphicsClear($hGraphic_WM, 0xFF000000 + $iGUI_WM_color)
  502.                                         GUICtrlSetState($idButtonSaveImage_WM, $GUI_DISABLE)
  503.                                         If $b1stRun Then
  504.                                                 GUICtrlSetState($idInputText_WM, $GUI_ENABLE)
  505.                                                 GUICtrlSetState($idComboFont_WM, $GUI_ENABLE)
  506.                                                 GUICtrlSetState($idInputFSize_WM, $GUI_ENABLE)
  507.                                                 GUICtrlSetState($idUpdown_WM, $GUI_ENABLE)
  508.                                                 GUICtrlSetState($idButtonColor_WM, $GUI_ENABLE)
  509.                                                 GUICtrlSetState($hPicStampPreview_WM, $GUI_ENABLE)
  510.                                                 GUICtrlSetState($idSliderOpaque_WM, $GUI_ENABLE)
  511.                                                 GUICtrlSetState($idInputOpaque_WM, $GUI_ENABLE)
  512.                                                 GUICtrlSetState($idRadioUpperLeft_WM, $GUI_ENABLE)
  513.                                                 GUICtrlSetState($idRadioUpperMid_WM, $GUI_ENABLE)
  514.                                                 GUICtrlSetState($idRadioUpperRight_WM, $GUI_ENABLE)
  515.                                                 GUICtrlSetState($idRadioMidRight_WM, $GUI_ENABLE)
  516.                                                 GUICtrlSetState($idRadioCenter_WM, $GUI_ENABLE)
  517.                                                 GUICtrlSetState($idRadioMidLeft_WM, $GUI_ENABLE)
  518.                                                 GUICtrlSetState($idRadioButtomRight_WM, $GUI_ENABLE)
  519.                                                 GUICtrlSetState($idRadioButtomMid_WM, $GUI_ENABLE)
  520.                                                 GUICtrlSetState($idRadioButtomLeft_WM, $GUI_ENABLE)
  521.                                                 GUICtrlSetState($idSliderDegree_WM, $GUI_ENABLE)
  522.                                                 GUICtrlSetState($idInputDegree_WM, $GUI_ENABLE)
  523.                                                 GUICtrlSetState($idCheckboxCircular_WM, $GUI_ENABLE)
  524.                                                 GUICtrlSetState($idRadioColor_WM, $GUI_ENABLE)
  525.                                                 GUICtrlSetState($idButtonApply_WM, $GUI_ENABLE)
  526.                                                 GUICtrlSetState($idInputJPGQual_WM, $GUI_ENABLE)
  527.                                                 GUICtrlSetState($idSliderJPGQual_WM, $GUI_ENABLE)
  528.                                                 GUICtrlSetState($idRadioTxtFXOutline_WM, $GUI_ENABLE)
  529.                                                 GUICtrlSetState($idRadioTxtFXOutlineFilled_WM, $GUI_ENABLE)
  530.                                                 GUICtrlSetState($idRadioTxtFXEmbossed_WM, $GUI_ENABLE)
  531.                                                 GUICtrlSetState($idSliderAdjX_WM, $GUI_ENABLE)
  532.                                                 GUICtrlSetState($idSliderAdjY_WM, $GUI_ENABLE)
  533.                                                 GUICtrlSetState($idButtonLoadFont_WM, $GUI_ENABLE)
  534.                                                 _GUICtrlMenu_SetItemEnabled($hMenu_More_WM, 0)
  535.                                                 _GUICtrlMenu_SetItemEnabled($hMenu_More_WM, 2)
  536. ;~                                              _GUICtrlMenu_SetItemEnabled($hMenu_More_WM, 4)
  537.                                                 GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL_WM")
  538.                                                 GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL_WM")
  539.  
  540.                                                 If @OSBuild < 6000 Or (Not $bAero) Then
  541.                                                         GUIRegisterMsg($WM_PAINT, "WM_REDRAW_WM")
  542.                                                 Else
  543.                                                         GUIRegisterMsg($WM_NCPAINT, "WM_REDRAW_WM")
  544. ;~                                                      GUIRegisterMsg($WM_ERASEBKGND, "WM_REDRAW_WM")
  545.                                                         GUIRegisterMsg($WM_PAINT, "WM_REDRAW_WM")
  546.                                                 EndIf
  547.                                                 $b1stRun = False
  548.                                         EndIf
  549.                                         ConsoleWrite($bUndo & @LF)
  550.                                         If Not $bUndo Then
  551.                                                 $iFS = Max(Ceiling(0.5 * $bW / StringLen(GUICtrlRead($idInputText_WM))), $iMinFontSize_WM)
  552.                                                 GUICtrlSetData($idInputFSize_WM, $iFS)
  553.                                                 GUICtrlSetData($idInputRadius_WM, Min($iRadius_Max_WM, $iFS * 3))
  554.                                         EndIf
  555.                                         $sFn = StringRegExpReplace($sFileImage_WM, ".*\\(.*\..*)\s*", "$1")
  556.                                         GUICtrlSetData($idLabelImgName, $sFn)
  557.                                         GUICtrlSetData($idLabelImgDimSize, $bW & " x " & $bH)
  558.                                         If $bResize Then GUICtrlSetState($idButtonSaveImage_WM, $GUI_ENABLE)
  559.                                         GUICtrlSetLimit($idSliderAdjX_WM, $bW, -$bW)
  560.                                         GUICtrlSetLimit($idSliderAdjY_WM, $bH, -$bH)
  561.                                         GUICtrlSetData($idSliderAdjX_WM, 0)
  562.                                         GUICtrlSetData($idSliderAdjY_WM, 0)
  563.                                         UpdatePreview_WM()
  564.                                         $bDnD = False
  565.                                         $bResize = False
  566.                                         $iMemX = 0
  567.                                         $iMemY = 0
  568.                                         $fAccel = Max(1, Min(7, ($bW * $bH) / (2.5 * 307200)))
  569.                                         $t = TimerInit()
  570.                                 EndIf
  571.  
  572.                         Case $idButtonApply_WM
  573.                                 If ControlGetFocus($hGUI_WM) <> $sButtonApplyNN Then ContinueCase
  574.                                 $bUndo = False
  575.                                 If $hBitmapUndo_WM Then _GDIPlus_BitmapDispose($hBitmapUndo_WM)
  576.                                 $hBitmapUndo_WM = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
  577.                                 $hCtx_WM_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
  578.                                 _GDIPlus_GraphicsDrawImageRect($hCtx_WM_BMP, $hBitmap_WM, 0, 0, $bW, $bH)
  579.                                 _GDIPlus_GraphicsDispose($hCtx_WM_BMP)
  580.                                 DllCall("gdi32.dll", "bool", "BitBlt", "handle", $hDC_WM, "int", 0, "int", 0, "int", $iW_Pic_WM, "int", $iH_Pic_WM, "handle", $hDC_backbuffer_WM, "int", 0, "int", 0, "dword", $SRCCOPY)
  581.                                 GUICtrlSetState($idButtonSaveImage_WM, $GUI_ENABLE)
  582.                                 GUICtrlSetBkColor($idButtonApply_WM, 0x00FF00)
  583.                                 Sleep(200)
  584.                                 GUICtrlSetStyle($idButtonApply_WM, 0)
  585.                                 GUICtrlSetState($idButtonUndo_WM, $GUI_ENABLE)
  586.                         Case $idButtonUndo_WM
  587.                                 If ControlGetFocus($hGUI_WM) <> $sButtonUndoNN Then ContinueCase
  588.                                 _GDIPlus_BitmapDispose($hBmp)
  589.                                 $bW = _GDIPlus_ImageGetWidth($hBitmapUndo_WM)
  590.                                 $bH = _GDIPlus_ImageGetHeight($hBitmapUndo_WM)
  591.                                 $hBmp = _GDIPlus_BitmapClone($hBitmapUndo_WM, $bW, $bH)
  592.                                 $bResize = True
  593.                                 $bUndo = True
  594.                                 GUICtrlSetLimit($idSliderAdjX_WM, $bW, -$bW)
  595.                                 GUICtrlSetLimit($idSliderAdjY_WM, $bH, -$bH)
  596.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  597.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  598.                                 GUICtrlSendMsg($idButtonLoadImage_WM, $BM_CLICK, 0, 0)
  599.                                 GUICtrlSetState($idButtonUndo_WM, $GUI_DISABLE)
  600.                         Case $idButtonColor_WM
  601.                                 If ControlGetFocus($hGUI_WM) <> $sButtonColorNN Then ContinueCase
  602.                                 $iSaveColor_WM = $iColorFont_WM
  603.                                 $iColorFont_WM = _ChooseColor(2, $iColorFont_WM, 2, HWnd($hGUI_WM))
  604.                                 If Not @error Then
  605.                                         GUICtrlSetBkColor($idButtonColor_WM, $iColorFont_WM)
  606.                                         UpdatePreview_WM()
  607.                                         If BitAND(GUICtrlRead($idRadioTxtFXEmbossed_WM), $GUI_CHECKED) = $GUI_CHECKED Then
  608.                                                 $iColorFont_Embossed_WM = $iColorFont_WM
  609.                                         Else
  610.                                                 $iColorFont_Current_WM = $iColorFont_WM
  611.                                         EndIf
  612.                                 Else
  613.                                         $iColorFont_WM = $iSaveColor_WM
  614.                                 EndIf
  615.                         Case $idButtonTPColor_WM
  616.                                 If ControlGetFocus($hGUI_WM) <> $sButtonTPColorNN Then ContinueCase
  617.                                 $iSaveColor_WM = $iColorImgTP_WM
  618.                                 $iColorImgTP_WM = _ChooseColor(2, $iColorImgTP_WM, 2, HWnd($hGUI_WM))
  619.                                 If Not @error Then
  620.                                         GUICtrlSetBkColor($idButtonTPColor_WM, $iColorImgTP_WM)
  621.                                 Else
  622.                                         $iColorImgTP_WM = $iSaveColor_WM
  623.                                 EndIf
  624.                         Case $idButtonSaveImage_WM
  625.                                 If ControlGetFocus($hGUI_WM) <> $sButtonSaveImageNN Then ContinueCase
  626.                                 $sFilename_WM = FileSaveDialog("Save Image", "", "Images (*.jpg;*.bmp;*png;*gif;*tif)", 2, "", $hGUI_WM)
  627.                                 If @error Then ContinueCase
  628.                                 If _GDIPlus_SaveBitmap($sFilename_WM, $hGUI_WM, False, False, $iColorImgTP_WM) Then GUICtrlSetData($idInputSavePath_WM, $sFilename_WM)
  629.                         Case $idButtonMore_WM
  630.                                 If ControlGetFocus($hGUI_WM) <> $sButtonMoreNN Then ContinueCase
  631.                                 $aButton = ControlGetPos("", "", $idButtonMore_WM)
  632.                                 $iBtnPosX = $aButton[0]
  633.                                 $iBtnPosY = $aButton[1] + $aButton[3]
  634.                                 _WinAPI_Client2Screen($hGUI_WM, $iBtnPosX, $iBtnPosY)
  635.                                 _GUICtrlMenu_TrackPopupMenu($hMenu_More_WM, $hGUI_WM, $iBtnPosX, $iBtnPosY)
  636.                         Case $idButtonLoadFont_WM
  637.                                 If ControlGetFocus($hGUI_WM) <> $sButtonLoadFontNN Then ContinueCase
  638.                                 $sFileFont = FileOpenDialog("Select a TrueType Font (TTF)", "", "Fonts (*.TTF)", 3, "", $hGUI_WM)
  639.                                 If Not @error Then
  640.                                         $bFontMan = True
  641.                                         Local $hFile = _WinAPI_CreateFile($sFileFont, 2, 2, 2)
  642.                                         If $hFile = 0 Then ContinueCase
  643.                                         Local $lFile = FileGetSize($sFileFont)
  644.                                         Local $tBuffer = DllStructCreate("byte[" & $lFile + 1 & "]")
  645.                                         Local $pBuffer = DllStructGetPtr($tBuffer), $iFile
  646.                                         _WinAPI_ReadFile($hFile, $pBuffer, $lFile, $iFile)
  647.                                         _WinAPI_CloseHandle($hFile)
  648.                                         $sFileFontName = _GetFontInfoFromFilePtr($pBuffer)
  649.                                         If StringInStr($sAddFonts, $sFileFontName) Then
  650.                                                 MsgBox(64 + 262144, "Informatio", "Font: " & $sFileFontName & @CRLF & _
  651.                                                                 "File: " & $sFileFont & @CRLF & @CRLF & _
  652.                                                                 "Font was already added - skipping!", 10)
  653.                                         Else
  654.                                                 DllCall($__g_hGDIPDll, 'int', 'GdipPrivateAddFontFile', 'ptr', $hCollection_WM, 'wstr', $sFileFont)
  655.                                                 GUICtrlSetData($idComboFont_WM, $sFileFontName, $sFileFontName)
  656.                                                 $sAddFonts &= $sFileFontName & ","
  657.                                                 UpdatePreview_WM()
  658.                                         EndIf
  659.                                 EndIf
  660.                         Case $idInputDegree_WM, $idInputFSize_WM, $idInputOpaque_WM, $idInputRadius_WM, $idComboFont_WM
  661.                                 GUICtrlSetData($idInputDegree_WM, Max(Min(Int(GUICtrlRead($idInputDegree_WM)), $iDegree_Max_WM), $iDegree_Min_WM))
  662.                                 GUICtrlSetData($idSliderDegree_WM, GUICtrlRead($idInputDegree_WM))
  663.                                 GUICtrlSetData($idInputOpaque_WM, Max(Min(Int(GUICtrlRead($idInputOpaque_WM)), $iOpaque_Max_WM), $iOpaque_Min_WM))
  664.                                 GUICtrlSetData($idSliderOpaque_WM, GUICtrlRead($idInputOpaque_WM))
  665.                                 GUICtrlSetData($idInputRadius_WM, Max(Min(Int(GUICtrlRead($idInputRadius_WM)), $iRadius_Max_WM), $iRadius_Min_WM))
  666.                                 GUICtrlSetData($idSliderRadius_WM, GUICtrlRead($idInputRadius_WM))
  667.                                 If StringInStr($sAddFonts, GUICtrlRead($idComboFont_WM)) Then
  668.                                         $bFontMan = True
  669.                                 Else
  670.                                         $bFontMan = False
  671.                                 EndIf
  672.                                 UpdatePreview_WM()
  673.                         Case $idInputJPGQual_WM
  674.                                 If GUICtrlRead($idInputJPGQual_WM) > 100 Then GUICtrlSetData($idInputJPGQual_WM, 100)
  675.                                 GUICtrlSetData($idSliderJPGQual_WM, GUICtrlRead($idInputJPGQual_WM))
  676.                         Case $idInputText_WM
  677.                                 If ControlGetFocus($hGUI_WM) <> $sInputTextNN Then ContinueCase
  678.                                 If StringLen(GUICtrlRead($idInputText_WM)) > 0 And Not $bStamp_WM Then UpdatePreview_WM()
  679.                         Case $GUI_EVENT_CLOSE, $idButtonExit_WM
  680.                                 If $iGUIGetMsg <> $GUI_EVENT_CLOSE And ControlGetFocus($hGUI_WM) <> $sButtonExitNN Then ContinueCase
  681.                                 GUIRegisterMsg($WM_SIZE, "")
  682.                                 GUIRegisterMsg($WM_GETMINMAXINFO, "")
  683.                                 GUIRegisterMsg($WM_COMMAND, "")
  684.                                 GUIRegisterMsg($WM_VSCROLL, "")
  685.                                 GUIRegisterMsg($WM_HSCROLL, "")
  686.                                 GUIRegisterMsg($WM_PAINT, "")
  687.                                 GUIRegisterMsg($WM_DROPFILES, "")
  688.                                 ;GUIRegisterMsg($WM_ERASEBKGND, "")
  689.                                 GUIRegisterMsg($WM_NCPAINT, "")
  690.                                 GUIRegisterMsg($WM_SYSCOMMAND, "")
  691.                                 DllCall("user32.dll", "int", "AnimateWindow", "hwnd", HWnd($hGUI_WM), "int", 200, "int", $AW_BLEND + $AW_HIDE)
  692.                                 _GUICtrlMenu_DestroyMenu($hMenu_More_WM)
  693.                                 _WinAPI_DeleteObject($hHBITMAP_Logo_WM)
  694.                                 _WinAPI_DeleteObject($hBMP_Resize_WM)
  695.                                 _WinAPI_DeleteObject($hBMP_ChkUpd_WM)
  696.                                 _WinAPI_DeleteObject($hBMP_VisitWeb_WM)
  697.                                 _WinAPI_DeleteObject($hBMP_About_WM)
  698.                                 _WinAPI_DeleteObject($hBMP_Clipboard)
  699.                                 _WinAPI_DeleteObject($hBMP_Batch_WM)
  700.                                 _GDIPlus_ImageAttributesDispose($hAttribute_Alpha)
  701.                                 If Not $b1stRun Then
  702.                                         If $hBitmapStamp_WM Then _GDIPlus_BitmapDispose($hBitmapStamp_WM)
  703.                                         _GDIPlus_BitmapDispose($hBmp_Preview_WM)
  704.                                         _GDIPlus_BitmapDispose($hBitmap_WM)
  705.                                         _GDIPlus_GraphicsDispose($hGraphic_WM)
  706.                                         _WinAPI_SelectObject($hDC_backbuffer_WM, $DC_obj_WM)
  707.                                         _WinAPI_DeleteObject($hBitmap_Preview_WM)
  708.                                         _WinAPI_ReleaseDC($hPicPreview_WM, $hDC_WM)
  709.                                 EndIf
  710.                                 GUIDelete($hGUI_WM)
  711.                                 DllCall($hWaterDll, 'int', 'disablewater')
  712.                                 DllClose($hWaterDll)
  713.                                 _Exit()
  714.                         Case $GUI_EVENT_RESTORE
  715.                                 If $bAero Then
  716.                                         CopyImageGfx($hBmp_Preview_WM)
  717.                                 Else
  718.                                         DllCall("gdi32.dll", "bool", "BitBlt", "handle", $hDC_WM, "int", 0, "int", 0, "int", $bW, "int", $bH, "handle", $hDC_backbuffer_WM, "int", 0, "int", 0, "dword", $SRCCOPY)
  719.                                 EndIf
  720.                         Case $hPicStampPreview_WM
  721.                                 $sFileImage_WM = FileOpenDialog("Select an image", "", "Images (*.jpg;*.bmp;*png;*gif;*tif)", 3, "", $hGUI_WM)
  722.                                 If Not @error Then
  723.                                         GUIRegisterMsg($WM_VSCROLL, "")
  724.                                         GUIRegisterMsg($WM_HSCROLL, "")
  725.                                         GUICtrlSetState($idRadioImagePreview_WM, $GUI_CHECKED)
  726.                                         GUICtrlSetState($idRadioImagePreview_WM, $GUI_ENABLE)
  727.                                         If $hBitmapStamp_WM Then _GDIPlus_BitmapDispose($hBitmapStamp_WM)
  728.                                         $hBitmapStamp_WM = _GDIPlus_BitmapCreateFromFile($sFileImage_WM)
  729.                                         $hBitmap_Stamp_w = _GDIPlus_ImageGetWidth($hBitmapStamp_WM)
  730.                                         $hBitmap_Stamp_h = _GDIPlus_ImageGetHeight($hBitmapStamp_WM)
  731.                                         If $hBitmap_Stamp_w >= $bW Or $hBitmap_Stamp_h >= $bH Then
  732.                                                 Local $f
  733.                                                 If $hBitmap_Stamp_w >= $hBitmap_Stamp_h Then
  734.                                                         $f = $hBitmap_Stamp_w / $bW
  735.                                                 Else
  736.                                                         $f = $hBitmap_Stamp_h / $bH
  737.                                                 EndIf
  738.                                                 $hBitmap_Stamp_w = Int($hBitmap_Stamp_w / $f / 2)
  739.                                                 $hBitmap_Stamp_h = Int($hBitmap_Stamp_h / $f / 2)
  740.                                                 Local $hBitmapStamp_WM_new = _GDIPlus_BitmapClone($hBitmapStamp_WM, $hBitmap_Stamp_w, $hBitmap_Stamp_h)
  741.                                                 _GDIPlus_BitmapDispose($hBitmapStamp_WM)
  742.                                                 $hBitmapStamp_WM = $hBitmapStamp_WM_new
  743.                                         EndIf
  744.                                         GUICtrlSetLimit($idSliderDegree_WM, 400, 1)
  745.                                         GUICtrlSetData($idSliderDegree_WM, 100)
  746.                                         GUICtrlSetData($idInputDegree_WM, 100)
  747.                                         $aPos = ControlGetPos($hGUI_WM, "", $hPicStampPreview_WM)
  748.                                         $hBitmapStampPreview_WM = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $aPos[2], "int", $aPos[3], "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  749.                                         $hBitmapStampPreview_WM = $hBitmapStampPreview_WM[6]
  750.                                         $hCtx_Stamp = _GDIPlus_ImageGetGraphicsContext($hBitmapStampPreview_WM)
  751.                                         _GDIPlus_GraphicsClear($hCtx_Stamp, 0xFFF0F0F0)
  752.                                         $hB = GUICtrlSendMsg($hPicStampPreview_WM, $STM_SETIMAGE, $IMAGE_BITMAP, $hCtx_Stamp)
  753.                                         If $hB Then _WinAPI_DeleteObject($hB)
  754.                                         DllCall($__g_hGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_Stamp, "int", 7)
  755.  
  756.                                         If $hBitmap_Stamp_w < $aPos[2] And $hBitmap_Stamp_h < $aPos[3] Then
  757.                                                 _GDIPlus_GraphicsDrawImageRect($hCtx_Stamp, $hBitmapStamp_WM, ($aPos[2] - $hBitmap_Stamp_w) / 2, ($aPos[3] - $hBitmap_Stamp_h) / 2, $hBitmap_Stamp_w, $hBitmap_Stamp_h)
  758.                                         Else
  759.                                                 If $hBitmap_Stamp_w >= $hBitmap_Stamp_h Then
  760.                                                         $f = $hBitmap_Stamp_w / $aPos[2]
  761.                                                         If $hBitmap_Stamp_h / $f > $aPos[3] Then $f = $hBitmap_Stamp_w / $aPos[3]
  762.                                                 Else
  763.                                                         $f = $hBitmap_Stamp_h / $aPos[3]
  764.                                                 EndIf
  765.                                                 $w = $hBitmap_Stamp_w / $f
  766.                                                 $h = $hBitmap_Stamp_h / $f
  767.                                                 _GDIPlus_GraphicsDrawImageRect($hCtx_Stamp, $hBitmapStamp_WM, ($aPos[2] - $w) / 2, ($aPos[3] - $h) / 2, $w, $h)
  768.                                         EndIf
  769.                                         $hHBitmap_Stamp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmapStampPreview_WM)
  770.                                         $hB = GUICtrlSendMsg($hPicStampPreview_WM, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap_Stamp)
  771.                                         If $hB Then _WinAPI_DeleteObject($hB)
  772.                                         _WinAPI_DeleteObject($hHBitmap_Stamp)
  773.                                         _GDIPlus_BitmapDispose($hBitmapStampPreview_WM)
  774.                                         _GDIPlus_GraphicsDispose($hCtx_Stamp)
  775.                                         $bStamp_WM = True
  776.                                         GUICtrlSetData($idSliderAdjX_WM, 0)
  777.                                         GUICtrlSetData($idSliderAdjY_WM, 0)
  778.                                         $iAdjX_WM = 0
  779.                                         $iAdjY_WM = 0
  780.                                         GUICtrlSetState($idCheckboxFill_WM, $GUI_ENABLE)
  781.                                         GUICtrlSetState($idRadioColor_WM, $GUI_UNCHECKED)
  782.                                         UpdatePreview_WM()
  783.                                         Disable_Controls()
  784.                                         GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL_WM")
  785.                                         GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL_WM")
  786.                                 EndIf
  787.                         Case $idCheckboxCircular_WM
  788.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  789.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  790.                                 $iAdjX_WM = 0
  791.                                 $iAdjY_WM = 0
  792.                                 If BitAND(GUICtrlRead($idCheckboxCircular_WM), $GUI_CHECKED) Then
  793.                                         GUICtrlSetState($idInputRadius_WM, $GUI_ENABLE)
  794.                                         GUICtrlSetState($idSliderRadius_WM, $GUI_ENABLE)
  795.                                 Else
  796.                                         GUICtrlSetState($idInputRadius_WM, $GUI_DISABLE)
  797.                                         GUICtrlSetState($idSliderRadius_WM, $GUI_DISABLE)
  798.                                 EndIf
  799.                                 UpdatePreview_WM()
  800.                         Case $idCheckboxFill_WM
  801.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  802.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  803.                                 $iAdjX_WM = 0
  804.                                 $iAdjY_WM = 0
  805.                                 If BitAND(GUICtrlRead($idCheckboxFill_WM), $GUI_CHECKED) Then
  806.                                         $bFill = True
  807.                                 Else
  808.                                         $bFill = False
  809.                                 EndIf
  810.                                 UpdatePreview_WM()
  811.                         Case $idRadioUpperLeft_WM
  812.                                 $iPos_WM = 1
  813.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  814.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  815.                                 $iAdjX_WM = 0
  816.                                 $iAdjY_WM = 0
  817.                                 UpdatePreview_WM()
  818.                         Case $idRadioUpperMid_WM
  819.                                 $iPos_WM = 2
  820.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  821.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  822.                                 $iAdjX_WM = 0
  823.                                 $iAdjY_WM = 0
  824.                                 UpdatePreview_WM()
  825.                         Case $idRadioUpperRight_WM
  826.                                 $iPos_WM = 3
  827.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  828.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  829.                                 $iAdjX_WM = 0
  830.                                 $iAdjY_WM = 0
  831.                                 UpdatePreview_WM()
  832.                         Case $idRadioMidLeft_WM
  833.                                 $iPos_WM = 4
  834.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  835.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  836.                                 $iAdjX_WM = 0
  837.                                 $iAdjY_WM = 0
  838.                                 UpdatePreview_WM()
  839.                         Case $idRadioCenter_WM
  840.                                 $iPos_WM = 5
  841.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  842.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  843.                                 $iAdjX_WM = 0
  844.                                 $iAdjY_WM = 0
  845.                                 UpdatePreview_WM()
  846.                         Case $idRadioMidRight_WM
  847.                                 $iPos_WM = 6
  848.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  849.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  850.                                 $iAdjX_WM = 0
  851.                                 $iAdjY_WM = 0
  852.                                 UpdatePreview_WM()
  853.                         Case $idRadioButtomLeft_WM
  854.                                 $iPos_WM = 7
  855.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  856.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  857.                                 $iAdjX_WM = 0
  858.                                 $iAdjY_WM = 0
  859.                                 UpdatePreview_WM()
  860.                         Case $idRadioButtomMid_WM
  861.                                 $iPos_WM = 8
  862.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  863.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  864.                                 $iAdjX_WM = 0
  865.                                 $iAdjY_WM = 0
  866.                                 UpdatePreview_WM()
  867.                         Case $idRadioButtomRight_WM
  868.                                 $iPos_WM = 9
  869.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  870.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  871.                                 $iAdjX_WM = 0
  872.                                 $iAdjY_WM = 0
  873.                                 UpdatePreview_WM()
  874.                         Case $idRadioImagePreview_WM
  875.                                 $bStamp_WM = True
  876.                                 GUICtrlSetLimit($idSliderDegree_WM, 400, 1)
  877.                                 GUICtrlSetData($idSliderDegree_WM, 100)
  878.                                 GUICtrlSetData($idInputDegree_WM, 100)
  879.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  880.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  881.                                 $iAdjX_WM = 0
  882.                                 $iAdjY_WM = 0
  883.                                 GUICtrlSetState($idCheckboxFill_WM, $GUI_ENABLE)
  884.                                 UpdatePreview_WM()
  885.                                 Disable_Controls()
  886.                         Case $idRadioColor_WM
  887.                                 $bStamp_WM = False
  888.                                 GUICtrlSetLimit($idSliderDegree_WM, 180, -180)
  889.                                 GUICtrlSetData($idSliderDegree_WM, 0)
  890.                                 GUICtrlSetData($idInputDegree_WM, 0)
  891.                                 GUICtrlSetData($idSliderAdjX_WM, 0)
  892.                                 GUICtrlSetData($idSliderAdjY_WM, 0)
  893.                                 $iAdjX_WM = 0
  894.                                 $iAdjY_WM = 0
  895.                                 GUICtrlSetState($idCheckboxFill_WM, $GUI_DISABLE)
  896.                                 UpdatePreview_WM()
  897.                                 Enable_Controls()
  898.                         Case $idRadioTxtFXDefault_WM
  899.                                 If ControlGetFocus($hGUI_WM) <> $sRadioTxtFXDefaultNN Then ContinueCase
  900.                                 $sFX_WM = "Default"
  901.                                 $iColorFont_WM = $iColorFont_Current_WM
  902.                                 GUICtrlSetBkColor($idButtonColor_WM, $iColorFont_WM)
  903.                                 UpdatePreview_WM()
  904.                         Case $idRadioTxtFXOutline_WM
  905.                                 If ControlGetFocus($hGUI_WM) <> $sRadioTxtFXOutlineNN Then ContinueCase
  906.                                 $sFX_WM = "Outlined"
  907.                                 $iColorFont_WM = $iColorFont_Current_WM
  908.                                 GUICtrlSetBkColor($idButtonColor_WM, $iColorFont_WM)
  909.                                 UpdatePreview_WM()
  910.                         Case $idRadioTxtFXOutlineFilled_WM
  911.                                 If ControlGetFocus($hGUI_WM) <> $sRadioTxtFXOutlineFilledNN Then ContinueCase
  912.                                 $sFX_WM = "OutlinedFilled"
  913.                                 $iColorFont_WM = $iColorFont_Current_WM
  914.                                 GUICtrlSetBkColor($idButtonColor_WM, $iColorFont_WM)
  915.                                 UpdatePreview_WM()
  916.                         Case $idRadioTxtFXEmbossed_WM
  917.                                 If ControlGetFocus($hGUI_WM) <> $sRadioTxtFXEmbossedNN Then ContinueCase
  918.                                 $sFX_WM = "Embossed"
  919.                                 $iColorFont_WM = $iColorFont_Embossed_WM
  920.                                 GUICtrlSetBkColor($idButtonColor_WM, $iColorFont_WM)
  921.                                 UpdatePreview_WM()
  922.                         Case $idRadioSaveBMP_WM
  923.                                 $sSaveType = "bmp"
  924.                         Case $idRadioSaveGIF_WM
  925.                                 $sSaveType = "gif"
  926.                         Case $idRadioSaveJPG_WM
  927.                                 $sSaveType = "jpg"
  928.                         Case $idRadioSavePNG_WM
  929.                                 $sSaveType = "png"
  930.                         Case $idRadioSaveTIF_WM
  931.                                 $sSaveType = "tif"
  932.                         Case $idDummy_Resize
  933.                                 Resize_Image($hGUI_WM)
  934.                         Case $idDummy_Clipboard
  935.                                 Pic2Clipboard()
  936.                         Case $idDummy_WinResized
  937.                                 If Not $b1stRun Then
  938.                                         $aCtrlSize = ControlGetPos($hGUI_WM, "", $idPicPreview_WM) ; ratio 117:73
  939.                                         $iW_Pic_WM = $aCtrlSize[2]
  940.                                         $iH_Pic_WM = $aCtrlSize[3]
  941.                                         _GDIPlus_GraphicsDispose($hGraphic_WM)
  942.                                         _WinAPI_SelectObject($hDC_backbuffer_WM, $DC_obj_WM)
  943.                                         _WinAPI_DeleteObject($hBitmap_Preview_WM)
  944.                                         _WinAPI_ReleaseDC($hPicPreview_WM, $hDC_WM)
  945.                                         _WinAPI_DeleteDC($hDC_WM)
  946.  
  947.                                         $hBitmap_Preview_WM = _WinAPI_CreateDIB($iW_Pic_WM, $iH_Pic_WM)
  948.                                         $hDC_WM = _WinAPI_GetWindowDC($hPicPreview_WM)
  949.                                         $hDC_backbuffer_WM = _WinAPI_CreateCompatibleDC($hDC_WM)
  950.                                         $DC_obj_WM = _WinAPI_SelectObject($hDC_backbuffer_WM, $hBitmap_Preview_WM)
  951.                                         $hGraphic_WM = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer_WM)
  952.                                         _GDIPlus_GraphicsClear($hGraphic_WM, 0xFF000000 + $iGUI_WM_color)
  953.                                         $bUpdate_WM = True
  954.                                 EndIf
  955.                         Case $idDummy_Batch
  956.                                 MsgBox(64, "Information", "This feature will come soon!", 60, $hGUI_WM)
  957. ;~                              $iMsgBox = MsgBox(4 + 32 + 262144, "Question",  "Current settings will be used to watermark all images in a folder (no subfolder support yet)!" & @LF & @LF & _
  958. ;~                                                                                                                                                                                                                                                      "Continue?", 0, $hGUI_WM)
  959. ;~                              If $iMsgBox = 7 Then ContinueLoop
  960. ;~                              $sFolderBatch = FileSelectFolder("Select folder to batch convert", "", 2, "", $hGUI_WM)
  961. ;~                              If @error Then ContinueLoop
  962.                 EndSwitch
  963.  
  964.                 $aMPos = GUIGetCursorInfo($hGUI_WM)
  965.                 If ($aMPos[4] = $idPicPreview_WM) And (Not $bStoppMove) And (TimerDiff($t) > 500) Then
  966.                         If $aMPos[2] Then
  967.                                 If Not $iAdjX_WM And Not $iAdjY_WM Then
  968.                                         $iMemX = 0
  969.                                         $iMemY = 0
  970.                                 EndIf
  971.                                 $iAdjX_WM = Int(($aMPos[0] - $iOPosX) * $fAccel) + $iMemX
  972.                                 $iAdjY_WM = Int(($aMPos[1] - $iOPosY) * $fAccel) + $iMemY
  973.                                 GUICtrlSetData($idSliderAdjX_WM, $iAdjX_WM)
  974.                                 GUICtrlSetData($idSliderAdjY_WM, $iAdjY_WM)
  975.                                 $bUpdate_WM = True
  976.                         Else
  977.                                 If Not $b1stRun Then
  978.                                         $iOPosX = $aMPos[0]
  979.                                         $iOPosY = $aMPos[1]
  980.                                         $iMemX = $iAdjX_WM
  981.                                         $iMemY = $iAdjY_WM
  982.                                 EndIf
  983.                         EndIf
  984.  
  985.                         If $aMPos[3] And Not $b1stRun Then
  986.                                 $iOPosX = $aMPos[0]
  987.                                 $iODeg =  GUICtrlRead($idSliderDegree_WM)
  988.                                 Do
  989.                                         $aMPos = GUIGetCursorInfo($hGUI_WM)
  990.                                         $iMRot = Mod($aMPos[0] - $iOPosX, 180) + $iODeg
  991.                                         GUICtrlSetData($idSliderDegree_WM, $iMRot)
  992.                                         GUICtrlSetData($idInputDegree_WM, $iMRot)
  993.                                         UpdatePreview_WM()
  994.                                 Until Not $aMPos[3]
  995.                         EndIf
  996.                 EndIf
  997.  
  998.                 If $bUpdate_WM Then
  999.                         $iTimerCloseTT = TimerInit()
  1000.                         UpdatePreview_WM()
  1001.                         $bUpdate_WM = False
  1002.                 EndIf
  1003.                 If TimerDiff($iTimerCloseTT) > 500 Then ToolTip("")
  1004.         WEnd
  1005. EndFunc   ;==>Watermark
  1006.  
  1007. Func Pic2Clipboard()
  1008.         Local $hClipboard_Bitmap = _WinAPI_CopyImage(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp), 0, 0, 0, $LR_COPYDELETEORG + $LR_COPYRETURNORG)
  1009.  
  1010.         Local $err = 0, $err_txt, $hCP
  1011.         If Not _ClipBoard_Open(HWnd($hGUI_WM)) Then
  1012.                 $err = @error
  1013.                 $err_txt = "_ClipBoard_Open failed!"
  1014.         EndIf
  1015.         If Not _ClipBoard_Empty() Then
  1016.                 $err = @error
  1017.                 $err_txt = "_ClipBoard_Empty failed!"
  1018.         EndIf
  1019.          _ClipBoard_SetData("!", $CF_TEXT)
  1020.         $hCP = _ClipBoard_SetDataEx($hClipboard_Bitmap, $CF_BITMAP)
  1021.         If Not  $hCP  Or @error Then
  1022.                 $err = @error
  1023.                 $err_txt = "_ClipBoard_SetDataEx failed!"
  1024.         EndIf
  1025.         _ClipBoard_Close()
  1026.         If Not $err Then
  1027.                 MsgBox(64, "Information", "Image put to clipboard!", 10)
  1028.                 Return True
  1029.         EndIf
  1030.         MsgBox(16, "Error", "An error has occured: " & $err_txt, 10)
  1031.         Return False
  1032. EndFunc   ;==>Pic2Clipboard
  1033.  
  1034. Func Resize_Image($hWnd)
  1035.         GUIRegisterMsg($WM_COMMAND, "")
  1036.         Local Const $hGUI_WM_Resize = GUICreate("Resize Image", 306, 470, -1, -1, BitOR($WS_SYSMENU, $WS_GROUP), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hWnd)
  1037.         GUISetFont(8, 400, 0, "Arial")
  1038.         GUISetBkColor(0xFFFFFF, $hGUI_WM_Resize)
  1039.  
  1040.         Local Const $idGroup_WM_ISize = GUICtrlCreateGroup(" Image Size ", 16, 8, 273, 97)
  1041.         Local Const $idLabel_WM_Current = GUICtrlCreateLabel("Current Size:", 32, 32, 94, 22)
  1042.         GUICtrlSetFont(-1, 12, 400, 0, "Arial")
  1043.         Local Const $idLabel_WM_New = GUICtrlCreateLabel("New Size:", 32, 64, 74, 22)
  1044.         GUICtrlSetFont(-1, 12, 400, 0, "Arial")
  1045.         $idLabel_WM_SizeC = GUICtrlCreateLabel($bW & " x " & $bH & " Pixel", 134, 32, 129, 22, $SS_RIGHT)
  1046.         GUICtrlSetFont(-1, 12, 400, 0, "Arial")
  1047.         $idLabel_WM_SizeN = GUICtrlCreateLabel($bW & " x " & $bH & " Pixel", 134, 64, 129, 22, $SS_RIGHT)
  1048.         GUICtrlSetFont(-1, 12, 400, 0, "Arial")
  1049.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  1050.  
  1051.         Local Const $idGroup_WM_INSize = GUICtrlCreateGroup(" Set New Size ", 16, 120, 273, 185)
  1052.         Local Const $idLabel_WM_W1 = GUICtrlCreateLabel("Width:", 36, 146, 46, 21)
  1053.         GUICtrlSetFont(-1, 11, 400, 0, "Arial")
  1054.         $idInput_WM_W = GUICtrlCreateInput($bW, 80, 144, 49, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
  1055.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1056.         Local Const $idLabel_WM_x = GUICtrlCreateLabel("x", 144, 146, 11, 20)
  1057.         GUICtrlSetFont(-1, 10, 400, 0, "Arial")
  1058.         Local Const $idLabel_WM_H1 = GUICtrlCreateLabel(":Height", 221, 146, 49, 21)
  1059.         GUICtrlSetFont(-1, 11, 400, 0, "Arial")
  1060.         $idInput_WM_H = GUICtrlCreateInput($bH, 166, 144, 49, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
  1061.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1062.         Local Const $idLabel_WM_W2 = GUICtrlCreateLabel("Width:", 36, 183, 46, 21)
  1063.         GUICtrlSetFont(-1, 11, 400, 0, "Arial")
  1064.         $idInput_WM_WP = GUICtrlCreateInput("100", 80, 181, 35, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
  1065.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1066.         Local Const $idLabel_WM_P1 = GUICtrlCreateLabel("%", 116, 185, 15, 19)
  1067.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1068.         $idInput_WM_HP = GUICtrlCreateInput("100", 166, 181, 35, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
  1069.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1070.         Local Const $idLabel_WM_P2 = GUICtrlCreateLabel("%", 202, 185, 15, 19)
  1071.         GUICtrlSetFont(-1, 9, 400, 0, "Arial")
  1072.         Local Const $idLabel_WM_H2 = GUICtrlCreateLabel(":Height", 221, 183, 49, 21)
  1073.         GUICtrlSetFont(-1, 11, 400, 0, "Arial")
  1074.         $idChkBox_WM_AR = GUICtrlCreateCheckbox("Preserve Aspect Ration", 80, 220)
  1075.         Local Const $idButton_WM_IHalf = GUICtrlCreateButton("Half", 36, 264, 75, 25)
  1076.         GUICtrlSetFont(-1, 10, 400, 0, "Arial")
  1077.         Local Const $idButton_WM_IDouble = GUICtrlCreateButton("Double", 193, 264, 75, 25)
  1078.         GUICtrlSetFont(-1, 10, 400, 0, "Arial")
  1079.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  1080.  
  1081.         Local Const $idGroup_WM_IMethod = GUICtrlCreateGroup(" Resize Method ", 16, 320, 273, 73)
  1082.         Local Const $idCombo_IE = GUICtrlCreateCombo("", 32, 354, 241, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
  1083.         GUICtrlSetData(-1, "0 - Default interpolation mode|1 - Low-quality mode|2 - High-quality mode|3 - Bilinear interpolation|4 - Bicubic interpolation|5 - Nearest-neighbor interpolation|6 - High-quality, bilinear interpolation|7 - High-quality, bicubic interpolation", "7 - High-quality, bicubic interpolation")
  1084.         GUICtrlCreateGroup("", -99, -99, 1, 1)
  1085.  
  1086.         Local Const $idButton_WM_OK = GUICtrlCreateButton("OK", 72, 408, 75, 25)
  1087.         GUICtrlSetFont(-1, 10, 400, 0, "Arial")
  1088.         Local Const $idButton_WM_Cancel = GUICtrlCreateButton("Cancel", 160, 408, 75, 25)
  1089.         GUICtrlSetFont(-1, 10, 400, 0, "Arial")
  1090.         GUISetState(@SW_SHOW, $hGUI_WM_Resize)
  1091.         ControlFocus($hGUI_WM_Resize, "", $idButton_WM_Cancel)
  1092.         GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_WM")
  1093.  
  1094.         Local $w, $h, $maxw, $maxh, $minw, $minh
  1095.         While 1
  1096.                 Switch GUIGetMsg()
  1097.                         Case $GUI_EVENT_CLOSE, $idButton_WM_Cancel
  1098.                                 GUIDelete($hGUI_WM_Resize)
  1099.                                 Return 0
  1100.                         Case $idButton_WM_OK
  1101.                                 ExitLoop
  1102.                         Case $idButton_WM_IHalf
  1103.                                 $maxw = Round(GUICtrlRead($idInput_WM_W) / 2, 0)
  1104.                                 $maxh = Round(GUICtrlRead($idInput_WM_H) / 2, 0)
  1105.                                 If $maxw > 1 Or $maxh > 1 Then
  1106.                                         GUICtrlSetData($idInput_WM_W, $maxw)
  1107.                                         GUICtrlSetData($idInput_WM_H, $maxh)
  1108.                                         GUICtrlSetData($idInput_WM_WP, Round(GUICtrlRead($idInput_WM_W) / $bW * 100))
  1109.                                         GUICtrlSetData($idInput_WM_HP, Round(GUICtrlRead($idInput_WM_H) / $bH * 100))
  1110.                                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  1111.                                 EndIf
  1112.                         Case $idButton_WM_IDouble
  1113.                                 $minw = Round(GUICtrlRead($idInput_WM_W) * 2, 0)
  1114.                                 $minh = Round(GUICtrlRead($idInput_WM_H) * 2, 0)
  1115.                                 If $minw < 16384 Or $minh < 16384 Then
  1116.                                         GUICtrlSetData($idInput_WM_W, $minw)
  1117.                                         GUICtrlSetData($idInput_WM_H, $minh)
  1118.                                         GUICtrlSetData($idInput_WM_WP, Round(GUICtrlRead($idInput_WM_W) / $bW * 100))
  1119.                                         GUICtrlSetData($idInput_WM_HP, Round(GUICtrlRead($idInput_WM_H) / $bH * 100))
  1120.                                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  1121.                                 EndIf
  1122.                 EndSwitch
  1123.         WEnd
  1124.  
  1125.         If $hBitmapUndo_WM Then _GDIPlus_BitmapDispose($hBitmapUndo_WM)
  1126.         $hBitmapUndo_WM = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
  1127.  
  1128.         $bW = GUICtrlRead($idInput_WM_W)
  1129.         $bH = GUICtrlRead($idInput_WM_H)
  1130.         GUICtrlSetData($idLabelImgDimSize, $bW & " x " & $bH)
  1131.  
  1132.         Local $hBmp_New = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $bW, "int", $bH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1133.         $hBmp_New = $hBmp_New[6]
  1134.         Local $hCtx_WM_New = _GDIPlus_ImageGetGraphicsContext($hBmp_New)
  1135.         DllCall($__g_hGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_WM_New, "int", _SendMessage(GUICtrlGetHandle($idCombo_IE), $CB_GETCURSEL))
  1136.         _GDIPlus_GraphicsDrawImageRect($hCtx_WM_New, $hBmp, 0, 0, $bW, $bH)
  1137.         _GDIPlus_BitmapDispose($hBmp)
  1138.         _GDIPlus_GraphicsDispose($hCtx_WM_New)
  1139.         GUIDelete($hGUI_WM_Resize)
  1140.         $hBmp = $hBmp_New
  1141.         $bResize = True
  1142.         GUICtrlSetLimit($idSliderAdjX_WM, $bW, -$bW)
  1143.         GUICtrlSetLimit($idSliderAdjY_WM, $bH, -$bH)
  1144.         GUICtrlSetData($idSliderAdjX_WM, 0)
  1145.         GUICtrlSetData($idSliderAdjY_WM, 0)
  1146.         GUICtrlSendMsg($idButtonLoadImage_WM, $BM_CLICK, 0, 0)
  1147.         Return 1
  1148. EndFunc   ;==>Resize_Image
  1149.  
  1150. Func Enable_Controls()
  1151.         GUICtrlSetState($idInputText_WM, $GUI_ENABLE)
  1152.         GUICtrlSetState($idComboFont_WM, $GUI_ENABLE)
  1153.         GUICtrlSetState($idInputFSize_WM, $GUI_ENABLE)
  1154.         GUICtrlSetState($idUpdown_WM, $GUI_ENABLE)
  1155.         GUICtrlSetState($idButtonColor_WM, $GUI_ENABLE)
  1156.         GUICtrlSetState($idCheckboxCircular_WM, $GUI_ENABLE)
  1157.         If BitAND(GUICtrlRead($idCheckboxCircular_WM), $GUI_CHECKED) = $GUI_CHECKED Then
  1158.                 GUICtrlSetState($idSliderRadius_WM, $GUI_ENABLE)
  1159.                 GUICtrlSetState($idInputRadius_WM, $GUI_ENABLE)
  1160.         EndIf
  1161.         GUICtrlSetState($idRadioTxtFXDefault_WM, $GUI_ENABLE)
  1162.         GUICtrlSetState($idRadioTxtFXOutline_WM, $GUI_ENABLE)
  1163.         GUICtrlSetState($idRadioTxtFXOutlineFilled_WM, $GUI_ENABLE)
  1164.         GUICtrlSetState($idRadioTxtFXEmbossed_WM, $GUI_ENABLE)
  1165.         GUICtrlSetState($idButtonLoadFont_WM, $GUI_ENABLE)
  1166. EndFunc   ;==>Enable_Controls
  1167.  
  1168. Func Disable_Controls()
  1169.         GUICtrlSetState($idInputText_WM, $GUI_DISABLE)
  1170.         GUICtrlSetState($idComboFont_WM, $GUI_DISABLE)
  1171.         GUICtrlSetState($idInputFSize_WM, $GUI_DISABLE)
  1172.         GUICtrlSetState($idUpdown_WM, $GUI_DISABLE)
  1173.         GUICtrlSetState($idCheckboxCircular_WM, $GUI_DISABLE)
  1174.         GUICtrlSetState($idButtonColor_WM, $GUI_DISABLE)
  1175.         GUICtrlSetState($idInputRadius_WM, $GUI_DISABLE)
  1176.         GUICtrlSetState($idSliderRadius_WM, $GUI_DISABLE)
  1177.         GUICtrlSetState($idRadioTxtFXDefault_WM, $GUI_DISABLE)
  1178.         GUICtrlSetState($idRadioTxtFXOutline_WM, $GUI_DISABLE)
  1179.         GUICtrlSetState($idRadioTxtFXOutlineFilled_WM, $GUI_DISABLE)
  1180.         GUICtrlSetState($idRadioTxtFXEmbossed_WM, $GUI_DISABLE)
  1181.         GUICtrlSetState($idButtonLoadFont_WM, $GUI_DISABLE)
  1182. EndFunc   ;==>Disable_Controls
  1183.  
  1184. Func UpdatePreview_WM()
  1185.         $sText_WM = GUICtrlRead($idInputText_WM)
  1186.         If $sText_WM = "" Then Return 0
  1187.         $sFont_WM = GUICtrlRead($idComboFont_WM)
  1188.         $fAlpha_WM = GUICtrlRead($idInputOpaque_WM) / 0xFF
  1189.         $iFontSize_WM = GUICtrlRead($idInputFSize_WM)
  1190.         $iRadius_WM = GUICtrlRead($idInputRadius_WM)
  1191.         $iRotation_WM = GUICtrlRead($idInputDegree_WM)
  1192.         If $hBmp_Preview_WM Then _GDIPlus_BitmapDispose($hBmp_Preview_WM)
  1193.         $hBmp_Preview_WM = 0
  1194.         If Not $bStamp_WM Then
  1195.                 If BitAND(GUICtrlRead($idCheckboxCircular_WM), $GUI_CHECKED) Then
  1196.                         $hBmp_Preview_WM = _GDIPlus_CreateRotatedLetters($hBmp, $sText_WM, $iPos_WM, $iFontSize_WM, $iRadius_WM, $sFont_WM, $iColorFont_WM, $fAlpha_WM, $iRotation_WM, $iAdjX_WM, $iAdjY_WM, $sFileFontName)
  1197.                 Else
  1198.                         $hBmp_Preview_WM = _GDIPlus_WatermarkImage($hBmp, $sText_WM, $iManPosX, $iManPosY, $iPos_WM, $sFont_WM, $iFontSize_WM, $iRotation_WM, $iColorFont_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, True, $sFileFontName)
  1199.                 EndIf
  1200.         Else
  1201.                 $hBmp_Preview_WM = _GDIPlus_StampImage($hBmp, $hBitmapStamp_WM, $iPos_WM, $iRotation_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, $bFill)
  1202.         EndIf
  1203.         CopyImageGfx($hBmp_Preview_WM)
  1204.         Sleep(10)
  1205. EndFunc   ;==>UpdatePreview_WM
  1206.  
  1207. Func CopyImageGfx($hBmp)
  1208.         Local $w, $h, $f
  1209.         _GDIPlus_GraphicsClear($hGraphic_WM, 0xFF000000 + $iGUI_WM_color)
  1210.         If $bW < $iW_Pic_WM And $bH < $iH_Pic_WM Then
  1211.                 _GDIPlus_GraphicsDrawImageRect($hGraphic_WM, $hBmp, ($iW_Pic_WM - $bW) / 2, ($iH_Pic_WM - $bH) / 2, $bW, $bH)
  1212.         Else
  1213.                 If $bW >= $bH Then
  1214.                         $f = $bW / $iW_Pic_WM
  1215.                         If ($bH / $f) > $iH_Pic_WM Then $f = $bH / $iH_Pic_WM
  1216.                 Else
  1217.                         $f = $bH / $iH_Pic_WM
  1218.                 EndIf
  1219.                 $w = Int($bW / $f)
  1220.                 $h = Int($bH / $f)
  1221.                 _GDIPlus_GraphicsDrawImageRect($hGraphic_WM, $hBmp, ($iW_Pic_WM - $w) / 2, ($iH_Pic_WM - $h) / 2, $w, $h)
  1222.         EndIf
  1223.         DllCall("gdi32.dll", "bool", "BitBlt", "handle", $hDC_WM, "int", 0, "int", 0, "int", $iW_Pic_WM, "int", $iH_Pic_WM, "handle", $hDC_backbuffer_WM, "int", 0, "int", 0, "dword", $SRCCOPY)
  1224. EndFunc   ;==>CopyImageGfx
  1225.  
  1226. #region command line parameters
  1227. #cs
  1228.         Mandatory:
  1229.         -text "Any Text" | -bitmap <path to an image used for stamp>
  1230.         -in <path to an image which should watermarked or a folder with images>
  1231.         -out <save image name>
  1232.  
  1233.         Optional:
  1234.         -font <font name from the dropdown list. Default is Arial>
  1235.         -size <font size. If 0 then it will be calculated automatically>>
  1236.         -color <color of the font. Default is 0xFF0000>
  1237.         -fx <one of the text fx -> default, outline or embossed. Default is Default>
  1238.         -fxtype <one of the modes -> Text, Circular or Stamp. Default is Text>
  1239.         -opaque <level of opaque (1-255). Default is 92>
  1240.         -pos <fixed position (1-9). Default is 9>
  1241.         -posx <manual x position. Default is 0>
  1242.         -posy <manual y position. Default is 0>
  1243.         -angle <in text/ circular mode the angle of the text (-180 - 180) or in stamp mode resize factor)
  1244.         -circrad <radius of the circular text. If 0 then it will be calculated automatically>
  1245.         -fill <fill stamp image -> 0 or 1. Default is 0)
  1246.         -format <jpg|png|gif|bmp|tif -> jpg is default>
  1247.         -jpgqual <jpg save quality (0-100). Default is 90)
  1248.         -loadfont <path to a ttf font file>
  1249.         -tpbgcolor <background color for transparent images>
  1250.         -silent <show or supress messages in cmd mode (0 | 1). If 1 then file will be overwritten automatically!>
  1251. #ce
  1252. #endregion command line parameters
  1253. Func Cmd()
  1254.         $sFont_WM = "Arial"
  1255.         $iFontSize_WM = 0
  1256.         $iColorFont_WM = 0xFF0000
  1257.         $iColorFont_Embossed_WM = 0x000000
  1258.         $sFX_WM = "Default"
  1259.         $fAlpha_WM = 0x5C / 0xFF
  1260.         $iPos_WM = 9
  1261.         $iRotation_WM = 0
  1262.         $iRadius_WM = 0
  1263.         $sSaveType = "jpg"
  1264.         $iJPGQual_WM = 90
  1265.         $iManPosX = 0
  1266.         $iManPosY = 0
  1267.         $bFill = False
  1268.         $iColorImgTP_WM = 0x000000
  1269.  
  1270.         Local $sFX_Type = "text"
  1271.         Local $sIn, $sOut, $bSilent_run
  1272.         ;text  | bitmap                                                                                         -text "Any Text" | -bitmap "c:\stamp.jpg"
  1273.         ;file in                                                                                                                                -in "c:\Test.jpg"
  1274.         ;file out                                                                                                                       -out "c:\Test_wm.jpg"
  1275.         ;font name                                                                                                              -font "Arial"
  1276.         ;font size                                                                                                              -size "24"
  1277.         ;font color                                                                                                             -color "0xFF0000"
  1278.         ;text fx                                                                                                                                -fx "default"
  1279.         ;effect type text|circular|stamp                                -fxtype "text"
  1280.         ;opaque (1-255)                                                                                 -opaque 92
  1281.         ;position (0-9)                                                                                         -pos 9
  1282.         ;manpos x                                                                                                               -posx 40
  1283.         ;manpos y                                                                                                               -posy 80
  1284.         ;rotation (-180 - 180)                                                          -angle 0 | resize stamp bitmap (value / 100)
  1285.         ;circular radius                                                                                                -circrad 40
  1286.         ;fill                                                                                                                                           -fill 0 | 1
  1287.         ;save format                                                                                                    -format "jpg"
  1288.         ;save quality jpg                                                                                       -jpgqual 90
  1289.         ;silent run in cmd                                                                                      -silent 0 | 1
  1290.         ;load a ttf font and use it                                                     -loadfont <path to a ttf font file>
  1291.         ;bg color for transparent images                        -tpbgcolor 0x0000 - 0xFFFFFF
  1292.         If $CmdLine[0] < 2 Then
  1293.                 MsgBox(16, "Error", "Parameter Error!", 30)
  1294.                 _Exit()
  1295.         EndIf
  1296.         Local $j, $aBitmaps = -1
  1297.         For $j = 1 To UBound($CmdLine) - 1
  1298.                 Switch $CmdLine[$j]
  1299.                         Case "-text"
  1300.                                 If $j < $CmdLine[0] Then $sText_WM = $CmdLine[$j + 1]
  1301.                         Case "-bitmap"
  1302.                                 If $j < $CmdLine[0] Then
  1303.                                         If Not FileExists($CmdLine[$j + 1]) Then
  1304.                                                 MsgBox(16, "Error", "File '" & $CmdLine[$j + 1] & "' not found!", 30)
  1305.                                                 ContinueCase
  1306.                                         EndIf
  1307.                                         $hBitmapStamp_WM = _GDIPlus_BitmapCreateFromFile($CmdLine[$j + 1])
  1308.                                         If @error Then MsgBox(16, "Error", "Unable to create bitmap from file '" & $CmdLine[$j + 1] & "'!", 30)
  1309.                                 EndIf
  1310.                         Case "-in"
  1311.                                 If $j < $CmdLine[0] Then
  1312.                                         If FileGetAttrib($CmdLine[$j + 1]) = "D" Then
  1313.                                                 Local $sFilter = " *.jpg *.png *.bmp *.gif *.tif"
  1314.                                                 $aBitmaps = GetFilesFromFolder($CmdLine[$j + 1], $sFilter)
  1315.                                                 If @error Then
  1316.                                                         MsgBox(16, "Error", "Unable to get image files in '" & $CmdLine[$j + 1] & "'!", 30)
  1317.                                                         _Exit()
  1318.                                                 EndIf
  1319.                                         Else
  1320.                                                 If Not FileExists($CmdLine[$j + 1]) Then
  1321.                                                         MsgBox(16, "Error", "File '" & $CmdLine[$j + 1] & "' not found!", 30)
  1322.                                                         ContinueCase
  1323.                                                 EndIf
  1324.                                                 $sIn = $CmdLine[$j + 1]
  1325.                                                 $hBmp = _GDIPlus_BitmapCreateFromFile($CmdLine[$j + 1])
  1326.                                                 If @error Then
  1327.                                                         MsgBox(16, "Error", "Unable to create bitmap from file '" & $CmdLine[$j + 1] & "'", 30)
  1328.                                                         _Exit()
  1329.                                                 EndIf
  1330.                                         EndIf
  1331.                                 Else
  1332.                                         MsgBox(16, "Error", "Mandatory value for paramter '-in' is missing!", 30)
  1333.                                         _Exit()
  1334.                                 EndIf
  1335.                         Case "-out"
  1336.                                 If $j < $CmdLine[0] Then
  1337.                                         If Not StringRegExp($CmdLine[$j + 1], "((?<!.)([a-zA-Z]\:\\)(?!\s)(([\w-+.]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(\\?)(?!.))", 0) Then
  1338.                                                 MsgBox(16, "Error", "Invalid filename '" & $CmdLine[$j + 1] & "' for parameter -out' is entered!", 30)
  1339.                                                 _Exit()
  1340.                                         Else
  1341.                                                 $sOut = $CmdLine[$j + 1]
  1342.                                         EndIf
  1343.                                 Else
  1344.                                         MsgBox(16, "Error", "Mandatory value for paramter '-out' is missing.", 30)
  1345.                                         _Exit()
  1346.                                 EndIf
  1347.                         Case "-font"
  1348.                                 If $j < $CmdLine[0] Then
  1349.                                         If StringInStr($sFonts, $CmdLine[$j + 1]) Then $sFont_WM = $CmdLine[$j + 1]
  1350.                                 EndIf
  1351.                         Case "-size"
  1352.                                 If $j < $CmdLine[0] Then
  1353.                                         If Number($CmdLine[$j + 1]) Then
  1354.                                                 If Number($CmdLine[$j + 1]) < 512 Then $iFontSize_WM = Number($CmdLine[$j + 1])
  1355.                                         EndIf
  1356.                                 EndIf
  1357.                         Case "-color"
  1358.                                 If $j < $CmdLine[0] Then
  1359.                                         If Int($CmdLine[$j + 1]) > -1 And Int($CmdLine[$j + 1]) < 0x1000000 Then $iColorFont_WM = Int($CmdLine[$j + 1])
  1360.                                 EndIf
  1361.                         Case "-fx"
  1362.                                 If $j < $CmdLine[0] Then
  1363.                                         If StringInStr($sFXs, $CmdLine[$j + 1]) Then $sFX_WM = $CmdLine[$j + 1]
  1364.                                 EndIf
  1365.                         Case "-fxtype"
  1366.                                 If $j < $CmdLine[0] Then
  1367.                                         If StringInStr("Text;Circular;Stamp", $CmdLine[$j + 1]) Then $sFX_Type = $CmdLine[$j + 1]
  1368.                                 EndIf
  1369.                         Case "-opaque"
  1370.                                 If $j < $CmdLine[0] Then
  1371.                                         If Int($CmdLine[$j + 1]) > 0 And Int($CmdLine[$j + 1]) < 0x100 Then $fAlpha_WM = Int($CmdLine[$j + 1]) / 0xFF
  1372.                                 EndIf
  1373.                         Case "-pos"
  1374.                                 If $j < $CmdLine[0] Then
  1375.                                         If Int($CmdLine[$j + 1]) > -1 And Int($CmdLine[$j + 1]) < 10 Then $iPos_WM = Int($CmdLine[$j + 1])
  1376.                                 EndIf
  1377.                         Case "-posx"
  1378.                                 If $j < $CmdLine[0] Then
  1379.                                         If IsInt($CmdLine[$j + 1]) Then $iManPosX = Int($CmdLine[$j + 1])
  1380.                                 EndIf
  1381.                         Case "-posy"
  1382.                                 If $j < $CmdLine[0] Then
  1383.                                         If IsInt($CmdLine[$j + 1]) Then $iManPosY = Int($CmdLine[$j + 1])
  1384.                                 EndIf
  1385.                         Case "-angle"
  1386.                                 If $j < $CmdLine[0] Then
  1387.                                         If Number($CmdLine[$j + 1]) > -181 Or Number($CmdLine[$j + 1]) < 181 Then $iRotation_WM = Number($CmdLine[$j + 1])
  1388.                                 EndIf
  1389.                         Case "-circrad"
  1390.                                 If $j < $CmdLine[0] Then
  1391.                                         If Int($CmdLine[$j + 1]) > 0 Then $iRadius_WM = Int($CmdLine[$j + 1])
  1392.                                 EndIf
  1393.                         Case "-format"
  1394.                                 If $j < $CmdLine[0] Then
  1395.                                         If StringInStr("jpg;png;bmp;gif;tif", $CmdLine[$j + 1]) Then $sSaveType = $CmdLine[$j + 1]
  1396.                                 EndIf
  1397.                         Case "-jpgqual"
  1398.                                 If $j < $CmdLine[0] Then
  1399.                                         If Int($CmdLine[$j + 1]) > -1 And Int($CmdLine[$j + 1]) < 101 Then $iJPGQual_WM = Int($CmdLine[$j + 1])
  1400.                                 EndIf
  1401.                         Case "-fill"
  1402.                                 If $j < $CmdLine[0] Then
  1403.                                         If Int($CmdLine[$j + 1]) = 1 Then $bFill = True
  1404.                                 EndIf
  1405.                         Case "-silent"
  1406.                                 If $j < $CmdLine[0] Then
  1407.                                         If Int($CmdLine[$j + 1]) = 1 Then $bSilent_run = True
  1408.                                 EndIf
  1409.                         Case "-loadfont"
  1410.                                 If $j < $CmdLine[0] Then
  1411.                                         If FileExists($CmdLine[$j + 1]) Then
  1412.                                                 $bFontMan = True
  1413.                                                 Local $hFile = _WinAPI_CreateFile($sFileFont, 2, 2, 2)
  1414.                                                 If $hFile = 0 Then ContinueCase
  1415.                                                 Local $lFile = FileGetSize($sFileFont)
  1416.                                                 Local $tBuffer = DllStructCreate("byte[" & $lFile + 1 & "]")
  1417.                                                 Local $pBuffer = DllStructGetPtr($tBuffer), $iFile
  1418.                                                 _WinAPI_ReadFile($hFile, $pBuffer, $lFile, $iFile)
  1419.                                                 _WinAPI_CloseHandle($hFile)
  1420.                                                 $sFileFontName = _GetFontInfoFromFilePtr($pBuffer)
  1421.                                                 DllCall($__g_hGDIPDll, 'int', 'GdipPrivateAddFontFile', 'ptr', $hCollection_WM, 'wstr', $sFileFont)
  1422.                                         EndIf
  1423.                                 EndIf
  1424.                         Case "-tpbgcolor"
  1425.                                 If $j < $CmdLine[0] Then
  1426.                                         If Int($CmdLine[$j + 1]) > -1 And Int($CmdLine[$j + 1]) < 0x1000000 Then $iColorImgTP_WM = Int($CmdLine[$j + 1])
  1427.                                 EndIf
  1428.                 EndSwitch
  1429.         Next
  1430.  
  1431.         If $sText_WM = "" And Not $hBitmapStamp_WM Then
  1432.                 MsgBox(16, "Error", "Mandatory value for paramter '-text' or '-bitmap' is missing.", 30)
  1433.                 _Exit()
  1434.         EndIf
  1435.  
  1436.         $bW = _GDIPlus_ImageGetWidth($hBmp)
  1437.         $bH = _GDIPlus_ImageGetHeight($hBmp)
  1438.  
  1439.         If $hBitmapStamp_WM Then
  1440.                 $sFX_Type = "Stamp"
  1441.                 If Not $iRotation_WM Then $iRotation_WM = 100
  1442.         EndIf
  1443.  
  1444. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFont_WM = ' & $sFont_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1445. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iFontSize_WM = ' & $iFontSize_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1446. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iColorFont_WM = ' & $iColorFont_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1447. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iColorFont_Embossed_WM = ' & $iColorFont_Embossed_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1448. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFX_WM = ' & $sFX_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1449. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fAlpha_WM = ' & $fAlpha_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1450. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iPos_WM = ' & $iPos_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1451. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iRotation_WM = ' & $iRotation_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1452. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iRadius_WM = ' & $iRadius_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1453. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sSaveType = ' & $sSaveType & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1454. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iJPGQual_WM = ' & $iJPGQual_WM & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1455. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iManPosX = ' & $iManPosX & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1456. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iManPosY = ' & $iManPosY & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1457. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bFill = ' & $bFill & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1458. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFX_Type = ' & $sFX_Type & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1459. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sIn = ' & $sIn & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1460. ;~      ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sOut = ' & $sOut & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
  1461.  
  1462. ;~      _Exit()
  1463.  
  1464.         If $aBitmaps = -1 Then
  1465.                 If ($sFX_Type = "Text" Or $sFX_Type = "Circular") And (Not $iFontSize_WM) Then $iFontSize_WM = Max(Ceiling(0.5 * $bW / StringLen($sText_WM)), $iMinFontSize_WM)
  1466.                 If ($sFX_Type = "Text" Or $sFX_Type = "Circular") And (Not $iRadius_WM) Then $iRadius_WM = Min($iRadius_Max_WM, $iFontSize_WM * 3)
  1467.                 Switch $sFX_Type
  1468.                         Case "Text"
  1469.                                 $hBmp_Preview_WM = _GDIPlus_WatermarkImage($hBmp, $sText_WM, $iManPosX, $iManPosY, $iPos_WM, $sFont_WM, $iFontSize_WM, $iRotation_WM, $iColorFont_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, True, $sFileFontName)
  1470.                         Case "Circular"
  1471.                                 $hBmp_Preview_WM = _GDIPlus_CreateRotatedLetters($hBmp, $sText_WM, $iPos_WM, $iFontSize_WM, $iRadius_WM, $sFont_WM, $iColorFont_WM, $fAlpha_WM, $iRotation_WM, $iAdjX_WM, $iAdjY_WM, $sFileFontName)
  1472.                         Case "Stamp"
  1473.                                 $hBmp_Preview_WM = _GDIPlus_StampImage($hBmp, $hBitmapStamp_WM, $iPos_WM, $iRotation_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, $bFill)
  1474.                 EndSwitch
  1475.                 If $sOut = "" Then $sOut = StringTrimRight($sIn, 4) & "_watermarked." & $sSaveType
  1476.                 _GDIPlus_SaveBitmap($sOut, WinGetHandle(AutoItWinGetTitle()), $bSilent_run, True, $iColorImgTP_WM)
  1477.                 _GDIPlus_BitmapDispose($hBmp_Preview_WM)
  1478.                 _GDIPlus_BitmapDispose($hBmp)
  1479.         Else
  1480.                 Local $sNewFileName
  1481.                 SplashTextOn("Process", "Processing 1 / 1" & @LF & @LF & "File: ", 500, 100, Default, Default, 4 + 16 + 32)
  1482.                 Local $iUB = UBound($aBitmaps) - 1
  1483.                 For $i = 0 To $iUB
  1484.                         $hBmp = _GDIPlus_BitmapCreateFromFile($aBitmaps[$i])
  1485.                         $bW = _GDIPlus_ImageGetWidth($hBmp)
  1486.                         $bH = _GDIPlus_ImageGetHeight($hBmp)
  1487.                         If ($sFX_Type = "Text" Or $sFX_Type = "Circular") And (Not $iFontSize_WM) Then $iFontSize_WM = Max(Ceiling(0.5 * $bW / StringLen($sText_WM)), $iMinFontSize_WM)
  1488.                         If ($sFX_Type = "Text" Or $sFX_Type = "Circular") And (Not $iRadius_WM) Then $iRadius_WM = Min($iRadius_Max_WM, $iFontSize_WM * 3)
  1489.                         Switch $sFX_Type
  1490.                                 Case "Text"
  1491.                                         $hBmp_Preview_WM = _GDIPlus_WatermarkImage($hBmp, $sText_WM, $iManPosX, $iManPosY, $iPos_WM, $sFont_WM, $iFontSize_WM, $iRotation_WM, $iColorFont_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, True, $sFileFontName)
  1492.                                 Case "Circular"
  1493.                                         $hBmp_Preview_WM = _GDIPlus_CreateRotatedLetters($hBmp, $sText_WM, $iPos_WM, $iFontSize_WM, $iRadius_WM, $sFont_WM, $iColorFont_WM, $fAlpha_WM, $iRotation_WM, $iAdjX_WM, $iAdjY_WM, $sFileFontName)
  1494.                                 Case "Stamp"
  1495.                                         $hBmp_Preview_WM = _GDIPlus_StampImage($hBmp, $hBitmapStamp_WM, $iPos_WM, $iRotation_WM, $fAlpha_WM, $iAdjX_WM, $iAdjY_WM, $bFill)
  1496.                         EndSwitch
  1497.                         $sNewFileName = StringTrimRight($aBitmaps[$i], 4) & "_watermarked." & $sSaveType
  1498.                         _GDIPlus_SaveBitmap($sNewFileName, WinGetHandle(AutoItWinGetTitle()), $bSilent_run, True, $iColorImgTP_WM)
  1499.                         _GDIPlus_BitmapDispose($hBmp_Preview_WM)
  1500.                         _GDIPlus_BitmapDispose($hBmp)
  1501.                         ControlSetText("Process", "", "Static1", "Processing " & $i + 1 & " / " & $iUB & @LF & @LF & "File: " & $sNewFileName)
  1502.                 Next
  1503.                 SplashOff()
  1504.         EndIf
  1505.         _Exit()
  1506. EndFunc   ;==>Cmd
  1507.  
  1508. Func GetFilesFromFolder($sFolder, $sFilter, $bRec = True, $b0Base = True)
  1509.         Local $iPID
  1510.         If $bRec Then
  1511.                 $iPID = Run(@ComSpec & " /c dir /b /s /on " & $sFilter, $sFolder, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  1512.         Else
  1513.                 $iPID = Run(@ComSpec & " /c dir /b " & $sFilter, $sFolder, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  1514.         EndIf
  1515.         If Not $iPID Then Return SetError(1, 0, 0)
  1516.         Local $sImages
  1517.         While 1
  1518.                 $sImages &= StdoutRead($iPID)
  1519.                 If @error Then ExitLoop
  1520.         WEnd
  1521.         Local $iFlag = 2, $i, $j
  1522.         If Not $b0Base Then $iFlag = 0
  1523.         Local $aFiles = StringSplit(StringStripCR($sImages), @LF, $iFlag)
  1524.         If @error Then Return SetError(2, 0, 0)
  1525.         _ArrayDelete($aFiles, UBound($aFiles) - 1)
  1526.         If Not $b0Base Then $aFiles[0] = UBound($aFiles) - 1
  1527.         If Not $bRec Then
  1528.                 If $b0Base Then
  1529.                         $i = 0
  1530.                 Else
  1531.                         $i = 1
  1532.                 EndIf
  1533.                 If StringRight($sFolder, 1) <> "\" Then $sFolder &= "\"
  1534.                 For $j = $i To UBound($aFiles) - 1
  1535.                         $aFiles[$j] = $sFolder & $aFiles[$j]
  1536.                 Next
  1537.         EndIf
  1538.         Return $aFiles
  1539. EndFunc   ;==>GetFilesFromFolder
  1540.  
  1541. Func _Exit()
  1542.         DllCall($__g_hGDIPDll, 'int', 'GdipDeletePrivateFontCollection', 'ptr*', $hCollection_WM)
  1543.         If $hBitmapUndo_WM Then _GDIPlus_BitmapDispose($hBitmapUndo_WM)
  1544.         If $hBmp Then _GDIPlus_BitmapDispose($hBmp)
  1545.         If $hBitmapStamp_WM Then _GDIPlus_BitmapDispose($hBitmapStamp_WM)
  1546.         _GDIPlus_Shutdown()
  1547.         Exit
  1548. EndFunc   ;==>_Exit
  1549.  
  1550. Func _GDIPlus_SaveBitmap($sFilename_WM, $hGUI_WM, $bSilent = False, $bCMD = False, $iTpColor = 0x000000)
  1551.         Local $bError = False, $bJPG = True, $bResult, $hBmp_BG, $bResult
  1552.         Switch $sSaveType
  1553.                 Case "jpg"
  1554.                         $bJPG = True
  1555.                         If StringRight($sFilename_WM, 4) <> ".jpg" Then $sFilename_WM &= ".jpg"
  1556.                         If FileExists($sFilename_WM) And $bSilent = False Then
  1557.                                 Local $iChoice = MsgBox(4 + 32 + 256 + 262144, "Warning", "'" & $sFilename_WM & "' already exists!" & @CRLF & @CRLF & "Overwrite file?", 0, $hGUI_WM)
  1558.                                 If $iChoice = 7 Then Return 0
  1559.                         EndIf
  1560.                         Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
  1561.                         Local $tParams = _GDIPlus_ParamInit(1)
  1562.                         Local $tData = DllStructCreate("int Quality")
  1563.                         If $bCMD Then
  1564.                                 DllStructSetData($tData, "Quality", $iJPGQual_WM)
  1565.                         Else
  1566.                                 DllStructSetData($tData, "Quality", GUICtrlRead($idInputJPGQual_WM))
  1567.                         EndIf
  1568.                         Local $pData = DllStructGetPtr($tData)
  1569.                         _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
  1570.                         Local $pParams = DllStructGetPtr($tParams)
  1571.                         Local $bResult
  1572.                         If $bCMD Then
  1573.                                 If $iTpColor Then
  1574.                                         $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp_Preview_WM, 0xFF000000 + $iTpColor)
  1575.                                         $bResult = _GDIPlus_ImageSaveToFileEx($hBmp_BG, $sFilename_WM, $sCLSID, $pParams)
  1576.                                         _GDIPlus_BitmapDispose($hBmp_BG)
  1577.                                 Else
  1578.                                         $bResult = _GDIPlus_ImageSaveToFileEx($hBmp_Preview_WM, $sFilename_WM, $sCLSID, $pParams)
  1579.                                 EndIf
  1580.                         Else
  1581.                                 If $iTpColor Then
  1582.                                         $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor)
  1583.                                         $bResult = _GDIPlus_ImageSaveToFileEx($hBmp_BG, $sFilename_WM, $sCLSID, $pParams)
  1584.                                         _GDIPlus_BitmapDispose($hBmp_BG)
  1585.                                 Else
  1586.                                         $bResult = _GDIPlus_ImageSaveToFileEx($hBmp, $sFilename_WM, $sCLSID, $pParams)
  1587.                                 EndIf
  1588.                         EndIf
  1589.                         If Not $bResult Then
  1590.                                 $bError = True
  1591.                         Else
  1592.                                 $bError = False
  1593.                         EndIf
  1594.                         $tData = ""
  1595.                         $tParams = ""
  1596.                 Case "bmp"
  1597.                         If StringRight($sFilename_WM, 4) <> ".bmp" Then $sFilename_WM &= ".bmp"
  1598.                         $bJPG = False
  1599.                 Case "gif"
  1600.                         If StringRight($sFilename_WM, 4) <> ".gif" Then $sFilename_WM &= ".gif"
  1601.                         $bJPG = False
  1602.                 Case "png"
  1603.                         If StringRight($sFilename_WM, 4) <> ".png" Then $sFilename_WM &= ".png"
  1604.                         $bJPG = False
  1605.                 Case "tif"
  1606.                         If StringRight($sFilename_WM, 4) <> ".tif" Then $sFilename_WM &= ".tif"
  1607.                         $bJPG = False
  1608.         EndSwitch
  1609.         If Not $bJPG Then
  1610.                 If FileExists($sFilename_WM) And $bSilent = True Then
  1611.                         Local $iChoice = MsgBox(4 + 32 + 256 + 262144, "Warning", "'" & $sFilename_WM & "' already exists!" & @CRLF & @CRLF & "Overwrite file?", 0, $hGUI_WM)
  1612.                         If $iChoice = 7 Then Return 0
  1613.                 EndIf
  1614.                 If $iTpColor Then
  1615.                         $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor)
  1616.                         $bResult = _GDIPlus_ImageSaveToFile($hBmp_BG, $sFilename_WM)
  1617.                         _GDIPlus_BitmapDispose($hBmp_BG)
  1618.                 Else
  1619.                         $bResult = _GDIPlus_ImageSaveToFile($hBmp, $sFilename_WM)
  1620.                 EndIf
  1621.                 If Not $bResult Then
  1622.                         $bError = True
  1623.                 Else
  1624.                         $bError = False
  1625.                 EndIf
  1626.         EndIf
  1627.         If $bError Then
  1628.                 MsgBox(16 + 262144, "ERROR", "An error has occured  - the image couldn't saved!", 30, $hGUI_WM)
  1629.                 Return 0
  1630.         EndIf
  1631.         If Not $bSilent Then MsgBox(64 + 262144, "Information", "Image successfully saved to '" & $sFilename_WM & "'", 10, $hGUI_WM)
  1632.         Return 1
  1633. EndFunc   ;==>_GDIPlus_SaveBitmap
  1634.  
  1635. Func _GDIPlus_ChangeBGColor($hBitmap, $iBGColor)
  1636.         Local $iW_TP = _GDIPlus_ImageGetWidth($hBitmap), $iH_TP = _GDIPlus_ImageGetHeight($hBitmap)
  1637.         Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_TP, "int", $iH_TP, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap
  1638.         Local $hBmp_TP = $aResult[6]
  1639.         Local $hCtxt_TP = _GDIPlus_ImageGetGraphicsContext($hBmp_TP)
  1640.         _GDIPlus_GraphicsClear($hCtxt_TP, $iBGColor)
  1641.         _GDIPlus_GraphicsDrawImageRect($hCtxt_TP, $hBitmap, 0, 0, $iW_TP, $iH_TP)
  1642.         _GDIPlus_GraphicsDispose($hCtxt_TP)
  1643.         Return $hBmp_TP
  1644. EndFunc   ;==>_GDIPlus_ChangeBGColor
  1645.  
  1646. Func _GDIPlus_StampImage($hBmp, $hBmp_Stamp, $iPos, $iRotation_WM = 100, $fAlpha = 0.25, $iAdjX = 0, $iAdjY = 0, $bFill = False, $iMinW = 8, $iMinH = 8)
  1647.         If $fAlpha < 0 Then $fAlpha = 0
  1648.         If $fAlpha > 1 Then $fAlpha = 1
  1649.         Local $iW = _GDIPlus_ImageGetWidth($hBmp), $iH = _GDIPlus_ImageGetHeight($hBmp)
  1650.         If $hBitmap_WM Then _GDIPlus_BitmapDispose($hBitmap_WM)
  1651.         $hBitmap_WM = _GDIPlus_BitmapClone($hBmp, $iW, $iH)
  1652.         Local $hCtxt_Stamp = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM)
  1653.         DllCall($__g_hGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt_Stamp, "int", 7)
  1654.         Local $iW_Stamp = _GDIPlus_ImageGetWidth($hBmp_Stamp), $iH_Stamp = _GDIPlus_ImageGetHeight($hBmp_Stamp)
  1655.         Local $tColorMatrix = _GDIPlus_ColorMatrixCreateTranslate(0, 0, 0, -(1 - $fAlpha))
  1656.         Local $pColorMatrix = DllStructGetPtr($tColorMatrix)
  1657.         _GDIPlus_ImageAttributesSetColorMatrix($hAttribute_Alpha, 0, True, $pColorMatrix)
  1658.         Local $fSize = $iRotation_WM / 100, $hBrush_Fill
  1659.         If $bFill Then
  1660.                 Local $hBmp_Fill = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW, "int", $iH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1661.                 $hBmp_Fill = $hBmp_Fill[6]
  1662.                 Local $hCtxt_Fill = _GDIPlus_ImageGetGraphicsContext($hBmp_Fill)
  1663.                 If $fSize <> 1.00 Then
  1664.                         Local $iWn = Int($iW_Stamp * $fSize), $iHn = Int($iH_Stamp * $fSize)
  1665.                         Local $hBmp_tmp = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWn, "int", $iHn, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1666.                         $hBmp_tmp = $hBmp_tmp[6]
  1667.                         Local $hCtxt_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp)
  1668.                         DllCall($__g_hGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt_tmp, "int", 7)
  1669.                         _GDIPlus_GraphicsDrawImageRect($hCtxt_tmp, $hBmp_Stamp, 0, 0, $iWn, $iHn)
  1670.                         $hBrush_Fill = DllCall($__g_hGDIPDll, "uint", "GdipCreateTexture", "ptr", $hBmp_tmp, "int", 0, "int*", 0)
  1671.                         $hBrush_Fill = $hBrush_Fill[3]
  1672.                         _GDIPlus_BitmapDispose($hBmp_tmp)
  1673.                         _GDIPlus_GraphicsDispose($hCtxt_tmp)
  1674.                 Else
  1675.                         $hBrush_Fill = DllCall($__g_hGDIPDll, "uint", "GdipCreateTexture", "ptr", $hBmp_Stamp, "int", 0, "int*", 0)
  1676.                         $hBrush_Fill = $hBrush_Fill[3]
  1677.                 EndIf
  1678.                 _GDIPlus_GraphicsFillRect($hCtxt_Fill, 0, 0, $iW, $iH, $hBrush_Fill)
  1679.                 _GDIPlus_GraphicsDrawImageRectRect($hCtxt_Stamp, $hBmp_Fill, 0, 0, $iW, $iH, $iAdjX, $iAdjY, $iW, $iH, $hAttribute_Alpha)
  1680.                 _GDIPlus_BrushDispose($hBrush_Fill)
  1681.                 _GDIPlus_GraphicsDispose($hCtxt_Fill)
  1682.                 _GDIPlus_BitmapDispose($hBmp_Fill)
  1683.         Else
  1684.                 Local $iX, $iY, $fW = $iW_Stamp * $fSize, $fH = $iH_Stamp * $fSize, $fX = 0, $fY = 0
  1685.                 Switch $iPos
  1686.                         Case 1
  1687.                                 $iX = Min($iMinW, $iW)
  1688.                                 $iY = Min($iMinH, $iH)
  1689.                         Case 2
  1690.                                 $iX = Abs(($iW - $iW_Stamp) / 2)
  1691.                                 $iY = Min($iMinH, $iH)
  1692.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize) / 2
  1693.                         Case 3
  1694.                                 $iX = Abs($iW - $iW_Stamp - Min($iMinW, $iW))
  1695.                                 $iY = Min($iMinH, $iH)
  1696.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize)
  1697.                         Case 4
  1698.                                 $iX = Min($iMinW, $iW)
  1699.                                 $iY = Abs(($iH - $iH_Stamp) / 2)
  1700.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize) / 2
  1701.                         Case 5
  1702.                                 $iX = Abs(($iW - $iW_Stamp) / 2)
  1703.                                 $iY = Abs(($iH - $iH_Stamp) / 2)
  1704.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize) / 2
  1705.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize) / 2
  1706.                         Case 6
  1707.                                 $iX = Abs($iW - $iW_Stamp - Min($iMinW, $iW))
  1708.                                 $iY = Abs(($iH - $iH_Stamp) / 2)
  1709.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize)
  1710.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize) / 2
  1711.                         Case 7
  1712.                                 $iX = Min($iMinW, $iW)
  1713.                                 $iY = Abs($iH - Min($iMinH, $iH) - $iH_Stamp)
  1714.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize)
  1715.                         Case 8
  1716.                                 $iX = Abs(($iW - $iW_Stamp) / 2)
  1717.                                 $iY = Abs($iH - Min($iMinH, $iH) - $iH_Stamp)
  1718.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize) / 2
  1719.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize)
  1720.                         Case 9
  1721.                                 $iX = Abs($iW - $iW_Stamp - Min($iMinW, $iW))
  1722.                                 $iY = Abs($iH - Min($iMinH, $iH) - $iH_Stamp)
  1723.                                 $fX = ($iW_Stamp - $iW_Stamp * $fSize)
  1724.                                 $fY = ($iH_Stamp - $iH_Stamp * $fSize)
  1725.                 EndSwitch
  1726.                 _GDIPlus_GraphicsDrawImageRectRect($hCtxt_Stamp, $hBmp_Stamp, 0, 0, $iW_Stamp, $iH_Stamp, $iX + $fX + $iAdjX, $iY + $fY + $iAdjY, $fW, $fH, $hAttribute_Alpha)
  1727.         EndIf
  1728.         _GDIPlus_GraphicsDispose($hCtxt_Stamp)
  1729.         Return $hBitmap_WM
  1730. EndFunc   ;==>_GDIPlus_StampImage
  1731.  
  1732. Func _GDIPlus_WatermarkImage($hBitmap, $sText, $iX, $iY, $iPos = 0, $sFontName = "Arial", $iFontSize = 16, $fAngle = 0, $iFontColor = 0xFFFFFF, $fAlpha = 0.25, $iAdjX = 0, $iAdjY = 0, $bLineBreak = True, $sFileFontName = 0)
  1733.         If Not $hBitmap Then Return 0
  1734.         If $fAlpha < 0 Then $fAlpha = 0
  1735.         If $fAlpha > 1 Then $fAlpha = 1
  1736.         Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap)
  1737.         _GDIPlus_BitmapDispose($hBitmap_WM)
  1738.         $hBitmap_WM = _GDIPlus_BitmapClone($hBitmap, $iW, $iH)
  1739.         Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM)
  1740.         _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
  1741.         DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
  1742.         Local $hBrush = _GDIPlus_BrushCreateSolid(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  1743.         Local $hFormat = _GDIPlus_StringFormatCreate(BitOR(0x0400, 0x0800))
  1744.         Local $hFamily
  1745.         If $bFontMan Then
  1746.                 $hFamily = DllCall($__g_hGDIPDll, 'int', 'GdipCreateFontFamilyFromName', 'wstr', $sFileFontName, 'ptr', $hCollection_WM, 'int*', 0)
  1747.                 $hFamily = $hFamily[3]
  1748.         Else
  1749.                 $hFamily = _GDIPlus_FontFamilyCreate($sFontName)
  1750.         EndIf
  1751.         Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, 0)
  1752.         Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
  1753.         Local $aMeasure = _GDIPlus_GraphicsMeasureString($hCtxt, $sText, $hFont, $tLayout, $hFormat)
  1754.         If Not @error Then
  1755.                 Local $iWTxt, $iHTxt, $aResult, $hPath_WM, $iPenSize
  1756.                 If Not Int($fAngle) Then
  1757.                         $iWTxt = Ceiling(DllStructGetData($aMeasure[0], "width"))
  1758.                         $iHTxt = Ceiling(DllStructGetData($aMeasure[0], "height"))
  1759.                         If $bLineBreak And $iWTxt > $iW * 0.85 Then
  1760.                                 DllStructSetData($tLayout, "width", $iW * 0.95)
  1761.                                 DllStructSetData($tLayout, "height", 0)
  1762.                                 $aMeasure = _GDIPlus_GraphicsMeasureString($hCtxt, $sText, $hFont, $tLayout, $hFormat)
  1763.                                 $iWTxt = Ceiling(DllStructGetData($aMeasure[0], "width"))
  1764.                                 $iHTxt = Ceiling(DllStructGetData($aMeasure[0], "height"))
  1765.                         EndIf
  1766.  
  1767.                         If Not Int($iPos) Or Int($iPos) > 9 Then
  1768.                                 DllStructSetData($tLayout, "x", $iX)
  1769.                                 DllStructSetData($tLayout, "y", $iY)
  1770.                         Else
  1771.                                 DllStructSetData($tLayout, "x", $iFontSize / 2 + $iAdjX)
  1772.                                 DllStructSetData($tLayout, "width", $iW - $iFontSize)
  1773.                                 Switch $iPos
  1774.                                         Case 1 To 3
  1775.                                                 DllStructSetData($tLayout, "y", $iAdjY)
  1776.                                                 _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 1)
  1777.                                         Case 4 To 6
  1778.                                                 DllStructSetData($tLayout, "y", ($iH - $iHTxt) / 2 + $iAdjY)
  1779.                                                 _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 4)
  1780.                                         Case 7 To 9
  1781.                                                 DllStructSetData($tLayout, "y", $iH - $iHTxt + $iAdjY)
  1782.                                                 _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 7)
  1783.                                 EndSwitch
  1784.                         EndIf
  1785.                         Switch $sFX_WM
  1786.                                 Case "Default"
  1787.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  1788.                                 Case "Outlined"
  1789.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  1790.                                         $hPath_WM = $aResult[2]
  1791.                                         Switch $iFontSize
  1792.                                                 Case 4 To 64
  1793.                                                         $iPenSize = 1
  1794.                                                 Case 65 To 99
  1795.                                                         $iPenSize = 2
  1796.                                                 Case 100 To 127
  1797.                                                         $iPenSize = 4
  1798.                                                 Case 128 To 160
  1799.                                                         $iPenSize = 6
  1800.                                                 Case Else
  1801.                                                         $iPenSize = 8
  1802.                                         EndSwitch
  1803.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $sText, "int", -1, "handle", $hFamily, "int", 0, "float", $iFontSize * 1.3333333, "ptr", DllStructGetPtr($tLayout), "handle", $hFormat)
  1804.                                         Local $hPen_WM = _GDIPlus_PenCreate(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor, $iPenSize)
  1805.                                         DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $hCtxt, "handle", $hPen_WM, "handle", $hPath_WM)
  1806.                                         DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  1807.                                         _GDIPlus_PenDispose($hPen_WM)
  1808.                                 Case "OutlinedFilled"
  1809.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  1810.                                         $hPath_WM = $aResult[2]
  1811.                                         Local $hPen_WM = _GDIPlus_PenCreate(0xFF000000, Max(1, Int($iFontSize / 11)))
  1812.                                         Local $hBrush_WM = _GDIPlus_BrushCreateSolid(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  1813.                                         DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $sText, "int", -1, "handle", $hFamily, "int", 0, "float", $iFontSize * 1.3333333, "ptr", DllStructGetPtr($tLayout), "handle", $hFormat)
  1814.                                         DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $hCtxt, "handle", $hPen_WM, "handle", $hPath_WM)
  1815.                                         DllCall($__g_hGDIPDll, "uint", "GdipFillPath", "handle", $hCtxt, "handle", $hBrush_WM, "handle", $hPath_WM)
  1816.                                         DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  1817.                                         _GDIPlus_PenDispose($hPen_WM)
  1818.                                         _GDIPlus_BrushDispose($hBrush_WM)
  1819.                                 Case "Embossed"
  1820.                                         Local $iDelta
  1821.                                         If $iFontSize < 100 Then
  1822.                                                 $iDelta = 2
  1823.                                         Else
  1824.                                                 $iDelta = 4
  1825.                                         EndIf
  1826.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + 0xFFFFFF)
  1827.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  1828.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + 0x303030)
  1829.                                         DllStructSetData($tLayout, "x", DllStructGetData($tLayout, "x") + $iDelta)
  1830.                                         DllStructSetData($tLayout, "y", DllStructGetData($tLayout, "y") + $iDelta)
  1831.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  1832.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  1833.                                         DllStructSetData($tLayout, "x", DllStructGetData($tLayout, "x") - $iDelta / 2)
  1834.                                         DllStructSetData($tLayout, "y", DllStructGetData($tLayout, "y") - $iDelta / 2)
  1835.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  1836.                         EndSwitch
  1837.                 Else
  1838.                         Local $iQ
  1839.                         $fAngle = Mod($fAngle, 360)
  1840.                         $iWTxt = DllStructGetData($aMeasure[0], "width")
  1841.                         $iHTxt = DllStructGetData($aMeasure[0], "height")
  1842.                         If $iWTxt > $iHTxt Then
  1843.                                 $iQ = $iWTxt
  1844.                         Else
  1845.                                 $iQ = $iHTxt
  1846.                         EndIf
  1847.                         Local $hBitmap_WM_Rot, $hCtxt_Rot, $hMatrix, $iR
  1848.  
  1849.                         If $iPos Then
  1850.                                 Switch $iPos
  1851.                                         Case 1
  1852.                                                 $iQ *= 3.25
  1853.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1854.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1855.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1856.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1857.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1858.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1859.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ - $iFontSize - $iWTxt) / 2, $iQ / 2)
  1860.                                                 _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
  1861.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ + $iFontSize + $iWTxt) / 2, -$iQ / 2)
  1862.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1863.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2) ;position of the text within rotation bitmap
  1864.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1865.                                                 $iX = (-$iQ + $iFontSize + $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1866.                                                 $iY = (-$iQ + $iHTxt) / 2 + $iAdjY
  1867.                                         Case 2
  1868.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1869.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1870.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1871.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1872.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1873.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1874.                                                 _GDIPlus_MatrixTranslate($hMatrix, $iQ / 2, $iQ / 2)
  1875.                                                 _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
  1876.                                                 _GDIPlus_MatrixTranslate($hMatrix, -$iQ / 2, -$iQ / 2)
  1877.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1878.                                                 DllStructSetData($tLayout, "x", 0)
  1879.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1880.                                                 $iX = ($iFontSize + $iW - $iQ) / 2 + $iAdjX
  1881.                                                 $iR = $iWTxt / 2 ;Sqrt((($iWTxt + $iHTxt) / 2) ^ 2)
  1882.                                                 $iY = -$iR + $iFontSize / 1.25 + Cos((Abs($fAngle) - 90) / $fRad) * $iR * 0.9 + $iAdjY
  1883.                                         Case 3
  1884.                                                 $iQ *= 3.25
  1885.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1886.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1887.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1888.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1889.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1890.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1891.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ + $iFontSize + $iWTxt) / 2, $iQ / 2)
  1892.                                                 _GDIPlus_MatrixRotate($hMatrix, -$fAngle, False)
  1893.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ - $iFontSize - $iWTxt) / 2, -$iQ / 2)
  1894.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1895.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2)
  1896.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1897.                                                 $iX = $iW + (-$iQ - $iFontSize - $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1898.                                                 $iY = (-$iQ + $iHTxt) / 2 + $iAdjY
  1899.                                         Case 4
  1900.                                                 $iQ *= 3.25
  1901.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1902.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1903.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1904.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1905.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1906.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1907.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ - $iFontSize - $iWTxt) / 2, $iQ / 2)
  1908.                                                 _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
  1909.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ + $iFontSize + $iWTxt) / 2, -$iQ / 2)
  1910.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1911.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2)
  1912.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1913.                                                 $iX = (-$iQ + $iFontSize + $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1914.                                                 $iY = ($iH - $iQ) / 2 + $iAdjY
  1915.                                         Case 5
  1916.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1917.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1918.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1919.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1920.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1921.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1922.                                                 _GDIPlus_MatrixTranslate($hMatrix, $iQ / 2, $iQ / 2)
  1923.                                                 _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
  1924.                                                 _GDIPlus_MatrixTranslate($hMatrix, -$iQ / 2, -$iQ / 2)
  1925.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1926.                                                 DllStructSetData($tLayout, "x", 0)
  1927.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1928.                                                 $iX = ($iW - $iQ) / 2 + $iAdjX
  1929.                                                 $iY = ($iH - $iQ) / 2 + $iAdjY
  1930.                                         Case 6
  1931.                                                 $iQ *= 3.25
  1932.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1933.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1934.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1935.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1936.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1937.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1938.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ + $iFontSize + $iWTxt) / 2, $iQ / 2)
  1939.                                                 _GDIPlus_MatrixRotate($hMatrix, -$fAngle, False)
  1940.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ - $iFontSize - $iWTxt) / 2, -$iQ / 2)
  1941.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1942.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2)
  1943.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1944.                                                 $iX = $iW + (-$iQ - $iFontSize - $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1945.                                                 $iY = ($iH - $iQ) / 2 + $iAdjY
  1946.                                         Case 7
  1947.                                                 $iQ *= 3.25
  1948.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1949.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1950.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1951.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1952.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1953.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1954.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ - $iFontSize - $iWTxt) / 2, $iQ / 2)
  1955.                                                 _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
  1956.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ + $iFontSize + $iWTxt) / 2, -$iQ / 2)
  1957.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1958.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2)
  1959.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1960.                                                 $iX = (-$iQ + $iFontSize + $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1961.                                                 $iY = $iH + (-$iQ - $iHTxt) / 2 + $iAdjY
  1962.                                         Case 8
  1963.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1964.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1965.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1966.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1967.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1968.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1969.                                                 _GDIPlus_MatrixTranslate($hMatrix, $iQ / 2, $iQ / 2)
  1970.                                                 _GDIPlus_MatrixRotate($hMatrix, -$fAngle, False)
  1971.                                                 _GDIPlus_MatrixTranslate($hMatrix, -$iQ / 2, -$iQ / 2)
  1972.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1973.                                                 DllStructSetData($tLayout, "x", 0)
  1974.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1975.                                                 $iX = ($iFontSize + $iW - $iQ) / 2 + $iAdjX
  1976.                                                 $iR = $iWTxt / 2 ;Sqrt((($iWTxt + $iHTxt) / 2) ^ 2)
  1977.                                                 $iY = $iH - $iR - $iFontSize / 1.25 - Cos((Abs($fAngle) - 90) / $fRad) * $iR * 0.9 + $iAdjY
  1978.                                         Case 9
  1979.                                                 $iQ *= 3.25
  1980.                                                 $hBitmap_WM_Rot = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  1981.                                                 $hBitmap_WM_Rot = $hBitmap_WM_Rot[6]
  1982.                                                 $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM_Rot)
  1983.                                                 _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
  1984.                                                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
  1985.                                                 $hMatrix = _GDIPlus_MatrixCreate()
  1986.                                                 _GDIPlus_MatrixTranslate($hMatrix, ($iQ + $iFontSize + $iWTxt) / 2, $iQ / 2)
  1987.                                                 _GDIPlus_MatrixRotate($hMatrix, -$fAngle, False)
  1988.                                                 _GDIPlus_MatrixTranslate($hMatrix, (-$iQ - $iFontSize - $iWTxt) / 2, -$iQ / 2)
  1989.                                                 _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
  1990.                                                 DllStructSetData($tLayout, "x", ($iQ - $iWTxt) / 2)
  1991.                                                 DllStructSetData($tLayout, "y", ($iQ - $iHTxt) / 2)
  1992.                                                 $iX = $iW + (-$iQ - $iFontSize - $iWTxt) / 2 + $iAdjX ;position of the rotated bitmap onto the main bitmap
  1993.                                                 $iY = $iH + (-$iQ - $iHTxt) / 2 + $iAdjY
  1994.                                 EndSwitch
  1995.                         EndIf
  1996.  
  1997.                         Switch $sFX_WM
  1998.                                 Case "Default"
  1999.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt_Rot, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  2000.                                 Case "Outlined"
  2001.                                         Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  2002.                                         Local $hPath_WM = $aResult[2], $iPenSize
  2003.                                         Switch $iFontSize
  2004.                                                 Case 4 To 64
  2005.                                                         $iPenSize = 1
  2006.                                                 Case 65 To 99
  2007.                                                         $iPenSize = 2
  2008.                                                 Case 100 To 127
  2009.                                                         $iPenSize = 4
  2010.                                                 Case 128 To 160
  2011.                                                         $iPenSize = 6
  2012.                                                 Case Else
  2013.                                                         $iPenSize = 8
  2014.                                         EndSwitch
  2015.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $sText, "int", -1, "handle", $hFamily, "int", 0, "float", $iFontSize * 1.3333333, "struct*", DllStructGetPtr($tLayout), "handle", $hFormat)
  2016.                                         Local $hPen_WM = _GDIPlus_PenCreate(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor, $iPenSize)
  2017.                                         DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $hCtxt_Rot, "handle", $hPen_WM, "handle", $hPath_WM)
  2018.                                         DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  2019.                                         _GDIPlus_PenDispose($hPen_WM)
  2020.                                 Case "OutlinedFilled"
  2021.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  2022.                                         $hPath_WM = $aResult[2]
  2023.                                         Local $hPen_WM = _GDIPlus_PenCreate(0xFF000000, Max(1, Int($iFontSize / 11)))
  2024.                                         Local $hBrush_WM = _GDIPlus_BrushCreateSolid(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  2025.                                         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $sText, "int", -1, "handle", $hFamily, "int", 0, "float", $iFontSize * 1.3333333, "struct*", DllStructGetPtr($tLayout), "handle", $hFormat)
  2026.                                         DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $hCtxt_Rot, "handle", $hPen_WM, "handle", $hPath_WM)
  2027.                                         DllCall($__g_hGDIPDll, "uint", "GdipFillPath", "handle", $hCtxt_Rot, "handle", $hBrush_WM, "handle", $hPath_WM)
  2028.                                         DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  2029.                                         _GDIPlus_PenDispose($hPen_WM)
  2030.                                         _GDIPlus_BrushDispose($hBrush_WM)
  2031.                                 Case "Embossed"
  2032.                                         Local $iDelta
  2033.                                         If $iFontSize < 100 Then
  2034.                                                 $iDelta = 2
  2035.                                         Else
  2036.                                                 $iDelta = 4
  2037.                                         EndIf
  2038.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + 0xFFFFFF)
  2039.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt_Rot, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  2040.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + 0x303030)
  2041.                                         DllStructSetData($tLayout, "x", DllStructGetData($tLayout, "x") + $iDelta)
  2042.                                         DllStructSetData($tLayout, "y", DllStructGetData($tLayout, "y") + $iDelta)
  2043.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt_Rot, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  2044.                                         _GDIPlus_BrushSetSolidColor($hBrush, BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  2045.                                         DllStructSetData($tLayout, "x", DllStructGetData($tLayout, "x") - $iDelta / 2)
  2046.                                         DllStructSetData($tLayout, "y", DllStructGetData($tLayout, "y") - $iDelta / 2)
  2047.                                         _GDIPlus_GraphicsDrawStringEx($hCtxt_Rot, $sText, $hFont, $tLayout, $hFormat, $hBrush)
  2048.                         EndSwitch
  2049.  
  2050.                         _GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_WM_Rot, $iX, $iY, $iQ, $iQ)
  2051.                         _GDIPlus_MatrixDispose($hMatrix)
  2052.                         _GDIPlus_GraphicsDispose($hCtxt_Rot)
  2053.                         _GDIPlus_BitmapDispose($hBitmap_WM_Rot)
  2054.                 EndIf
  2055.         EndIf
  2056.         _GDIPlus_FontDispose($hFont)
  2057.         _GDIPlus_FontFamilyDispose($hFamily)
  2058.         _GDIPlus_StringFormatDispose($hFormat)
  2059.         _GDIPlus_BrushDispose($hBrush)
  2060.         _GDIPlus_GraphicsDispose($hCtxt)
  2061.         $tLayout = 0
  2062.         Return $hBitmap_WM
  2063. EndFunc   ;==>_GDIPlus_WatermarkImage
  2064.  
  2065. Func _GDIPlus_CreateRotatedLetters($hBitmap, $sText, $iPos = 9, $iFontSize = 16, $iRadius = 100, $sFont = "Impact", $iFontColor = 0xFFFFFF, $fAlpha = 0.04, $fStart_angle = 0, $iAdjX = 0, $iAdjY = 0, $sFileFontName = 0)
  2066.         If $fAlpha < 0 Then $fAlpha = 0
  2067.         If $fAlpha > 1 Then $fAlpha = 1
  2068.         If $sText = "" Then Return 0
  2069.         Local $iPosX, $iPosY
  2070.         Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap)
  2071.         If $hBitmap_WM Then _GDIPlus_BitmapDispose($hBitmap_WM)
  2072.         $hBitmap_WM = _GDIPlus_BitmapClone($hBitmap, $iW, $iH)
  2073.         Switch $iPos
  2074.                 Case 1
  2075.                         $iPosX = $iRadius + $iFontSize
  2076.                         $iPosY = $iRadius + $iFontSize
  2077.                 Case 2
  2078.                         $iPosX = $iW / 2
  2079.                         $iPosY = $iRadius + $iFontSize
  2080.                 Case 3
  2081.                         $iPosX = $iW - ($iRadius + $iFontSize)
  2082.                         $iPosY = $iRadius + $iFontSize
  2083.                 Case 4
  2084.                         $iPosX = $iRadius + $iFontSize
  2085.                         $iPosY = $iH / 2
  2086.                 Case 5
  2087.                         $iPosX = $iW / 2
  2088.                         $iPosY = $iH / 2
  2089.                 Case 6
  2090.                         $iPosX = $iW - ($iRadius + $iFontSize)
  2091.                         $iPosY = $iH / 2
  2092.                 Case 7
  2093.                         $iPosX = $iRadius + $iFontSize
  2094.                         $iPosY = $iH - ($iRadius + $iFontSize)
  2095.                 Case 8
  2096.                         $iPosX = $iW / 2
  2097.                         $iPosY = $iH - ($iRadius + $iFontSize)
  2098.                 Case 9
  2099.                         $iPosX = $iW - ($iRadius + $iFontSize)
  2100.                         $iPosY = $iH - ($iRadius + $iFontSize)
  2101.         EndSwitch
  2102.         Local Const $iW2 = $iPosX
  2103.         Local Const $iH2 = $iPosY
  2104.         Local Const $sLen = StringLen($sText)
  2105.         Local Const $delta_a = Floor(360 / $sLen)
  2106.         Local Const $iLetter_w = 256, $iLetter_h = 256
  2107.         Local Const $iLetter_w2 = $iLetter_w / 2
  2108.         Local Const $iLetter_h2 = $iLetter_h / 2
  2109.         Local Const $fCenter_x = $iW2 - $iLetter_w2
  2110.         Local Const $fCenter_y = $iH2 - $iLetter_h2
  2111.         Local Const $fDeg = ACos(-1) / 180
  2112.  
  2113.         Local $aTable[$sLen][14]
  2114.         Local $i, $a, $lW, $lH, $x, $y, $aRes, $aFamily, $aResult, $hPath_WM, $iPenSize, $bSkip = False
  2115.         Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap_WM)
  2116.         For $i = 0 To $sLen - 1 ;generate table
  2117.                 $aTable[$i][0] = StringMid($sText, $i + 1, 1) ;get next letter
  2118.                 $aRes = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iLetter_w, "int", $iLetter_h, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap
  2119.                 $aTable[$i][1] = $aRes[6] ;create bitmap
  2120.                 $aTable[$i][2] = _GDIPlus_ImageGetGraphicsContext($aTable[$i][1]) ;create context of bitmap to draw to bitmap
  2121.                 $aTable[$i][3] = _GDIPlus_BrushCreateSolid(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  2122.                 $aTable[$i][4] = _GDIPlus_StringFormatCreate(0x1404) ;$hFormat
  2123.                 If $bFontMan Then
  2124.                         $aFamily = DllCall($__g_hGDIPDll, 'int', 'GdipCreateFontFamilyFromName', 'wstr', $sFileFontName, 'ptr', $hCollection_WM, 'int*', 0)
  2125.                         $aTable[$i][5] = $aFamily[3]
  2126.                 Else
  2127.                         $aTable[$i][5] = _GDIPlus_FontFamilyCreate($sFont) ;$hFamily
  2128.                 EndIf
  2129.                 $aTable[$i][6] = _GDIPlus_FontCreate($aTable[$i][5], $iFontSize) ;$hFont
  2130.                 $aTable[$i][7] = _GDIPlus_RectFCreate(0, 0, 0, 0) ;$tLayout
  2131.                 $aTable[$i][8] = _GDIPlus_GraphicsMeasureString($aTable[$i][2], $aTable[$i][0], $aTable[$i][6], $aTable[$i][7], $aTable[$i][4])
  2132.                 If @error Then $bSkip = True
  2133.                 $aTable[$i][9] = _GDIPlus_MatrixCreate() ;create a matrix for each letter
  2134.                 $aTable[$i][10] = $i * $delta_a + $fStart_angle ;calculate angle of letter
  2135.                 $aTable[$i][11] = $iRadius ;radius
  2136.                 $aTable[$i][12] = _GDIPlus_PenCreate(BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor, 1) ;$hPen
  2137.                 $aTable[$i][13] = _GDIPlus_PenCreate(0xFF000000, Max(1, Int($iFontSize / 11))) ;$hPen
  2138.  
  2139.                 _GDIPlus_GraphicsSetSmoothingMode($aTable[$i][2], 2)
  2140.                 DllCall($__g_hGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $aTable[$i][2], "int", 4)
  2141.  
  2142.                 _GDIPlus_GraphicsClear($aTable[$i][2], 0x00000000)
  2143.                 ;calculated possition of letter to place it in the middle of the graphic
  2144.                 If $bSkip Then
  2145.                         $bSkip = False
  2146.                         ContinueLoop
  2147.                 EndIf
  2148.                 $a = $aTable[$i][8]
  2149.                 $lW = DllStructGetData($a[0], "width")
  2150.                 $lH = DllStructGetData($a[0], "height")
  2151.                 DllStructSetData($a[0], "x", $iLetter_w2 - $lW / 2)
  2152.                 DllStructSetData($a[0], "y", $iLetter_h2 - $lH / 2)
  2153.  
  2154.                 ;rotate letter
  2155.                 _GDIPlus_MatrixTranslate($aTable[$i][9], $iLetter_w2, $iLetter_h2)
  2156.                 _GDIPlus_MatrixRotate($aTable[$i][9], -27 + $aTable[$i][10], False)
  2157.                 _GDIPlus_MatrixTranslate($aTable[$i][9], -$iLetter_w2, -$iLetter_h2)
  2158.                 _GDIPlus_GraphicsSetTransform($aTable[$i][2], $aTable[$i][9])
  2159.  
  2160.                 ;print letter to bitmap
  2161.                 Switch $sFX_WM
  2162.                         Case "Default"
  2163.                                 _GDIPlus_GraphicsDrawStringEx($aTable[$i][2], $aTable[$i][0], $aTable[$i][6], $a[0], $aTable[$i][4], $aTable[$i][3])
  2164.                         Case "Outlined"
  2165.                                 $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  2166.                                 $hPath_WM = $aResult[2]
  2167.                                 Switch $iFontSize
  2168.                                         Case 4 To 64
  2169.                                                 $iPenSize = 1
  2170.                                         Case 65 To 99
  2171.                                                 $iPenSize = 2
  2172.                                         Case 100 To 127
  2173.                                                 $iPenSize = 4
  2174.                                         Case 128 To 160
  2175.                                                 $iPenSize = 6
  2176.                                         Case Else
  2177.                                                 $iPenSize = 8
  2178.                                 EndSwitch
  2179.                                 _GDIPlus_PenSetWidth($aTable[$i][12], $iPenSize)
  2180.                                 DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $aTable[$i][0], "int", -1, "handle", $aTable[$i][5], "int", 0, "float", $iFontSize * 1.3333333, "struct*", DllStructGetPtr($a[0]), "handle", $aTable[$i][4])
  2181.                                 DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $aTable[$i][2], "handle", $aTable[$i][12], "handle", $hPath_WM)
  2182.                                 DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  2183.                         Case "OutlinedFilled"
  2184.                                 $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
  2185.                                 $hPath_WM = $aResult[2]
  2186.                                 DllCall($__g_hGDIPDll, "uint", "GdipAddPathString", "handle", $hPath_WM, "wstr", $aTable[$i][0], "int", -1, "handle", $aTable[$i][5], "int", 0, "float", $iFontSize * 1.3333333, "struct*", DllStructGetPtr($a[0]), "handle", $aTable[$i][4])
  2187.                                 DllCall($__g_hGDIPDll, "uint", "GdipDrawPath", "handle", $aTable[$i][2], "handle", $aTable[$i][13], "handle", $hPath_WM)
  2188.                                 DllCall($__g_hGDIPDll, "uint", "GdipFillPath", "handle", $aTable[$i][2], "handle", $aTable[$i][3], "handle", $hPath_WM)
  2189.                                 DllCall($__g_hGDIPDll, "uint", "GdipDeletePath", "handle", $hPath_WM)
  2190.                         Case "Embossed"
  2191.                                 Local $iDelta
  2192.                                 If $iFontSize < 100 Then
  2193.                                         $iDelta = 2
  2194.                                 Else
  2195.                                         $iDelta = 4
  2196.                                 EndIf
  2197.                                 _GDIPlus_BrushSetSolidColor($aTable[$i][3], BitShift(Int($fAlpha * 0xFF), -24) + 0xFFFFFF)
  2198.                                 _GDIPlus_GraphicsDrawStringEx($aTable[$i][2], $aTable[$i][0], $aTable[$i][6], $a[0], $aTable[$i][4], $aTable[$i][3])
  2199.                                 _GDIPlus_BrushSetSolidColor($aTable[$i][3], BitShift(Int($fAlpha * 0xFF), -24) + 0x303030)
  2200.                                 DllStructSetData($a[0], "x", DllStructGetData($a[0], "x") + $iDelta)
  2201.                                 DllStructSetData($a[0], "y", DllStructGetData($a[0], "y") + $iDelta)
  2202.                                 _GDIPlus_GraphicsDrawStringEx($aTable[$i][2], $aTable[$i][0], $aTable[$i][6], $a[0], $aTable[$i][4], $aTable[$i][3])
  2203.                                 _GDIPlus_BrushSetSolidColor($aTable[$i][3], BitShift(Int($fAlpha * 0xFF), -24) + $iFontColor)
  2204.                                 DllStructSetData($a[0], "x", DllStructGetData($a[0], "x") - $iDelta / 2)
  2205.                                 DllStructSetData($a[0], "y", DllStructGetData($a[0], "y") - $iDelta / 2)
  2206.                                 _GDIPlus_GraphicsDrawStringEx($aTable[$i][2], $aTable[$i][0], $aTable[$i][6], $a[0], $aTable[$i][4], $aTable[$i][3])
  2207.                 EndSwitch
  2208.  
  2209.                 ;copy letter to main screen in a circle
  2210.                 $x = $fCenter_x + Cos(-90 + $aTable[$i][10] * $fDeg) * $aTable[$i][11]
  2211.                 $y = $fCenter_y + Sin(-90 + $aTable[$i][10] * $fDeg) * $aTable[$i][11]
  2212.                 _GDIPlus_GraphicsDrawImage($hContext, $aTable[$i][1], $x + $iAdjX, $y + $iAdjY)
  2213.         Next
  2214.  
  2215.         For $i = 0 To $sLen - 1
  2216.                 _GDIPlus_BitmapDispose($aTable[$i][1])
  2217.                 _GDIPlus_GraphicsDispose($aTable[$i][2])
  2218.                 _GDIPlus_BrushDispose($aTable[$i][3])
  2219.                 _GDIPlus_StringFormatDispose($aTable[$i][4])
  2220.                 _GDIPlus_FontFamilyDispose($aTable[$i][5])
  2221.                 _GDIPlus_FontDispose($aTable[$i][6])
  2222.                 _GDIPlus_MatrixDispose($aTable[$i][9])
  2223.                 _GDIPlus_PenDispose($aTable[$i][12])
  2224.                 _GDIPlus_PenDispose($aTable[$i][13])
  2225.         Next
  2226.         _GDIPlus_GraphicsDispose($hContext)
  2227.         Return $hBitmap_WM
  2228. EndFunc   ;==>_GDIPlus_CreateRotatedLetters
  2229.  
  2230. Func WM_SIZE_WM($hWnd, $Msg, $wParam, $lParam)
  2231.         #forceref $Msg, $wParam, $lParam
  2232. ;~      ConsoleWrite("!")
  2233.         $bUpdate_WM = True
  2234.         GUICtrlSendToDummy($idDummy_WinResized)
  2235.         Return "GUI_RUNDEFMSG"
  2236. EndFunc   ;==>WM_SIZE_WM
  2237.  
  2238. Func WM_GETMINMAXINFO_WM($hWnd, $Msg, $wParam, $lParam)
  2239.         Local $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
  2240.         DllStructSetData($minmaxinfo, 7, $iGUI_MinW) ; min X
  2241.         DllStructSetData($minmaxinfo, 8, $iGUI_MinH) ; min Y
  2242.         Return "GUI_RUNDEFMSG"
  2243. EndFunc   ;==>WM_GETMINMAXINFO_WM
  2244.  
  2245. Func WM_REDRAW_WM($hWnd, $Msg, $wParam, $lParam)
  2246.         Switch $Msg
  2247.                 Case $WM_NCPAINT
  2248.                         CopyImageGfx($hBmp_Preview_WM)
  2249.                         Return "GUI_RUNDEFMSG"
  2250.                 Case $WM_PAINT
  2251.                         CopyImageGfx($hBmp_Preview_WM)
  2252.                         Return "GUI_RUNDEFMSG"
  2253. ;~              Case $WM_ERASEBKGND
  2254. ;~                      CopyImageGfx($hBmp_Preview_WM)
  2255. ;~                      _WinAPI_RedrawWindow($hWnd, "", "", BitOR($RDW_UPDATENOW, $RDW_FRAME, $RDW_INTERNALPAINT))
  2256. ;~                      Return True
  2257.         EndSwitch
  2258.         Return "GUI_RUNDEFMSG"
  2259. EndFunc   ;==>WM_REDRAW_WM
  2260.  
  2261. Func WM_COMMAND_WM($hWnd, $Msg, $wParam, $lParam)
  2262.         #forceref $hWnd, $Msg, $lParam
  2263.         Local $ii
  2264.         Switch BitAND($wParam, 0x0000FFFF)
  2265.                 Case $idBatch_WM
  2266.                         GUICtrlSendToDummy($idDummy_Batch)
  2267.                 Case $idResize_WM
  2268.                         GUICtrlSendToDummy($idDummy_Resize)
  2269.                 Case $idClipboard_WM
  2270.                         GUICtrlSendToDummy($idDummy_Clipboard)
  2271.                 Case $idInput_WM_W
  2272.                         $ii = GUICtrlRead($idInput_WM_W)
  2273.                         Switch BitAND(GUICtrlRead($idChkBox_WM_AR), $GUI_CHECKED)
  2274.                                 Case 0
  2275.                                         GUICtrlSetData($idInput_WM_W, Max(1, Min($ii, 16384)))
  2276.                                 Case 1
  2277.                                         GUICtrlSetData($idInput_WM_W, Max(1, Min($ii, 16384)))
  2278.                                         $ii = Round(GUICtrlRead($idInput_WM_W) * $bH / $bW, 0)
  2279.                                         GUICtrlSetData($idInput_WM_H, $ii)
  2280.                         EndSwitch
  2281.                         GUICtrlSetData($idInput_WM_WP, Round(GUICtrlRead($idInput_WM_W) / $bW * 100))
  2282.                         GUICtrlSetData($idInput_WM_HP, Round(GUICtrlRead($idInput_WM_H) / $bH * 100))
  2283.                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  2284.                 Case $idInput_WM_H
  2285.                         $ii = GUICtrlRead($idInput_WM_H)
  2286.                         Switch BitAND(GUICtrlRead($idChkBox_WM_AR), $GUI_CHECKED)
  2287.                                 Case 0
  2288.                                         GUICtrlSetData($idInput_WM_H, Max(1, Min($ii, 16384)))
  2289.                                 Case 1
  2290.                                         GUICtrlSetData($idInput_WM_H, Max(1, Min($ii, 16384)))
  2291.                                         $ii = Round(GUICtrlRead($idInput_WM_H) * $bW / $bH, 0)
  2292.                                         GUICtrlSetData($idInput_WM_W, $ii)
  2293.                         EndSwitch
  2294.                         GUICtrlSetData($idInput_WM_WP, Round(GUICtrlRead($idInput_WM_W) / $bW * 100))
  2295.                         GUICtrlSetData($idInput_WM_HP, Round(GUICtrlRead($idInput_WM_H) / $bH * 100))
  2296.                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  2297.                 Case $idInput_WM_WP
  2298.                         $ii = Round(GUICtrlRead($idInput_WM_WP) / 100 * $bW, 0)
  2299.                         Switch BitAND(GUICtrlRead($idChkBox_WM_AR), $GUI_CHECKED)
  2300.                                 Case 0
  2301.                                         GUICtrlSetData($idInput_WM_W, Max(1, Min($ii, 16384)))
  2302.                                 Case 1
  2303.                                         GUICtrlSetData($idInput_WM_W, Max(1, Min($ii, 16384)))
  2304.                                         $ii = Round(GUICtrlRead($idInput_WM_W) * $bH / $bW, 0)
  2305.                                         GUICtrlSetData($idInput_WM_H, $ii)
  2306.                         EndSwitch
  2307.                         GUICtrlSetData($idInput_WM_HP, Round(GUICtrlRead($idInput_WM_H) / $bH * 100))
  2308.                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  2309.                 Case $idInput_WM_HP
  2310.                         $ii = Round(GUICtrlRead($idInput_WM_HP) / 100 * $bH, 0)
  2311.                         Switch BitAND(GUICtrlRead($idChkBox_WM_AR), $GUI_CHECKED)
  2312.                                 Case 0
  2313.                                         GUICtrlSetData($idInput_WM_H, Max(1, Min($ii, 16384)))
  2314.                                 Case 1
  2315.                                         GUICtrlSetData($idInput_WM_H, Max(1, Min($ii, 16384)))
  2316.                                         $ii = Round(GUICtrlRead($idInput_WM_H) * $bW / $bH, 0)
  2317.                                         GUICtrlSetData($idInput_WM_W, $ii)
  2318.                         EndSwitch
  2319.                         GUICtrlSetData($idInput_WM_WP, Round(GUICtrlRead($idInput_WM_W) / $bW * 100))
  2320.                         GUICtrlSetData($idLabel_WM_SizeN, GUICtrlRead($idInput_WM_W) & " x " & GUICtrlRead($idInput_WM_H) & " Pixel")
  2321.                 Case Else
  2322.                         $bUpdate_WM = True
  2323.         EndSwitch
  2324.         Return "GUI_RUNDEFMSG"
  2325. EndFunc   ;==>WM_COMMAND_WM
  2326.  
  2327. Func WM_DROPFILES_WM($hWnd, $Msg, $wParam, $lParam)
  2328.         #forceref $hWnd, $Msg, $lParam
  2329.         Local $aRet = DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", -1, "ptr", 0, "int", 0)
  2330.         If @error Then Return SetError(1, 0, "GUI_RUNDEFMSG")
  2331.  
  2332.         Local $sDroppedFile, $tBuffer = DllStructCreate("char[256]")
  2333.         If $aRet[0] = 1 Then
  2334.                 DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", 0, "ptr", DllStructGetPtr($tBuffer), "int", DllStructGetSize($tBuffer))
  2335.                 $sDroppedFile = DllStructGetData($tBuffer, 1)
  2336.  
  2337.                 If StringInStr(FileGetAttrib($sDroppedFile), "D") Then
  2338.                         DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
  2339.                         Return MsgBox(16 + 262144, "Error", "This is not a file ;-)", 20)
  2340.                 EndIf
  2341.         EndIf
  2342.         DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
  2343.         $tBuffer = 0
  2344.         $bDnD = True
  2345.         $sFileImage_WM = $sDroppedFile
  2346.         If Not StringRegExpReplace($sFileImage_WM, "(?i)^.+\.(bmp|jpg|png|gif)$", 0) Then Return SetError(2, 0, "GUI_RUNDEFMSG")
  2347.         GUICtrlSendMsg($idButtonLoadImage_WM, $BM_CLICK, 0, 0)
  2348. ;~      If $sDroppedFiles <> "" Then
  2349.         Return "GUI_RUNDEFMSG"
  2350. EndFunc   ;==>WM_DROPFILES_WM
  2351.  
  2352. Func WM_VSCROLL_WM($hWnd, $Msg, $wParam, $lParam)
  2353.         #forceref $hWnd, $Msg, $wParam
  2354.         Switch $lParam
  2355.                 Case $hSliderDegree_WM
  2356.                         Local $iDegree = GUICtrlRead($idSliderDegree_WM)
  2357.                         Local Static $iPrevDegree = -1
  2358.                         If $iPrevDegree <> $iDegree Then
  2359.                                 GUICtrlSetData($idInputDegree_WM, $iDegree)
  2360. ;~                              UpdatePreview_WM()
  2361.                                 $bUpdate_WM = True
  2362.                                 $iPrevDegree = $iRotation_WM
  2363.                         EndIf
  2364.                         $bStoppMove = True
  2365.                         Return 0
  2366.                 Case $hSliderAdjY_WM
  2367.                         $iAdjY_WM = GUICtrlRead($idSliderAdjY_WM)
  2368.                         $bUpdate_WM = True
  2369.                         ToolTip($iAdjY_WM, MouseGetPos(0) + 20, MouseGetPos(1))
  2370.                         Return 0
  2371. ;~              Case $hUpdown_WM
  2372. ;~                      ConsoleWrite("VV" & @CRLF)
  2373. ;~                      UpdatePreview_WM()
  2374.         EndSwitch
  2375.         Switch BitAND($wParam, 0xFF)
  2376.                 Case 5 ;$SB_THUMBTRACK = 5
  2377.                 Case Else
  2378.                         $bStoppMove = False
  2379.         EndSwitch
  2380.         Return "GUI_RUNDEFMSG"
  2381. EndFunc   ;==>WM_VSCROLL_WM
  2382.  
  2383. Func WM_HSCROLL_WM($hWnd, $Msg, $wParam, $lParam)
  2384.         #forceref $hWnd, $Msg
  2385.         Switch $lParam
  2386.                 Case $hSliderOpaque_WM
  2387.                         Local Static $iPrevOpaque = -1
  2388.                         Local $iOpaque = GUICtrlRead($idSliderOpaque_WM)
  2389.                         If $iPrevOpaque <> $iOpaque Then
  2390.                                 GUICtrlSetData($idInputOpaque_WM, $iOpaque)
  2391.                                 ToolTip(Round(100 * GUICtrlRead($idSliderOpaque_WM) / 0xFF, 0) & " %")
  2392.                                 $bUpdate_WM = True
  2393.                                 $iPrevOpaque = $iOpaque
  2394.                         EndIf
  2395.                         $bStoppMove = True
  2396.                         Return 0
  2397.                 Case $hSliderRadius_WM
  2398.                         Local Static $iPrevRad = -1
  2399.                         Local $iRad = GUICtrlRead($idSliderRadius_WM)
  2400.                         If $iPrevRad <> $iRad Then
  2401.                                 GUICtrlSetData($idInputRadius_WM, $iRad)
  2402.                                 $bUpdate_WM = True
  2403.                                 $iPrevRad = $iRad
  2404.                         EndIf
  2405.                         $bStoppMove = True
  2406.                         Return 0
  2407.                 Case $hSliderJPGQual_WM
  2408.                         Local Static $iPrevJPG = -1
  2409.                         Local $iJPG = GUICtrlRead($idSliderJPGQual_WM)
  2410.                         If $iPrevJPG <> $iJPG Then
  2411.                                 GUICtrlSetData($idInputJPGQual_WM, $iJPG)
  2412.                                 $iPrevJPG = $iJPG
  2413.                         EndIf
  2414.                         $bStoppMove = True
  2415.                         Return 0
  2416.                 Case $hSliderAdjX_WM
  2417.                         $iAdjX_WM = GUICtrlRead($idSliderAdjX_WM)
  2418.                         $bUpdate_WM = True
  2419.                         ToolTip($iAdjX_WM, MouseGetPos(0) + 20, MouseGetPos(1))
  2420.                         Return 0
  2421.                 Case Else
  2422.         EndSwitch
  2423.         Switch BitAND($wParam, 0xFF)
  2424.                 Case 5 ;$SB_THUMBTRACK = 5
  2425.                 Case Else
  2426.                         ToolTip("")
  2427.                         $bStoppMove = False
  2428.                         Return 0
  2429.         EndSwitch
  2430.         Return "GUI_RUNDEFMSG"
  2431. EndFunc   ;==>WM_HSCROLL_WM
  2432.  
  2433. Func WM_SYSCOMMAND_WM($hWnd, $Msg, $wParam, $lParam)
  2434.         #forceref $hWnd, $Msg, $wParam, $lParam
  2435.         Switch BitAND($wParam, 0x0000FFFF)
  2436.                 Case $id_ChkUpd
  2437.                         Check4Update($hGUI_WM)
  2438.                 Case $id_VisitWeb
  2439.                         ShellExecute("http://www.autoitscript.com/forum/index.php?showtopic=145873")
  2440.                 Case $id_About
  2441.                         MsgBox(262208, "About", "Main code by UEZ" & @CRLF & @CRLF & _
  2442.                                                                         "Additional code:" & @CRLF & _
  2443.                                                                         "AutoIt Team (Scripting Language)" & @CRLF & _
  2444.                                                                         "Authenticity (GDIP.au3), " & @CRLF & _
  2445.                                                                         "funkey (_GetFontInfoFromFilePtr()), " & @CRLF & _
  2446.                                                                         "Melba23 (NoFocusLines.au3)" & @CRLF & _
  2447.                                                                         "Yashied (WinAPIEx.au3)" & @CRLF & _
  2448.                                                                         "RESTOOLS (WaterCtrl.dll)", 30)
  2449.         EndSwitch
  2450.         Return "GUI_RUNDEFMSG"
  2451. EndFunc   ;==>WM_SYSCOMMAND_WM
  2452.  
  2453. Func Check4Update($hParentGUI)
  2454.         GUISetCursor(15)
  2455.         Local $iRead = InetRead("http://www.autoitscript.com/forum/index.php?showtopic=145873")
  2456.         If @error Then Return MsgBox(16, "Error", "Unable to check online! Behind a firewall or proxy?", 30, $hParentGUI)
  2457.         Local $aRegEx = StringRegExp(BinaryToString($iRead), "<title>" & $sTitle & "(v\d\.\d+.*\d+-\d+-\d+)\s.*</title>", 1)
  2458.         GUISetCursor(-1)
  2459.         If Not IsArray($aRegEx) Or @error Then Return MsgBox(16, "Internal Error", "Unable to parse line!", 30, $hParentGUI)
  2460.         Local $sVer = $aRegEx[0]
  2461.         If $ver = $sVer Then
  2462.                 MsgBox(64, "Update Information", "Current version: " & $ver & @CRLF & "Web version: " & $sVer & @LF & @LF & "Your version is up-to-date! :-)", 15, $hParentGUI)
  2463.         Else
  2464.                 Local $iChk = MsgBox(32 + 4 + 256, "Update Information", "Current version: " & $ver & @CRLF & "Web version: " & $sVer & @LF & @LF & "Found newer version. Visit web site?", 30, $hParentGUI)
  2465.                 If $iChk = 6 Then ShellExecute("http://www.autoitscript.com/forum/index.php?showtopic=145873")
  2466.         EndIf
  2467. EndFunc   ;==>Check4Update
  2468.  
  2469. #region GDI+ functions
  2470. Func _GDIPlus_Convert2HBitmap($hBitmap, $iColor); removes alpha backround using system color and converts to gdi bitmap
  2471.         Local $iBGColor = _WinAPI_GetSysColor($iColor)
  2472.         $iBGColor = 0x10000 * BitAND($iBGColor, 0xFF) + BitAND($iBGColor, 0x00FF00) + BitShift($iBGColor, 16)
  2473.         Local $iWidth = _GDIPlus_ImageGetWidth($hBitmap), $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
  2474.         Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
  2475.         Local $hBitmap_New = $aResult[6]
  2476.         Local $hCtx_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_New)
  2477.         Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $iBGColor)
  2478.         _GDIPlus_GraphicsFillRect($hCtx_new, 0, 0, $iWidth, $iHeight, $hBrush)
  2479.         _GDIPlus_GraphicsDrawImageRect($hCtx_new, $hBitmap, 0, 0, $iWidth, $iHeight)
  2480.         Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_New)
  2481.         _GDIPlus_BrushDispose($hBrush)
  2482.         _GDIPlus_BitmapDispose($hBitmap_New)
  2483.         _GDIPlus_GraphicsDispose($hCtx_new)
  2484.         Return $hHBitmap
  2485. EndFunc   ;==>_GDIPlus_Convert2HBitmap
  2486.  
  2487. Func _GDIPlus_FontCollectionCreate()
  2488.         Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipNewInstalledFontCollection", "int*", 0)
  2489.         If @error Then Return SetError(@error, @extended, 0)
  2490.         Return $aResult[1]
  2491. EndFunc   ;==>_GDIPlus_FontCollectionCreate
  2492.  
  2493. Func _GDIPlus_FontCollectionGetFamilyList($hFontCollection)
  2494.         Local $ii, $iCount, $tFontFamilies, $pFontFamilies, $aFontFamilies[1], $aResult
  2495.         $iCount = _GDIPlus_FontCollectionGetFamilyCount($hFontCollection)
  2496.         If @error Then Return SetError(@error, @extended, -1)
  2497.         If $iCount = 0 Then
  2498.                 Return -1
  2499.         EndIf
  2500.         $tFontFamilies = DllStructCreate("hwnd[" & $iCount & "]")
  2501.         $pFontFamilies = DllStructGetPtr($tFontFamilies)
  2502.         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipGetFontCollectionFamilyList", "handle", $hFontCollection, "int", $iCount, "ptr", $pFontFamilies, "int*", 0)
  2503.         If @error Then Return SetError(@error, @extended, -1)
  2504.         If $aResult[0] Then
  2505.                 Return -1
  2506.         EndIf
  2507.         ReDim $aFontFamilies[$iCount + 1]
  2508.         $aFontFamilies[0] = $iCount
  2509.         For $ii = 1 To $iCount
  2510.                 $aFontFamilies[$ii] = DllStructGetData($tFontFamilies, 1, $ii)
  2511.         Next
  2512.         Return $aFontFamilies
  2513. EndFunc   ;==>_GDIPlus_FontCollectionGetFamilyList
  2514.  
  2515. Func _GDIPlus_FontCollectionGetFamilyCount($hFontCollection)
  2516.         Local $aResult = DllCall($__g_hGDIPDll, "uint", "GdipGetFontCollectionFamilyCount", "handle", $hFontCollection, "int*", 0)
  2517.         If @error Then Return SetError(@error, @extended, 0)
  2518.         Return $aResult[2]
  2519. EndFunc   ;==>_GDIPlus_FontCollectionGetFamilyCount
  2520.  
  2521. Func _GDIPlus_FontFamilyGetFamilyName($hFontFamily, $iLANGID = 0)
  2522.         Local $tName, $pName, $sName, $aResult
  2523.         $tName = DllStructCreate("wchar[" & $GDIP_LF_FACESIZE & "]")
  2524.         $pName = DllStructGetPtr($tName)
  2525.         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipGetFamilyName", "handle", $hFontFamily, "ptr", $pName, "ushort", $iLANGID)
  2526.         If @error Then Return SetError(@error, @extended, 0)
  2527.         If $aResult[0] Then Return 0
  2528.         $sName = DllStructGetData($tName, 1)
  2529.         Return $sName
  2530. EndFunc   ;==>_GDIPlus_FontFamilyGetFamilyName
  2531.  
  2532. Func _GDIPlus_BitmapClone($hBitmap, $bW, $bH)
  2533.         Local $hBitmap_New, $hCtx_Bitmap_new, $aResult
  2534.         $aResult = DllCall($__g_hGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $bW, "int", $bH, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0)
  2535.         If @error Then Return SetError(0, 0, 0)
  2536.         $hBitmap_New = $aResult[6]
  2537.         $hCtx_Bitmap_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_New)
  2538.         _GDIPlus_GraphicsDrawImageRect($hCtx_Bitmap_new, $hBitmap, 0, 0, $bW, $bH)
  2539.         _GDIPlus_GraphicsDispose($hCtx_Bitmap_new)
  2540.         Return $hBitmap_New
  2541. EndFunc   ;==>_GDIPlus_BitmapClone
  2542.  
  2543. Func _GetFontInfoFromFilePtr($pFile, $iFlag = 1); 0=copyright;1=name;2=type ... 10=description;11=website
  2544.         ;funkey 2012, May 15
  2545.         Local $ttOffsetTable = DllStructCreate($tagTT_OFFSET_TABLE, $pFile)
  2546.         DllStructSetData($ttOffsetTable, "uNumOfTables", _SwapWord(DllStructGetData($ttOffsetTable, "uNumOfTables")))
  2547.         DllStructSetData($ttOffsetTable, "uMajorVersion", _SwapWord(DllStructGetData($ttOffsetTable, "uMajorVersion")))
  2548.         DllStructSetData($ttOffsetTable, "uMinorVersion", _SwapWord(DllStructGetData($ttOffsetTable, "uMinorVersion")))
  2549.         ;check is this is a true type font and the version is 1.0
  2550.         If StringFormat("%i.%i", DllStructGetData($ttOffsetTable, "uMajorVersion"), DllStructGetData($ttOffsetTable, "uMinorVersion")) <> "1.0" Then
  2551.                 Return SetError(1)
  2552.         EndIf
  2553.         Local $tblDir = DllStructCreate($tagTT_TABLE_DIRECTORY)
  2554.         Local $bFound = False
  2555.         Local $sTemp
  2556.         For $i = 0 To DllStructGetData($ttOffsetTable, "uNumOfTables") - 1
  2557.                 $tblDir = DllStructCreate($tagTT_TABLE_DIRECTORY, $pFile + DllStructGetSize($ttOffsetTable) + $i * DllStructGetSize($tblDir))
  2558.                 If StringLeft(DllStructGetData($tblDir, "szTag"), 4) = "name" Then
  2559.                         $bFound = True
  2560.                         DllStructSetData($tblDir, "uLength", _SwapLong(DllStructGetData($tblDir, "uLength")))
  2561.                         DllStructSetData($tblDir, "uOffset", _SwapLong(DllStructGetData($tblDir, "uOffset")))
  2562.                         ExitLoop
  2563.                 EndIf
  2564.         Next
  2565.         If Not $bFound Then Return SetError(2)
  2566.         Local $ttNTHeader = DllStructCreate($tagTT_NAME_TABLE_HEADER, $pFile + DllStructGetData($tblDir, "uOffset"))
  2567.         DllStructSetData($ttNTHeader, "uNRCount", _SwapWord(DllStructGetData($ttNTHeader, "uNRCount")))
  2568.         DllStructSetData($ttNTHeader, "uStorageOffset", _SwapWord(DllStructGetData($ttNTHeader, "uStorageOffset")))
  2569.         Local $ttRecord = DllStructCreate($tagTT_NAME_RECORD)
  2570.         Local $tResult, $sResult
  2571.         For $i = 0 To DllStructGetData($ttNTHeader, "uNRCount") - 1
  2572.                 $ttRecord = DllStructCreate($tagTT_NAME_RECORD, $pFile + DllStructGetData($tblDir, "uOffset") + DllStructGetSize($ttNTHeader) + $i * DllStructGetSize($ttRecord))
  2573.                 DllStructSetData($ttRecord, "uNameID", _SwapWord(DllStructGetData($ttRecord, "uNameID")))
  2574.                 If DllStructGetData($ttRecord, "uNameID") = $iFlag Then ;1 says that this is font name. 0 for example determines copyright info
  2575.                         DllStructSetData($ttRecord, "uStringLength", _SwapWord(DllStructGetData($ttRecord, "uStringLength")))
  2576.                         DllStructSetData($ttRecord, "uStringOffset", _SwapWord(DllStructGetData($ttRecord, "uStringOffset")))
  2577.                         $tResult = DllStructCreate("char [" & DllStructGetData($ttRecord, "uStringLength") & "]", $pFile + _
  2578.                                         DllStructGetData($tblDir, "uOffset") + DllStructGetData($ttRecord, "uStringOffset") + _
  2579.                                         DllStructGetData($ttNTHeader, "uStorageOffset"))
  2580.                         $sResult = DllStructGetData($tResult, 1)
  2581.                         If StringLen($sResult) > 0 Then ExitLoop
  2582.                 EndIf
  2583.         Next
  2584.         Return $sResult
  2585. EndFunc   ;==>_GetFontInfoFromFilePtr
  2586. #endregion GDI+ functions
  2587.  
  2588. #region internal functions
  2589. Func _SwapLong($x)
  2590.         Return _WinAPI_MakeLong(_SwapWord(_WinAPI_HiWord($x)), _SwapWord(_WinAPI_LoWord($x)))
  2591. EndFunc   ;==>_SwapLong
  2592.  
  2593. Func _SwapWord($x)
  2594.         Return _WinAPI_MakeWord(_WinAPI_LoByte($x), _WinAPI_HiByte($x))
  2595. EndFunc   ;==>_SwapWord
  2596.  
  2597. Func _WinAPI_MakeWord($iLo, $iHi)
  2598.         Local $tWord = DllStructCreate('ushort')
  2599.         Local $tByte = DllStructCreate('byte;byte', DllStructGetPtr($tWord))
  2600.         DllStructSetData($tByte, 1, $iHi)
  2601.         DllStructSetData($tByte, 2, $iLo)
  2602.         Return DllStructGetData($tWord, 1)
  2603. EndFunc   ;==>_WinAPI_MakeWord
  2604.  
  2605. Func _WinAPI_LoByte($iValue)
  2606.         Return BitAND($iValue, 0xFF)
  2607. EndFunc   ;==>_WinAPI_LoByte
  2608.  
  2609. Func _WinAPI_HiByte($iValue)
  2610.         Return BitAND(BitShift($iValue, 8), 0xFF)
  2611. EndFunc   ;==>_WinAPI_HiByte
  2612.  
  2613. Func _WinAPI_Client2Screen($hWnd, ByRef $iX, ByRef $iY)
  2614.         Local $stPoint = DllStructCreate("int;int")
  2615.         DllStructSetData($stPoint, 1, $iX)
  2616.         DllStructSetData($stPoint, 2, $iY)
  2617.         DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
  2618.         $iX = DllStructGetData($stPoint, 1)
  2619.         $iY = DllStructGetData($stPoint, 2)
  2620.         ; release Struct not really needed as it is a local
  2621.         $stPoint = 0
  2622. EndFunc   ;==>_WinAPI_Client2Screen
  2623.  
  2624. Func Min($a, $b)
  2625.         If $a < $b Then Return $a
  2626.         Return $b
  2627. EndFunc   ;==>Min
  2628.  
  2629. Func Max($a, $b)
  2630.         If $a > $b Then Return $a
  2631.         Return $b
  2632. EndFunc   ;==>Max
  2633.  
  2634. Func _GUICtrlMenu_CreateBitmap($file, $iIndex = 0, $iX = 16, $iY = 16) ;thanks to Yashied
  2635.         If FileExists($file) Then
  2636.                 Local $aRet, $hIcon, $hBitmap
  2637.                 Local $hDC, $hBackDC, $hBackSv
  2638.  
  2639.                 $aRet = DllCall("shell32", "long", "ExtractAssociatedIcon", "int", 0, "str", $file, "word*", $iIndex)
  2640.                 If @error Then Return SetError(@error, @extended, 0)
  2641.                 $hIcon = $aRet[0]
  2642.  
  2643.                 $hDC = _WinAPI_GetDC(0) ;thanks to Yashied
  2644.                 $hBackDC = _WinAPI_CreateCompatibleDC($hDC)
  2645.                 $hBitmap = _WinAPI_CreateSolidBitmap(0, _WinAPI_GetSysColor($COLOR_MENU), $iX, $iY)
  2646.                 $hBackSv = _WinAPI_SelectObject($hBackDC, $hBitmap)
  2647.                 _WinAPI_DrawIconEx($hBackDC, 0, 0, $hIcon, $iX, $iY, 0, 0, 3)
  2648.                 _WinAPI_DestroyIcon($hIcon)
  2649.  
  2650.                 _WinAPI_SelectObject($hBackDC, $hBackSv)
  2651.                 _WinAPI_ReleaseDC(0, $hDC)
  2652.                 _WinAPI_DeleteDC($hBackDC)
  2653.                 Return $hBitmap
  2654.         Else
  2655.                 Return SetError(1, 0, 0)
  2656.         EndIf
  2657. EndFunc   ;==>_GUICtrlMenu_CreateBitmap
  2658. #endregion internal functions
  2659.  
  2660. #region functions from WinAPIEx.au3 -> thanks to Yashied
  2661. Func _GetNN($hWnd)
  2662.         Local $List, $Text, $ID = 0
  2663.         $Text = _WinAPI_GetClassName($hWnd)
  2664.         If Not $Text Then
  2665.                 Return -1
  2666.         EndIf
  2667.         $List = _WinAPI_EnumChildWindows(_WinAPI_GetAncestor($hWnd, $GA_ROOT), 0)
  2668.         If @error Then
  2669.                 Return -1
  2670.         EndIf
  2671.         For $i = 1 To $List[0][0]
  2672.                 If $List[$i][1] = $Text Then
  2673.                         $ID += 1
  2674.                 EndIf
  2675.                 If $List[$i][0] = $hWnd Then
  2676.                         ExitLoop
  2677.                 EndIf
  2678.         Next
  2679.         If Not $ID Then
  2680.                 Return -1
  2681.         EndIf
  2682.         Return $ID
  2683. EndFunc   ;==>_GetNN
  2684. #endregion functions from WinAPIEx.au3 -> thanks to Yashied
  2685.  
  2686. ;Code below was generated by: 'File to Base64 String' Code Generator v1.11 Build 2012-10-13
  2687.  
  2688. Func _BatchConvert_Icon($bSaveBinary = False)
  2689.         Local $BatchConvert_Icon
  2690.         $BatchConvert_Icon &= 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAAC8UlEQVQ4y3WSXWhbdRiHn/ORnuak6TkpM2tXCoMWSj/TzQypeBSn6BQZ63C7EJwIQwRlxVpkICq9KjoRWjeLH5edDPG2nWVYK4jDUqqOWo1LSbMPybKPFJP0nP85OTneqCRUf7cv78Pv4X0lajI9PW3qup6wbfuKLMtRTdPaJUlSwo1at0RVzt8pfD46Olqu3VEBJicn9bm5uXe0xsaX+gf6zaWlb/326Jd+951sw025wsHHD3Bj4RJvX2x7AXhoB6Czs/PE/Pz8G4qi4AhB4V5BeaDrTcWI9JIMfsfztrDtKnvisa6enuZTqVTq02q1agPIALquN4ZCIWRZRg+HaWqKUHElnMI6niNQ1Hba23SGOuzdM598PPXkoUOf/dNABhBCCNd1+f7yZTKZDGs/nKTF6GJxtonzF4+giK9oHjrME123+fXC88Ri5tN1AMdxxPKPP/HWxAQffHgWPVSCahwt5BLZ9Szeto3efAE9+SLJliy3czcrdQDXdR0kiZ7ePoath9kovsL1zM8csHq5uzqGGgQ4Th830mnO//EMu1o7yjsUQqpKsVQil8sRKCrr6ShG6yovP3cLSe3m1lqYpe/S9FrHCev6dt0VKpWKkCWJbdsmn88jXJf1UhP9bXu5W8izr08QVT2Cio3v+7iuW64DAAICUuu/sLq8DAQQBMx8oWEaezl9LMeltf08dfwU9wpbOI5Tr+D7vjCjzSQGBiiXipRLJYTrIqsNyA0m575O8qe0h92tbQB4nluv4Hne5tZWwT/70YyysLDAN4uLrKysoDZoGGYM0zSIx+M4QgDg2E69wvj4+LXBRGLstbHXJ+5PJk3LslDUENlslqvpNJubGTRNQ7ju3w28fwFS7V/LsqzFWloeGx5+8OgjBx89PDi0/z7DNND1CKVymXw+z7VMhqn3z7y6sZE+twNQG0mSFMMwrMTQvqPDlnWkZ2Cwo1wsVqfee/d0KvXbmf9s8H+ZnZ2VIpFIEghGRkZWamd/AfCEOJBagaGBAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEwLTAyLTExVDE0OjU2OjEyLTA2OjAwrvv5fwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAwNC0wMy0xMFQxNjo0ODowMC0wNjowMIXQYlEAAAAASUVORK5CYII='
  2691.         Local $bString = Binary(_WinAPI_Base64Decode($BatchConvert_Icon))
  2692.         If $bSaveBinary Then
  2693.                 Local $hFile = FileOpen(@ScriptDir & "\msdos_batch_file_16x16.png", 18)
  2694.                 FileWrite($hFile, $bString)
  2695.                 FileClose($hFile)
  2696.         EndIf
  2697.         Return  $bString
  2698. EndFunc   ;==>_BatchConvert_Icon
  2699.  
  2700. Func _Resize_Icon($bSaveBinary = False)
  2701.         Local $Resize_Icon
  2702.         $Resize_Icon &= 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAACKElEQVR4XpVSTW9SQRQ9wCNAQ7TpH8AN6Y6VMe4Ka2miRSqNiStjXBAowkZLNTERqVWrv0HdYNmZ7mxjWUKAgCTGiGmwIpSkfEr5vs4M6SspsPAkN2/y7p2Tc+4chdvtJr/fj0lot9vQarUgorFep9OB2WwGfD4fTcPW1huKRCITe81mk4xGIykxBYlEAv0BsLf3BWwY0zCRoN/v4937DyAA3V4foVBoOgH3NxgM0O12efGzIHi87sfhYQ5zc7Ow2Wzo9Xr8/+icTMB/iIFsNovNl6+gUChQLpdxfFzB73wekiShVCqJXr1e4wsUdwQ8Hg/l/+QpuPGCri0ukc2+Qg8frdGS7RYtr9yhJfttunvvPq16vLR43U43bMv0cXubCoXCcIlcylHxCOmvGTT+NlCpVfHt+w9UazVUKhXU6lXkcr/w8+AAzZMmU1VmC07Ki5W4Bb1ejyfra9jfj+Dz7i6CzwOIxWIIbr7G7MUL2AgG0GOSnz4LwOVbhcFgOLPgdDoplUpRNBoldkmuTCZDl69cJZfLTel0WvTj8Tj/ikomk8KCxCxwOSJ1p+CqHni9KBYL+LSzwzbeh8PhEK9wCo1GI1sYI1AqlTAvLDCvbzEzMwOLxcK2X8cI5HhLAPgTihrF/Pw8JEmFS8yvTqc735fVCAutVksUx6jEmyxAJpMJjUYD56FSqYYE7CCColarcR5Wq5VL5TWJQARO4jkPh8P4T4jLNZaVf5XFkDpOLSbaAAAAAElFTkSuQmCC'
  2703.         Local $bString = Binary(_WinAPI_Base64Decode($Resize_Icon))
  2704.         If $bSaveBinary Then
  2705.                 Local $hFile = FileOpen(@ScriptDir & "\Resize.png", 18)
  2706.                 FileWrite($hFile, $bString)
  2707.                 FileClose($hFile)
  2708.         EndIf
  2709.         Return $bString
  2710. EndFunc   ;==>_Resize_Icon
  2711.  
  2712. Func _W_Logo($bSaveBinary = False)
  2713.         Local $W_Logo
  2714.         $W_Logo &= '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'
  2715.         $W_Logo &= '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'
  2716.         $W_Logo &= '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'
  2717.         $W_Logo &= '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'
  2718.         $W_Logo &= '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'
  2719.         $W_Logo &= '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'
  2720.         $W_Logo &= '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'
  2721.         $W_Logo &= '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'
  2722.         $W_Logo &= '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'
  2723.         $W_Logo &= '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'
  2724.         $W_Logo &= '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'
  2725.         $W_Logo &= 'Sy9GpNUNsStjMI5G7nVS6utxHZI8xYQe2WrPYD6msb1ukGW+lxqaU3W4UYBfGz2mkR8yiMYst1vp57RJhg0CLOgGqD1HbMoXz14yHQ9VLrVoxVDZXAHuB5ggBAcFvut6ghX9VredWJfWgA5g15HFMbarhRJ1dcFiNCJvDZWY1QYnHCOnkKpgPAylMyl9zKrneD5CLhzOiKbMFFQZC7bLFID1Zs/9O3PKxiHeLvHDSDi953gUtWE4qGirPVUTgm0JApfAacQ8NdahzCtczwgEcZoN33p7xs+yMY7pWcwGbHYNXZPQMwLrcHx0yG717FVDWjCZHGudMEu3ODTQuxiURDTYun/PcLuEvDAcHTjc3DTU9Qb1W/1GN2dZGIq85/TEsNkswc7/kwV90eTE+ZbL5gnDwYiSivP+C70hwdCnL5BG5bq4FTGsje2rkXeG9XoFjrR4LKAgB2ONVhCH4+iVcqx6RWyPeNlFBlXeMBi5SAnLbynzVpkBY0ANM7i4pHFKVmb0jlV9bntwpy5+42Ox6ObofRm11b1UDsAxqAnHaKf2/PZCpRG+od2WeJMIpF3T0ARa9iCtclrPMB4N8TpHA7W+qMCNRD5Li5zGD5jN52RpJsOB7Ua6NUIs3HDAxZfPefbBJxw+vAsOKAMDGOEUUlyIRI22GIFA4gdpjTKta8qskXmZJtQGPDoaDNrDLQpyxyEpO/UlXjSi7Hv6Yk9f7nDmIwLf42g+Zp1ZLZLULQROim9zrOcBLh4lRdnR4vDFs2uMO6Qplvj0bF9ZJpW1IfB6yqIU76XMa6yxQubGB0cUtVAvvMAnCHp6p8UxO37xl7/LF096rtYZ08mIQbiQxU9vh9zevCR0wfUcTk+nMl47Pjrgdjnn6Lhns77V8njTQNehPdfR0AEsL89bDDVBMEEHvoMgCNntWvp+xPV1APYQuOI/yS+n7Rs2+w0DO6b3JWOn0x4Q0aaWoTsmNTtChoycOW4kXUvCbMzInQpB8EIHNaUWDEY1aVOLVkoYhPJcGoRDIj+C3hUMeHA4YT6bIuXaJBNWjzWiIFhr9bHerMmTnK7qsI10bLSK2G7FGSFrcnrbq4G1AwOgIDoaHqA+wvg0dKImAOLZe6OA6XhKu80xWJU3tutVxvRFy6B3SZtCgQkAMA4kl8dkMBSUWzmWbbzHAtYYcXWELhmH2XQhuXBApY3juJjeYEDP0eDqRoqGA13vge9L9Kqt5RAi4zFjXh1mB8GSUhJpSnIpNve6RfMsBcDxB7jhFMSnKcGPAIhCR4OfIAwokiXRaKZGfDFfMB6P8d0Wd3DEbDbFSCVuyGwc0rWVkBzblcwPTrXyNxhO1HRWpUMRl2yut+RZpSm7sYhQ53nS6ODBHYdhkNE3GfvdksAfMx6NhfC0Es3tFAtBELDf32L7WxHZcOb0tiTwLWnW0VtAMn6NMjvswdRgHYoy5+AAXKdmPClVMYAFpI3zpwf9SXCfmkqbU85qgNP6UjgYdCOavBW3flBPKaqc7eVOmda4sInX3KxXgiQxWvKgfQWj4YCIjr0ynBYjwmHIaDIgDIRJy8UQq9UzcCSprQZHpY9V8Ko5FbzZWR0YLxDMKO57uSoIZQTRynCsvM2Rbk5Sy/zM9nCeXsuo7fDkiGybUu5ySQSmSapg9YahEBYTeVpbu3NwRCIDtBa5l9SNKAbLLNahuH5+jjMIUQvySsvSII68bousKDFuIIYiGOTg4oB4K8ZinR5AyFUQDiTTJ4dD39DUIlVJSQIAIM9zjNE/0HJ2kRe0fS8i2XR+gLj2Gi+70soJPENZ1jT5XpPeurUkuyV9nVHbgUqA200usGA+HdGk1+x3a9zBCYPxXAFetz0nhwPqbkBa9IDDfnOh92E4GRAOHIosJs/21HnBfif2qYhxSZxJ/u+73zpV85ykKba/wrEX+P5Uj/1mmZHmLW2bUZUJBp+yWNOUa/o2I80t46Flt6u5vHjOdpsDrxQoihnWLGjqjPOLNWm2'
  2726.         $W_Logo &= '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'
  2727.         $W_Logo &= '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'
  2728.         $W_Logo &= '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'
  2729.         $W_Logo &= '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'
  2730.         $W_Logo &= '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'
  2731.         $W_Logo &= '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'
  2732.         $W_Logo &= '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'
  2733.         $W_Logo &= 'kCvgULfLdDHRtHU0eqCpeZ03vPziBUdHRwQDjzTJtUeBFB+E0QsxMggYEaTZt