;Coded by UEZ - Proof-of-Concept version!

#include <ComboConstants.au3>
#include <SliderConstants.au3>
#include <EditConstants.au3>
#include <GuiMenu.au3>
#include <ScreenCapture.au3>
#include <Array.au3>;~~~
#include <Misc.au3>
#include <GuiReBar.au3>
#include <ScrollBarConstants.au3>
#include <GuiScrollBars.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <GuiToolbar.au3>
#include <StaticConstants.au3>
#include <GuiSlider.au3>

Opt("MustDeclareVars", 1)

Global Const $dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $ghGDIPDll = $__g_hGDIPDll
Global $aDPI = _GDIPlus_GraphicsGetDPIRatio()
;Global $hBMP_Screen = _ScreenCapture_Capture("", 0, 0, 1024, 768)
;Global $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hBMP_Screen)
;_WinAPI_DeleteObject($hBMP_Screen)
Global $sBitmap = @ScriptDir & "\Captured.bmp"
Global $hBmp = _GDIPlus_BitmapCreateFromFile($sBitmap)
Global $bW = _GDIPlus_ImageGetWidth($hBmp)
Global $bH = _GDIPlus_ImageGetHeight($hBmp)

;MsgBox(0,"",$bW & $bH)

local $filename
Global $JPEG_Quality = 85, $bSave_Shadow = 1, $bSave_BgColor = True, $bClipboard_Shadow = 1

Global $vBitmap, $IE_tmp, $IE_Pix_Size = 8
Global $hGUI_ImageEditor, $hGUI_ImageEditor_Child, $hGUI_ImageEditor_Blur, $idInput_IE_Blur, $hSlider_IE_Blur, $hGUI_ImageEditor_GS, $hSlider_IE_GS, $idInput_IE_GS, $hGUI_ImageEditor_BW, $hSlider_IE_BW, $idInput_IE_BW
Global $idInput_IE_H, $idInput_IE_HP, $idInput_IE_W, $idInput_IE_WP, $idChkBox_IE_AR, $idLabel_IE_SizeN
Global $IE_Brush_w, $IE_Brush_h, $skip_display, $hWnd_GUI

Global Enum $idSave_IE = 1500, $idCopy_IE, $idSend_IE, $idUndo_IE, $idPen_IE, $idHighlighter_IE, $idRectangle_IE, $idEllipse_IE, $idArrow_IE, $idColor_IE, $idText_IE, $idText_Conf_IE, $idFX_IE, _
		$idFX_IE_GS, $idFX_IE_BW, $idFX_IE_INV, $idFX_IE_BLUR, $idFX_IE_Pix, $idFX_IE_Rast, $idFX_IE_Resize, $idFX_IE_Watermark
Global $hCursor_System = _WinAPI_CopyIcon(_WinAPI_LoadCursor(0, 32512))
Global $hGUI_ImageEditor, $hGUI_ImageEditor_Child, $idPic_ImageEditor, $hToolbar_IE, $IE_iItem, $TB_Button_Chk, $TB_Menu_Chk, $hPen_IE, $hPenArrow_IE, $hPenArrowShadow_IE, $hCursor_IE, $IE_Bmp_Undo
Global $hGfx_IE, $hGfx_IE_BMP, $hCtx_IE, $hCtx_IE_BMP
Global $IE_Pen_Col = 0xFFFF0000, $IE_PenSize = 4, $IE_HL_Col = 0x30FFFF00, $IE_HL_Col_BGR = 0x00FFFF, $IE_HLSize = 20
Global $IE_Brush_Col = 0x30FFFF00
Global $IE_offset_x = 0, $IE_offset_y = 0, $IE_Tool_Selected = 1
Global $IE_ScrollbarH = False, $IE_ScrollbarV = False, $Undo_IE = False
Global Enum $idIEPen_Size = 1600, $idIEPen_Size_1px, $idIEPen_Size_2px, $idIEPen_Size_4px, $idIEPen_Size_8px, $idIEPen_Size_16px
Global Const $hDll = DllOpen("user32.dll")

Global $IE_Dummy_Ras, $IE_Dummy_Pix, $IE_Dummy_Blur, $IE_Dummy_BW, $IE_Dummy_Res, $IE_Dummy_WM, $idLabelColorChange, $idLabelColor, $iNewFontColor
Global $idLabelFontsize_IE, $idUpDown_Fontsize_IE, $idLabelColorChange, $idLabelColor, $idInputFontsize_IE, $iNewFontColor


Global Const $hMenu_IE_PS = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_AddMenuItem($hMenu_IE_PS, "1 px", $idIEPen_Size_1px)
_GUICtrlMenu_AddMenuItem($hMenu_IE_PS, "2 px", $idIEPen_Size_2px)
_GUICtrlMenu_AddMenuItem($hMenu_IE_PS, "4 px", $idIEPen_Size_4px)
_GUICtrlMenu_AddMenuItem($hMenu_IE_PS, "8 px", $idIEPen_Size_8px)
_GUICtrlMenu_AddMenuItem($hMenu_IE_PS, "16 px", $idIEPen_Size_16px)
_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 2)

Global Const $hMenu_IE_FX = _GUICtrlMenu_CreatePopup()
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 0, "Grayscale", $idFX_IE_GS)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 1, "Black & White", $idFX_IE_BW)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 2, "Invert", $idFX_IE_INV)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 3, "Blur", $idFX_IE_BLUR)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 4, "Pixelize", $idFX_IE_Pix)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 5, "Rasterize", $idFX_IE_Rast)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 6, "")
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 7, "Resize Image", $idFX_IE_Resize)
_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 8, "")
;_GUICtrlMenu_InsertMenuItem($hMenu_IE_FX, 9, "Watermark", $idFX_IE_Watermark)


Opt("MouseCoordMode", 2)
Opt("GUICloseOnESC", 1)
ImageEditor()
Opt("MouseCoordMode", 1)
Opt("GUICloseOnESC", 0)
_WinAPI_SetSystemCursor($hCursor_System, 32512)
_WinAPI_DestroyCursor($hCursor_IE)


DllClose($dll)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_Shutdown()
_GUICtrlMenu_DestroyMenu($hMenu_IE_PS)
_GUICtrlMenu_DestroyMenu($hMenu_IE_FX)
Exit

#region Image Editor
Func ImageEditor()
	Local Const $hGUI_ImageEditor_W = Int(@DesktopWidth * 0.875)
	Local Const $hGUI_ImageEditor_H = Int(@DesktopHeight * 0.875)
	Local Const $height_delta = 54, $iDeltaX = 10, $iDeltaY = 10

	$IE_Pen_Col = 0xFFFF0000
	$IE_PenSize = 4
	$IE_HL_Col = 0x70FFFF00
	$IE_Brush_Col = 0xFFFF0000
	$IE_HL_Col_BGR = 0x00FFFF
	$IE_HLSize = 20
	$IE_Brush_w = 16
	$IE_Brush_h = $IE_HLSize
	$IE_offset_x = 0
	$IE_offset_y = 0
	$IE_Tool_Selected = 1
	$hCursor_System = _WinAPI_CopyIcon(_WinAPI_LoadCursor(0, 32512))

	Local $IE_TB_Style = BitOR($TBSTYLE_FLAT, $TBSTYLE_TRANSPARENT, $CCS_NORESIZE, $CCS_NOPARENTALIGN)
	Local Const $hHBITMAP_IE_Icons = _GDIPlus_BitmapCreateFromMemory(_ImageEditor_ToolbarIcons(), True)
	$hGUI_ImageEditor = GUICreate("AutoIt Windows Screenshooter Basic Image Editor / Image Info: " & $bW & "x" & $bH & " pixel", $hGUI_ImageEditor_W, $hGUI_ImageEditor_H)
	GUISetBkColor(0xDBE3DE, $hGUI_ImageEditor)
	If @OSBuild < 6000 Then
		DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", $hGUI_ImageEditor, "wstr", "", "wstr", "")
		$IE_TB_Style = BitOR($TBSTYLE_FLAT, $TBSTYLE_TRANSPARENT)
	EndIf

	$hToolbar_IE = _GUICtrlToolbar_Create($hGUI_ImageEditor, $IE_TB_Style)
;~ 	Local $idToolbar_IE = _WinAPI_GetDlgCtrlID($hToolbar_IE)
	Local Const $hReBar = _GUICtrlRebar_Create($hGUI_ImageEditor, BitOR($CCS_TOP, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
	Local $aStrings[15]

	$aStrings[0] = _GUICtrlToolbar_AddString($hToolbar_IE, "  Save  ")
	$aStrings[1] = _GUICtrlToolbar_AddString($hToolbar_IE, "  Copy  ")
	$aStrings[2] = _GUICtrlToolbar_AddString($hToolbar_IE, "  Send  ")
	$aStrings[3] = _GUICtrlToolbar_AddString($hToolbar_IE, "Undo")
	$aStrings[4] = _GUICtrlToolbar_AddString($hToolbar_IE, "  Pen  ")
	$aStrings[5] = _GUICtrlToolbar_AddString($hToolbar_IE, "Pen Size")
	$aStrings[6] = _GUICtrlToolbar_AddString($hToolbar_IE, "Highlighter")
	$aStrings[7] = _GUICtrlToolbar_AddString($hToolbar_IE, "Rectangle")
	$aStrings[8] = _GUICtrlToolbar_AddString($hToolbar_IE, "Ellipse")
	$aStrings[9] = _GUICtrlToolbar_AddString($hToolbar_IE, "Arrow")
	$aStrings[10] = _GUICtrlToolbar_AddString($hToolbar_IE, "Color")
	$aStrings[11] = _GUICtrlToolbar_AddString($hToolbar_IE, "  Text  ")
	$aStrings[12] = _GUICtrlToolbar_AddString($hToolbar_IE, "Config")
	$aStrings[13] = _GUICtrlToolbar_AddString($hToolbar_IE, "FX")
	;$aStrings[14] = _GUICtrlToolbar_AddString($hToolbar_IE, "Watermark")

	_GUICtrlToolbar_SetBitmapSize($hToolbar_IE, 24, 24)
	_GUICtrlToolbar_AddBitmap($hToolbar_IE, 1, 0, $hHBITMAP_IE_Icons)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idSave_IE, 2, $aStrings[0], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idCopy_IE, 3, $aStrings[1], $BTNS_AUTOSIZE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idSend_IE, 4, $aStrings[2], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idUndo_IE, 0, $aStrings[3], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idHighlighter_IE, 6, $aStrings[6], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idPen_IE, 5, $aStrings[4], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idIEPen_Size, 8, $aStrings[5], $BTNS_DROPDOWN + $BTNS_WHOLEDROPDOWN + $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idRectangle_IE, 9, $aStrings[7], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idEllipse_IE, 10, $aStrings[8], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idArrow_IE, 11, $aStrings[9], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idColor_IE, 12, $aStrings[10], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idText_IE, 13, $aStrings[11], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButton($hToolbar_IE, $idText_Conf_IE, 14, $aStrings[12], $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlToolbar_AddButton($hToolbar_IE, $idFX_IE, 15, $aStrings[13], $BTNS_DROPDOWN  + $BTNS_WHOLEDROPDOWN + $BTNS_AUTOSIZE)
	_GUICtrlToolbar_AddButtonSep($hToolbar_IE)
	;_GUICtrlToolbar_AddButton($hToolbar_IE, $idFX_IE_Watermark, 16, $aStrings[14], $BTNS_AUTOSIZE)
	;_GUICtrlToolbar_AddButtonSep($hToolbar_IE)

	_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 2)

	Local $hHBitmap_ImageEditor = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
	$hGUI_ImageEditor_Child = GUICreate("", $hGUI_ImageEditor_W, $hGUI_ImageEditor_H - $height_delta, 0, $height_delta, $WS_POPUP, $WS_EX_MDICHILD, $hGUI_ImageEditor)
	GUISetBkColor(0x808080, $hGUI_ImageEditor_Child)

	If $bW < $hGUI_ImageEditor_W Or $bH < ($hGUI_ImageEditor_H - $height_delta) Then
		$IE_offset_x = -($hGUI_ImageEditor_W - $bW) / 2
		$IE_offset_y = -(($hGUI_ImageEditor_H - $height_delta) - $bH) / 2
		$idPic_ImageEditor = GUICtrlCreatePic("", $IE_offset_x * - 1, ($hGUI_ImageEditor_H - $bH) / 2 - $height_delta / 2, $bW, $bH)
	Else
		$idPic_ImageEditor = GUICtrlCreatePic("", 0, 0, $bW, $bH)
	EndIf

	_WinAPI_DeleteObject(GUICtrlSendMsg($idPic_ImageEditor, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap_ImageEditor))
	_WinAPI_DeleteObject($hHBitmap_ImageEditor)

	_GUICtrlRebar_AddToolBarBand($hReBar, $hToolbar_IE, "", 0)

	_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE)

	Local Const $iVSscroll = _WinAPI_GetSystemMetrics(2)
	Local Const $iHSscroll = _WinAPI_GetSystemMetrics(3)
	Local Const $iYCaption = _WinAPI_GetSystemMetrics(4)
	Local Const $iYFixedFrame = _WinAPI_GetSystemMetrics(8)
	Local Const $iXFixedFrame = _WinAPI_GetSystemMetrics(7)

	Local $iMetricsSumX = ($bH > ($hGUI_ImageEditor_H - $height_delta)) * $iVSscroll  + $iXFixedFrame * 2
	Local $iMetricsSumY = ($bW > $hGUI_ImageEditor_W) * $iHSscroll +  $iYCaption + $iYFixedFrame

	If $bW > $hGUI_ImageEditor_W Or $bH > ($hGUI_ImageEditor_H - $height_delta) Then
		_GUIScrollBars_Init($hGUI_ImageEditor_Child)
		_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_HORZ, 0)
		_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_HORZ, $bW - $hGUI_ImageEditor_W + 61 + $iMetricsSumX)
		_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_VERT, 0)
		_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_VERT, $bH - $hGUI_ImageEditor_H + $iMetricsSumY + $height_delta)

		GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL_IE")
		GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL_IE")
		GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL_IE")

		GUISetState(@SW_SHOW, $hGUI_ImageEditor)
		GUISetState(@SW_SHOW, $hGUI_ImageEditor_Child)

		If $bW > $hGUI_ImageEditor_W Then
			WM_HSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
			$IE_ScrollbarH = True
		EndIf
		If $bH > ($hGUI_ImageEditor_H - $height_delta) Then
			WM_VSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
			$IE_ScrollbarV = True
		EndIf
	Else
		GUISetState(@SW_SHOW, $hGUI_ImageEditor)
		GUISetState(@SW_SHOW, $hGUI_ImageEditor_Child)
	EndIf


	Local Const $hWnd_Title_Icon = _GDIPlus_BitmapCreateFromMemory(_WinTitle_Icon())
	Local Const $hIcon_New = _WinAPI_SetWindowTitleIcon($hWnd_Title_Icon, $hGUI_ImageEditor)

	$TB_Button_Chk = GUICtrlCreateDummy()

 	Local $mx, $my, $mxo, $myo, $aCI, $cc, $hIE_Bmp_Txt, $hIE_Bmp_Ctx, $dx, $dy, $m1, $m2
	Local $aIETxtFont[8] = [7, 0, "Arial", 14, 400, 0, 0, 0xFF0000]  ;Schriftgröße
	Local Const $hBrush_IE = _GDIPlus_BrushCreateSolid($IE_Brush_Col)
	$hPen_IE = _GDIPlus_PenCreate($IE_Pen_Col, $IE_PenSize)
	$hPenArrow_IE = _GDIPlus_PenCreate($IE_Pen_Col, $IE_PenSize)

	;$hPenArrowShadow_IE = _GDIPlus_PenCreate(0x10000000 + BitShift(BitShift(BitShift(BitAND($IE_Pen_Col, 0xFF0000), 16), 2), -16) + BitShift(BitShift(BitShift(BitAND($IE_Pen_Col, 0xFF00), 8), 2), -8) + BitShift(BitAND($IE_Pen_Col, 0xFF), 2), $IE_PenSize)
	$hPenArrowShadow_IE = _GDIPlus_PenCreate(BitOr(BitAnd($IE_Pen_Col, 0x10000000), BitShift(BitAnd(0xFCFCFC, $IE_Pen_Col), 2)), $IE_PenSize)

	Local Const $arrow_len = 7 ;Int($bW / 80)
	Local Const $hEndCap = _GDIPlus_ArrowCapCreate($arrow_len, Int($arrow_len * 0.66))
	_GDIPlus_PenSetCustomEndCap($hPenArrow_IE, $hEndCap)
	_GDIPlus_PenSetCustomEndCap($hPenArrowShadow_IE, $hEndCap)
	Local Const $hHL_IE = _GDIPlus_PenCreate($IE_HL_Col, $IE_HLSize)

	Local $hGfx_IE = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($idPic_ImageEditor))
	Local $hGfx_IE_BMP = _GDIPlus_BitmapCreateFromGraphics($bW, $bH, $hGfx_IE)
	Local $hCtx_IE = _GDIPlus_ImageGetGraphicsContext($hGfx_IE_BMP)
	$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)

	_GDIPlus_GraphicsSetSmoothingMode($hGfx_IE, 2)
	_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE, 2)

	Local $startX, $startY, $hGUI_ImageEditor_EnterTxt, $idEdit_IE, $idButton_IE, $IE_Text, $aTxt_Size, $aResult, $aBuffer, $keyDLL, $hCursor_IE_tmp
	Local $iMax, $hIE_Bmp_Rot, $hIE_Bmp_Ctx_Rot, $hIE_Matrix, $r
	Local $IE_Child_Active = False, $ESC_IE = False

	$IE_Dummy_Blur = GUICtrlCreateDummy()
	$IE_Dummy_BW = GUICtrlCreateDummy()
	$IE_Dummy_Pix = GUICtrlCreateDummy()
	$IE_Dummy_Ras = GUICtrlCreateDummy()
	$IE_Dummy_Res = GUICtrlCreateDummy()
	$IE_Dummy_WM = GUICtrlCreateDummy()

	Local $blur_go, $idLabel_IE_Blur, $idButton_IE_Blur, $blur_val
	Local $bw_go, $BW_val, $idLabel_IE_BW, $idButton_IE_BW
	Local $pix_go, $hGUI_IE_PixelizeConf, $idInput_IE_PC, $idLabel_Pixel, $idButton_IE_OK, $hBild
	Local $rast_go, $iColor_Rasterize, $hGUI_ImageEditor_Raster, $idLabel_IE_Raster, $idLabel_IE_Raster_Color, $idButton_IE_Color, $idButton_IE_Color_Start, $idGraphic_Color
	Local $hGUI_IE_Resize, $idGroup_IE_ISize, $idLabel_IE_Current, $idLabel_IE_New, $idLabel_IE_SizeC, $idGroup_IE_INSize, $idLabel_IE_W1, $idLabel_IE_x, $idLabel_IE_H1, $idLabel_IE_W2, $idLabel_IE_P1
	Local $idLabel_IE_P2, $idLabel_IE_H2, $idButton_IE_IHalf, $idButton_IE_IDouble, $idGroup_IE_IMethod, $idCombo_IE, $idButton_IE_Cancel, $IE_Resize = False, $IE_Old_W, $IE_Old_H

	$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap($IE_PenSize, $IE_PenSize, BitOR(BitShift(BitAND($IE_Pen_Col, 0x000000FF), -16), BitAND($IE_Pen_Col, 0x0000FF00), BitShift(BitAND($IE_Pen_Col, 0x00FF0000), 16)))
	$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
	If (Not @error) And  $aCI[4] = $idPic_ImageEditor Then _WinAPI_SetCursor($hCursor_IE)

	GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_IE")
	GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY_IE")
	GUIRegisterMsg($WM_SETCURSOR, "WM_SETCURSOR")

	Local $t, $u, $test
	Do
		If WinActive($hGUI_ImageEditor) Or WinActive($hGUI_ImageEditor_Child) Then
			$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
			Switch $aCI[4]
				Case 0
						$m1 = False
						$m2 = True
				Case Else
					If Not $m1 Then
						ControlClick($hGUI_ImageEditor_Child, "", $idPic_ImageEditor)
						$m1 = True
						$m2 = False
					EndIf
			EndSwitch
			If $aCI[2] And $aCI[4] = $idPic_ImageEditor And WinActive($hGUI_ImageEditor_Child) Then
				_GDIPlus_BitmapDispose($IE_Bmp_Undo)
				$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
				If Not $IE_Bmp_Undo Or @error Then
					MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																			"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
					ExitLoop
				EndIf

				Switch $IE_Tool_Selected

					Case 1 ;pen
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH)
						$mxo = MouseGetPos(0) + $IE_PenSize / 2
						$myo = MouseGetPos(1) + $IE_PenSize / 2
						Do
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							_GDIPlus_GraphicsDrawLine($hGfx_IE, ($aCI[0] + $IE_PenSize / 2) + $IE_offset_x, ($aCI[1] + $IE_PenSize / 2) + $IE_offset_y, $mxo + $IE_offset_x, $myo + $IE_offset_y, $hPen_IE)
							_GDIPlus_GraphicsDrawLine($hCtx_IE, ($aCI[0] + $IE_PenSize / 2) + $IE_offset_x, ($aCI[1] + $IE_PenSize / 2) + $IE_offset_y, $mxo + $IE_offset_x, $myo + $IE_offset_y, $hPen_IE)
							$mxo = $aCI[0] + $IE_PenSize / 2
							$myo = $aCI[1] + $IE_PenSize / 2
						Until Not $aCI[2] * Sleep(1)
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
						CopyImage2Control($idPic_ImageEditor)
						$IE_Resize = False

					Case 2 ;highlighter
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH)
						$mxo = MouseGetPos(0) + $IE_HLSize / 2
						$myo = MouseGetPos(1) + $IE_HLSize / 2
						Do
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							_GDIPlus_GraphicsDrawLine($hGfx_IE, ($aCI[0] + $IE_HLSize / 2) + $IE_offset_x, ($aCI[1] + $IE_HLSize / 2) + $IE_offset_y, $mxo + $IE_offset_x, $myo + $IE_offset_y, $hHL_IE)
							_GDIPlus_GraphicsDrawLine($hCtx_IE, ($aCI[0] + $IE_HLSize / 2) + $IE_offset_x, ($aCI[1] + $IE_HLSize / 2) + $IE_offset_y, $mxo + $IE_offset_x, $myo + $IE_offset_y, $hHL_IE)
							$mxo = $aCI[0] + $IE_HLSize / 2
							$myo = $aCI[1] + $IE_HLSize / 2
						Until Not $aCI[2] * Sleep(1)
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
;~ 						Do
;~ 							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
;~ 							_GDIPlus_GraphicsFillRect($hGfx_IE, $aCI[0] + $IE_offset_x, $aCI[1] + $IE_offset_y, $IE_Brush_w, $IE_Brush_h, $hBrush_IE)
;~ 							_GDIPlus_GraphicsFillRect($hCtx_IE, $aCI[0] + $IE_offset_x, $aCI[1] + $IE_offset_y, $IE_Brush_w, $IE_Brush_h, $hBrush_IE)
;~ 						Until Not $aCI[2] * Sleep(30)
						CopyImage2Control($idPic_ImageEditor)
						$IE_Resize = False

					Case 3 ;rectangle
						$startX = MouseGetPos(0) - $IE_offset_x * -1 + $IE_PenSize / 2
						$mxo = $startX
						$startY = MouseGetPos(1) - $IE_offset_y * -1 + $IE_PenSize / 2
						$myo = $startY
						Do
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							$mx = $aCI[0] - $IE_offset_x * -1 + $IE_PenSize / 2
							$my = $aCI[1] - $IE_offset_y * -1 + $IE_PenSize / 2
							If $mx <> $mxo Or $my <> $myo Then
								_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH)
								If $startX < $mx And $startY < $my Then
									_GDIPlus_GraphicsDrawRect($hCtx_IE, $startX, $startY, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawRect($hCtx_IE, $startX + $iDeltaX, $startY + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								ElseIf $startX > $mx And $startY < $my Then
									_GDIPlus_GraphicsDrawRect($hCtx_IE, $mx, $startY, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawRect($hCtx_IE, $mx + $iDeltaX, $startY + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								ElseIf $startX < $mx And $startY > $my Then
									_GDIPlus_GraphicsDrawRect($hCtx_IE, $startX, $my, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawRect($hCtx_IE, $startX + $iDeltaX, $my + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								Else
									_GDIPlus_GraphicsDrawRect($hCtx_IE, $mx, $my, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawRect($hCtx_IE, $mx + $iDeltaX, $my + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								EndIf
								_GDIPlus_GraphicsDrawImageRect($hGfx_IE, $hGfx_IE_BMP, 0, 0, $bW, $bH)
								$mxo = $mx
								$myo = $my
							EndIf
						Until Not $aCI[2] * Sleep(10)
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
						CopyImage2Control($idPic_ImageEditor)
						$IE_Resize = False

					Case 4 ;ellipse
						$startX = MouseGetPos(0) - $IE_offset_x * - 1 + $IE_PenSize / 2
						$mxo = $startX
						$startY = MouseGetPos(1) - $IE_offset_y * - 1 + $IE_PenSize / 2
						$myo = $startY
						Do
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							$mx = $aCI[0] - $IE_offset_x * - 1 + $IE_PenSize / 2
							$my = $aCI[1] - $IE_offset_y * - 1 + $IE_PenSize / 2
							If $mx <> $mxo Or $my <> $myo Then
								_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH)
								If $startX < $mx And $startY < $my Then
									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $startX, $startY, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $startX + $iDeltaX, $startY + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								ElseIf $startX > $mx And $startY < $my Then
									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $mx, $startY, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $mx + $iDeltaX, $startY + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								ElseIf $startX < $mx And $startY > $my Then
									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $startX, $my, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $startX + $iDeltaX, $my + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								Else
									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $mx, $my, Abs($startX - $mx), Abs($startY - $my), $hPen_IE)
;~ 									_GDIPlus_GraphicsDrawEllipse($hCtx_IE, $mx + $iDeltaX, $my + $iDeltaY, Abs($startX - $mx), Abs($startY - $my), $hPenArrowShadow_IE)
								EndIf
								_GDIPlus_GraphicsDrawImageRect($hGfx_IE, $hGfx_IE_BMP, 0, 0, $bW, $bH)
								$mxo = $mx
								$myo = $my
							EndIf
						Until Not $aCI[2] * Sleep(10)
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
						CopyImage2Control($idPic_ImageEditor)
						$IE_Resize = False

					Case 5 ;arrow
						$startX = MouseGetPos(0) - $IE_offset_x * -1 + $IE_PenSize / 2
						$mxo = $startX
						$startY = MouseGetPos(1) - $IE_offset_y * -1 + $IE_PenSize / 2
						$myo = $startY
						Do
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							$mx = $aCI[0] - $IE_offset_x * -1 + $IE_PenSize / 2
							$my = $aCI[1] - $IE_offset_y * -1 + $IE_PenSize / 2
							If $mx <> $mxo Or $my <> $myo Then
								_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH)
								_GDIPlus_GraphicsDrawLine($hCtx_IE, $startX, $startY, $mx, $my, $hPenArrow_IE)
								;_GDIPlus_GraphicsDrawLine($hCtx_IE, $startX + $iDeltaX, $startY + $iDeltaY, $mx + $iDeltaX, $my + $iDeltaY, $hPenArrowShadow_IE) ;zweiter Pfeil als Schatten
								_GDIPlus_GraphicsDrawImageRect($hGfx_IE, $hGfx_IE_BMP, 0, 0, $bW, $bH)
								$mxo = $mx
								$myo = $my
							EndIf
						Until Not $aCI[2] * Sleep(10)
						_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
						CopyImage2Control($idPic_ImageEditor)
						$IE_Resize = False
				EndSwitch
			EndIf

			Switch GUIGetMsg()
				Case $GUI_EVENT_CLOSE
					If $ESC_IE Then
						$ESC_IE = False
					Else
						ExitLoop
					EndIf
				Case $TB_Button_Chk
					Switch GUICtrlRead($TB_Button_Chk)
						Case $idSave_IE
							$skip_display = True
							$hWnd_GUI = $hGUI_ImageEditor
							Save_Bitmap()
						Case $idCopy_IE
							Pic2Clipboard()
						Case $idSend_IE
							OpenMailClient()
						Case $idUndo_IE
							If $IE_Resize Then
								$bW = $IE_Old_W
								$bH = $IE_Old_H
								If $bW < $hGUI_ImageEditor_W Then
									$IE_offset_x = -($hGUI_ImageEditor_W - $bW) / 2
								Else
									$IE_offset_x = 0
								EndIf
								If $bH < ($hGUI_ImageEditor_H - $height_delta) Then
									$IE_offset_y = -(($hGUI_ImageEditor_H - $height_delta) - $bH) / 2
								Else
									$IE_offset_y = 0
								EndIf
								GUICtrlSetPos($idPic_ImageEditor, $IE_offset_x * -1, $IE_offset_y * -1, $bW, $bH)

								$iMetricsSumX = ($bH > ($hGUI_ImageEditor_H - $height_delta)) * $iVSscroll + $iXFixedFrame * 2
								$iMetricsSumY = ($bW > $hGUI_ImageEditor_W) * $iHSscroll + $iYCaption + $iYFixedFrame

								_Functions_RemoveScrollBars($hGUI_ImageEditor_Child)
								$IE_ScrollbarH = False
								$IE_ScrollbarV = False

								If $bW > $hGUI_ImageEditor_W Or $bH > ($hGUI_ImageEditor_H - $height_delta) Then
									_GUIScrollBars_Init($hGUI_ImageEditor_Child)
									_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_HORZ, 0)
									_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_HORZ, $bW - $hGUI_ImageEditor_W + 61 + $iMetricsSumX)
									_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_VERT, 0)
									_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_VERT, $bH - $hGUI_ImageEditor_H + $iMetricsSumY + $height_delta - 1)
									GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL_IE")
									GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL_IE")
									GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL_IE")

									If $bW > $hGUI_ImageEditor_W Then
										WM_HSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
										$IE_ScrollbarH = True
									EndIf
									If $bH > ($hGUI_ImageEditor_H - $height_delta) Then
										WM_VSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
										$IE_ScrollbarV = True
									EndIf
									_GDIPlus_GraphicsDrawImage($hCtx_IE, $IE_Bmp_Undo, 0, 0)
									_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
								Else
									GUIRegisterMsg($WM_HSCROLL, "")
									GUIRegisterMsg($WM_VSCROLL, "")
									GUIRegisterMsg($WM_MOUSEWHEEL, "")
								EndIf
								$hBmp = _GDIPlus_BitmapClone($IE_Bmp_Undo, $bW, $bH)
								_GDIPlus_BitmapDispose($hGfx_IE_BMP)
								_GDIPlus_ImageDispose($hCtx_IE_BMP)
								_GDIPlus_GraphicsDispose($hGfx_IE)
								_GDIPlus_GraphicsDispose($hCtx_IE)
								$hGfx_IE = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($idPic_ImageEditor))
								$hGfx_IE_BMP = _GDIPlus_BitmapCreateFromGraphics($bW, $bH, $hGfx_IE)
								$hCtx_IE = _GDIPlus_ImageGetGraphicsContext($hGfx_IE_BMP)
								$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
								_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
								_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE, 2)
								_GDIPlus_GraphicsSetSmoothingMode($hGfx_IE, 2)
							EndIf

							_GDIPlus_GraphicsDrawImage($hCtx_IE, $IE_Bmp_Undo, 0, 0)
							_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
							CopyImage2Control($idPic_ImageEditor)
							WinSetTitle($hGUI_ImageEditor, "", "AutoIt Windows Screenshooter Basic Image Editor / Image Info: " & $bW & "x" & $bH & " pixel")
						Case $idPen_IE
							$IE_Tool_Selected = 1
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idUndo_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idHighlighter_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idRectangle_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idEllipse_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idArrow_IE, False)
							_WinAPI_DestroyCursor($hCursor_IE)
							$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap($IE_PenSize, $IE_PenSize, BitOR(BitShift(BitAND($IE_Pen_Col, 0x000000FF), -16), BitAND($IE_Pen_Col, 0x0000FF00), BitShift(BitAND($IE_Pen_Col, 0x00FF0000), 16)))
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							If (Not @error) And  $aCI[4] = $idPic_ImageEditor Then _WinAPI_SetCursor($hCursor_IE)
						Case $idHighlighter_IE
							$IE_Tool_Selected = 2
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idUndo_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idHighlighter_IE)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idRectangle_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idEllipse_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idArrow_IE, False)
							_WinAPI_DestroyCursor($hCursor_IE)
							$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap(16, $IE_HLSize, $IE_HL_Col_BGR)
							$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
							If (Not @error) And  $aCI[4] = $idPic_ImageEditor Then _WinAPI_SetCursor($hCursor_IE)
						Case $idRectangle_IE
							$IE_Tool_Selected = 3
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idUndo_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idHighlighter_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idRectangle_IE)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idEllipse_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idArrow_IE, False)
						Case $idEllipse_IE
							$IE_Tool_Selected = 4
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idUndo_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idHighlighter_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idRectangle_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idEllipse_IE)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idArrow_IE, False)

						Case $idArrow_IE
							$IE_Tool_Selected = 5
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idUndo_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idPen_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idHighlighter_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idRectangle_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idEllipse_IE, False)
							_GUICtrlToolbar_CheckButton($hToolbar_IE, $idArrow_IE)
						Case $idColor_IE

							$cc = _ChooseColor(2, 0xFF0000, 2, $hGUI_ImageEditor)
							If Not @error Then
								$IE_Pen_Col = "0xFF" & Hex($cc, 6)
								_GDIPlus_PenSetColor($hPen_IE, $IE_Pen_Col)
								_GDIPlus_PenSetColor($hPenArrow_IE, $IE_Pen_Col)
								_GDIPlus_PenSetColor($hPenArrowShadow_IE, BitOr(BitAnd($IE_Pen_Col, 0x10000000), BitShift(BitAnd(0xFCFCFC, $IE_Pen_Col), 2)))
								_GDIPlus_PenSetColor($hPenArrow_IE, $IE_Pen_Col)
								$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap($IE_PenSize, $IE_PenSize, BitOR(BitShift(BitAND($IE_Pen_Col, 0x000000FF), -16), BitAND($IE_Pen_Col, 0x0000FF00), BitShift(BitAND($IE_Pen_Col, 0x00FF0000), 16)))
								$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
								If (Not @error) And  $aCI[4] = $idPic_ImageEditor Then _WinAPI_SetCursor($hCursor_IE)
							EndIf

						Case $idText_IE ;text

							$hGUI_ImageEditor_EnterTxt = GUICreate("Enter Text", 500, 370, -1, -1, $WS_SYSMENU, $WS_EX_TOOLWINDOW, $hGUI_ImageEditor)
							$idEdit_IE = GUICtrlCreateEdit("", 2, 2, 490, 290)
							GUICtrlSetFont($idEdit_IE, $aIETxtFont[3] * $aDPI[0], $aIETxtFont[4], $aIETxtFont[1], $aIETxtFont[2], 5)
							GUICtrlSetColor($idEdit_IE, $aIETxtFont[7])
							$idButton_IE = GUICtrlCreateButton("Finish", 0, 295, 324, 48)
							GUICtrlSetFont(-1, 20 * $aDPI[0])
							$idLabelColor = GUICtrlCreateLabel("Color", 330, 312, 35, 20, $SS_RIGHT)
							GUICtrlSetFont(-1, 10 * $aDPI[0])
							$idLabelColorChange = GUICtrlCreateLabel("", 370, 310, 20, 20)
							GUICtrlSetBkColor(-1, $aIETxtFont[7])
							$idLabelFontsize_IE = GUICtrlCreateLabel("Size", 400, 312, 35, 20, $SS_RIGHT)
							GUICtrlSetFont(-1, 11 * $aDPI[0])
							$idInputFontsize_IE = GUICtrlCreateInput($aIETxtFont[3], 440, 310, 52, 20, BitOR($ES_NUMBER, $ES_CENTER))
							GUICtrlSetFont(-1, 10 * $aDPI[0])
							GUICtrlSetLimit(-1, 128, 8)
							GUICtrlSetTip(-1, "Enter a font size (min:8 / max:128) and press enter when done")
							$idUpDown_Fontsize_IE = GUICtrlCreateUpdown($idInputFontsize_IE)
							GUICtrlSetLimit(-1, 128, 8)
							GUICtrlSetTip(-1, "Use up/down to change font size (min:8 / max:128)")
							GUISetState(@SW_SHOW, $hGUI_ImageEditor_EnterTxt)
							Do
								Switch GUIGetMsg()
									Case $GUI_EVENT_CLOSE, $idButton_IE
										ExitLoop
									Case $idUpDown_Fontsize_IE
										GUICtrlSetFont($idEdit_IE, GUICtrlRead($idInputFontsize_IE), $aIETxtFont[4], $aIETxtFont[1], $aIETxtFont[2], 5)
									Case $idInputFontsize_IE
										GUICtrlSetData($idInputFontsize_IE, Min(Max(GUICtrlRead($idInputFontsize_IE), 8), 128))
										GUICtrlSetFont($idEdit_IE, GUICtrlRead($idInputFontsize_IE), $aIETxtFont[4], $aIETxtFont[1], $aIETxtFont[2], 5)
									Case $idLabelColorChange
										$iNewFontColor = _ChooseColor(2, $aIETxtFont[7], 2, $hGUI_ImageEditor_EnterTxt)
										If $iNewFontColor <> -1 Then
											GUICtrlSetBkColor($idLabelColorChange, $iNewFontColor)
											$aIETxtFont[7] = $iNewFontColor
											GUICtrlSetColor($idEdit_IE, $aIETxtFont[7])
										EndIf
								EndSwitch
							Until False

							$IE_Text = GUICtrlRead($idEdit_IE)
							GUIDelete($hGUI_ImageEditor_EnterTxt)

							If $IE_Text <> "" Then

								$aTxt_Size = GetStringSize($IE_Text, $aIETxtFont[2], $aIETxtFont[3], $aIETxtFont[1])

								$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $aTxt_Size[0], "int", $aTxt_Size[1], "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
								$hIE_Bmp_Txt = $aResult[6]
								$hIE_Bmp_Ctx = _GDIPlus_ImageGetGraphicsContext($hIE_Bmp_Txt)
								_GDIPlus_GraphicsSetSmoothingMode($hIE_Bmp_Ctx, 2)
								DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hIE_Bmp_Ctx, "int", 4)
								_GDIPlus_GraphicsDrawString2($hIE_Bmp_Ctx, $IE_Text, $aIETxtFont[2], $aIETxtFont[3], $aIETxtFont[1], 0xFF000000 + $aIETxtFont[7])

								$hCursor_IE_tmp = _WinAPI_CopyImage($hCursor_IE, $IMAGE_CURSOR)
								_WinAPI_DestroyCursor($hCursor_IE)

								$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap(4, 4, BitOR(0x10000 * BitXOR(BitAND(BitShift($aIETxtFont[7], 16), 0xFF), 0xFF), 0x100 * BitXOR(BitAND(BitShift($aIETxtFont[7], 8), 0xFF), 0xFF), BitXOR(BitAND($aIETxtFont[7], 0xFF), 0xFF)))

								_GDIPlus_BitmapDispose($IE_Bmp_Undo)
 								$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
								If Not $IE_Bmp_Undo Or @error Then
									MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																							"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
									ExitLoop
								EndIf
								Do
									$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
									$mx = $aCI[0] - $IE_offset_x * - 1 - $aTxt_Size[0] / 2
									$my = $aCI[1] - $IE_offset_y * - 1 - $aTxt_Size[1] / 2
									If $mx <> $mxo Or $my <> $myo Then
										_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hBmp, 0, 0, $bW, $bH) ; hinzugefügt
										_GDIPlus_GraphicsDrawImageRect($hCtx_IE, $hIE_Bmp_Txt, $mx, $my, $aTxt_Size[0], $aTxt_Size[1])
										_GDIPlus_GraphicsDrawImageRect($hGfx_IE, $hGfx_IE_BMP, 0, 0, $bW, $bH)
										$mxo = $mx
										$myo = $my
									EndIf
									If _IsPressed("1B", $DLL) Then $ESC_IE = True
								Until ($aCI[2] * Sleep(20)) Or $ESC_IE

								If Not $ESC_IE Then
									_GDIPlus_GraphicsDrawImageRect($hCtx_IE_BMP, $hGfx_IE_BMP, 0, 0, $bW, $bH)
									CopyImage2Control($idPic_ImageEditor)
									_GDIPlus_MatrixDispose($hIE_Matrix)
									_WinAPI_DestroyCursor($hCursor_IE)
									$hCursor_IE = $hCursor_IE_tmp
								Else

								_GDIPlus_GraphicsDrawImageRect($hGfx_IE, $hBmp, 0, 0, $bW, $bH)

								EndIf
								_GDIPlus_BitmapDispose($hIE_Bmp_Txt)
								_GDIPlus_GraphicsDispose($hIE_Bmp_Ctx)
							EndIf


						Case $idText_Conf_IE
							ConsoleWrite("*")
							$aBuffer = $aIETxtFont ;save array because when _ChooseFont() has been cancelled the array will be deleted!
							$aIETxtFont = _ChooseFont("Arial", 24, 0x0000FF) ;BGR
							If @error Then $aIETxtFont = $aBuffer
					EndSwitch

				Case $IE_Dummy_Blur
					$blur_go = True
					$hGUI_ImageEditor_Blur = GUICreate("Blur Setting", 332, 118, -1, -1, BitOR($WS_SYSMENU, $WS_GROUP), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hGUI_ImageEditor)
					$hSlider_IE_Blur = _GUICtrlSlider_Create($hGUI_ImageEditor_Blur, 10, 40, 310, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE, $WS_TABSTOP))
					_GUICtrlSlider_SetRangeMin($hSlider_IE_Blur, 1)
					_GUICtrlSlider_SetRangeMax($hSlider_IE_Blur, 900)
					_GUICtrlSlider_SetPos($hSlider_IE_Blur, 1000 - 333)
					$idLabel_IE_Blur = GUICtrlCreateLabel("Blur Strength", 20, 12, 83, 23)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idInput_IE_Blur = GUICtrlCreateInput(1 - 0.333, 112, 8, 95, 27, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY))
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idButton_IE_Blur = GUICtrlCreateButton("Start", 224, 8, 80, 27)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					GUISetState(@SW_SHOW, $hGUI_ImageEditor_Blur)
					ControlFocus($hGUI_ImageEditor_Blur, "", $idButton_IE_Blur)

					While 1
						Switch GUIGetMsg()
							Case $GUI_EVENT_CLOSE
								$blur_go  = False
								ExitLoop
							Case $idButton_IE_Blur
								$blur_val = (1000 - _GUICtrlSlider_GetPos($hSlider_IE_Blur)) / 1000
								ExitLoop
						EndSwitch
						$aCI = GUIGetCursorInfo($hGUI_ImageEditor_Blur)
						If $aCI [2] Then GUICtrlSetData($idInput_IE_Blur, Round(($IE_tmp / 1000), 4))
					WEnd
					GUIDelete($hGUI_ImageEditor_Blur)

					If $blur_go Then
						Local $hBild
						_GDIPlus_BitmapDispose($IE_Bmp_Undo)
						$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
						If Not $IE_Bmp_Undo Or @error Then
							MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																					"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
							ExitLoop
						EndIf
						$hBild = _Blur($hBmp, $bW, $bH, 0, 0, 0, 0, $blur_val)
						_GDIPlus_BitmapDispose($hBmp)
						$hBmp = $hBild
						CopyImage2Control($idPic_ImageEditor)
						_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
						$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
						_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
					EndIf
					WinActivate($hGUI_ImageEditor_Child)
					$IE_Resize = False
				Case $IE_Dummy_BW
					$BW_val = 160
					$bw_go = True
					$hGUI_ImageEditor_BW = GUICreate("Black&White Setting", 332, 118, -1, -1, BitOR($WS_SYSMENU, $WS_GROUP), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hGUI_ImageEditor)
					$hSlider_IE_BW = _GUICtrlSlider_Create($hGUI_ImageEditor_BW, 10, 40, 310, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE, $WS_TABSTOP))
					_GUICtrlSlider_SetRangeMin($hSlider_IE_BW, 1)
					_GUICtrlSlider_SetRangeMax($hSlider_IE_BW, 255)
					_GUICtrlSlider_SetPos($hSlider_IE_BW, $BW_val)
					$idLabel_IE_BW = GUICtrlCreateLabel("Black/White Treshold", 20, 2, 83, 33)
					GUICtrlSetFont(-1, 11, 400, 0, "Times New Roman")
					$idInput_IE_BW = GUICtrlCreateInput($BW_val, 112, 8, 95, 27, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY))
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idButton_IE_BW = GUICtrlCreateButton("Start", 224, 8, 80, 27)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					GUISetState(@SW_SHOW, $hGUI_ImageEditor_BW)
					ControlFocus($hGUI_ImageEditor_BW, "", $idButton_IE_BW)

					While 1
						Switch GUIGetMsg()
							Case $GUI_EVENT_CLOSE
									$bw_go  = False
									GUIDelete($hGUI_ImageEditor_BW)
									ExitLoop
							Case $idButton_IE_BW
								$BW_val = _GUICtrlSlider_GetPos($hSlider_IE_BW)
								GUIDelete($hGUI_ImageEditor_BW)
								ExitLoop
						EndSwitch
						$aCI = GUIGetCursorInfo($hGUI_ImageEditor_BW)
						If $aCI [2] Then GUICtrlSetData($idInput_IE_BW, $IE_tmp)
					WEnd

					If $bw_go Then
						_GDIPlus_BitmapDispose($IE_Bmp_Undo)
						$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
						If Not $IE_Bmp_Undo Or @error Then
							MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																					"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
							ExitLoop
						EndIf
						ASM_Bitmap_Grey_BnW($hBmp, 1, $BW_val, True)
						CopyImage2Control($idPic_ImageEditor)
						_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
						$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
						_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
					EndIf
					WinActivate($hGUI_ImageEditor_Child)
					$IE_Resize = False
				Case $IE_Dummy_Pix
					$pix_go = True
					$hGUI_IE_PixelizeConf = GUICreate("Pixelize Settings", 194, 43, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hGUI_ImageEditor)
					$idInput_IE_PC = GUICtrlCreateInput($IE_Pix_Size, 78, 10, 41, 21, BitOR($ES_CENTER, $ES_NUMBER))
					$idLabel_Pixel = GUICtrlCreateLabel("Pixel Size", 16, 10, 62, 23)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idButton_IE_OK = GUICtrlCreateButton("OK", 144, 8, 43, 25)
					GUISetState(@SW_SHOW, $hGUI_IE_PixelizeConf)
					ControlFocus($hGUI_IE_PixelizeConf, "", $idButton_IE_OK)

					While 1
						Switch GUIGetMsg()
							Case $GUI_EVENT_CLOSE
								Local $pix_go = False
								ExitLoop
							Case $idButton_IE_OK
								ExitLoop
						EndSwitch
					WEnd

					If	$pix_go Then
						_GDIPlus_BitmapDispose($IE_Bmp_Undo)
						$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
						If Not $IE_Bmp_Undo Or @error Then
							MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																					"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
							ExitLoop
						EndIf
						ASM_Bitmap_Pixelize($hBmp, Min(GUICtrlRead($idInput_IE_PC), Min($bW, $bH)))
						CopyImage2Control($idPic_ImageEditor)
						GUIDelete($hGUI_IE_PixelizeConf)
						_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
						$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
						_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
					Else
						GUIDelete($hGUI_IE_PixelizeConf)
					EndIf
					WinActivate($hGUI_ImageEditor_Child)
					$IE_Resize = False
				Case $IE_Dummy_Ras
					$rast_go = True
					$iColor_Rasterize = 0x000000
					$hGUI_ImageEditor_Raster = GUICreate("Rasterize Setting", 278, 100, -1, -1, BitOR($WS_SYSMENU, $WS_GROUP), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hGUI_ImageEditor)
					$idLabel_IE_Raster = GUICtrlCreateLabel("Current Color", 6, 10, 86, 56, $SS_CENTER)
					GUICtrlSetFont(-1, 18, 400, 0, "Times New Roman")
					$idButton_IE_Color = GUICtrlCreateButton("Change", 176, 8, 80, 28)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idButton_IE_Color_Start = GUICtrlCreateButton("Start", 176, 40, 80, 28)
					GUICtrlSetFont(-1, 12, 400, 0, "Times New Roman")
					$idGraphic_Color = GUICtrlCreateGraphic(100, 8, 61, 61, $SS_ETCHEDFRAME)
					$idLabel_IE_Raster_Color = GUICtrlCreateLabel("", 104, 12, 52, 52)
					GUICtrlSetBkColor(-1, $iColor_Rasterize)
					GUISetState(@SW_SHOW, $hGUI_ImageEditor_Raster)
					ControlFocus($hGUI_ImageEditor_Raster, "", $idButton_IE_Color_Start)

					While 1
						Switch GUIGetMsg()
							Case $GUI_EVENT_CLOSE
								$rast_go = False
								ExitLoop
							Case $idButton_IE_Color, $idLabel_IE_Raster_Color
								$iColor_Rasterize = _ChooseColor(2, $iColor_Rasterize, 2)
								If Not @error Then GUICtrlSetBkColor(-1, $iColor_Rasterize)
							Case $idButton_IE_Color_Start
								ExitLoop
						EndSwitch
					WEnd

					GUIDelete($hGUI_ImageEditor_Raster)
					If $rast_go Then
						_GDIPlus_BitmapDispose($IE_Bmp_Undo)
						$IE_Bmp_Undo = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
						If Not $IE_Bmp_Undo Or @error Then
							MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
																					"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
							ExitLoop
						EndIf
						ASM_Bitmap_Rasterize($hBmp, $iColor_Rasterize)
						CopyImage2Control($idPic_ImageEditor)
						_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
						$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
						_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
					EndIf
					WinActivate($hGUI_ImageEditor_Child)
					$IE_Resize = False
				Case $IE_Dummy_Res
					$IE_Old_W = $bW
					$IE_Old_H = $bH
					GUIRegisterMsg($WM_COMMAND, "")
					_GDIPlus_BitmapDispose($IE_Bmp_Undo)
					$IE_Bmp_Undo = _GDIPlus_BitmapCloneArea($hBmp, 0, 0, $bW, $bH)
					If Not $IE_Bmp_Undo Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
							"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
					$Undo_IE = True
					$hGUI_IE_Resize = GUICreate("Resize Image", 306, 470, -1, -1, BitOR($WS_SYSMENU, $WS_GROUP), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST), $hGUI_ImageEditor)
					GUISetFont(8, 400, 0, "Arial")

					$idGroup_IE_ISize = GUICtrlCreateGroup(" Image Size ", 16, 8, 273, 97)
					$idLabel_IE_Current = GUICtrlCreateLabel("Current Size:", 32, 32, 94, 22)
					GUICtrlSetFont(-1, 12, 400, 0, "Arial")
					$idLabel_IE_New = GUICtrlCreateLabel("New Size:", 32, 64, 74, 22)
					GUICtrlSetFont(-1, 12, 400, 0, "Arial")
					$idLabel_IE_SizeC = GUICtrlCreateLabel($bW & " x " & $bH & " Pixel", 134, 32, 129, 22, $SS_RIGHT)
					GUICtrlSetFont(-1, 12, 400, 0, "Arial")
					$idLabel_IE_SizeN = GUICtrlCreateLabel($bW & " x " & $bH & " Pixel", 134, 64, 129, 22, $SS_RIGHT)
					GUICtrlSetFont(-1, 12, 400, 0, "Arial")
					GUICtrlCreateGroup("", -99, -99, 1, 1)

					$idGroup_IE_INSize = GUICtrlCreateGroup(" Set New Size ", 16, 120, 273, 185)
					$idLabel_IE_W1 = GUICtrlCreateLabel("Width:", 36, 146, 46, 21)
					GUICtrlSetFont(-1, 11, 400, 0, "Arial")
					$idInput_IE_W = GUICtrlCreateInput($bW, 80, 144, 49, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idLabel_IE_x = GUICtrlCreateLabel("x", 144, 146, 11, 20)
					GUICtrlSetFont(-1, 10, 400, 0, "Arial")
					$idLabel_IE_H1 = GUICtrlCreateLabel(":Height", 221, 146, 49, 21)
					GUICtrlSetFont(-1, 11, 400, 0, "Arial")
					$idInput_IE_H = GUICtrlCreateInput($bH, 166, 144, 49, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idLabel_IE_W2 = GUICtrlCreateLabel("Width:", 36, 183, 46, 21)
					GUICtrlSetFont(-1, 11, 400, 0, "Arial")
					$idInput_IE_WP = GUICtrlCreateInput("100", 80, 181, 35, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idLabel_IE_P1 = GUICtrlCreateLabel("%", 116, 185, 15, 19)
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idInput_IE_HP = GUICtrlCreateInput("100", 166, 181, 35, 23, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER))
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idLabel_IE_P2 = GUICtrlCreateLabel("%", 202, 185, 15, 19)
					GUICtrlSetFont(-1, 9, 400, 0, "Arial")
					$idLabel_IE_H2 = GUICtrlCreateLabel(":Height", 221, 183, 49, 21)
					GUICtrlSetFont(-1, 11, 400, 0, "Arial")
					$idChkBox_IE_AR = GUICtrlCreateCheckbox("Preserve Aspect Ration", 80, 220)
					$idButton_IE_IHalf = GUICtrlCreateButton("Half", 36, 264, 75, 25)
					GUICtrlSetFont(-1, 10, 400, 0, "Arial")
					$idButton_IE_IDouble = GUICtrlCreateButton("Double", 193, 264, 75, 25)
					GUICtrlSetFont(-1, 10, 400, 0, "Arial")
					GUICtrlCreateGroup("", -99, -99, 1, 1)

					$idGroup_IE_IMethod = GUICtrlCreateGroup(" Resize Method ", 16, 320, 273, 73)
					$idCombo_IE = GUICtrlCreateCombo("", 32, 354, 241, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
					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")
					GUICtrlCreateGroup("", -99, -99, 1, 1)

					$idButton_IE_OK = GUICtrlCreateButton("OK", 72, 408, 75, 25)
					GUICtrlSetFont(-1, 10, 400, 0, "Arial")
					$idButton_IE_Cancel = GUICtrlCreateButton("Cancel", 160, 408, 75, 25)
					GUICtrlSetFont(-1, 10, 400, 0, "Arial")
					GUISetState(@SW_SHOW, $hGUI_IE_Resize)
					ControlFocus($hGUI_IE_Resize, "", $idButton_IE_Cancel)
					GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_IE")

					Local $w, $h, $maxw, $maxh, $minw, $minh
					While 1
						Switch GUIGetMsg()
							Case $GUI_EVENT_CLOSE, $idButton_IE_Cancel
								GUIDelete($hGUI_IE_Resize)
								ContinueLoop 2
							Case $idButton_IE_OK
								ExitLoop
							Case $idButton_IE_IHalf
								$maxw = Round(GUICtrlRead($idInput_IE_W) / 2, 0)
								$maxh = Round(GUICtrlRead($idInput_IE_H) / 2, 0)
								If $maxw > 1 Or $maxh > 1 Then
									GUICtrlSetData($idInput_IE_W, $maxw)
									GUICtrlSetData($idInput_IE_H, $maxh)
									GUICtrlSetData($idInput_IE_WP, Round(GUICtrlRead($idInput_IE_W) / $bW * 100))
									GUICtrlSetData($idInput_IE_HP, Round(GUICtrlRead($idInput_IE_H) / $bH * 100))
									GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
								EndIf
							Case $idButton_IE_IDouble
								$minw = Round(GUICtrlRead($idInput_IE_W) * 2, 0)
								$minh = Round(GUICtrlRead($idInput_IE_H) * 2, 0)
								If $minw < 16384 Or $minh < 16384 Then
									GUICtrlSetData($idInput_IE_W, $minw)
									GUICtrlSetData($idInput_IE_H, $minh)
									GUICtrlSetData($idInput_IE_WP, Round(GUICtrlRead($idInput_IE_W) / $bW * 100))
									GUICtrlSetData($idInput_IE_HP, Round(GUICtrlRead($idInput_IE_H) / $bH * 100))
									GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
								EndIf
						EndSwitch
					WEnd

					$bW = GUICtrlRead($idInput_IE_W)
					$bH = GUICtrlRead($idInput_IE_H)
					Local $hBmp_New = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $bW, "int", $bH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
					$hBmp_New = $hBmp_New[6]
					Local $hCtx_IE_New = _GDIPlus_ImageGetGraphicsContext($hBmp_New)
					DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_IE_New, "int", _SendMessage(GUICtrlGetHandle($idCombo_IE), $CB_GETCURSEL))
					_GDIPlus_GraphicsDrawImageRect($hCtx_IE_New, $hBmp, 0, 0, $bW, $bH)
					_GDIPlus_BitmapDispose($hBmp)
					_GDIPlus_GraphicsDispose($hCtx_IE_New)

					GUIDelete($hGUI_IE_Resize)

					$hBmp = $hBmp_New

					$bW = _GDIPlus_ImageGetWidth($hBmp)
					$bH = _GDIPlus_ImageGetHeight($hBmp)

					If $bW < $hGUI_ImageEditor_W Then
						$IE_offset_x = -($hGUI_ImageEditor_W - $bW) / 2
					Else
						$IE_offset_x = 0
					EndIf
					If $bH < ($hGUI_ImageEditor_H - $height_delta) Then
						$IE_offset_y = -(($hGUI_ImageEditor_H - $height_delta) - $bH) / 2
					Else
						$IE_offset_y = 0
					EndIf
					GUICtrlSetPos($idPic_ImageEditor, $IE_offset_x * -1, $IE_offset_y * -1, $bW, $bH)

					$iMetricsSumX = ($bH > ($hGUI_ImageEditor_H - $height_delta)) * $iVSscroll + $iXFixedFrame * 2
					$iMetricsSumY = ($bW > $hGUI_ImageEditor_W) * $iHSscroll + $iYCaption + $iYFixedFrame

					_Functions_RemoveScrollBars($hGUI_ImageEditor_Child)
					$IE_ScrollbarH = False
					$IE_ScrollbarV = False

					If $bW > $hGUI_ImageEditor_W Or $bH > ($hGUI_ImageEditor_H - $height_delta) Then
						_GUIScrollBars_Init($hGUI_ImageEditor_Child)
						_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_HORZ, 0)
						_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_HORZ, $bW - $hGUI_ImageEditor_W + 61 + $iMetricsSumX)
						_GUIScrollBars_SetScrollInfoMin($hGUI_ImageEditor_Child, $SB_VERT, 0)
						_GUIScrollBars_SetScrollInfoMax($hGUI_ImageEditor_Child, $SB_VERT, $bH - $hGUI_ImageEditor_H + $iMetricsSumY + $height_delta - 1)
						GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL_IE")
						GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL_IE")
						GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL_IE")

						If $bW > $hGUI_ImageEditor_W Then
							WM_HSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
							$IE_ScrollbarH = True
						EndIf
						If $bH > ($hGUI_ImageEditor_H - $height_delta) Then
							WM_VSCROLL_IE($hGUI_ImageEditor_Child, 0, $SB_THUMBTRACK, 0)
							$IE_ScrollbarV = True
						EndIf
					Else
						GUIRegisterMsg($WM_HSCROLL, "")
						GUIRegisterMsg($WM_VSCROLL, "")
						GUIRegisterMsg($WM_MOUSEWHEEL, "")
					EndIf

					_GDIPlus_GraphicsDispose($hGfx_IE)
					_GDIPlus_GraphicsDispose($hCtx_IE)
					_GDIPlus_ImageDispose($hCtx_IE_BMP)
					_GDIPlus_BitmapDispose($hGfx_IE_BMP)

					_WinAPI_DeleteObject(GUICtrlSendMsg($idPic_ImageEditor, $STM_SETIMAGE, $IMAGE_BITMAP, 0))
					CopyImage2Control($idPic_ImageEditor)

					$hGfx_IE = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($idPic_ImageEditor))
					$hGfx_IE_BMP = _GDIPlus_BitmapCreateFromGraphics($bW, $bH, $hGfx_IE)
					$hCtx_IE = _GDIPlus_ImageGetGraphicsContext($hGfx_IE_BMP)
					$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
					_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
					_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE, 2)
					_GDIPlus_GraphicsSetSmoothingMode($hGfx_IE, 2)

					WinSetTitle($hGUI_ImageEditor, "", "AutoIt Windows Screenshooter Basic Image Editor / Image Info: " & $bW & "x" & $bH & " pixel")
					WinActivate($hGUI_ImageEditor_Child)
					$IE_Resize = True
				Case $IE_Dummy_WM

			EndSwitch
		EndIf
	Until False

	If @OSBuild < 6000 Then DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", $hGUI_ImageEditor, "ptr", 0, "ptr", 0)

	GUIRegisterMsg($WM_HSCROLL, "")
	GUIRegisterMsg($WM_VSCROLL, "")
	GUIRegisterMsg($WM_MOUSEWHEEL, "")
	GUIRegisterMsg($WM_SETCURSOR, "")
	_WinAPI_DeleteObject($hHBITMAP_IE_Icons)
	_WinAPI_DestroyIcon($hIcon_New)
	_GDIPlus_BitmapDispose($hWnd_Title_Icon)
	_GDIPlus_BrushDispose($hBrush_IE)
	_GDIPlus_PenDispose($hPen_IE)
	_GDIPlus_PenDispose($hHL_IE)
	_GDIPlus_PenDispose($hPenArrow_IE)
	_GDIPlus_PenDispose($hPenArrowShadow_IE)
	_GDIPlus_ArrowCapDispose($hEndCap)
	_GDIPlus_BitmapDispose($IE_Bmp_Undo)
	_GDIPlus_BitmapDispose($hGfx_IE_BMP)
	If @OSBuild > 5999 Then ;otherwise when image editor is recalled drawings will not be copied to context handle
		_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
		_GDIPlus_GraphicsDispose($hCtx_IE)
		_GDIPlus_GraphicsDispose($hGfx_IE)
	EndIf
	GUIDelete($hGUI_ImageEditor_Child)
	GUIDelete($hGUI_ImageEditor)
	Return 1
EndFunc   ;==>ImageEditor

Func Array_Shorten(ByRef $aArray, $iDiv)
	Local $iNew = Round(UBound($aArray) / $iDiv, 0)
	Local $aTmp[$iNew][2], $i, $j = 1
	$aTmp[0][0] = $iNew - 1
	For $i = 1 To $aTmp[0][0]
		$aTmp[$i][0] = $aArray[$j][0]
		$aTmp[$i][1] = $aArray[$j][1]
		$j += $iDiv
	Next
	$aArray = $aTmp
EndFunc

Func _Functions_RemoveScrollBars($hWnd, $horz = True, $vert = True)
	Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)
	DllStructSetData($tSCROLLINFO, "fMask", BitOR($SIF_RANGE, $SIF_PAGE))
	DllStructSetData($tSCROLLINFO, "nMin", 0)
	DllStructSetData($tSCROLLINFO, "nMax", 0)
	DllStructSetData($tSCROLLINFO, "nPage", 0)
	If $horz Then _GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
	If $vert Then _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
EndFunc   ;==>_Functions_RemoveScrollBars

Func CopyImage2Control($idControl)
	Local Const $hHBitmap_ImageEditor = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
	Local Const $hB = GUICtrlSendMsg($idPic_ImageEditor, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap_ImageEditor)
	If $hB Then _WinAPI_DeleteObject($hB)
	_WinAPI_DeleteObject($hHBitmap_ImageEditor)
EndFunc   ;==>CopyImage2Control

Func _GDIPlus_BitmapClone($hBitmap, $bW, $bH)
	Local $hBitmap_new, $hCtx_Bitmap_new, $aResult
	$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $bW, "int", $bH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
	If @error Then Return SetError(0, 0, 0)
	$hBitmap_new = $aResult[6]
	$hCtx_Bitmap_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_new)
	_GDIPlus_GraphicsDrawImageRect($hCtx_Bitmap_new, $hBitmap, 0, 0, $bW, $bH)
	_GDIPlus_GraphicsDispose($hCtx_Bitmap_new)
	Return $hBitmap_new
EndFunc   ;==>_GDIPlus_BitmapClone

Func _GDIPlus_GraphicsDrawString2($hGraphics, $sString, $sFont = "Arial", $nSize = 14, $iFormat = 0, $iColor = 0xFF0000, $nX = 0, $nY = 0)
	Local $hBrush = _GDIPlus_BrushCreateSolid($iColor)
	Local $hFormat = _GDIPlus_StringFormatCreate($iFormat)
	Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
	Local $hFont = _GDIPlus_FontCreate($hFamily, $nSize)
	Local $tLayout = _GDIPlus_RectFCreate($nX, $nY, 0, 0)
	Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat)
	Local $aResult = _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
	Local $iError = @error
	_GDIPlus_FontDispose($hFont)
	_GDIPlus_FontFamilyDispose($hFamily)
	_GDIPlus_StringFormatDispose($hFormat)
	_GDIPlus_BrushDispose($hBrush)
	Return SetError($iError, 0, $aResult)
EndFunc   ;==>_GDIPlus_GraphicsDrawString2

Func GetStringSize($string, $font, $fontsize, $fontstyle)
	Local $iWidth = StringLen($string) * $fontsize
	Local $iHeight = 2 * $fontsize
	Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
	Local $hBitmap = $aResult[6]
	Local $hGrphContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
	Local $hFormat = _GDIPlus_StringFormatCreate()
	Local $hFamily = _GDIPlus_FontFamilyCreate($font)
	Local $hFont = _GDIPlus_FontCreate($hFamily, $fontsize, $fontstyle)
	Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
	Local $aInfo = _GDIPlus_GraphicsMeasureString($hGrphContext, $string, $hFont, $tLayout, $hFormat)
	_GDIPlus_FontDispose($hFont)
	_GDIPlus_FontFamilyDispose($hFamily)
	_GDIPlus_StringFormatDispose($hFormat)
	_GDIPlus_BitmapDispose($hBitmap)
	_GDIPlus_GraphicsDispose($hGrphContext)
	Local $aDim[2] = [Int(DllStructGetData($aInfo[0], "Width")), Int(DllStructGetData($aInfo[0], "Height"))]
	Return $aDim
EndFunc   ;==>GetStringSize
#endregion Image Editor

Func WM_SETCURSOR($hWnd, $iMsg, $wParam, $lParam)
	#forceref $iMsg, $wParam, $lParam
	Switch $hWnd
		Case $hGUI_ImageEditor_Child
			Local $aMPos_IE = GUIGetCursorInfo($hGUI_ImageEditor_Child)
			If (Not @error) And ($aMPos_IE[4] = $idPic_ImageEditor) Then
				_WinAPI_SetCursor($hCursor_IE)
				Return 1
			EndIf
	EndSwitch
	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_SETCURSOR

Func WM_NOTIFY_IE($hWnd, $MsgID, $wParam, $lParam)
	#forceref $hWnd, $MsgID, $wParam
	Local $tNMHDR, $event, $hwndFrom, $code, $i_idNew, $dwFlags, $lResult, $idFrom, $i_idOld
	Local $tNMTOOLBAR, $tNMTBHOTITEM, $hSubmenu, $aRet, $iMenuID

	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
	$hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
	$idFrom = DllStructGetData($tNMHDR, "IDFrom")
	$code = DllStructGetData($tNMHDR, "Code")

	Switch $hwndFrom
		Case $hToolbar_IE
			Switch $code
				Case $NM_LDOWN
					Switch _GUICtrlToolbar_IsButtonEnabled($hToolbar_IE, $IE_iItem)
						Case True
							GUICtrlSendToDummy($TB_Button_Chk, $IE_iItem)
					EndSwitch
				Case $TBN_HOTITEMCHANGE
					$tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
					$i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
					$i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
					$IE_iItem = $i_idNew
					$dwFlags = DllStructGetData($tNMTBHOTITEM, "dwFlags")
				Case $TBN_DROPDOWN
					Switch $IE_iItem
						Case $idIEPen_Size
							_GUICtrlMenu_TrackPopupMenu($hMenu_IE_PS, $hGUI_ImageEditor)
;~ 							_GUICtrlMenu_DestroyMenu($hMenu_IE_PS)
							Return 0
						Case $idFX_IE
							_GUICtrlMenu_TrackPopupMenu($hMenu_IE_FX, $hGUI_ImageEditor)
;~ 							_GUICtrlMenu_DestroyMenu($hMenu_IE_FX)
							Return 0
					EndSwitch

			EndSwitch
	EndSwitch
	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_NOTIFY_IE

Func WM_COMMAND_IE($hWnd, $iMsg, $iwParam, $ilParam)
	#forceref $hWnd, $iMsg, $ilParam
	Local $nMsg_IE, $ii
	Switch BitAND($iwParam, 0x0000FFFF)
		Case $idInput_IE_W
			$ii = GUICtrlRead($idInput_IE_W)
			Switch BitAND(GUICtrlRead($idChkBox_IE_AR), $GUI_CHECKED)
				Case 0
					GUICtrlSetData($idInput_IE_W, Max(1, Min($ii, 16384)))
				Case 1
					GUICtrlSetData($idInput_IE_W, Max(1, Min($ii, 16384)))
					$ii = Round(GUICtrlRead($idInput_IE_W) * $bH / $bW, 0)
					GUICtrlSetData($idInput_IE_H, $ii)
			EndSwitch
			GUICtrlSetData($idInput_IE_WP, Round(GUICtrlRead($idInput_IE_W) / $bW * 100))
			GUICtrlSetData($idInput_IE_HP, Round(GUICtrlRead($idInput_IE_H) / $bH * 100))
			GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
		Case $idInput_IE_H
			$ii = GUICtrlRead($idInput_IE_H)
			Switch BitAND(GUICtrlRead($idChkBox_IE_AR), $GUI_CHECKED)
				Case 0
					GUICtrlSetData($idInput_IE_H, Max(1, Min($ii, 16384)))
				Case 1
					GUICtrlSetData($idInput_IE_H, Max(1, Min($ii, 16384)))
					$ii = Round(GUICtrlRead($idInput_IE_H) * $bW / $bH, 0)
					GUICtrlSetData($idInput_IE_W, $ii)
			EndSwitch
			GUICtrlSetData($idInput_IE_WP, Round(GUICtrlRead($idInput_IE_W) / $bW * 100))
			GUICtrlSetData($idInput_IE_HP, Round(GUICtrlRead($idInput_IE_H) / $bH * 100))
			GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
		Case $idInput_IE_WP
			$ii = Round(GUICtrlRead($idInput_IE_WP) / 100 * $bW, 0)
			Switch BitAND(GUICtrlRead($idChkBox_IE_AR), $GUI_CHECKED)
				Case 0
					GUICtrlSetData($idInput_IE_W, Max(1, Min($ii, 16384)))
				Case 1
					GUICtrlSetData($idInput_IE_W, Max(1, Min($ii, 16384)))
					$ii = Round(GUICtrlRead($idInput_IE_W) * $bH / $bW, 0)
					GUICtrlSetData($idInput_IE_H, $ii)
			EndSwitch
			GUICtrlSetData($idInput_IE_HP, Round(GUICtrlRead($idInput_IE_H) / $bH * 100))
			GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
		Case $idInput_IE_HP
			$ii = Round(GUICtrlRead($idInput_IE_HP) / 100 * $bH, 0)
			Switch BitAND(GUICtrlRead($idChkBox_IE_AR), $GUI_CHECKED)
				Case 0
					GUICtrlSetData($idInput_IE_H, Max(1, Min($ii, 16384)))
				Case 1
					GUICtrlSetData($idInput_IE_H, Max(1, Min($ii, 16384)))
					$ii = Round(GUICtrlRead($idInput_IE_H) * $bW / $bH, 0)
					GUICtrlSetData($idInput_IE_W, $ii)
			EndSwitch
			GUICtrlSetData($idInput_IE_WP, Round(GUICtrlRead($idInput_IE_W) / $bW * 100))
			GUICtrlSetData($idLabel_IE_SizeN, GUICtrlRead($idInput_IE_W) & " x " & GUICtrlRead($idInput_IE_H) & " Pixel")
	EndSwitch
	Switch $iwParam
		Case $idFX_IE_GS
			Local $GS_val = 128, $aCI, $gs_go = True
			If $gs_go Then
				_GDIPlus_BitmapDispose($IE_Bmp_Undo)
				$IE_Bmp_Undo = _GDIPlus_BitmapCloneArea($hBmp, 0, 0, $bW, $bH)
				If Not $IE_Bmp_Undo Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
						"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
				$Undo_IE = True
				ASM_Bitmap_Grey_BnW($hBmp, 0, $GS_val, True)
				CopyImage2Control($idPic_ImageEditor)
				WinActivate($hGUI_ImageEditor_Child)
				_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
				$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
				_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
			EndIf
			Return 1
		Case $idFX_IE_BW
			GUICtrlSendToDummy($IE_Dummy_BW)
		Case $idFX_IE_INV
			_GDIPlus_BitmapDispose($IE_Bmp_Undo)
			$IE_Bmp_Undo = _GDIPlus_BitmapCloneArea($hBmp, 0, 0, $bW, $bH)
			If Not $IE_Bmp_Undo Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone ie undo bitmap!" & @CRLF & @CRLF & _
					"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
			$Undo_IE = True
			ASM_Bitmap_Invert($hBmp, True)
			CopyImage2Control($idPic_ImageEditor)
			WinActivate($hGUI_ImageEditor_Child)
			_GDIPlus_GraphicsDispose($hCtx_IE_BMP)
			$hCtx_IE_BMP = _GDIPlus_ImageGetGraphicsContext($hBmp)
			_GDIPlus_GraphicsSetSmoothingMode($hCtx_IE_BMP, 2)
			Return 1
		Case $idFX_IE_BLUR
			GUICtrlSendToDummy($IE_Dummy_Blur)
			Return 1
		Case $idFX_IE_Pix
			GUICtrlSendToDummy($IE_Dummy_Pix)
			Return 1
		Case $idFX_IE_Rast
			GUICtrlSendToDummy($IE_Dummy_Ras)
			Return 1
		Case $idFX_IE_Resize
			GUICtrlSendToDummy($IE_Dummy_Res)
			Return 1
		Case $idIEPen_Size_1px
			_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 0)
			_GDIPlus_PenSetWidth($hPen_IE, 1)
			_GDIPlus_PenSetWidth($hPenArrow_IE, 1)
			$IE_PenSize = 1
		Case $idIEPen_Size_2px
			_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 1)
			_GDIPlus_PenSetWidth($hPen_IE, 2)
			_GDIPlus_PenSetWidth($hPenArrow_IE, 2)
			$IE_PenSize = 2
		Case $idIEPen_Size_4px
			_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 2)
			_GDIPlus_PenSetWidth($hPen_IE, 4)
			_GDIPlus_PenSetWidth($hPenArrow_IE, 4)
			$IE_PenSize = 4
		Case $idIEPen_Size_8px
			_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 3)
			_GDIPlus_PenSetWidth($hPen_IE, 8)
			_GDIPlus_PenSetWidth($hPenArrow_IE, 8)
			$IE_PenSize = 8
		Case $idIEPen_Size_16px
			_GUICtrlMenu_CheckRadioItem($hMenu_IE_PS, 0, 5, 4)
			_GDIPlus_PenSetWidth($hPen_IE, 16)
			_GDIPlus_PenSetWidth($hPenArrow_IE, 16)
			$IE_PenSize = 16
	EndSwitch

	If _GUICtrlToolbar_IsButtonChecked($hToolbar_IE, $idPen_IE) Or _GUICtrlToolbar_IsButtonChecked($hToolbar_IE, $idRectangle_IE) Or _GUICtrlToolbar_IsButtonChecked($hToolbar_IE, $idEllipse_IE) Or _GUICtrlToolbar_IsButtonChecked($hToolbar_IE, $idArrow_IE) Then
		_WinAPI_DestroyCursor($hCursor_IE)
		$hCursor_IE = _WinAPI_CreateSolidCursorFromBitmap($IE_PenSize, $IE_PenSize, BitOR(BitShift(BitAND($IE_Pen_Col, 0x000000FF), -16), BitAND($IE_Pen_Col, 0x0000FF00), BitShift(BitAND($IE_Pen_Col, 0x00FF0000), 16)))
		Local $aCI = GUIGetCursorInfo($hGUI_ImageEditor_Child)
		If (Not @error) And $aCI[4] = $idPic_ImageEditor Then _WinAPI_SetCursor($hCursor_IE)
	EndIf
	_GUICtrlToolbar_CheckButton($hToolbar_IE, $idIEPen_Size, False)
	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_COMMAND_IE

Func WM_HSCROLL_IE($hWnd, $iMsg, $wParam, $lParam)
	#forceref $iMsg, $lParam
	Local $Min, $Max, $Page, $TrackPos

	; Get all the horizontal scroll bar information
	Local $tSCROLLINFO_X = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
	$Min = DllStructGetData($tSCROLLINFO_X, "nMin")
	$Max = DllStructGetData($tSCROLLINFO_X, "nMax")
	$Page = DllStructGetData($tSCROLLINFO_X, "nPage")

	; Save the position for comparison later on
	$IE_offset_x = DllStructGetData($tSCROLLINFO_X, "nPos")
	$TrackPos = DllStructGetData($tSCROLLINFO_X, "nTrackPos")
	#forceref $Min, $Max
	Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
	Switch $nScrollCode

		Case $SB_LINELEFT ; user clicked left arrow
			DllStructSetData($tSCROLLINFO_X, "nPos", $IE_offset_x - 1)

		Case $SB_LINERIGHT ; user clicked right arrow
			DllStructSetData($tSCROLLINFO_X, "nPos", $IE_offset_x + 1)

		Case $SB_PAGELEFT ; user clicked the scroll bar shaft left of the scroll box
			DllStructSetData($tSCROLLINFO_X, "nPos", $IE_offset_x - $Page)

		Case $SB_PAGERIGHT ; user clicked the scroll bar shaft right of the scroll box
			DllStructSetData($tSCROLLINFO_X, "nPos", $IE_offset_x + $Page)

		Case $SB_THUMBTRACK ; user dragged the scroll box
			DllStructSetData($tSCROLLINFO_X, "nPos", $TrackPos)
	EndSwitch

	DllStructSetData($tSCROLLINFO_X, "fMask", $SIF_POS)
	_GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO_X)

	$IE_offset_x = DllStructGetData($tSCROLLINFO_X, "nPos")
	ControlMove("", "", $idPic_ImageEditor, -$IE_offset_x, -$IE_offset_y)

	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_HSCROLL_IE

Func WM_VSCROLL_IE($hWnd, $iMsg, $wParam, $lParam)
	#forceref $iMsg, $lParam

	Local $Min, $Max, $Page, $TrackPos

;~  ; Get all the horizontal scroll bar information
	Local $tSCROLLINFO_Y = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
	$Min = DllStructGetData($tSCROLLINFO_Y, "nMin")
	$Max = DllStructGetData($tSCROLLINFO_Y, "nMax")
	$Page = DllStructGetData($tSCROLLINFO_Y, "nPage")
	; Save the position for comparison later on
	$IE_offset_y = DllStructGetData($tSCROLLINFO_Y, "nPos")
	$TrackPos = DllStructGetData($tSCROLLINFO_Y, "nTrackPos")
	#forceref $Min, $Max
	Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
	Switch $nScrollCode

		Case $SB_LINELEFT ; user clicked left arrow
			DllStructSetData($tSCROLLINFO_Y, "nPos", $IE_offset_y - 1)

		Case $SB_LINERIGHT ; user clicked right arrow
			DllStructSetData($tSCROLLINFO_Y, "nPos", $IE_offset_y + 1)

		Case $SB_PAGELEFT ; user clicked the scroll bar shaft left of the scroll box
			DllStructSetData($tSCROLLINFO_Y, "nPos", $IE_offset_y - $Page)

		Case $SB_PAGERIGHT ; user clicked the scroll bar shaft right of the scroll box
			DllStructSetData($tSCROLLINFO_Y, "nPos", $IE_offset_y + $Page)

		Case $SB_THUMBTRACK ; user dragged the scroll box
			DllStructSetData($tSCROLLINFO_Y, "nPos", $TrackPos)
	EndSwitch

	DllStructSetData($tSCROLLINFO_Y, "fMask", $SIF_POS)
	_GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO_Y)

	$IE_offset_y = DllStructGetData($tSCROLLINFO_Y, "nPos")

	ControlMove("", "", $idPic_ImageEditor, -$IE_offset_x, -$IE_offset_y)
	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_VSCROLL_IE

Func WM_MOUSEWHEEL_IE($hWnd, $iMsg, $wParam, $lParam)
	#forceref $hWnd, $iMsg, $lParam
	If $hWnd = $hGUI_ImageEditor_Child Then
		Local $wheel_Dir = _WinAPI_HiWord($wParam), $y, $steps_y = 8

		If _IsPressed("10", $hDll) Or _IsPressed("02", $hDll) Then
			If $wheel_Dir > 0 And $IE_ScrollbarH Then
				For $y = 1 To $steps_y
					_SendMessage($hGUI_ImageEditor_Child, $WM_HSCROLL, $SB_LINEUP)
				Next
			Else
				If $IE_ScrollbarH Then
					For $y = 1 To $steps_y
						_SendMessage($hGUI_ImageEditor_Child, $WM_HSCROLL, $SB_LINEDOWN)
					Next
				EndIf
			EndIf
		Else
			If $wheel_Dir > 0 And $IE_ScrollbarV Then

				For $y = 1 To $steps_y
					_SendMessage($hGUI_ImageEditor_Child, $WM_VSCROLL, $SB_LINEUP)
				Next
			Else
				If $IE_ScrollbarV Then
					For $y = 1 To $steps_y
						_SendMessage($hGUI_ImageEditor_Child, $WM_VSCROLL, $SB_LINEDOWN)
					Next
				EndIf
			EndIf
		EndIf
	EndIf
	Return "GUI_RUNDEFMSG"
EndFunc   ;==>WM_MOUSEWHEEL_IE

Func Min($a, $b)
	If $a < $b Then Return $a
	Return $b
EndFunc   ;==>Min

Func Max($a, $b)
	If $a > $b Then Return $a
	Return $b
EndFunc   ;==>Max

Func _CreateNewBmp32($iWidth, $iHeight, ByRef $ptr, ByRef $hBild) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten
	Local Const $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
	Local Const $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
	DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
	DllStructSetData($tBMI, "Width", $iWidth)
	DllStructSetData($tBMI, "Height", -$iHeight) ;minus =standard = bottomup
	DllStructSetData($tBMI, "Planes", 1)
	DllStructSetData($tBMI, "BitCount", 32) ;32 Bit = 4 Bytes => AABBGGRR
	Local Const $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
	$hBild = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
	$ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
	_WinAPI_SelectObject($hcdc, $hBild) ;objekt hbitmap in DC
	Return $hcdc ;DC der Bitmap zurückgeben
EndFunc   ;==>_CreateNewBmp32

Func Save_Bitmap()
	HotKeySet("^!{F9}")
	Local $m, $save, $hBmp_tmp, $ok = True, $iExt = 0
	$filename = FileSaveDialog("Speichern", @ScriptDir, "(*.jpg;*.bmp;*.png)",18,"Captured")
	If Not @error Then
		$hBmp_tmp = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
		Local $bSave_Shadow = 0
		If StringMid($filename, StringLen($filename) - 3, 1) <> "." Then
			$filename &= ".png"
			If FileExists($filename) Then
				$m = MsgBox(BitOR($MB_YESNO, $MB_ICONWARNING, $MB_TOPMOST), "File", $filename & @CRLF & "existiert bereits", 0)
				If $m = 7 Then $ok = False
			EndIf
		EndIf
		If $ok Then
			Switch StringRight($filename, 4)
				Case ".jpg"
					Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
					Local $tParams = _GDIPlus_ParamInit(1)
					Local $tData = DllStructCreate("int Quality")
					DllStructSetData($tData, "Quality", $JPEG_Quality)
					Local $pData = DllStructGetPtr($tData)
					_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
					Local $pParams = DllStructGetPtr($tParams)
					If $bSave_Shadow Then
						Local $hBmp_Shadow = _GDIPlus_BitmapAddShadow($hBmp, True)
						$save = _GDIPlus_ImageSaveToFileEx($hBmp_Shadow, $filename, $sCLSID, $pParams)
						_GDIPlus_BitmapDispose($hBmp_Shadow)
					Else
						$save = _GDIPlus_ImageSaveToFileEx($hBmp, $filename, $sCLSID, $pParams)
					EndIf
					$tData = ""
					$tParams = ""
				Case Else
					If $bSave_Shadow Then
						Local $hBmp_Shadow = _GDIPlus_BitmapAddShadow($hBmp, $bSave_BgColor)
						$save = _GDIPlus_ImageSaveToFile($hBmp_Shadow, $filename)
						_GDIPlus_BitmapDispose($hBmp_Shadow)
					Else
						$save = _GDIPlus_ImageSaveToFile($hBmp, $filename)
					EndIf
			EndSwitch
			$hBmp = _GDIPlus_BitmapClone($hBmp_tmp, $bW, $bH)
		EndIf
		_GDIPlus_BitmapDispose($hBmp_tmp)
	EndIf

EndFunc   ;==>Save_Bitmap

Func Pic2Clipboard()
	Return 1
EndFunc

Func OpenMailClient()
	Return 1
EndFunc

Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96)
	Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0)
	If @error Then Return SetError(1, @extended, 0)
	Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0)
	If @error Then Return SetError(2, @extended, 0)
	Local $iDPI = $aResult[2]
	_GDIPlus_GraphicsDispose($hGfx)
	Local $aResults[2] = [$iDPIDef/ $iDPI, $iDPI / $iDPIDef]
	Return $aResults
EndFunc   ;==>_GDIPlus_GraphicsGetDPIRatio

#region functions from WinAPIEx.au3
Func _WinAPI_CreateSolidCursorFromBitmap($iW, $iH, $iColor) ;iColor in BGR format
	Local $hDC = _WinAPI_GetWindowDC(0)
	Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
	Local $hXOR = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
	Local $hSv = _WinAPI_SelectObject($hMemDC, $hXOR)
	Local $hBrush = _WinAPI_CreateSolidBrush($iColor)
	_WinAPI_SelectObject($hMemDC, $hBrush)
	Local $tRect = DllStructCreate($tagRECT)
	DllStructSetData($tRect, "Left", 0)
	DllStructSetData($tRect, "Top", 0)
	DllStructSetData($tRect, "Right", $iW)
	DllStructSetData($tRect, "Bottom", $iH)
	_WinAPI_FillRect($hMemDC, DllStructGetPtr($tRect), $hBrush)
	_WinAPI_ReleaseDC(0, $hDC)
	_WinAPI_SelectObject($hMemDC, $hSv)
	_WinAPI_DeleteDC($hMemDC)
	_WinAPI_DeleteObject($hBrush)

	$hDC = _WinAPI_GetWindowDC(0)
	$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
	Local Const $hAND = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
	$hSv = _WinAPI_SelectObject($hMemDC, $hAND)
	$hBrush = _WinAPI_CreateSolidBrush(0x0)
	_WinAPI_SelectObject($hMemDC, $hBrush)

	_WinAPI_FillRect($hMemDC, DllStructGetPtr($tRect), $hBrush)
	_WinAPI_ReleaseDC(0, $hDC)
	_WinAPI_SelectObject($hMemDC, $hSv)
	_WinAPI_DeleteDC($hMemDC)
	_WinAPI_DeleteObject($hBrush)

	Local Const $hCursor = _WinAPI_CreateIconIndirect($hXOR, $hAND, 0, 0, 0)
	_WinAPI_DeleteObject($hXOR)
	_WinAPI_DeleteObject($hAND)
	Return $hCursor
EndFunc   ;==>_WinAPI_CreateSolidCursorFromBitmap

Func _WinAPI_SetWindowTitleIcon($sFile, $hWnd, $iW = 32, $iH = 32)
	If $sFile = "" Then Return SetError(1, 0, 0)
	If Not IsHWnd($hWnd) Then Return SetError(2, 0, 0)
	Local Const $GCL_HICON = -14, $GCL_HICONSM = -34
	Local $hImage
	If Not FileExists($sFile) Then
		If _GDIPlus_ImageGetType($sFile) = -1 Then Return SetError(3, @error, 0)
		$hImage = $sFile ;interpret $sFile as a bitmap handle
	Else
		$hImage = _GDIPlus_ImageLoadFromFile($sFile)
		If @error Then Return SetError(4, @error, 0)
	EndIf
	Local $aRes = DllCall($ghGDIPDll, "uint", "GdipGetImageThumbnail", "handle", $hImage, "uint", $iW, "uint", $iH, "int*", 0, "ptr", 0, "ptr", 0)
	If @error Then Return SetError(5, @error, 0)
	Local $hImageScaled = $aRes[4]
	$aRes = DllCall($ghGDIPDll, "uint", "GdipCreateHICONFromBitmap", "handle", $hImageScaled, "int*", 0)
	If @error Then Return SetError(6, @error, 0)
	Local $hIconNew = $aRes[2]
	Local Const $hIcon = _WinAPI_GetClassLongEx($hWnd, $GCL_HICON)
	If @error Then Return SetError(7, @error, 0)
	_WinAPI_DestroyIcon($hIcon)
	_WinAPI_SetClassLongEx($hWnd, $GCL_HICON, $hIconNew)
	If @error Then Return SetError(8, @error, 0)
	_WinAPI_SetClassLongEx($hWnd, $GCL_HICONSM, $hIconNew)
	If @error Then Return SetError(9, @error, 0)
	_GDIPlus_ImageDispose($hImage)
	_GDIPlus_ImageDispose($hImageScaled)
	Return $hIconNew
EndFunc   ;==>_WinAPI_SetWindowTitleIcon

Func _WinAPI_GetClassLongEx($hWnd, $iIndex)
	Local $ret
	If @AutoItX64 Then
		$ret = DllCall('user32.dll', 'ulong_ptr', 'GetClassLongPtrW', 'hwnd', $hWnd, 'int', $iIndex)
	Else
		$ret = DllCall('user32.dll', 'ulong', 'GetClassLongW', 'hwnd', $hWnd, 'int', $iIndex)
	EndIf
	If (@error) Or (Not $ret[0]) Then Return SetError(1, 0, 0)
	Return $ret[0]
EndFunc   ;==>_WinAPI_GetClassLongEx

Func _WinAPI_SetClassLongEx($hWnd, $iIndex, $iNewLong)
	Local $ret
	If @AutoItX64 Then
		$ret = DllCall('user32.dll', 'ulong_ptr', 'SetClassLongPtrW', 'hwnd', $hWnd, 'int', $iIndex, 'long_ptr', $iNewLong)
	Else
		$ret = DllCall('user32.dll', 'ulong', 'SetClassLongW', 'hwnd', $hWnd, 'int', $iIndex, 'long', $iNewLong)
	EndIf
	If (@error) Or (Not $ret[0]) Then Return SetError(1, 0, 0)
	Return $ret[0]
EndFunc   ;==>_WinAPI_SetClassLongEx
#endregion functions from WinAPIEx.au3

Func _GDIPlus_BitmapAddShadow($hBitmap, $bBgColor = False, $iX = 18, $iY = 24)
	Local $iW = $bW + $iX * 3.1, $iH = $bH + $iY * 2.55
	Local $hBitmap_Save = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
	Local $hCtxt_Shadow = _GDIPlus_ImageGetGraphicsContext($hBitmap_Save)
	_GDIPlus_GraphicsSetPixelOffsetMode($hCtxt_Shadow, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
	_GDIPlus_GraphicsSetInterpolationMode($hCtxt_Shadow, 7)
	_GDIPlus_GraphicsSetCompositingQuality($hCtxt_Shadow, 2)
	If $bBgColor Then _GDIPlus_GraphicsClear($hCtxt_Shadow, 0xFFFFFFFF)

	Local $hBitmap_Clone = _GDIPlus_BitmapClone($hBmp, $bW, $bH)
	Local $hDDB = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Clone)
	_GDIPlus_BitmapDispose($hBitmap_Clone)

	Local $h1Bit = _WinAPI_CreateANDBitmap($hDDB)
	_WinAPI_DeleteObject($hDDB)

	$hBitmap_Clone = _GDIPlus_BitmapCreateFromHBITMAP($h1Bit)
	_WinAPI_DeleteObject($h1Bit)

	Local $hBitmap_Mask =  _GDIPlus_BitmapCreateFromScan0($iW, $iH)
	Local $hCtxt_Mask = _GDIPlus_ImageGetGraphicsContext($hBitmap_Mask)
	_GDIPlus_GraphicsSetPixelOffsetMode($hCtxt_Mask, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
	_GDIPlus_GraphicsSetInterpolationMode($hCtxt_Mask, 7)
	Local $hIA = _GDIPlus_ImageAttributesCreate()
	Local $aRemapTable[3][2]
	$aRemapTable[0][0] = 2
	$aRemapTable[1][0] = 0xFFFFFFFF
	$aRemapTable[1][1] = 0x00000000
	$aRemapTable[2][0] = 0xFF000000
	$aRemapTable[2][1] = 0xE0404040
	_GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)
	_GDIPlus_GraphicsDrawImageRectRect($hCtxt_Mask, $hBitmap_Clone, 0, 0, $bW, $bH, $iX, $iY, $bW, $bH, $hIA)
	_GDIPlus_GraphicsDispose($hCtxt_Mask)
	_GDIPlus_ImageAttributesDispose($hIA)

	Local $hBitmap_Shadow
;~ 	If Not $aero Then
		$hBitmap_Shadow = _Blur($hBitmap_Mask, $iW, $iH, 0, 0, 0, 0, 0.07)
;~ 	Else
;~ 		$hBitmap_Shadow = _GDIPlus_BitmapCloneArea($hBitmap_Mask, 0, 0, $iW, $iH, $GDIP_PXF32ARGB) ;bad quality (border added) when freehand captured image is used
;~ 		Local Const $hEffect = _GDIPlus_EffectCreateBlur(20, True)
;~ 		_GDIPlus_BitmapApplyEffect($hBitmap_Shadow, $hEffect)
;~ 		_GDIPlus_EffectDispose($hEffect)
;~ 	EndIf

	_GDIPlus_GraphicsDrawImageRect($hCtxt_Shadow, $hBitmap_Shadow, 12, 16, $iW, $iH)
	_GDIPlus_GraphicsDrawImageRect($hCtxt_Shadow, $hBmp, $iX, $iY, $bW, $bH)
	_GDIPlus_GraphicsDispose($hCtxt_Shadow)
	_GDIPlus_BitmapDispose($hBitmap_Mask)
	_GDIPlus_BitmapDispose($hBitmap_Clone)
	_GDIPlus_BitmapDispose($hBitmap_Shadow)
	Return $hBitmap_Save
EndFunc   ;==>_GDIPlus_BitmapAddShadow

Func _ImageEditor_ToolbarIcons()
	Local $ImageEditor_Icons
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= 't4F1N6p3bXm/0hx1fs2DvQfH5Q937V/yROhlXeXO5LsafLw72wvAA8Cd63dI4TD60yuvrG+r2VvH//vVQY577oXk9aJiSCmKy/JgmTaWLV+JSRNPxtIvVqNyRBW+WLMMv+BPhXPRu9AX/sd8O5Sz6Ytk4gCANgCxQ0VrZqUGDKVAXkHOYezleNkMYzthWwyWaR9mFcwwmGmjSlIgRBkYGNasbTiqwwwsZb38LodZ76l7fn4+8hwO1K5ahfi+fcgVBCimCeTnQ8rPh1VUBBIMwuVyYevWrXC73ZgxY0YftmPbx6/te3NLn5o4fmS2yni2q66e7f/6xZbB5f1nv75gwXHbnul23EKyT3yS+S9iRK0HS25mTJEBuZsQNU7VGM/tbBiQvz0r17rks4vw5TsvHrEf0zRnDqisuGvQySMIEzgwK5XKIFy6roCm8+BcZuPS4JJiodFoFGs2rUdd4wGkCrMZbMbgcDj7XP/MGDBt2rl07cGbTdvWZowruTJ35UEhuCGCbllDTJHBi0KK8Vg2WjUZrTDQmeXanzvIfVvBIKFR13w9EwCOkB8PYCgFqqq2YMSIXd+7j5ycLui6D4899hB+//tnjwYyA6+/5WnGGNY/94/Z1DRdTFUA00jlrw3DuSsNMpXHADIsBewDZVW7JAKJbMzKx5eyioPuAuTHI3jUI4OnDKocI0zrzvYkdiKWNMGVTobf64HP48kfNsT1YUvdXsu2TPfg4hz9nNOnzF+0dMVt6YwHot3RyMQJ49tKS0pCbo8H1KbwuXhkexkSKoeWqIRYLA6P1wMwIBTi4HYTFBUVYuzoEjQ3N+HrHa0QBHG3nIy91Ju9uPzZWdTpH+RUwlz3l6++XGa3RUVVuZs75wG02y7Q9W9hxvAABg4ej4/bXNilemF7QthT1wRN0yBJUk9tW3t7O+rr6w9LkfUulOR6ueYMw4Asyz2AkZWVhYceegjhcBj33XcfTj/9dNxwww148MEH0draehijAQAXh3l/5ncAACAASURBVLFjXfjJaBey4jxDAc8QPtABy2aYMDEP1rYuVIUE7P2qHidNLsaq1zagZEgApV1RmE4LrQJBLE7QTVk2YajmCQaf6MbwSUFU/CsMU5Ble0+jLe5pCBuDTKuZUdYEjuepKHHM4WDU5WKi20FI2YCySxa9Fnz47EvXWH2NK2xT0uaHO7W411aTHhB4AHhdAnUaJvMRQgbpv7/1Y/rM05cH4ols9quL4Bh3MjinDyaAk6dNwqrPlmPksMEgvICD23Zj38fvY0g4LP9n6IitMTVRz0AakFqOQD/svrJZaqMM7a3htKv6GyYC9k2uF0cosOzzJOPKphSHupIzF4RSii+2NvVhMAN6DYZZL36KqMEhYfAwKPDyLaeAMYqpU05BuLPrqA4z2071YdfUQF+9GsaKFSjUNPChEOB0wiOJYE1NsDvCSFomWk84AQfLyzF2wgQUFhZ+q53xWFrphOnZF1929cyEy4dt27aS2sUfyPmh7JWvL1iw8rhj3VbcRkKjn0DgEkb0FiC5gUCRATnKiBxnegxcY0fByf+MnduhJrvwwfMvHt04xYu/dbvcpG7bXgQLsuENBAGOgBe4FMgwgICAEQ6Eo+AIgQUG3dDR1taGr9avRktbaw/zs2wbqi6jvKz6fgAYI/hhILVckMgRuGQFSCox/oumh7ErOTa3m46MJFUkVLUXuFho1hS0w0BjrgfG2H7lA6uL/ji0XLrDIbkjosCBMUAQuB8PYCKRbJx44gb4fPL37kOSTPh8CezdO+Rbfa2iaFXccGsKZJ7402zLNFw964oQgJiGs/apFMgMS4OMFunKMeWky1fa72Bfjw6Dqmnnd6g050mUYp3hgMfkUdTUissCCUhEhKYk0VW3BY7O9dCidYhI/RHMGoFAQTl4XoBl2y7TBESnBEng3adPHvvrPXv3v2xZ9npgK1RV0zo7u+pHDB8+PCXLMbhcAopCQEMYaI+7Ee7sRG5ePmzL'
	$ImageEditor_Icons &= 'gtfDgzEBLrcHX9eEYbdsxN0zR9p/nbf9iYRt9xF4vHklAzy8nZNct/CLyPoP76wYM/oSl98Nh5dHW1scvKUh21+CipATV7p1zK/VsNnlw57GLYhEIvB6vT21MPn5+Whvb4dlWeTQFFmGwfRmOFOmTEFZWRkAYOnSpVi7di3mzZuHBx54AJdeeil+8pOfYPHixfjqq6+OmDoDgEFOMqWEY4X1SUIUATAFoDuq4eDBOKR+IZSZHBJt3dhRH8PQSf3gKg6g/6BsbHmnAZ0M6GZAFs9IlYhCF4dsvwR2ghPu/QmQmAFOuPnuuhiAod89+j498gyEMpUQrh1gCTPa4AGYm1HbbcmGm1KY8Pv750yfntjidL/pfPaZU/s99IeBjopBEgIBMJsiBODUZBJLcgox7Zqr4L12JuY/97zRQYXd06qq6q0P/rMnbFm70+kxeoTjgzACHgz5hbk97ORQtnKoo+xoDjOwnSAcYDPzyCI/ozilqiCVhktva9Yd6PksD1x9eh+HGWPf5E6zs4MAY0d0mHHJOJQXX4S1ZQukESPgvvpqiCNGAH4/bJuCCg4wAnCRKIIb1sH9/nvICofhnDQJlmX1sJeMYHi0Qq8jtaysEvfwEdVzh1YU8vWNNeTA5nU27WxrzBky+P7jjVFsD65AYNQTzH8pI2YHQXxtyi0mdzMiJ2AmKGnqyvv1PP7OdaZRi/aGxm836TPkKYqC7kgEkeYwPEEvgkX5COZkgRM5EJICmEyKjDFAUzU01jdg9fq16OwK9zj9GKNQTQPdsn7vvfNnPw4AIzhfqoYfgIvnkJWwwCWTWXlO6Y/5EXtYl6xC1jTwYuq86oaFZkNBOzHQkO8DOXkAxlTmCvnZzl+rmuWQRP62tJX+x227dlXD5TJhmsJ3FUwe3SAsWKio2I1IJPidxROiaA268banKYAtf5k9mxm6iyepnCwPgDdNZ/1Tc2ZRxjDwkisXbLzrt8+HJk/9ePh1N/+zb2YAIrXZmUnNIG3RGASTw3CtEz8vkVDhEWDbDJoqI9m+D8lwCzQuF1L+EIiuAHhBAggPMAJJ4sCDgdo2HKLkcjqkfjqM9WkGYNfV1+8Zc8Kks21qIzsLUFUFRdkSAB4dcgCfbtLw0XYdxY4anDu1H/yBADZs3Ynly1ejuW4fhtWXbI0llLcOmwAJgpft+XJl87qPb2eWEdc0LelyexixdML0BHikhH5KKQJuBy4aaCLeacIydXR3d6OkpKRPwaXP54NlWYQxxh8pRUYI6WEwubm5PYagjRs3wrZtfPnllzjppJNw9dVXo66uDs899xwytulDNwCoCrC80wKE79ABxgFJAFtVE/U1HThhZD4G5zgRW7ITO1stJGQLZ03th9IsAflOgkY/j7jJwAIEEoPk5ZjkkoCwRbCpmdmUQ4dwlMIb4nFxZNJJHny6IvGtuRbJwQU8FsJgcNly2M0YXITAlVAcbpFHJ9aty/H6fPagceMi9fl5i1d+ubxYrqsPaZ2dIrUs4tB0QbIt3uiO0Vfnv1590cW/cP3sV7+UvqoLV/1N7jdSuniaWHyZ62GhcVMssX3l6siXbzzIDGVzBmxs24YoCSBUxNt//hAOtwfUYCA8B9gkracg5RKhDDZNGQMYS6VKSAYoCIEkCQADeJsDJUezKVOs2NHWh8GU9nKYPTZvKVSLIGFy6DY4RHUe3QaHhMlhzX3VR2QWkZEjy+ILFoAbNw6e++8H34uRMABEBCwdME0K6skCnT4D0vDRCDw2CwefegrZN92EnJycPo6U42EwiUTbxOjuHWcv+c97JO52sIOffhgrLixYOH/+/IPHE58K8nNOHXdp6SvvzptCi/1xjiVWM6g9zAV20iTNnXmPvRl44tW2besRaW3FVx989K19WoYhmJYFRhksaiLeFUOyO4Gw24FAbgjBghAklwOEcGmx3kBDXR2++noNuiJdPefBpjYUXUckJt/90Y6lc44aOIHcApfzqVy368JwQuZV0wCX'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= 'pqZ2UJoqIh09oB8IcYDaBKZmg8sJQTNMxONxaJoGp9N5GOP67kmrfN70084cM3jQIOfGjV+z/Vs3tFdVVf1t3rx5x/1TDMXFJeWGoaK9oxHDz1LJxvnZbFR5DFBU0hLO3f3pwNfPb9pTAyUWRWtdHTpb249BF+BgGjoIx4GlZ7MMNO2IZ9AUHVZrGKapIysvRGvr6tRYLO6mlPKUpVImSV1lXXHllsU7lz59aPedJUWZESIMP1A3K9u2z2+LJznDtnrARdUNNJoKumCptcUB5hrX3z18cA5K8r1wu0QQDnC7JBBC4XWDyKo5I57Q/5UdcF4LYN+PAjDDhu3Gzp1jMGfOHfj7328/rHr/WNqKFZNgmhIuuOCd4zKgiaI19MbbnmYMqHvisdm8qbsyegwPgkzqTA935DNKOdJrNQLGQC3Ton4zgfNCJvIL3Ai5GPRkF7qNJBhHkeXOAXUJcHE+2IYBWzdgyga0NhVcApCaJWiTRQgBEZRRfLFm45cfr/y6pSv2zULBra1tjYqiyKIgBN3aavCdb2PkyCqMrp6IyqFDUFpagkAgAI7n8fXGzVjx1Rp0trciNzcfFeX9wRESyMvLG9ba2lb3XbeUTW3KWyrP0gyGcARerxfRaLRPVX+mJsblcvUBj0NF/kMBpnclf0aPYYyhuLgYV1xxBZYsWYJ33nkHHMfh5ptvxrRp0/DBBx8ccZ2zqIUvVAqWLWG6g8fgbAd1DPMAB5IK5A4NefVtGBtk6GYMWkMn5HYdxV1xaE4CJ6MQRYBIBPsNgk6NGgrFJoPhMwqsB9B4VIBZvNFkBSFqrt1o00za7N5b83HCCDeX5eNFSRT8LkXRGcwYREEigAOMSTAtaUubS5J4dQsADHjzTbp4xozF0ZkzYz+99NKTnJMmBby5RdTLS7B5AcRQYdTuRt3q1eZn/cafsq74bME4s7wy/vVqK/Lny08J3Tx3Uf697z7vf+OBkfsWv3Zv6+zLThp+6zObck+58KaWd/+2jNl2ihlQGwQEzc0dOPG0agyeWI6abfvT2qUDwawcjJncryfAa7oORdWhqzp2bq1F+ysxuOO5kJwC5Bg9wr23IuMCO6xNnz79GwZz2eQ+DrPMI9LmAXZI8Of7ld7kuuBnsGyKaCSO9vYuhMNREALk54cwYcIoiKKARFyDbQswrdT+TokHDXeCEYKuri7out5Tq3OsLRAI+AjnvG5g+UB/ze49rLW1SR40aOiX7e3t7x9PPyePn0DWrlnNdF29sDsaMbu6OoWCvBxyxu0iPrqfI/2zc9RllW9XJto70dHUgHikC6ve/+iY+s4vKvy85sDes7P8QeJ1+wCSWhqPfJPDBwiDZhhIKknEY93EpjZJGUBsJDXV7kzINy3e8fkRF2GVA4HMzdqvsWr4T/z7GznSuhVOrxMMgKwbOGgqiMKMJ0HuPeh3m6cV+efkZzuCkkDSKQwGwqc+FS8KEAybJBTjVI7n/g3g5B8FYMaN24ABA/ZjwYLLccMNL2DEiJrj2n/jxmosXPhTXHfdP3D55a8ft8tZFK3Km1JMpunJFMjwPSCTeqSRzlzbMgWB53un8Lp5jmtz8cijVEUW0wDdRptdj260wFaBiB2C085BWcADcAy2SaF1qVD3xiE18GhqaQNfGkRoWA4aWlrVdz9b8U5ndzyI1MK4MgB0RSKdkUg07PV4guec8xNMnjwBwWAQTocDuq6jra0dK1etxvYdO7C77iC2bfgaouREwO9BV1cExcVFfEF+/klbU6tqH7UZhqG4KLVdxBKhJ0BoKlvh8/l6ACZTr5KpX8nNze3RVzLprkNTZL0BJhKJYPbs2aitre0DMOFwGDfeeCPC4TA0TcOCBQuwbNkyJBKJPrU0h5R57FFt6K0q2k0DZzUn2OhSnngZT7H6nd1o/6QRTTLQagNiaxIr39+MjY3diJpA3AKYyeCJA9tlhqiBiEGxlgIb0hOrzqMBDJv9hmof6rE6UG9wMybmctlOm3CG'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= 'DRwAgCAS7UZ3dwzl5eWVXq8n0N0dixz1HGia7rOpJcEG05O9FgMG/H5/T91K75q1rq4uhEKhnlhiGIZoWdYQAI2ZCWnvdc96mxcOBZneNuTemsu3mH4SaQnEoICVpGC1GgtJJjuhk2fESjCoHMDxqRr8gxIH0ySwYKfkNI6gQ2eoN5hhMewD0JAGLQUp1/PxxdIX3ooQw7Rx+1UhQOAJodQGT3mIHH+gS+QTiVjsTws19Rj6snprO50xpVlNxuMcs632neueyY613pB18rkXyw27FgCIN7z157tKp/1quV45/m5728pVjYvnzwZgMspALQYOgA0KcCy9zAuDklDAmAjLSpXPyEkZybgCWdEgJxXISRmaaiIpy7AoA6M2COFhM/v7AQyleOLNNUd1kX35+8FgAGKxb37fSY5Ed0krVkyRzjsPvCiirq4eHo8Hw0dUIisQBPl/2rvy4DiqM/97fUxPz4w0o5FkJBkJrIO1osjEBuy1gw05CjscRZbd1DrFslvlcFQ2fxBXCEsRUgtkKwneymF2HRsTsCERaLPAukxsY2wO4xBsy8I2PnRZtnVLI83VPT19vH799o8Z2bIsEBKESqryVU1N1VRN9Xuvv/e+912/n+CD7XiwGCAoBIrIoGxYj9Pv/QGtK1agYd48VFZWQlVVFBcXY2xs7HzX7jTeS+PSpUsvN4wsP3r0hN3Q0NBaWFj45IzLkt8KKqi5uuvR9d1oPUwIgGvXr7day8r6cf/9V0pZ4TJv//7dnFgMJ976EQ6+M/vmw2/94sHdAOb9eu26G1J6+qVoYaQkFAzBLxAQh8J1RNiOQ/SskUlm7Lt2HH9t27SHou2CeWzBdYsWLoqWXgY9MQrn81dBKwoZmfjIyeJw8D9G207vCKglXnFZLSpVFcetEa813r/t+e3t5p23/s3mysuCl+dupAKow1J7D/R//0yvtpVPzl0yJsAw/KBUmtUCOI4ExoSP8MY4brttF+6+eyO2bLkX9933K6xe/T9YuvQ9NDaeQiiUhetKsCwfEokirFv3AJqb70Rx8Qi2bPknfP3rv591BRoAamb9xTd85fd23fyj1vDgXHt0pILFR+eQdCoqZjOFlssEW9cKgLlDk66xZ0qKImscSp9O6VqdyynRtDSUTD38ogipMIWMloUp2uAe4JMlRK+NoMgshAACpnD+4p69/Vu27XrNcpwjAE4ix02SmNhP8vxvmp6oqa6OiiK5i3MuEyIgElbg9/vhVxSEwyHcsKQGqeFupHUXuq7naxIIF0RB6+vv7/P5fOpHrYFt25bLXIcyDogKJoJ8qKoKSZLg5sF0x70Y0zSRSqVQXFw87m34Hce5A8D+8RzMuIGZDB01FRTMVOXI05zD2fybkDhQmCX4gPsxPyAj6GNASOLwyYAoAD6FgQoEDgMMCnRbwKDJPQc45QIHkOtXzCLPajkbRefPb0t7iz6n4svXqQ4EgYlKQEhpVDBSaft7zxqzUtC3N/wwc926a9voFY0LCOAzT7z1vLro9h9IBdEVrp54HYDd92bzTrzZvHPi/0TI4DwLl3OIECBwAa5tI01jyGgmZITh0Nw+T2sZpJIGspaJbMbMeTM2he3Y4NyDy3Nd4p47OxJCj3u4/xuLL6owA78QvhuvhNL1C8nHI6OJR6/ZtLGpSFXnysuXY+nyxWBCjgaAOYDrAJy4kKkB6UwnSNMWvHf0fTSXlAAdHTgZi2H79u2XgNiJotj6YeMsLS0VksnknZFI5Ir29uOora09WVFR8S9bt26dMRKuEaqa6zt7fP+jd+jzH/tZeQOQtgGgvV3C+vXn3O5uYMUKTlavJjw5Ahhxj0zwjgmmAbecSu7+xYP7AJQ+8911X9AMfbtP9lcGAipY3EMqk0rpNvvmq0d3vfaxCqfO9AlZ272jtmFBqOx0uzE8ONCeSKZ2mZq+AwsWnkx1hujx3QAAB9NJREFU92fEknpeEIpCVlQERR9WRudjebTWO5Tuee3Vnb3/'
	$ImageEditor_Icons &= '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'
	$ImageEditor_Icons &= 'Rl/Ih5AIyXUHk7wIuTuql+Scx8b1f+PGjSWPP/74fQACH4asPhsdI4SkNm/evOmWW27RJ/ws5ffyFRJwfbmENSpBPQFUxnOglpqHDAW6KNDCODryhrAvfyYl8nvbxSVlOH8mcs2af6s+y0p+V1L9uTJ2oHn7uddf/DFj7iCmgInJS1n+U/kpD2UEOXiars9o6gKAAuSY5QK4gIQs5JXNyR/OybyCerN90Lx5875YVlb2bHV19fVNTU2jn3DM4x8x/02+/W1xA+di2yuvOM/FYufJn/gU3gr/EIPymZ3KP3/2Kb+ta1HusYAgijLnRLFTuuyePi2Q3l5IhsF8HEwRRBpQVBoOFjjhUNiRZNmhHncdl7k2cz3DcVhfcsz776OH2Zhlnp/TXw3MNGmlbAadb78KRnOU4KfP9eKPR46hoDCK8tJiUhyNCKJABEAA5x5RFAWiKMCljI+MxdlgbIwnkwmu6xmMJlPoONePnqGR84U+062/JIoi8zw22/d00aFPBFEqq1sG0XclPFY0YU+AG3GLabE94LxrJvqdSqWQTCbFP8Xal5aWsmAwODkq4c+fQTUCsCQA3ABgnpdraXJdjg4XaPFyZcjDeaOSyl8erYneCwD8P5Az018hQ8v0AAAAAElFTkSuQmCC'
	Return Binary(_Base64Decode($ImageEditor_Icons))
EndFunc   ;==>_ImageEditor_ToolbarIcons

Func _WinTitle_Icon()
	Local $WinTitle_Icon
	$WinTitle_Icon &= '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'
	$WinTitle_Icon &= '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'
	$WinTitle_Icon &= 'AzS0jAAVgZHuqjyCAhHSUpkSIku5JRVQSpsYXyiol3/w7IX47OUr/aG6vx0GbC0M46+9MvbL8dX58Q8cP/zfd5Wid4UwYZkGci6Ha3NwloBJ0GCMwA2TDfbYO1Li74RoAoBpkHFw1LydcQOcS2hIAITskA9tSBgGEMdlSF2FbQpIuQoR1WDn8yiMzIJxDb/ZRLhmp6Wvo0pV2un5GwIpZXyitDymHJM4XneHgMQUppaL6gt/9ej/Pje98rnf2bf3M3GlxCIhMNfypudjecqNVPvM+MTXK4fsd3BbsVyGUMwZMA2AmN6oNIxS8KkAwAYQpmGaAJDPUKZaoZ2Mc2iVqjczhlcPkRkAPA8Qoo5m8xRsh6G/fxg6NBG3bMye2g7pZRG1JmE5w4ne74Z/kv/QcepxtaW7T4huE4+k6SHiFpQQePyFhReeeuXqZ4dMs/CWntIdkdeGJwQurDWe9qQMHK1GqiX5nkhx5oJQzJnIuRyc6bR9TgDgnENrAU/YBgA3XVwIQBkAkLEpl3NQZIxAWiRLjwgZxtCcL4GbEtwJQGTCrw9ita3AdQDh9UE1B5NcsnPd8O+GfhcECYLoDjo6Imdz/U8FAFTkQUsfBKavzC18MxYyeOdw9f4Mo55GFGE9iuUra+snGKPhA8PGp4Yr1n0SJhyLUCkYsAzq6oeElwjcMCFFiLW2agCwAAgAcRcAADaRthMPCXQKuze1DUpoeJGEUVyHU2ohvlbGOgwQV6CULIlZ4HamG/66w/IdAAhJFNBGk8NIbaQANl4TrgCIazp+s3HLi+f5ifdvG3pv3G5RJARqfrDcMsTqLxzt+Y3d2/IPB8q1DU7oLZooZjkMngJPaVk2TIA0giCS86vBtTTqO22yNJKZPEhpRR0pmzgjWZTBNHI2oIM89HwOJggaIlG8OvGn4ZQSPa872iElOyjolISgo41ePyU8RklzSGBpCDCwbAVSBNAa+OCdeHCEnKG9q/mbvfoqfCGQq2rr398/+keNyBm5tmYQY4RClmOgx4JtUpf5dQqA5eQg4xaWm2jOr7RmUsPNFIjYAIAwJkQi9VJaAbogdERON0/1xiwDGtwug1sutJbd0O+eaR4yljRDnBsAcYAYDMsFmZluCdUgaJ2ErKFyUEqCcW7eWSrcFddCxCJGW0qMHCqUZdEpT01HkErBNAn9ZQvlHAfn2CS80hl6poigdg5Tq/bVRrO1nPY/nVkBGQAQCYRtHyHpCIR464OLrt5DdzIbEQNpBRhZuG5PirjuzuIS29Og1onOY4xBk5F+PwNxA4ylntdpQ6DTIsEZOGPQLQ7Mc4TtOiIhEVgalX4XEysxvFCCiJB1GPpLRtf73VEaEQwnD4JCEAZ48VLzRBSLeBMArAtAGOvW3DLW92yL+qAjENiWvCQNnBcWvhXncKjvEDLF7ZhcuYzLS7PY7bfxUG8B5+IY/QbHHkYbkKVDEa0iME5QEt30YCwRTZ15H9HGN3bmjLSgIdYl4jhGKAWMfhuNWGGlKZJpskHoL5ko5xPvE+luKSUGOMUheCuXsRL1eSfPnn4sNVp3jO+WwVgq7/wUTb39VrEbKgAxc/N8FREx/IAGcFFreKEAW76KyytXEbQCjEcK0srjoYKB/Jb8Q8rCgJIeGGkQ590qwVjK1qnzVacr7BQFrYEpQuwFEErB1xrGsIX5tQhhnHg/7zJUKyYyNgMj3dUYIMDK9YFxAyIO8fwl++Ts/OLEJgBoyzxAKR2/OK5eDEKAVNCdzhAjMEaYNAcxz8sIZYRYCdjcgkEGuM1BBiGSHoocsFOjiHQiRNK+QEsfRIm85dwA4zwdlSH9/4QQidC9hnUJXVOIoxBCK/gWIcwxNFoCOpmboL9koLfAYfBU+BDAmIZhOsiUd4GbDkqH/lk8NtP8aymV2uR53dHr3YHIhZnwB1dqTkykwJCUKAYJDYGrnsZicxUAIIXAuanzaDfbUCIRNpEMtxjdNYY0oAJARwkhpgZyboEZdheE'
	$WinTitle_Icon &= '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'
	$WinTitle_Icon &= 'NJay/AqAxetJ77XsD+igONcKoqd/eHa6PrvcvH9xbfDBMxflwO2H23T4gItS0cHDu06DiKFA8xjkhPcVTuPe3otwuMCaKsGwHBwYMsAtpzv+7nbB6ZfVvSKW6hF235RHsVjA5Re+ClJN2KaGTRlM1oaw2soFZyaWXvz+c6e/MXlt5YrSWm6SuGJTyC8DWAXQfrWwfy07RHTKmrNS6Wh8brU5u7z+ysHR3nfPLvYdf+kc792/R9O+XQH6KwoinMD9wzVsyzaTzVPEAbRBzARz93ZLJ2jzcEVCKYHz00AmV0Aum4XfbmBx5hz8Vgb5TFkrlV0fn1k+9cOXTj82WVu9Ijceb3XuGKfGrqbGN9Ka/1P3Gd/IHqFOJNQABF4oGicvzc+dm155au9Q6a2HZ/pu33mxPFIdcJ3h/ptRrbSxRjZcsw2Dh2AUgRGHFq1k/KAlZLAMLUMoKSCFhi+yOD+1A70jvSj3lDF++hnMzfPIC4z5hZXZZ8emFp9fXmsvph7vBI7aZPhaanx9k9f1G7lTtFNLV9L8WvXCeOHlyaWpV6aWT1Ty7ujOanHvnqHSntH+YrW/Mpovl7JmPm+yXJbBdQiZbAbV/fdAiRALMycQhzFETAgCrZfCHHxVomw2C86Y+Pq3vndh/PLUVL3RPttqt68qpTZv7ZKpQ9qppzcbHt+I1/82W2Vl+kVhinpNKj242PBmFxvehefH5vOOxfOlrN3TW3QrvQWnXCk4xZxrZcrFvL3ncMYUUaCnxs77rbbvN/14faUZrY3sv/1tQ7uGdzu2hVfOnl0+c+HSlSAI5vwgmFdKRalhUZqOrdTwjqrz0vcUXsfxerbKblZWXppzBQBlrXXZD0WPH4p8bbXtbpq+MsaIrK+fZlprHcWx1Forzjm/7bYjR+/ac3hwdmYGC7VrauLKxJU4jleiKJoQQtTSEualr80UgI4TxOs1/I3YLN0BQmwCwgGQS89seroAbKW0GYQh37yR8ejRYw9+8IM//7HG2prRbrVxaXzMn5uvjSmlTsZxfEZr3WFyPzU42mS0xhtwvBHb5fWmCUuUeoinp5VGgbnpYQQB0Pl8fmjvnpvum52dNZaXlrC0uIi257WJ6BQRPaG1nkvvJ7duLHxjjzf6FyObwUBairCpMaHORsbB4dG3elapt7G4gLC5Ds9rqyiOnuGcn7dtezqNqr/z4+/6N0P6utdkB3epxI23PPjeuZG7+Jq6gOzqE2q9HZyIhfgmEU0rpUKl1Jth/5v/qzHbtpHNl/LVnfuOSRCWdF5Mqt6ngzD4cwDPKqXmWq2W/Jt+MPH/WwRsOUzTRE9PxcjuOfbhRZnfNzM2dtW4/NjXMsvnvkNKjCmlFur1euh53pu2JnozAahUKmRV990S77j7N7EwNuasXHyCCX9Ca73q+77fbDbV9dvZf6YA6O/vJ8fNFAHkoVVbKdX2fT/2PE8FQYA3K+z/3gAwTRPlcpmIiHzf157n6Vfbwf1mHv8XzrTv/92cfWUAAAAASUVORK5CYII='
	Return Binary(_Base64Decode($WinTitle_Icon))
EndFunc   ;==>_WinTitle_Icon

Func _Blur($hBitmap, $iW, $iH, $dx1 = -5, $dx2 = -3, $dy1 = 12, $dy2 = 9, $fScale = 0.175, $qual = 6); by eukalyptus
	Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
	Local $hBmpSmall = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphics)
	Local $hGfxSmall = _GDIPlus_ImageGetGraphicsContext($hBmpSmall)
	DllCall($ghGDIPDll, "uint", "GdipSetPixelOffsetMode", "handle", $hGfxSmall, "int", 2)
	Local $hBmpBig = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphics)
	Local $hGfxBig = _GDIPlus_ImageGetGraphicsContext($hBmpBig)
	DllCall($ghGDIPDll, "uint", "GdipSetPixelOffsetMode", "handle", $hGfxBig, "int", 2)
	_GDIPlus_GraphicsScaleTransform($hGfxSmall, $fScale, $fScale)
	_GDIPlus_GraphicsSetInterpolationMode($hGfxSmall, $qual)

	_GDIPlus_GraphicsScaleTransform($hGfxBig, 1 / $fScale, 1 / $fScale)
	_GDIPlus_GraphicsSetInterpolationMode($hGfxBig, $qual)

	_GDIPlus_GraphicsDrawImageRect($hGfxSmall, $hBitmap, 0, $dx1, $iW, $iH + $dy2)
	_GDIPlus_GraphicsDrawImageRect($hGfxBig, $hBmpSmall, 0, $dx2, $iW, $iH + $dy2)

	_GDIPlus_GraphicsDispose($hGraphics)
	_GDIPlus_BitmapDispose($hBmpSmall)
	_GDIPlus_GraphicsDispose($hGfxSmall)
	_GDIPlus_GraphicsDispose($hGfxBig)
	Return $hBmpBig
EndFunc   ;==>_Blur

Func ASM_Bitmap_Pixelize($bmp, $iSize = 8) ;ASM code by TheShadowAE
	Local $w = _GDIPlus_ImageGetWidth($bmp), $h = _GDIPlus_ImageGetHeight($bmp)
	$w -= Mod($w, $iSize)
	$h -= Mod($h, $iSize)
	Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bmp)
	Local $yBmp, $ptr
	Local Const $dc = _CreateNewBmp32($w, $h, $ptr, $yBmp)
	Local Const $xdc = _WinAPI_CreateCompatibleDC(0)
	Local Const $dc_obj = _WinAPI_SelectObject($xdc, $hHBmp)
	_WinAPI_BitBlt($dc, 0, 0, $w, $h, $xdc, 0, 0, $SRCCOPY)
	Local Const $bASM_Pix = "0x8B5C240C8B7C24106BFF048B7424046BF6048B5424088B4C24048B035351528B54241C8B4C241C890383C3044975F801F329FB4A75ED5A595B01FB2B4C241075D98B442410480FAFC601C32B54241075C5C3"
	Local $tCodeBuffer = DllStructCreate("byte[" & BinaryLen($bASM_Pix) & "]") ;reserve Memory for opcodes
	DllStructSetData($tCodeBuffer, 1, $bASM_Pix) ;write opcodes into memory
	DllCall("kernel32.dll", "int", "VirtualProtect", "ptr", DllStructGetPtr($tCodeBuffer), "ulong", BinaryLen($bASM_Pix), "dword", $PAGE_EXECUTE_READWRITE, "dword*", 0) ;avoid crash when DEP is activates for all programs and services! Thanks to progandy
	DllCall("user32.dll", "none", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "int", $w, "int", $h, "ptr", $ptr, "int", $iSize)
	_GDIPlus_BitmapDispose($hBmp)
	$hBmp = _GDIPlus_BitmapCreateFromHBITMAP($yBmp)
	_WinAPI_DeleteObject($yBmp)
	_WinAPI_DeleteObject($hHBmp)
	_WinAPI_SelectObject($xdc, $dc_obj)
	_WinAPI_DeleteDC($xdc)
	_WinAPI_ReleaseDC(0, $dc)
	$ptr = 0
	$tCodeBuffer = 0
EndFunc   ;==>ASM_Bitmap_Pixelize

Func ASM_Bitmap_Rasterize($vBmp, $iColor = 0x000000) ;ASM code by AndyG
	$vBitmap = _GDIPlus_BitmapCloneArea($vBmp, 0, 0, $bW, $bH)
	If Not $vBitmap Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone bitmap!" & @CRLF & @CRLF & _
			"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
	Local Const $hBitmapData = _GDIPlus_BitmapLockBits($vBitmap, 0, 0, $bW, $bH, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32RGB)
	Local Const $Scan = DllStructGetData($hBitmapData, "Scan0")
	Local Const $Stride = DllStructGetData($hBitmapData, "Stride")
	Local $tPixelData = DllStructCreate("dword[" & (Abs($Stride * $bH)) & "]", $Scan)
	Local Const $bASM_Rasterize = "0x8B7424048B4C24088B7C240C8B4424100FBAE0007238BB0100000039C3730E893E83C60883C30283E90277EFC30FBAE300730EBB0000000083C60483E90177DBC3BB0100000083EE0483C101EBCD893E83C60883E90277F6C3"

	Local Const $iSize = BinaryLen($bASM_Rasterize)
	Local Const $pCodeBuffer = _MemVirtualAlloc(0, $iSize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
	Local $tCodeBuffer = DllStructCreate("byte[" & $iSize & "]", $pCodeBuffer)
	DllStructSetData($tCodeBuffer, 1, $bASM_Rasterize)
	DllCallAddress("int:cdecl", $pCodeBuffer, "ptr", DllStructGetPtr($tPixelData), "int", $bW * $bH, "int", $iColor, "int", $bW)
	_MemVirtualFree($pCodeBuffer, $iSize, $MEM_DECOMMIT)

	_GDIPlus_BitmapUnlockBits($vBitmap, $hBitmapData)
	_GDIPlus_BitmapDispose($vBmp)
	$hBmp = $vBitmap
	$tCodeBuffer = 0
	$tPixelData = 0
EndFunc   ;==>ASM_Bitmap_Rasterize

Func ASM_Bitmap_Grey_BnW($vBmp, $iBlackAndWhite = 0, $iLight = 160, $skip = False) ;ASM code by AndyG
	$vBitmap = _GDIPlus_BitmapCloneArea($vBmp, 0, 0, $bW, $bH)
	If Not $vBitmap Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone bitmap!" & @CRLF & @CRLF & _
			"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
	Local Const $hBitmapData = _GDIPlus_BitmapLockBits($vBitmap, 0, 0, $bW, $bH, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32RGB)
	Local Const $Scan = DllStructGetData($hBitmapData, "Scan0")
	Local Const $Stride = DllStructGetData($hBitmapData, "Stride")
	Local $tPixelData = DllStructCreate("dword[" & (Abs($Stride * $bH)) & "]", $Scan)
	Local Const $bASM_GBW = "0x8B7C24048B5424088B5C240CB900000000C1E202575352518B040FBA00000000BB00000000B90000000088C2C1E80888C3C1E80888C18B44240883F800772FB85555000001CB01D3F7E3C1E810BB00000000B3FFC1E30888C3C1E30888C3C1E30888C389D8595A5B5F89040FEB3B89C839C3720289D839C2720289D05089F839C3770289D839C2770289D05B01D8BBDC780000F7E3C1E810595A5B5F3B4424107213C7040FFFFFFF0083C10439D1730EE95FFFFFFFC7040F00000000EBEBC3"

	Local Const $iSize = BinaryLen($bASM_GBW)
	Local Const $pCodeBuffer = _MemVirtualAlloc(0, $iSize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
	Local $tCodeBuffer = DllStructCreate("byte[" & $iSize & "]", $pCodeBuffer)
	DllStructSetData($tCodeBuffer, 1, $bASM_GBW)
	DllCallAddress("int:cdecl", $pCodeBuffer, "ptr", DllStructGetPtr($tPixelData), "int", $bH * $bW, "int", $iBlackAndWhite, "int", $iLight)
	_MemVirtualFree($pCodeBuffer, $iSize, $MEM_DECOMMIT)
	_GDIPlus_BitmapUnlockBits($vBitmap, $hBitmapData)
	_GDIPlus_BitmapDispose($hBmp)
	$hBmp = $vBitmap
	$tPixelData = 0
	$tCodeBuffer = 0
EndFunc   ;==>ASM_Bitmap_Grey_BnW

Func ASM_Bitmap_Invert($vvvBmp, $skip = False) ;ASM code by AndyG
	$vBitmap = _GDIPlus_BitmapCloneArea($vvvBmp, 0, 0, $bW, $bH)
	If Not $vBitmap Or @error Then Return MsgBox(16 + 262144, "ERROR", "Whoops an internal error has occured: unable to clone bitmap!" & @CRLF & @CRLF & _
			"Sorry for inconvenience! :-(", 20, WinGetHandle(AutoItWinGetTitle()))
	Local Const $hBitmapData = _GDIPlus_BitmapLockBits($vBitmap, 0, 0, $bW, $bH, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32RGB)
	Local Const $Scan = DllStructGetData($hBitmapData, "Scan0")
	Local Const $Stride = DllStructGetData($hBitmapData, "Stride")
	Local $tPixelData = DllStructCreate("dword[" & (Abs($Stride * $bW)) & "]", $Scan)
	Local Const $bASM_Inv = "0x8B7424048B4C24088136FFFFFF0083C60483E90177F2C3"

	Local Const $iSize = BinaryLen($bASM_Inv)
	Local Const $pCodeBuffer = _MemVirtualAlloc(0, $iSize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
	Local $tCodeBuffer = DllStructCreate("byte[" & $iSize & "]", $pCodeBuffer)
	DllStructSetData($tCodeBuffer, 1, $bASM_Inv)
	DllCallAddress("int:cdecl", $pCodeBuffer, "ptr", DllStructGetPtr($tPixelData), "int", $bW * $bH)
	_MemVirtualFree($pCodeBuffer, $iSize, $MEM_DECOMMIT)
	_GDIPlus_BitmapUnlockBits($vBitmap, $hBitmapData)
	_GDIPlus_BitmapDispose($vvvBmp)
	$hBmp = $vBitmap
	$tCodeBuffer = 0
EndFunc   ;==>ASM_Bitmap_Invert

Func _Base64Decode($input_string)
	Local $struct = DllStructCreate("int")
	Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
	If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
	Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
	$a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
	If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
	Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode