Jump to content
wakillon

PostStampBuilder

Recommended Posts

wakillon

Glad you like it !

Thanks.

  • Like 1

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

The save process takes too long.

I modified your script a little bit:

#NoTrayIcon

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
;~ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_Icon=C:\ProgramData\PostStampBuilder\Stamp2.ico
#AutoIt3Wrapper_Outfile=PostStampBuilder.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_UPX_Parameters=--best --lzma
#AutoIt3Wrapper_Res_Description=Postage Stamp Builder
#AutoIt3Wrapper_Res_Fileversion=1.0.4
#AutoIt3Wrapper_Res_LegalCopyright=wakillon
#AutoIt3Wrapper_Res_Field='Compiled with'|'AutoIt Version 3.3.14.2'
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /pe /rm
#AutoIt3Wrapper_Run_After=del "%scriptfile%_stripped.au3"
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#Region    ;************ Includes ************
#include <WindowsConstants.au3>
#Include <StaticConstants.au3>
#Include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WinAPIProc.au3>
#include <GDIPlus.au3>
#Include <Misc.au3>
#EndRegion ;************ Includes ************

Opt ( 'GUIOnEventMode', 1 )

#Region ------ Global Variables ------------------------------
Global $hGuiMain, $idLabelPreview, $idButtonSave, $idLabelImageName, $idLabelSize, $idButtonChooseColor, $idComboPerforationsCount
Global $idLabelOriginalSize, $idLabelOutputSize, $aIdRadioType[3], $idLabelDropTxt, $idSliderRescale, $idLabelScale, $idButtonExit, $idButtonOpen
Global $hGuiRef, $hGraphic, $sCurrentFilePath, $iScale, $iSave, $sFileSaveDialog, $aPosBak, $iAdlib, $iOpen, $iChoose, $sFileOpenDialog, $Color
Global $hImage, $hBmp_Buffer, $hGfx_Buffer, $hGraphicPreview, $hClonePreview, $SerratedEdgeColor = 0xFFFFFFFF, $aIdLabelColor[6]
Global $iHCount, $iVCount, $iHWidth, $iVWidth, $iGuiWidth, $iGuiHeight, $iImageWidth, $iImageHeight, $iLabelPreviewSize = 560, $x, $y, $w, $h, $iTriangleMargin = 10, $iPerforationsType = 0
Global $sInstallDir = @HomeDrive & '\ProgramData\PostStampBuilder'
#EndRegion --- Global Variables ------------------------------

#Region ------ Init ------------------------------
AutoItWinSetTitle ( 'P0st.Stamp.Bu1ld3r' )
If _ScriptIsAlreadyRunning() Then Exit
_GDIPlus_Startup()
Stamp2Ico ( 'Stamp2.ico', $sInstallDir )
Choosecolorgif ( 'choosecolor.gif', $sInstallDir )
Saveaspnggif ( 'saveaspng.gif', $sInstallDir )
Opengif ( 'open.gif', $sInstallDir )
Exitgif ( 'exit.gif', $sInstallDir )
_Fluidwatercolorpaperjpg ( 'paper.jpg', $sInstallDir )
Global $hImg = _GDIPlus_ImageLoadFromFile( $sInstallDir & "\paper.jpg")
Global $hTexture_Paper = _GDIPlus_TextureCreate($hImg)
_GDIPlus_ImageDispose($hImg)
_GuiMain()
#EndRegion --- Init ------------------------------

#Region ------ Main Loop ------------------------------
While 1
    If $iSave = 1 Then
        $iSave = 0
        $sFileSaveDialog = FileSaveDialog ( 'Save As PNG', @WorkingDir, 'Image Files (*.png)', 2+16, 'Save.png', $hGuiMain )
        If Not @error Then
            If _FileGetExtByFullPath ( $sFileSaveDialog ) <> 'png' Then $sFileSaveDialog &= '.png'
            _ImageSaveWithTransparency ( $sFileSaveDialog )
            If Not @error Then
;~              ShellExecute ( $sFileSaveDialog )
            Else
                MsgBox ( 262144+16, 'Error', 'Sorry !' & @CRLF & 'An Unknow Error occurred !', 4 )
            EndIf
        EndIf
    EndIf
    If $iOpen = 1 Then
        $iOpen = 0
        $sFileOpenDialog = FileOpenDialog ( 'Select an Image', '', 'Image Files (*.bmp;*.gif;*.jpg;*.png)', 1, '', $hGuiMain )
        If Not @error Then
            Switch _ImageCheck ( $sFileOpenDialog  )
                Case 1
                    If $idLabelDropTxt Then
                        GUICtrlDelete ( $idLabelDropTxt )
                        $idLabelDropTxt = 0
                    EndIf
                    $sCurrentFilePath = $sFileOpenDialog
                    _GuiRef()
                Case 0
                    MsgBox ( 262144+16, 'Error', 'Unsupported File !', 5 )
                Case -1
                    MsgBox ( 262144+16, 'Error', 'Dimensions File are too small !', 5 )
            EndSwitch
        EndIf
    EndIf
    If $iChoose = 1 Then
        $iChoose =0
        _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonChooseColor )
        $Color = _ChooseColor ( 2, 0, 0, $hGuiMain )
        If $Color <> -1 Then
            $SerratedEdgeColor = '0x' & Hex ( BitOR ( 0xFF000000, $Color ), 8 )
            _GuiRef()
            _ImageDraw()
        EndIf
    EndIf
    Sleep ( 250 )
WEnd
#EndRegion --- Main Loop ------------------------------

Func _ArrayAddEx ( ByRef $avArray, $vValue )
    If Not IsArray ( $avArray ) Then Return SetError ( 1, 0, -1 )
    If UBound ( $avArray, 0 ) <> 1 Then Return SetError ( 2, 0, -1 )
    Local $iUBound = UBound ( $avArray )
    ReDim $avArray[$iUBound + 1]
    $avArray[$iUBound] = $vValue
    Return $iUBound
EndFunc ;==> _ArrayAddEx()

Func _Base64Decode ( $input_string ) ; by trancexx
    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()

Func _FileGetExtByFullPath ( $sFullPath=@ScriptFullPath )
    Local $aFileName = StringSplit ( $sFullPath, '.' )
    If Not @error Then Return $aFileName[$aFileName[0]]
EndFunc ;==> _FileGetExtByFullPath()

Func _FileGetFullNameByFullPath ( $sFullPath )
    Local $aFileName = StringSplit ( $sFullPath, '\' )
    If Not @error Then Return $aFileName[$aFileName[0]]
EndFunc ;==> _FileGetFullNameByFullPath()

Func _GuiCtrlPicButton_RestorePos()
    If Not _IsPressedEx ( '01' ) Then ; wait left mouse button is not pressed.
        If IsArray ( $aPosBak ) Then
            GUICtrlSetPos ( $aPosBak[4], $aPosBak[0], $aPosBak[1], $aPosBak[2], $aPosBak[3] )
            $aPosBak = 0
        EndIf
        $iAdlib = 0
        AdlibUnRegister ( '_GuiCtrlPicButton_RestorePos' )
    EndIf
EndFunc ;==> _GuiCtrlPicButton_RestorePos()

Func _GuiCtrlPicButton_SimulateAction ( $hWnd, $iCtrlId, $iFlag=1 )
    If $iAdlib = 1 Then Return
    Local $aPos = ControlGetPos ( $hWnd, '', $iCtrlId )
    If Not @error Then
        GUICtrlSetPos ( $iCtrlId, $aPos[0]+$iFlag, $aPos[1]+$iFlag, $aPos[2]-2*$iFlag, $aPos[3]-2*$iFlag )
        $aPosBak = $aPos
        _ArrayAddEx ( $aPosBak, $iCtrlId )
        AdlibRegister ( '_GuiCtrlPicButton_RestorePos', 150 )
        $iAdlib = 1
    EndIf
    $aPos = 0
EndFunc ;==> _GuiCtrlPicButton_SimulateAction()

Func _Exit()
    If $hImage Then _GDIPlus_ImageDispose ( $hImage )
    _GDIPlus_GraphicsDispose ( $hGfx_Buffer )
    _GDIPlus_BitmapDispose ( $hBmp_Buffer )
    _GDIPlus_GraphicsDispose ( $hGraphic )
    _GDIPlus_BrushDispose ( $hTexture_Paper )
    _GDIPlus_Shutdown()
    GUIDelete ( $hGuiMain )
    Exit
EndFunc ;==> _Exit()

Func _GuiEvents()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            _Exit()
        Case $idButtonExit
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonExit )
            Sleep ( 250 )
            _Exit()
        Case $GUI_EVENT_RESTORE
            _ImageDraw()
            If $hClonePreview Then _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
        Case $GUI_EVENT_DROPPED
            If @GUI_DropId = $idLabelPreview Then
                Switch _ImageCheck ( @GUI_DRAGFILE  )
                    Case 1
                        If $idLabelDropTxt Then
                            GUICtrlDelete ( $idLabelDropTxt )
                            $idLabelDropTxt = 0
                        EndIf
                        $sCurrentFilePath = @GUI_DRAGFILE
                        _GuiRef()
                    Case 0
                        MsgBox ( 262144+16, 'Error', 'Unsupported File !', 5 )
                    Case -1
                        MsgBox ( 262144+16, 'Error', 'Dimensions File are too small !', 5 )
                EndSwitch
            EndIf
        Case $idButtonSave
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonSave )
            If $hImage Then $iSave = 1
            Sleep ( 250 )
        Case $idButtonChooseColor
            $iChoose = 1
        Case $idComboPerforationsCount
            If $hImage Then
                GUICtrlSetOnEvent ( $idComboPerforationsCount, '_NoEvents' )
                GUICtrlSetState ( $idComboPerforationsCount, $GUI_DISABLE )
                _GuiRef()
                _ImageDraw()
                Sleep ( 50 )
                GUICtrlSetState ( $idComboPerforationsCount, $GUI_ENABLE )
                GUICtrlSetOnEvent ( $idComboPerforationsCount, '_GuiEvents' )
                ControlFocus ( $hGuiMain, '', $idComboPerforationsCount )
            EndIf
        Case $aIdRadioType[0], $aIdRadioType[1], $aIdRadioType[2]
            $iPerforationsType = @GUI_CtrlId - $aIdRadioType[0]
            If $hImage Then
                _GuiRef()
                _ImageDraw()
            EndIf
        Case $aIdLabelColor[0] To $aIdLabelColor[5]
            Local $aColor[6] = [0xFFFFFF, 0xFFFF00, 0xFF0000, 0x00FF00, 0x0000FF, 0x000000]
            $SerratedEdgeColor =  '0x' & Hex ( BitOR ( 0xFF000000, $aColor[@GUI_CtrlId - $aIdLabelColor[0]] ), 8 )
            _GuiRef()
            _ImageDraw()
        Case $idSliderRescale
            $iScale = GUICtrlRead ( $idSliderRescale )/100
            If $hImage Then ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
            ControlSetText ( $hGuiMain, '', $idLabelScale,  StringFormat ( '%03.2f', $iScale ) )
        Case $idButtonOpen
            _GuiCtrlPicButton_SimulateAction ( $hGuiMain, $idButtonOpen )
            $iOpen = 1
            Sleep ( 250 )
    EndSwitch
EndFunc ;==> _GuiEvents()

Func _GuiMain()
    $hGuiMain = GUICreate ( 'PostStampBuilder v1.0.4', 820, 600, -1, -1, -1, $WS_EX_ACCEPTFILES )
    GUISetOnEvent ( $GUI_EVENT_CLOSE, '_GuiEvents' )
    GUISetOnEvent ( $GUI_EVENT_DROPPED, '_GuiEvents' )
    GUISetOnEvent ( $GUI_EVENT_RESTORE, '_GuiEvents' )
    GUISetIcon ( $sInstallDir & '\Stamp2.ico' )
    GUISetBkColor ( 0x444444 )
    ;
    $idLabelSize = GUICtrlCreateLabel ( 'Preview', 20, 1, $iLabelPreviewSize, 18, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelPreview = GUICtrlCreateLabel ( '', 20, 20, $iLabelPreviewSize, $iLabelPreviewSize, 0x01 )
    GUICtrlSetState ( -1, $GUI_DROPACCEPTED )
    GUICtrlSetBkColor ( -1, 0xABCDEF )
    GUICtrlSetColor ( -1, 0xF8D381 )
    GUICtrlSetState ( -1, $GUI_DISABLE )
    $hGraphicPreview = _GDIPlus_GraphicsCreateFromHWND ( GUICtrlGetHandle ( -1 ) )
    ;
    $idLabelDropTxt = GUICtrlCreateLabel ( 'Drag && Drop an image here.', 20, $iLabelPreviewSize/3, $iLabelPreviewSize, 40, 0x01 )
    GUICtrlSetFont ( -1, 14, 800 )
    GUICtrlSetBkColor ( -1, 0xABCDEF )
    GUICtrlSetState ( -1, $GUI_DISABLE )
    ;
    $idLabelImageName = GUICtrlCreateLabel ( '', 20, 21 +$iLabelPreviewSize, $iLabelPreviewSize, 18, 0x01 )
    GUICtrlSetFont ( -1, 10, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    GUICtrlCreateLabel ( 'Original Dimension', 600, 20, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelOriginalSize = GUICtrlCreateLabel ( '', 600, 40, 200, 20, BitOR ( $SS_SUNKEN, 0x01 ) )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    GUICtrlCreateLabel ( 'Output Dimension', 600, 70, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idLabelOutputSize = GUICtrlCreateLabel ( '', 600, 90, 200, 20, BitOR ( $SS_SUNKEN, 0x01 ) )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    GUICtrlCreateLabel ( 'Serrated Edges Color', 600, 130, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    Local $aColor[6] = [0xFFFFFF, 0xFFFF00, 0xFF0000, 0x00FF00, 0x0000FF, 0x000000]
    For $i = 0 To 5
        $aIdLabelColor[$i] = GUICtrlCreateLabel ( '', 600+$i*37, 150, 15, 15, $SS_SUNKEN )
        GUICtrlSetOnEvent ( -1, '_GuiEvents' )
        GUICtrlSetBkColor ( -1, $aColor[$i] )
    Next
    ;
    $idButtonChooseColor = GUICtrlCreatePic ( $sInstallDir & '\choosecolor.gif', 600, 175, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    GUICtrlCreateLabel ( 'Horizontal Perforation Count', 600, 215, 200, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idComboPerforationsCount = GUICtrlCreateCombo ( '', 600, 235, 200, 20, $CBS_DROPDOWNLIST, $WS_EX_RIGHT )
    GUICtrlSetData ( -1, '10|15|20|25|30', '20' )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    GUICtrlSetFont ( -1, 11, 800 )
    ;
    GUICtrlCreateGroup ( ' Perforations Type ', 600, 280, 200, 130 )
    DllCall ( 'UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle ( -1 ), 'wstr', 0, 'wstr', 0 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    Local $aType[3] = ['Rounded', 'Square', 'Triangle']
    For $i = 0 To 2
        $aIdRadioType[$i] = GUICtrlCreateRadio ( ' ' & $aType[$i], 650, 310+$i*30, 100, 20 )
        DllCall ( 'UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle ( -1 ), 'wstr', 0, 'wstr', 0 )
        GUICtrlSetOnEvent ( -1, '_GuiEvents' )
        GUICtrlSetFont ( -1, 11, 800 )
        If Not $i Then GUICtrlSetState ( -1, $GUI_CHECKED )
        GUICtrlSetColor ( -1, 0xFFFFFF )
    Next
    ;
    GUICtrlCreateLabel ( 'Rescale Image      X ', 600, 420, 160, 20, 0x01 )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFFFF )
    ;
    $idSliderRescale = GUICtrlCreateSlider ( 600, 440, 200, 20, BitOR ( 0x0004, 0x0010 ) ) ; $TBS_TOP $TBS_NOTICKS
    GUICtrlSetLimit ( -1, 2.0*100, 0.1*100 )
    GUICtrlSetData ( -1, 1*100 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    GUICtrlSetBkColor ( -1, 0x444444 )
    ;
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    $idLabelScale = GUICtrlCreateLabel ( StringFormat ( '%03.2f', $iScale ), 760, 420, 40, 20, $SS_SUNKEN, $WS_EX_RIGHT )
    GUICtrlSetFont ( -1, 11, 800 )
    GUICtrlSetColor ( -1, 0xFFFF00 )
    ;
    $idButtonSave = GUICtrlCreatePic ( $sInstallDir & '\saveaspng.gif', 600, 476, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    $idButtonOpen = GUICtrlCreatePic ( $sInstallDir & '\open.gif', 600, 516, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    $idButtonExit = GUICtrlCreatePic ( $sInstallDir & '\Exit.gif', 600, 556, 200, 24 )
    GUICtrlSetOnEvent ( -1, '_GuiEvents' )
    ;
    GUISetState ( @SW_SHOW, $hGuiMain )
    GUIRegisterMsg ( $WM_PAINT, '_WM_PAINT' )
    GUIRegisterMsg ( $WM_HSCROLL, '_WM_HSCROLL' )
EndFunc ;==> _GuiMain()

Func _GuiRef() ; this hidden gui is the reference for create the preview and for save Image to PNG.
    If Not FileExists ( $sCurrentFilePath ) Then Return
    ControlSetText ( $hGuiMain, '', $idLabelImageName, _FileGetFullNameByFullPath ( $sCurrentFilePath ) )
    If $hImage Then _GDIPlus_ImageDispose ( $hImage )
    $hImage = _GDIPlus_ImageLoadFromFile ( $sCurrentFilePath )
    $iImageWidth = _GDIPlus_ImageGetWidth ( $hImage )
    $iImageHeight = _GDIPlus_ImageGetHeight ( $hImage )
    ControlSetText ( $hGuiMain, '', $idLabelOriginalSize,  $iImageWidth & 'x' & $iImageHeight )
    $iHCount = GUICtrlRead ( $idComboPerforationsCount ) ; Horizontal Perforations count.
    $iVCount = Int ( $iHCount*$iImageHeight/$iImageWidth ) ; Vertical Perforations count.
    Switch $iPerforationsType
        Case 0, 1
            $iHWidth = $iImageWidth/( $iHCount*1.5 -1.5 ) ; Horizontal Perforations Size
            $iVWidth = $iImageHeight/( $iVCount*1.5 -1.5 ) ; Vertical Perforations Size
            $iGuiWidth = Int ( $iImageWidth +2*$iHWidth ) ; gui width for image + Left and right serrated edges
            $iGuiHeight = Int ( $iImageHeight +2*$iVWidth ) ; gui height for image + top and bottom serrated edges
        Case 2
            $iTriangleMargin = Int ( Sqrt ( $iImageWidth +$iImageHeight )/2 )
            ConsoleWrite ( '+->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $iTriangleMargin : ' & $iTriangleMargin & @Crlf )
            $iHWidth = ($iImageWidth +$iTriangleMargin*2)/( $iHCount ) ; Horizontal Perforations Size
            $iVWidth = ($iImageHeight +$iTriangleMargin*2)/( $iVCount ) ; Vertical Perforations Size
            $iGuiWidth = Int ( $iImageWidth +$iTriangleMargin*2 +$iHWidth ) ; gui width for image + Left and right serrated edges
            $iGuiHeight = Int ( $iImageHeight +$iTriangleMargin*2 +$iVWidth ) ; gui height for image + top and bottom serrated edges
    EndSwitch
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
    If $hGuiRef Then
        GUISwitch ( $hGuiRef )
        GUIRegisterMsg ( $WM_PAINT, '' )
        _GDIPlus_GraphicsDispose ( $hGfx_Buffer )
        _GDIPlus_BitmapDispose ( $hBmp_Buffer )
        _GDIPlus_GraphicsDispose ( $hGraphic )
        $hGfx_Buffer = 0
        $hBmp_Buffer = 0
        $hGraphic = 0
        GUIDelete ( $hGuiRef )
        $hGuiRef = 0
    EndIf
    $hGuiRef = GUICreate ( '', $iGuiWidth, $iGuiHeight, -1, -1, $WS_POPUP, BitOR ( $WS_EX_TOPMOST, $WS_EX_LAYERED ) )
    _WinAPI_SetLayeredWindowAttributes ( $hGuiRef, 0xFFABCDEF, 255 ) ; set gui transparency
;~  GUISetState()
    GUIRegisterMsg ( $WM_PAINT, '_WM_PAINT' )
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ( $hGuiRef )
    $hBmp_Buffer = _GDIPlus_BitmapCreateFromGraphics ( $iGuiWidth, $iGuiHeight, $hGraphic )
    $hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext ( $hBmp_Buffer )
    _ImagePreviewSet()
EndFunc ;==> _GuiRef()

Func _ImageCheck ( $sFilePath )
    Local $hImage = _GDIPlus_ImageLoadFromFile ( $sFilePath )
    Local $iImageType = _GDIPlus_ImageGetType ( $hImage )
    Local $iImageWidth = _GDIPlus_ImageGetWidth ( $hImage )
    Local $iImageHeight = _GDIPlus_ImageGetHeight ( $hImage )
    _GDIPlus_ImageDispose ( $hImage )
    Switch $iImageType
        Case $GDIP_IMAGETYPE_UNKNOWN
            Return 0
        Case $GDIP_IMAGETYPE_BITMAP ; BMP, PNG, GIF, JPEG, TIFF, ICO, EXIF
            If $iImageWidth < 128 Or $iImageHeight < 128 Then Return -1
            Return 1
        Case $GDIP_IMAGETYPE_METAFILE ; EMF, WMF
            Return 0
    EndSwitch
EndFunc ;==> _ImageCheck()

Func _ImageDraw()
    If Not $hGfx_Buffer Then Return
    If $hImage Then
        Switch $iPerforationsType
            Case 2
                _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth/2 +$iTriangleMargin, $iVWidth/2 +$iTriangleMargin, $iImageWidth, $iImageHeight )
            Case Else
                _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
        EndSwitch
    EndIf
EndFunc ;==> _ImageDraw()

Func _ImagePreviewSet()
;~  _GDIPlus_GraphicsClear ( $hGfx_Buffer, $SerratedEdgeColor ) ; serrated edges color
    Switch $iPerforationsType
        Case 0
            _PostStampCreateRoundSerration ( $hImage )
        Case 1
            _PostStampCreateRectangleSerration ( $hImage )
        Case 2
            _PostStampCreateTriangleSerration ( $hImage )
    EndSwitch
    If $hClonePreview Then _GDIPlus_ImageDispose ( $hClonePreview )
    $hClonePreview = _GDIPlus_BitmapCloneArea ( $hBmp_Buffer, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_PXF32ARGB )
    Local $iRatio, $iMargin = 20
    If $iGuiWidth >= $iLabelPreviewSize Or $iGuiHeight >= $iLabelPreviewSize Then
        If $iGuiWidth >= $iGuiHeight Then
            $iRatio = $iLabelPreviewSize/$iGuiWidth
        Else
            $iRatio = $iLabelPreviewSize/$iGuiHeight
        EndIf
    Else
        $iRatio = 1
        $iMargin = 0
    EndIf
    $w = Int ( $iGuiWidth*$iRatio -$iMargin )
    $h = Int ( $iGuiHeight*$iRatio -$iMargin )
    $x = Int ( ( $iLabelPreviewSize - $w )/2 )
    $y = Int ( ( $iLabelPreviewSize - $h )/2 )
    ControlSetText ( $hGuiMain, '', $idLabelSize, 'Preview in ' & $w & 'x' & $h )
    _GDIPlus_GraphicsClear ( $hGraphicPreview, 0xFFABCDEF )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
EndFunc ;==> _ImagePreviewSet()

Func _ImageSaveWithTransparency ( $sPngFilePath )
    Local $hClone = _GDIPlus_BitmapCloneArea ( $hBmp_Buffer, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_PXF32ARGB )
    If Not $hClone Then Return SetError ( 1, 0, 0 )
;~  Local $tBitmapData = _GDIPlus_BitmapLockBits ( $hClone, 0, 0, $iGuiWidth, $iGuiHeight, $GDIP_ILMWRITE, $GDIP_PXF32ARGB )
;~  Local $tBuffer = DllStructCreate ( 'byte[' & $iGuiHeight * $iGuiWidth * 4 & ']', DllStructGetData ( $tBitmapData, 'Scan0' ) )
;~  Local $Data = DllStructGetData ( $tBuffer, 1 )
;~  ConsoleWrite ( 'StringLen ( $Data ) : ' & StringLen ( $Data ) & @Crlf )
    Local $hSplash
;~  If StringLen ( $Data ) > 10^7 Then
        ; With High dimensions, SplashText is displayed for avoid to see the main gui not responding...
        $hSplash = SplashTextOn ( 'PostStampBuilder', @CRLF & 'Please Wait' & @CRLF & 'While Saving Image' & @CRLF & 'to PNG...', 500, 300, -1, -1, 0, 'Comic Sans MS', 32, 800 )
        GUISetState ( @SW_HIDE, $hGuiMain )
;~  EndIf
;~  Local $hTimerInit = TimerInit()
;~  Local $sSRER = StringRegExpReplace ( StringTrimLeft ( $Data, 2 ), '(.{8})', '\1 ' )
;~  ConsoleWrite ( '!-->-- [' & @ScriptLineNumber & '] TimerDiff StringRegExpReplace : ' & TimerDiff ( $hTimerInit ) & @Crlf )
;~  Sleep ( 250 )
;~  $hTimerInit = TimerInit()
;~  Local $SRER = StringRegExpReplace ( $sSRER, '(EFCDABFF)', 'EFCDAB00' )
;~  Sleep ( 250 )
;~  DllStructSetData ( $tBuffer, 1, '0x' & StringStripWS ( $SRER, 8 ) )
;~  ConsoleWrite ( '!-->-- [' & @ScriptLineNumber & '] TimerDiff DllStructSetData : ' & TimerDiff ( $hTimerInit ) & @Crlf )
;~  $sSRER = 0
;~  _GDIPlus_BitmapUnlockBits ( $hClone, $tBitmapData )
;~  $tBuffer = 0
;~  $tBitmapData = 0
    $iScale = GUICtrlRead ( $idSliderRescale )/100
    Local $hBitmap_Scaled = _GDIPlus_ImageScale ( $hClone, $iScale, $iScale )
    _GDIPlus_ImageDispose ( $hClone )
    If FileExists ( $sPngFilePath ) Then FileDelete ( $sPngFilePath )
    _GDIPlus_ImageSaveToFileEx ( $hBitmap_Scaled, $sPngFilePath, _GDIPlus_EncodersGetCLSID ( 'PNG' ) ) ; do not use gif!
    _GDIPlus_BitmapDispose ( $hBitmap_Scaled )
    _WinAPI_EmptyWorkingSet()
    Sleep( 500 )
    If $hSplash Then
        SplashOff()
        GUISetState ( @SW_SHOW, $hGuiMain )
    EndIf
    _ImagePreviewSet()
    Return SetError ( @error, 0, FileExists ( $sPngFilePath ) )
EndFunc ;==> _ImageSaveWithTransparency()

Func _IsPressedEx ( $sHexKey )
    Local $aRet = DllCall ( 'user32.dll', 'short', 'GetAsyncKeyState', 'int', '0x' & $sHexKey )
    If @error Then Return SetError ( @error, @extended, False )
    Return BitAND ( $aRet[0], 0x8000 ) <> 0
EndFunc ;==> _IsPressedEx()

Func _LzntDecompress ( $bBinary ); by trancexx
    $bBinary = Binary ( $bBinary )
    Local $tInput = DllStructCreate ( 'byte[' & BinaryLen ( $bBinary ) & ']' )
    DllStructSetData ( $tInput, 1, $bBinary )
    Local $tBuffer = DllStructCreate ( 'byte[' & 16*DllStructGetSize ( $tInput ) & ']' )
    Local $a_Call = DllCall ( 'ntdll.dll', 'int', 'RtlDecompressBuffer', 'ushort', 2, 'ptr', DllStructGetPtr ( $tBuffer ), 'dword', DllStructGetSize ( $tBuffer ), 'ptr', DllStructGetPtr ( $tInput ), 'dword', DllStructGetSize ( $tInput ), 'dword*', 0 )
    If @error Or $a_Call[0] Then Return SetError ( 1, 0, '' )
    Local $tOutput = DllStructCreate ( 'byte[' & $a_Call[6] & ']', DllStructGetPtr ( $tBuffer ) )
    Return SetError ( 0, 0, DllStructGetData ( $tOutput, 1 ) )
EndFunc ;==> _LzntDecompress()

Func _NoEvents()
    ;
EndFunc ;==> _NoEvents()

Func _PostStampCreateRectangleSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddRectangle ( $hPath, $iHWidth*( 1.5+3*$i )/2, -$iHWidth/2, $iHWidth/2, $iHWidth )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddRectangle ( $hPath, $iHWidth*( 1.5+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth/2, $iHWidth )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddRectangle ( $hPath, -$iVWidth/2, $iVWidth*( 1.5+3*$i )/2, $iVWidth, $iVWidth/2 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddRectangle ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1.5+3*$i )/2, $iVWidth, $iVWidth/2 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRectangleSerration()

Func _PostStampCreateRoundSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, -$iHWidth/2, $iHWidth, $iHWidth, 0, 180 ) ; _GDIPlus_PathAddArc or _GDIPlus_PathAddPie
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth, $iHWidth, 180, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddArc ( $hPath, -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 270, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 90, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRoundSerration()

Func _PostStampCreateTriangleSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    Local $aPoints[5][2]
    $aPoints[0][0] = 4
    For $i = 0 To $iHCount +1 ; top & bottom
        $aPoints[1][0] = $iHWidth*$i
        $aPoints[1][1] = -$iHWidth/2
        $aPoints[2][0] = $iHWidth*$i -$iHWidth/2
        $aPoints[2][1] = 0
        $aPoints[3][0] = $iHWidth*$i
        $aPoints[3][1] = $iHWidth/2
        $aPoints[4][0] = $iHWidth*$i +$iHWidth/2
        $aPoints[4][1] = 0
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        $aPoints[1][1] += $iGuiHeight
        $aPoints[2][1] += $iGuiHeight
        $aPoints[3][1] += $iGuiHeight
        $aPoints[4][1] += $iGuiHeight
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount +1 ; Left & right
        $aPoints[1][0] = 0
        $aPoints[1][1] = $iVWidth*$i -$iVWidth/2
        $aPoints[2][0] = -$iVWidth/2
        $aPoints[2][1] = $iVWidth*$i
        $aPoints[3][0] = 0
        $aPoints[3][1] = $iVWidth*$i +$iVWidth/2
        $aPoints[4][0] = $iVWidth/2
        $aPoints[4][1] = $iVWidth*$i
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        $aPoints[1][0] += $iGuiWidth
        $aPoints[2][0] += $iGuiWidth
        $aPoints[3][0] += $iGuiWidth
        $aPoints[4][0] += $iGuiWidth
        _GDIPlus_PathAddPolygon ( $hPath, $aPoints )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateTriangleSerration()

Func _GDIPlus_ImageAttributesSetRemapTable($hImageAttributes, $iColorAdjustType = 0, $fEnable = False, $aColorMap = 0)
    Local $iI, $iCount, $tColorMap, $aResult
    If IsArray($aColorMap) And UBound($aColorMap) > 1 And UBound($aColorMap, 2) Then
        $iCount = $aColorMap[0][0]
        $tColorMap = DllStructCreate("uint ColorMap[" & $iCount * 2 & "]")
        For $iI = 1 To $iCount
            $tColorMap.ColorMap((2 * $iI - 1)) = $aColorMap[$iI][0]
            $tColorMap.ColorMap((2 * $iI)) = $aColorMap[$iI][1]
        Next
        $aResult = DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesRemapTable", "handle", $hImageAttributes, "int", $iColorAdjustType, "int", $fEnable, "int", $iCount, "struct*", $tColorMap)
        If @error Then Return SetError(@error, @extended, False)
        If $aResult[0] Then Return SetError(10, $aResult[0], False)
        Return True
    EndIf
    Return SetError(11, 0, False)
EndFunc   ;==>_GDIPlus_ImageAttributesSetRemapTable

Func _ScriptIsAlreadyRunning()
    Local $aWinList = WinList ( AutoItWinGetTitle() )
    If Not @error Then Return UBound ( $aWinList ) -1 > 1
EndFunc ;==> _ScriptIsAlreadyRunning()

Func _WM_HSCROLL ( $hWnd, $iMsg, $wParam, $lParam )
    #forceref $hWnd, $iMsg, $wParam
    Switch $lParam
        Case GUICtrlGetHandle ( $idSliderRescale )
            $iScale = GUICtrlRead ( $idSliderRescale )/100
            ControlSetText ( $hGuiMain, '', $idLabelScale,  StringFormat ( '%03.2f', $iScale ) )
            If $hImage Then ControlSetText ( $hGuiMain, '', $idLabelOutputSize,  Int ( $iGuiWidth * $iScale ) & 'x' & Int ( $iGuiHeight * $iScale ) )
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc ;==> _WM_HSCROLL()

Func _WM_PAINT ( $hWnd, $iMsg, $wParam, $lParam )
    #forceref $hWnd, $iMsg, $wParam, $lParam
    Switch $hWnd
        Case $hGuiMain
            _ImageDraw()
            If $hClonePreview Then _GDIPlus_GraphicsDrawImageRectRect ( $hGraphicPreview, $hClonePreview, 0, 0, $iGuiWidth, $iGuiHeight, $x, $y, $w, $h )
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc ;==> _WM_PAINT()

Func Choosecolorgif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = 'R0lGODlhyAAYAPYAAERERP7+/URERIeDeLi1qq+roKShl5uXjP7+/P7++/7++v79+cO/tc3Jv/789+Dd1P789fXx5v778NbTyern3f778f779EZGRkhISHV0b0tLSoeGg3Jwbf778o6MiOXi3YiHhFlZWNjVzIeFgWtqZ7KupFxbWomIhX16dUxMTKmnomhnZYeFgHBua3t4cpaTjIuJh/bz7P789NXSy9/c1NTSzPn38VZVVIWBeWRjYtDNxL67svLv5uvo3oF+dldXVv768MnGvNPQyePg297b0sbDuqKek9zZ0VFQT9/b021saaimoaypo/79+n58dfr48vz581NSUkVFRYeEesPAt9rXznRzbq6roe/r4VRUU6eloKuoop6akMvIvbazq5mWjV9eXGFgX5KQi3h2cczIv7e0q5qXjPf18LazqNvY0KWhmbq3rurm3drXz5qWjMK+tYeEf4aCeIaEfZuXjfXy6bm2rejk3bu4r4eEfISBd8G+tfj28dnWzaSglk5OTYiGgyH+GiJDcmVhdGVkIHdpdGggQ2hpbXBseS5jb20iACH5BAkAAAAALAAAAADIABgAAAf/gAKCUiEuUwOIiYqLjI2Oj5CRkpOUlZaXmJVTTiYXgp8aPlxHZwGmp6ipqqusra6vsLGys7S1trN7SUY+GqB4ZE23wsPExcbHyK86cr1SPkEJCMm0INXT19gB1SDZxQg6PhghXA5NCOfo6err7OpDJS8wJy8lQugbn+36+/z9/gjv4s2r9w8BPkEFEypc18SICRRHFixIQLGixYsYM1a0wWTDGBMpLlzQEGINxYMCAmhcybKly5YcPYIUSdLkS5QqX+rcyXJBEidTYjhwoKCo0aNIkyo1qmXEj09QBSRQgBLB0qtYs2rN2vRpVEFTtVbdSrZsVgdnDkFYK7Gt27dw/+O2rbHhhiAlQszx2MEBwQKUH16c+BLk7QwVHk54WFLDMGLFjN2S0eIBBAw1eii4TXIlMYwlIuQuoGtXAF69fP0uOJx4ceO2VSWyhvxa4obbUHZ4gCG6t++2axGthTC0uPHjyJMXV9FC0IonChYUX6DAAUoqJEKmgFG8xAYOPzBcwHDjRPfv4ceXH7pjA4kbGKRgiJIjydAyG6yEEE9ejHLmzkEn3VDUOeAdePytNxRKCRiIXoLmLfjJCGFggIFyGGZ4XHADyOChDMOFKOKIJIYIg1dULFDiCJ94EBUTEDQwgglfCZBBjDPWeOMJYdQoAARCjABGjSiQeKIgKZIoI/+NX90IAYuCNLGkjmtBKQAcglzQRIlcdjnch4h0IGYHFpRp5plopqmmBSBgIAgUEKxpZQ5DQAFlGBAYQYIgdI4WgiAl6MnnEH4CCoMnAjQw1BBecLCAEUo4x8cCPewpwB1ptvlmnGkKKkCfNfwpQAkWWPmopaCKSqqVJHzQ1pqwxmrmmIhUYOutuOaq6665HirIArxWwMInMzjQAZYCXAhCFIIU2wEQPghCghrMCuAstNKS4aYUTDCBxhEdgLisIEyUIQYLfwjCgQy9IgrsruNaayy2ApAgw7C/xntttPXe+4kIxgYr8MC5IiLBwQgnrPDCDCusAqJQNCwBvj92MPH/Jw6AgCgEFgOBrwZlbNzxxw7I8ckFSJjAxcEa+yiABhA4DHHDLVcsgceCaOAAxRmLfDPJPFss8dBEK4xIBEgnrfTSTDe9dBel7eB0BDh88gTSVQvyhBmI2oB0FVlrEETXX4fttRdO+AHVFxHMgaiPXisNtSBSN821IHGDnbMNWQuwNdkR6P0y31ZPbfjhTSNCweKMN+7445A/7oIgJgjBBgUPUPEC4yh8EsPinQsSww5ICFIEBSJ40JwAKxxRugCnp776CkG8QQQWPDzwRc48vPH6DDHEQMcHbRQRvOSUW4655ouTbjrqqjsXQ+gCjP567NGzPr3nkXfvvfeIPCD+//jkl2/++eanMaQAIZCQQQYc5LCC+Bl8kvsD9QuSe/6FZKBECoLYAhb45wL/AVAAW2ACEnLAgfetgHcPyJoJGuhAMOTgfOoTRPveF7/54U+DBfxfAAdovw+yL4QHFGD+BHA/9LnwhehDxARmSMMa2vCGOMShDlb3lQ9MgAOf6MEMgSgIIU6Ah1BBQQ+ScEQi9UAHPhIDBWbYt6/YQYdIhIoPm/gVJSaBiAIwYhYF4UUwGjGHaExjDhFRhAa48Y1wjKMc50hHL6AgC+LJgguW8AE3fqKPfhQEIBugAiukAAMa4MAVPkCENxbykIlcZCPR4IEVuCmRWvhAFd5YByekJ/8FHHhBEAYpRzvi8QJ65KMjDYlIRTIykAIY5CNbKUlYkpKOuMxlHIswABeUgAHADKYwh0nMYhqTAV2YwBHER4QJ6CCY4xNmNIPZABHQ4AE0EEEDhlnNa2Zzm8AMghDa4E0RPFOYQZjBMrFpziAcE5nKZKYzhdlNdoITmNMEZj2/KU3xvfOfAA1mCVwQAg8Q4KAITahCF8rQhjr0oRCNqEQnStGKWvSiGF2oB0wgBRTMoQAgDalIR0rSkpr0pChNqUpXytKWuvSlMI2pSLnghEvm4QV9MIBOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpdqgC/wAhSGeIEbDkDVqlr1qlgxzapWt8rVrnr1q2ANq1jHStawuuEFm+gFVAiRgThk4q1wjatc50rXujIiDh9xkyACAQA7'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Choosecolorgif()

Func Exitgif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = 'R0lGODlhyAAYAPYAAEREREVFRUdHR0pKSk5OTVVUU1xbWWNiXmtpZXJwanl2cH17c4SAd4aCd4aCeIeDeYeEeoeFfYiGgYeGgoeGg4eGhIiHhIuKhZCOh5aSipmVjJmWjJqWi5uXjJyYjZ+bkaGdkqOflKSglaWhlqekm6uonq+roLCtpLOwp7azqre0rLm1qrq2q7+8scG+tcO/tMbCt8rGvMzIvs3Jvs3Jv8/LwtHNxNLPxtPQx9bSyNbTyNfTyNzYzd/c0+Dd0+Hd0+Lf1ufk2uvn3Ovn3ezo3+7q4vHu5vPv5/Tx5/Tx5vXx5/by6ff06vj16/r27Pv47f768P778f778v789f789v79+P/+/P/++wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GiJDcmVhdGVkIHdpdGggQ2hpbXBseS5jb20iACH5BAkAAFgALAAAAADIABgAAAf/gACCAQYKEA+IiYqLjI2Oj5CRkpOUlZaXmJUQCwYCgp8DCx89TFamp6ipqqusra6vsLGys7S1trNOPSEMA6ARMlW3wsPExcbHyK82Eb0BCzFXydLTtRbW1NjSNgwCBh9V0dnirxXl5uazFZ+n6OPusFcgBgs8VeBX+Pn6+/z9/v8AAwJU96kgAIH4CAKwkvATwocQI0rkV6XHAghM7E3cyJGjQoMLH65rKIhhx5MoEVZpcoiKS3swY8qcSbOmzZs4cypclaJcC5gsyqGwV86FKXOfXFTIybSp06c2XSKaQhWq1atYYVJwOPPJAUEYqhyx8BUAhSpbBaEFqTar27c4/6lOpUq3rt27ePPq3cu3L9UJSScIrsuDAAABRVowCACgAJIqgAVdmcL2oN/LmDNrrotIiufPoEOLHk26tOnTqD1LqAyaBFgMZWlUkbJarWcXn2Km3s27t2/QiKIIH068uPHjyJMrX85ceITKVYZDSXA4g6ewU6I8V+s8d/Pv4MOLPx58vPnz6LXnlikdRAEAhg0wya6ee30A0dPr388cUZL/AAYo4IAEFmjggQgm+B8DnzxRIAsMvNdLAUYosWCDFwrioIIcdujhhwMiIsSIJJZo4okopqjiiiy2OOICnyyB4g2cHFYCYwwM8WKMIzIoiIwuBinkkESeiMgPSCap5P+STDbp5JNQRiklkgp8ooICWCqAJA8OICAIA0SUpQKVnxiBZAeeAECCllO26eabcC6JyA501mnnnXjmqeeefPbpJ53UVbaDBgn0IsANQGzgSQE47BAoAETQSYMBBv1p6aWYZnonIjDM4OmnoIYq6qiklmrqqah6WhkAQcxQJQALBGHDDNstUMMMn7TqaQsK9CKIrqkGK+ywxM4QwwMKnPDCssw26+yz0EYr7bTUVsusD9hmm+2yOWCrA7M3eLvstszCoEMP5Fqr7rrstvvCCQoYcMEK9NZr77345qvvvvz26++/AAcs8MAEF4wvBgY444EJDDfs8MMQRyzxxBRXbPFnxRhnrPHGHHfs8AcLeDIAAxmIMMLJKKes8sost+zyyzDHLPPMNNds8804j6ABL6BclAEHHQQt9NBEF2300UgnrfTSTDft9NNQR+00Bxls4usnhCjQQCZcd+3112CHLTYjDcSbJgCBAAA7'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Exitgif()

Func Opengif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Opengif()

Func Saveaspnggif ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Saveaspnggif()

Func Stamp2Ico ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin &= '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'
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    $sFileBin = Binary ( _LzntDecompress ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> Stamp2Ico()

Func _Fluidwatercolorpaperjpg ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor.
    Local $sFileBin = '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= 'yvYqWNK9PV03wFau4X11tH+pwMUo6xrEiaGA3fbFT8j111wObW6TareCSiwT4uBlLFS/bJdOIj8Nd8AbEsdm1jxY4x8dsCHtW7lhO0Vhn7nX41cDqNqkdzj2rfxOUD67YGO42bVq++u9nb5b4GlvUk49Hcn5bYAUh8XxWXA68eKsA2+uBJ+SpCydJdTznAClZbLYequBv+ufbZ/+I6YCl6y1H0dZwIaiPICzsYDXtVDUiNdFn4xgEcUKvqdMCypqMPLpqa+mBzatdbLfX7ZgD6YFlkJ4JWNE1nAou2DRB6MGBLatGO4mu5DtgatKPurZB3hYwKaVSeSnj1wOVq0q87WeFd9ZI31MBe9TuaV28YZ9TAa2oaRMbzGAtqTACL1HpgFa9tty+6zs7uBW2p7Y01IwKbVdetd98DlfuSxVKCfdOjG8YAdtA49yvH4euBR+WYHtpGrydvGMBNNHXloBr8cBKszpZ6TpgJXUknwkEnAm1W6JbWrvDgDYLNLa8tkLfrtgC/iqtCbBpxqTgNL868e8Vpy3HTl8MBspP47Cn8WMDUt3L8u33alXqOyeWBrXp23ldgCA2qYCd3t2NFr4aTOAWBsNGxd9U+JgabxAFfUk/rgPILDsOm2n6YBb8hLWlWd0YfWYwNxsukw+OuBqtyVi30+WBUrbRkd/LA5VpetmLtZnSzIekYFyzxbLBr5/HAaxX7lV2U0wEbzESOzgNrV7YSLPgT9DAjZEPb4P7YE3KnuBE2TV+WAle5Y5VsW5byYGa1ib6Rurv9XAniu1rdyh4Jp69XATtRbn21qu+7HwZjA6FSzLFvF2MAXth7U4mmjEYA1NL9sLW6MzGBT3LkjT090Tgc7WCxyCTY48sBG1vOhsM7+c9MALUpde32ktbW1jSrgPXUGdlOuBXGzD+Tida9HAzSpP/ZY8FjR9UwEuukx5hJ8MDJcF0beMYHM0stp110rB8XAy2Ie2nF3FevxwMnAS1ol3ska+GAne7UlbW5KaeGBaV46wG++n0wOfG1rJZ50saDWfiOA/jFIFa/yVkwBodubqzXpvB6YCJb3Bw8wZjAXlQmTivt31cDVjkWfv+uAW/HdCv39JNPlgJ2jaa6/xQ+mBRXhqRrqy64ETq2R0YI3/AHwHhW+q2J6OjOBX4ypAaeWAKIE8f1/TAJHQiaujA4HM7vf/ADNfxzR2sSw+fTA6WaKDY5bxgP5KWOPMsev64E8a3dDfdHAoqUIVnAzZqD7dN10wJ/LWTufkpxSOOmr67mBl/LMCw+6mg/PAdNoKnT/YwHjxJrMHgTOAUvz14aPVsMfAnAqO4uxxerE4BJrJLXd4xgT+RWYq06sGBTWT7S47gGBq1K1QCqdK9MDFatpbe53iRwNa0kE2TpqYE89eO3E+1nATuUskTJ4/60wKONtYLa9P3wNDZQ469NX64AUAeFwei+6MCCveZr3L/npP28Q+pgdBYjge3obHzwC1ea6/jLGth1cA/HatQe5obMp8/HAB7ZaW02d2YPhgJ3KwhYt4Rr9cDf8AbY1Wj/r1wLUKh7rT1wICp9tXz6OA/j5I87B4aA4BxjRu3naYjAeIV0lPCZfrgapfWErMaW1TAXt+cvmu/wAMDBYtolQ3MDco0po+EzOBi3JJ0t5f1wIt+SrIla+KL+kYFFXSy2tY6abYDa1ipBxdgU1wIOb9yHU3PqYGaDbW3u30YwNaLRXW87WmMDVrWmlI7Z47y4Ex3bzXu1O52zqyW+RpgdKFaETqdLM/XAi3uZ7dWttue44FVLfyNTZNjAeS62qB4sa4E2i5xSw/5GkejgbjytytVg2V/XpgUcaq1I/yQwMWQkFOmuAWtOzEeDIzgSWdEXfwlfXTT1wCK2tZrx5v3cjkR64CvZqAHF6aJMenTAkLUG/K3vdmox6aGmBXLudysV5Ut1/i/BhwKO3NZpZ5bS+Xjgc57/22JOrx1wLr3LLxavbK6DgWM2nW0b4FHF0HXfA5tztMKWbaH+XxwEvZQAHxUfkGBCpIDd/lfw+BgJ3Ii1/uNNKuBrN7Ratq6PhOAle46Ly80T9MAtdpYPx2veNbw8fSdcDF7/dBVf4u3zMBbNiLNYdg/wBGAV4OvU66R8NcCWus8OU9aynywGI39s76xgUERU089XA3CJbQvS0bGBv+mTSvPqgTPntgTxOai8vCv7uB04Mzayxsf63wJ+1ivtg3ZjA1lr7gbjp7dI+GBvyFbcWz7tiMCjnEMJGn+2BP5E0rQjyNJwNZu7cann/bAsGoRYjz3wIb9xUK8Y/lP7OAyJraTxZHAfu1ONq/68cA9ktUmMCUokFWs9I/XA1u2WrxfcHTaOvXAmtLWmr2vx0H2Mi+qG2B1a3g42rZOqfsOBK9wY41tO1jp64HP8fduvO8h0QD4xgdgqHX27u/xwBtLEVTcU19YwGv5fCodDA1hsQ+ojqOBzS1ddHx0jA6HcIh9qbj09cCfe1mdHZHSPjgHGz9/G1DYBmcDotSCIehv/bA3L+IanTpgZIIvGunl9cCE7d2GWx5bYFW3g0PhvgDzTQNP5YBKMXJneJwBsG7p0if1wJO73dR7bvpKLHpgU+4Jtx5bMfvgPFKkOnpOBi1rDT7X64COnHawbf1wCza0IQTpM4Dwl1R8RwLGCGKu0YEXLP2vA6WHXz0ZMDA2902XopGngnXAyctG1Ur0P0XAht2bIXItXUHp54Ge1er/wBK0q7rqf8A8cDIp/n4x/bAnt92qNTt/iBghJ9YwOktgtRrbTq7+vhgS82vKQT7gdDA3bbbnc5zsbGA1v3LNhBempOBm72/vt7onj/EMDmfk7iXre9PJI5HlgdV7la7N3x2fjgTy0l08ZwGnc7d9um/TTA16UX2s+jrgb8ZGsk+PX1wJ5IvbbcgNkQ+cYF1AGtULHQfHAHjPG+r0ST12wG1StRr7jcJUwNyN2RdyXAsnz+OETYnQEj/AFOFZ7dU978dn54GihtqHXADuMdZ6DpgHGtnnE22WcDR3J+6KeEYA+4Sytdpr+iYCdtde3xR3kwKr2oZtq7m2nyDAuLbz8YNMAhQ52F6NdMCSvdFl3241j9ZwM9qJkLFt51cAQPd+NU6+EYFE214wPXdwDhS0STx29cA5VPaOs/Ym/o4GIZ19rtXzwLZdENOqb/DAmJfc6ekB64Alx/6wQ3NsBWwEnrgSgwlZB3lwFuLFSV8P3wNWl61T2huB0/TAp5xrEG7t++BHtjVqh6/q4Dyq6wmuiYFaJ/9lra7m/0wDudhucS6HnLPrrgR2+z2u2vLle5ta/144F/lq6U5ebGh5a4C/hUbIL6C+uBr24/xe4uwH11wMukbqa/7YEh21KQw9LafTA6baGgYEJaeVgsGxgZjqTOBm0G0xqYGLWidQ6xgYV1FfEiMC0gipD0kwD/sQ2Xq4A8oeaAeH98CaLfWstf1+eBtZEONfCQcDWraZLOp9pqfHApre0zdDwK7YEnI05W7s+AEYFhrI6dRJwFjXU8vHAyLDJxjWvj8cDn+Kt3lrRq7GkYF2ioCk7DpOBNrdxeNaIb82I+WANq0JkXqVJmPAwMB3PechfL9sBQ2iF6xv64A2dC3bA6PT+2ANrujWsmvj6bGAK2Sl4G27XScCmtq1g1qanP3f3wMjY3KvVFiMAL8JovtDdHX+uBXta8hA8cCLNq1Zgjey/LpgatqlZX3W6kM/CMDHb/J/KK9Ad/UwOljiBNgNtcCY5MjWr5bzgY0IUU0nAyWZ5Xg8Db64DZrU98E7QxOAHNIq1r8F0+OAvbV0tavXfRwNw3Tld6k4HIKrIcLeG39cC6kaXHeY3n5YFNVICB3YjAlrJHKKf5TDPxwMVvWUZnWI3f0wNLEQgbxgb8fJ5NrT/8ALb9DAa1NQ0DVnrgKVQ9qptBseTgTXublmHblbSY9MChLafceWAyDYqcogicCJvYhK1v4D18sB42CGxQH54D7avIZnRV/bAm7d1pImjoOBgtYOdkV0a4DNe2T'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= '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'
    $sFileBin &= 'WXR29sn0ZwN269wPupc6QcfhrgXxk99ajXoa/HywJfYza6V36BHrgH5pB7PHudu3g6/DpgdOBYZ9w9HA5921e0QrUtoW3j4YF1YNU23jWcBCjEOr1wFq/wAY328cAO5qnWvQJ1wCfa2a8PF1MCTujpGlv5HXAbVIkouvu6OBvbYTt243OsanlDgNee3cZT5OBc234k/68MDja9zpKMasT9MBraxvYDzZ1+EYCKQ1oPL+R0MDHd5PFGj05dcCioe4EXcNvlgR9rJVld66x64FXq2DX3H8ZnAie86H/XZ6uomBuPLpSz4OA1Pxv/1lV3QwFvdEKWfCdD13nAituft7s1uHQQPjgWzWoV92mk23+OBNe1eHdTq6T5SYFHPw98bDofGMBe2KTOmx/tgaLVZGaxt/owI9h7xsPXfp44FVu39+unQNPngPPt2eL7h1lMAaj/8AVYPHVcC/fV2q16774EIXdQtG5rrgRzK6U7TQN3Yn4YFA2htc42/jEnzwB7VR0oX7fUlPppgdC1ahBtpxh/vgCnc+yJr0dEwIe13m2nc41jWnEdPXAm/btXjHG9jZtWU+AYFF7ByuVI3QQ+WBXOf/AK7Vqb6GxgJKMWHo+WBNNNB/JYieW/zwLYXd10wK91Y1k+vlgQsTNUr/AJP9MAh3taupEGi4BxKxK1HrOv8AtgFbcda2bD0IK/DABr3NJ7lTedA+pgXHbRpVsJq+LgT2ztk+2zXq21r9dcDW7x20Ht2vWzox+2AlO3b3Q+kw4AVpW3OpxXWcCyq6zyHbAG3domknhOBN/wAncNmtZ2I+uBq8R5RxubyQfPASvL3XOWujV28ycD//2Q=='
    $sFileBin = Binary ( _Base64Decode ( $sFileBin ) )
    If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath )
    If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\'
    Local $sFilePath = $sOutputDirPath & $sFileName
    If FileExists ( $sFilePath ) Then
        If $iOverWrite = 1 Then
            If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin )
        Else
            Return SetError ( 0, 0, $sFileBin )
        EndIf
    EndIf
    Local $hFile = FileOpen ( $sFilePath, 16+2 )
    If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin )
    FileWrite ( $hFile, $sFileBin )
    FileClose ( $hFile )
    Return SetError ( 0, 0, $sFileBin )
EndFunc ;==> _Fluidwatercolorpaperjpg()

Further I added a paper texture.

The "Serrated Edge Color" for this version is obsolete but you can add an option...

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
TheSaint

Seems like a nifty program to have in the kitbag, though I don't know what I'd use it for at this stage, as I'm guessing the Post Office won't accept my creations as kosher.

Do we call you Postmaster General now?

Thanks for sharing! :D


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
wakillon

The save process takes too long.

I modified your script a little bit:

Further I added a paper texture.

The "Serrated Edge Color" for this version is obsolete but you can add an option...

Hum...usually you offer solutions that improve script, in this case it destroy the serrated edges and transparency is loosed:huh2:

The interest of this kind of "stamp image" is to be easily pasted on anything...

The save process takes too long for high dimensions because the transparency need to be fixed by another way than classic GDI functions.

So i prefer loose a bit of time and get a quality stamp ! ;)

Thanks.

Edit : may be i could add a progress bar using a timer...

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

Seems like a nifty program to have in the kitbag, though I don't know what I'd use it for at this stage, as I'm guessing the Post Office won't accept my creations as kosher.

Do we call you Postmaster General now?

Thanks for sharing! :D

Why not ? 

Do you think i should add the cancellation postmark for scammers ? :D

Thanks.


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
TheSaint

Could be cool to have that as an option.

Maybe even add an ink stamp facility which includes place names.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
Lakes

I just goggled this

http://www.royalmail.com/personal/stamps-and-collecting/smilers

so, I guess (for the Uk anyway) as long as you stick a "proper" 1st or 2nd class stamp on the envelope/parcel you can add your own sticker.

Edited by Lakes

2015 - Still no flying cars, instead blankets with sleeves.

Share this post


Link to post
Share on other sites
TheSaint

Like "BOMBAY" on this stamp (only better .... more defined).

depositphotos_31122159-Postage-stamp-Ind

Edited by TheSaint

AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
wakillon

Could be cool to have that as an option.

Maybe even add an ink stamp facility which includes place names.

It's an idea, why not...


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

I just goggled this

http://www.royalmail.com/personal/stamps-and-collecting/smilers

so, I guess (for the Uk anyway) as long as you stick a "proper" 1st or 2sd class class stamp on the envelope/parcel you can add your own sticker.

Or as pictureitpostage.com

The problem is that is not free !

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

Hum...usually you offer solutions that improve script, in this case it destroy the serrated edges and transparency is loosed:huh2:

The interest of this kind of "stamp image" is to be easily pasted on anything...

The save process takes too long for high dimensions because the transparency need to be fixed by another way than classic GDI functions.

So i prefer loose a bit of time and get a quality stamp ! ;)

Thanks.

Edit : may be i could add a progress bar using a timer...

For me the transparency is working properly. You are replacing the color with transarent color using regex which takes "a long time" for bigger images. I added a way which takes some milliseconds using 

_GDIPlus_ImageAttributesSetRemapTable()

Example:

Func _PostStampCreateRoundSerration ( $hImage )
    Local Const $hBmp = _GDIPlus_BitmapCreateFromScan0( $iGuiWidth, $iGuiHeight )
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext( $hBmp )
;~  _GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )
    _GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )
    Local $hBrush = _GDIPlus_BrushCreateSolid ( 0xFFABCDEF )
    Local $hPath = _GDIPlus_PathCreate()
    For $i = 0 To $iHCount -1 ; top & bottom
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, -$iHWidth/2, $iHWidth, $iHWidth, 0, 180 ) ; _GDIPlus_PathAddArc or _GDIPlus_PathAddPie
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iHWidth*( 1+3*$i )/2, $iGuiHeight -$iHWidth/2, $iHWidth, $iHWidth, 180, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next
    For $i = 0 To $iVCount -1 ; Left & right
        _GDIPlus_PathAddArc ( $hPath, -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 270, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_PathAddArc ( $hPath, $iGuiWidth -$iVWidth/2, $iVWidth*( 1+3*$i )/2, $iVWidth, $iVWidth, 90, 180 )
        _GDIPlus_PathCloseFigure ( $hPath )
        _GDIPlus_GraphicsFillPath ( $hCtxt, $hPath, $hBrush )
    Next

    Local Const $hIA = _GDIPlus_ImageAttributesCreate()
    Local $aRemapTable[2][2]
    $aRemapTable[0][0] = 1
    $aRemapTable[1][0] = 0xFFABCDEF
    $aRemapTable[1][1] = 0x00000000
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hBmp, 0, 0, $iGuiWidth, $iGuiHeight, 0, 0, $iGuiWidth, $iGuiHeight, $hIA )
    _GDIPlus_GraphicsDrawImageRectRect ( $hGfx_Buffer, $hImage, 0, 0, $iImageWidth, $iImageHeight, $iHWidth, $iVWidth, $iImageWidth, $iImageHeight )
    _GDIPlus_PathDispose ( $hPath )
    _GDIPlus_BrushDispose ( $hBrush )
    _GDIPlus_ImageAttributesDispose( $hIA )
    _GDIPlus_GraphicsDispose( $hCtxt  )
    _GDIPlus_BitmapDispose( $hBmp )
EndFunc ;==> _PostStampCreateRoundSerration()

And as I said you can add an option to switch  to color instead of texture background mode which should give a paper look rather than a flat white.

If you comment out 

_GDIPlus_GraphicsFillRect( $hCtxt, 0, 0, $iGuiWidth, $iGuiHeight, $hTexture_Paper )

and enable

_GDIPlus_GraphicsClear( $hCtxt, $SerratedEdgeColor )

the  serrated edges color again.

 

Here the result of an image which has transparency:

261d946.png

  • Like 1

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

Well, i do not understand what i have doing wrong this morning with your script but it returned horrible edges.

I'm now on my own PC, and after having done some new tests, I must apologize to you ! :>

You are right, the_GDIPlus_ImageAttributesSetRemapTable function is more fast.

It would have been easier if the _GDIPlus_ImageSaveToFileEx function could preserve the transparency, no ? :)

 


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
wakillon

UEZ

I have retried your first solution on the PC i have used yesterday morning.

With your first solution and the last one you sent me yesterday evening, transparency became white !

And the worst, is that my own version too !

Compiled or not, i get a full white frame instead of serrated edges ! 

This PC is under Win7X86 with AutoIt 3.3.12.0

So i'm completly lost ! :blink:

 

Edit : To other members, is there some Win7 users who can confirm this result ?

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

It works properly in my Win7 x64 test vm.


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

It works properly in my Win7 x64 test vm.

So, the reason is it was under X86 ?


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

Maybe the color depth of the graphic card is set to 24-bit only?


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
wakillon

Maybe the color depth of the graphic card is set to 24-bit only?

Does it mean that i can not have any transparency under this kind of PC ?

I have also tried my compiled version with my old netbook under XPSP3 x86 and it works !

Strange isnt'it ?


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites
UEZ

What is the result on this PC when you run this script?

Global $objWMI= ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & @ComputerName & "\root\cimv2")
Global $oItems = $objWMI.InstancesOf("Win32_DisplayConfiguration")
Global $oTokens

For $oTokens In $oItems
    MsgBox(0, "Test", "Gfx Device: " & $oTokens.DeviceName & @CRLF & _
                      "Screen Color Depth: " & $oTokens.BitsPerPel  & " bit")
Next

 


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • UEZ
      By UEZ
      Here some graphical examples written completely in FreeBasic just for fun.  
      3D Starfield Rotating Flight 3D Starfield Scrolling v1 Booster 3D Starfield Scrolling v3 Booster CreateWindowEx (hGUI) Example FB File2Bas Code Generator (AutoIt script) FB GFX Examples Fire Particles FMOD Examples GDI - GDI+ 3D Sinus Wave GDI - GDI+ Animated Pythagoras Tree GDI - GDI+ Particles - Repulsive Force Sim v2.0 GDI - GDI+ Plasma v5 Booster GDI - GDI+ Random Pattern GDI - GDI+ Space Flight GDI - GDI+ Tunnel Flight - WipeOut Style GDI Classic Raytraced Tunnel GDI Elastic Twister Effect GDI Exploding Pixels GDI Infinite Image Zoom Flight GDI Liquid Pixels GDI Particle Repulsion Grid GDI Particles Mouse Attraction GDI Starfield GDI The Nautilus Raymarcher GDI Worm Tunnel Flight GDI+ Impossible Possible GDI+ Kaleidoscope GDI+ Performance Test - Au3 vs FB GDI+ Polar Clock GDI+ Rotating Earth GDI+ Star Wars Scroller GDI+ Streamer GDI+ Swiss Railway Clock Ini Read - Write Mandelbrot Plasma Puristic Clock Rutt_Etra_Izer_Booster Tunnel Flight uFMOD _WinAPI_SetWindowTitleIcon  
      Download: FreeBasic Examples build 2018-07-10.rar
       
      I will add new examples from time to time.
       
      FreeBasic source codes are also included.
       
    • Seminko
      By Seminko
      I'm trying to get data from http://poe.trade/ - disclaimer, although this site is about a game, my script will not in any way interact directly with the game in any way. The script is just to get data from the site.
      To explain how it works - you submit a POST request and a custom URL is returned, then you do a GET request on that URL and you get the final URL you want.
       
      First issue:
      Now, I've tried doing so by using https://apitester.com/ and the first phase works. Here's how it looks like at APITester:
      Request Headers POST /search HTTP/1.1 Host: poe.trade Accept: */* User-Agent: Rigor API Tester Content-Length: 43 Content-Type: application/x-www-form-urlencoded Request Body online=x&name=kaom%27s%20heart&league=incursion When I submit this, the response I get is this:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="http://poe.trade/search/ioritewoteteme">http://poe.trade/search/ioritewoteteme</a>. If not click the link. So I then do a GET request for 'http://poe.trade/search/ioritewoteteme', which results in this response:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="http://poe.trade/search/inamotezuakito">http://poe.trade/search/inamotezuakito</a>. If not click the link. Great, this link (http://poe.trade/search/inamotezuakito) is exactly what we want.
      However, when I try to do the same in autoit, the result is quite different:
      Global Const $HTTP_STATUS_OK = 200 $test = HttpPost("http://poe.trade/search", "/online=x&name=kaom%27s%20heart&league=incursion") ClipPut($test) MsgBox(1, "", $test) Func HttpPost($sURL, $sData = "") Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1") $oHTTP.Open("POST", $sURL, False) If (@error) Then Return SetError(1, 0, 0) $oHTTP.SetRequestHeader("Host", "poe.trade") $oHTTP.SetRequestHeader("User-Agent", "Rigor API Tester") $oHTTP.SetRequestHeader("Accept", "*/*") $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") $oHTTP.Send($sData) If (@error) Then Return SetError(2, 0, 0) If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, 0, 0) Return SetError(0, 0, $oHTTP.ResponseText) EndFunc The code above returns: ' 謟 '
      Any ideas as to what I am doing incorrectly?
       
      Second issue:
      Once I get the final link using APITester and do a GET on that i get a bunch of hieroglyphs. A friend of mine advised that the data is GZiped, which is a pain in the butt to be honest. However, apparently curl can uncompres that.
      How would I go about it?
       
      Thanks
    • Bilgus
      By Bilgus
      Draw Path Points allows you to make line paths for drawing with gdi
      You can even load an image and trace the outline
      Save and load functionality undo and redo zoom and scale; Don't Forget Rotate!
      ;Draw Path Points BILGUS 2018 ;Includes #include <File.au3> #include <GDIPlus.au3> #include <GUIConstants.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <GuiTab.au3> #include <Misc.au3> If OnAutoItExitRegister("_Exit") <> 0 Then _GDIPlus_Startup() ;initialize GDI+ ConsoleWrite("GDI+ Started" & @CRLF) EndIf Opt("MouseCoordMode", 2) ;Relative coords to the client area of the active window Opt("PixelCoordMode", 2) ;Relative coords to the client area of the active window Global $g_iXScale = 8 Global $g_iYScale = $g_iXScale Global $g_sFileSave = @ScriptDir & "\DrawPath.txt" ;Default Global $g_bClosePath = False Global $g_bShowImage = False Global $g_sImagefile = "" Global $g_iUndo_Max = 50 Global $g_asUndo_Files[1] = [""] Global $g_asRedo_Files[1] = [""] Global $g_aPath_Points[1][2] = [[0, 0]] Global $g_aPath_Rot_Points Global $g_hForm1 = GUICreate("Draw Path Points", 615, 437, 192, 124) Global $g_hSelSquare = GUICtrlCreateLabel("", 0, 0, 0, 0, $SS_BLACKFRAME, $WS_EX_TOPMOST) GUICtrlSetState(-1, $GUI_HIDE) ;------------------------------------------------------------------------------- Global Enum $eC1_delete, $eC1_del_all, $eC1_update, $eC1_shift_dn, $eC1_shift_up, _ $eC1_closepath, $eC1_showimg, $eC1_lock, $eC1_undo, $eC1_redo, $aCtl1_LAST Global $g_ahCtl1[$aCtl1_LAST] Control_Create_Group1() ;------------------------------------------------------------------------------- Global Enum $eC2_zin, $eC2_zout, $eC2_dgroup, $eC2_decx, $eC2_incx, $eC2_decy, _ $eC2_incy, $eC2_edit_rot, $eC2_rot, $eC2_ud_rot, $eC2_rev, $eC2_toall, $aCtl2_LAST Global $g_ahCtl2[$aCtl2_LAST] Control_Create_Group2() ;------------------------------------------------------------------------------- Global $g_hBtn_load = GUICtrlCreateButton("Load", 5, 1, 35, 20) Global $g_hBtn_save = GUICtrlCreateButton("Save", 40, 1, 35, 20) Global $g_hBtn_arr_disp = GUICtrlCreateButton("Array", 75, 1, 35, 20) Global $g_hEdit_encoded = GUICtrlCreateEdit("", 115, 2, 50, 18, $ES_READONLY + $ES_AUTOHSCROLL, $WS_EX_STATICEDGE + $WS_EX_TRANSPARENT) Global $g_hList1 = GUICtrlCreateListView("#|x|y", 5, 24, 161, 201, $LVS_SHOWSELALWAYS Or $LVS_SINGLESEL) Global $g_hList1_LVN = GUICtrlCreateDummy() ;listview notifications Global $g_hImage1 = GUICtrlCreatePic("", 200, 16, 400, 400, -1, $WS_EX_LAYERED) Global $g_hTab1 = GUICtrlCreateTab(1, 225, 20, 500, $TCS_VERTICAL) GUICtrlCreateTabItem(" ") GUICtrlSetState(-1, $GUI_SHOW) ; will be display first GUICtrlCreateTabItem(" ") GUICtrlCreateTabItem("") ; end tabitem definition For $i = 0 To UBound($g_ahCtl2) - 1 GUICtrlSetState($g_ahCtl2[$i], $GUI_HIDE) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") List_Update() List_Index() GUISetState(@SW_SHOW) State_Save($g_aPath_Points) Points_Update($g_aPath_Points) Global $g_nMsg = 0 While 1 $g_nMsg = GUIGetMsg() If $g_nMsg > 0 And $g_nMsg <> $g_ahCtl2[$eC2_ud_rot] And $g_nMsg <> $g_ahCtl2[$eC2_edit_rot] And GUICtrlRead($g_ahCtl2[$eC2_edit_rot]) <> 0 Then ;ConsoleWrite("Cancel_Rotate? " & $g_nMsg & @CRLF) If MsgBox($MB_ICONQUESTION + $MB_OKCANCEL + $MB_DEFBUTTON2, "Save?", "Save Rotated Points?", 10) == $IDOK Then _GUICtrlEdit_SetText($g_ahCtl2[$eC2_edit_rot], "0") $g_aPath_Points = $g_aPath_Rot_Points State_Save($g_aPath_Points) List_Update(List_Index()) Else _GUICtrlEdit_SetText($g_ahCtl2[$eC2_edit_rot], "0") Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, List_Index()) ;, True) EndIf EndIf Switch $g_nMsg Case $GUI_EVENT_CLOSE Exit Case $g_hTab1 Tab1_Select() Case $g_hSelSquare ;ConsoleWrite("SelSquare" & @CRLF) SelSquare_Drag() Case $g_hList1 ;ConsoleWrite("List1 " & $g_nMsg & @CRLF) Local $iIndex = List_Index() If $iIndex <> -1 Then Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex) _GUICtrlListView_SetItemSelected($g_hList1, $iIndex, True, True) EndIf Case $g_hList1_LVN Point_Selected($g_aPath_Points, $g_hImage1, List_Index()) Case $g_hList1_LVN Case $g_hImage1 Image1_Clicked() Case $g_hBtn_save Btn_save_Clicked() Case $g_hBtn_load Btn_load_Clicked() Case $g_hBtn_arr_disp _ArrayDisplay($g_aPath_Points) ;------------------------------------------------------------------- Case $g_ahCtl1[$eC1_shift_up] $iIndex = List_Index() Point_Swap($iIndex, -1) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_shift_dn] $iIndex = List_Index() Point_Swap($iIndex, 1) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_del_all] $g_aPath_Points = 0 Global $g_aPath_Points[1][2] = [[0, 0]] List_Update() Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_delete] $iIndex = List_Index() Point_Delete($iIndex) _GUICtrlListView_ClickItem($g_hList1, $iIndex) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_redo] $g_aPath_Points = State_Restore($g_aPath_Points, False) List_Update() Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_undo] $g_aPath_Points = State_Restore($g_aPath_Points, True) List_Update() Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Case $g_ahCtl1[$eC1_update] List_Update(List_Index()) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Ascii_Points($g_aPath_Points) _GUICtrlEdit_SetSel($g_hEdit_encoded, 0, -1) Case $g_ahCtl1[$eC1_closepath] $g_bClosePath = Control_IsChecked($g_ahCtl1[$eC1_closepath]) List_Update(List_Index()) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) If $g_bClosePath Then GUICtrlSetState($g_ahCtl2[$eC2_rev], $GUI_DISABLE) Else GUICtrlSetState($g_ahCtl2[$eC2_rev], $GUI_ENABLE) EndIf Case $g_ahCtl1[$eC1_showimg] If Not $g_bShowImage Then $g_sImagefile = FileOpenDialog("Select an image", SplitDir($g_sImagefile), "All Files(*.*)", 0, SplitFileName($g_sImagefile), $g_hForm1) EndIf $g_bShowImage = Control_IsChecked($g_ahCtl1[$eC1_showimg]) List_Update(List_Index()) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) ;------------------------------------------------------------------- Case $g_ahCtl2[$eC2_zin] If Control_IsChecked($g_ahCtl2[$eC2_toall]) Then Points_Scale(1, 1) Else $g_iXScale += 1 $g_iYScale += 1 Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndIf _GUICtrlListView_ClickItem($g_hList1, List_Index()) Case $g_ahCtl2[$eC2_zout] If Control_IsChecked($g_ahCtl2[$eC2_toall]) Then Points_Scale(-1, -1) Else $g_iXScale -= 1 $g_iYScale -= 1 Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndIf _GUICtrlListView_ClickItem($g_hList1, List_Index()) Case $g_ahCtl2[$eC2_rev] $iIndex = List_Index() $g_aPath_Points = Points_Reverse($g_aPath_Points) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex) ;, True) List_Update($iIndex) Case $g_ahCtl2[$eC2_edit_rot] ;ConsoleWrite("Rotate" & @CRLF) $iIndex = List_Index() Local $iDegrees = GUICtrlRead($g_ahCtl2[$eC2_edit_rot]) $g_aPath_Rot_Points = Points_Rotate($g_aPath_Points, $iDegrees) Points_Update($g_aPath_Rot_Points, $g_bClosePath, $g_bShowImage, $iIndex) ;, True) Case $g_ahCtl2[$eC2_incx] Point_Adjust(1, 0, Control_IsChecked($g_ahCtl2[$eC2_toall])) Case $g_ahCtl2[$eC2_decx] Point_Adjust(-1, 0, Control_IsChecked($g_ahCtl2[$eC2_toall])) Case $g_ahCtl2[$eC2_incy] Point_Adjust(0, 1, Control_IsChecked($g_ahCtl2[$eC2_toall])) Case $g_ahCtl2[$eC2_decy] Point_Adjust(0, -1, Control_IsChecked($g_ahCtl2[$eC2_toall])) EndSwitch WEnd ;---------------------------------------------------------------------------------------------------- Func _Exit() _GDIPlus_Shutdown() ConsoleWrite("GDI+ Stopped" & @CRLF) State_Destroy() EndFunc ;==>_Exit Func Ascii_Points($aPts) ;encodes points into an ascii string Local Const $iChrOffset = 33 Local Const $iMaxOffset = 126 - $iChrOffset If Not IsArray($aPts) Then Return Local $sAscEnc = StringFormat("%03i%05i", $iChrOffset, UBound($aPts) * 2 + 8) If _ArrayMin($aPts) >= 0 And (_ArrayMax($aPts) - _ArrayMin($aPts)) <= $iMaxOffset Then For $i = 0 To UBound($aPts) - 1 $sAscEnc = $sAscEnc & Chr($aPts[$i][0] + $iChrOffset) & Chr($aPts[$i][1] + $iChrOffset) Next EndIf _GUICtrlEdit_SetText($g_hEdit_encoded, $sAscEnc) EndFunc ;==>Ascii_Points Func Btn_load_Clicked() ConsoleWrite("Load: " & SplitDir($g_sFileSave) & @CRLF) $g_sFileSave = FileOpenDialog("Select a save file", SplitDir($g_sFileSave), "All Files(*.*)", 0, SplitFileName($g_sFileSave), $g_hForm1) _FileReadToArray($g_sFileSave, $g_aPath_Points, 0, ",") If @error Then Dim $g_aPath_Points[1][2] = [[0, 0]] Else State_Destroy() State_Save($g_aPath_Points) EndIf List_Update() Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndFunc ;==>Btn_load_Clicked Func Btn_save_Clicked() List_Update(List_Index()) $g_sFileSave = FileOpenDialog("Select a save file", SplitDir($g_sFileSave), "All Files(*.*)", 0, SplitFileName($g_sFileSave), $g_hForm1) _FileWriteFromArray($g_sFileSave, $g_aPath_Points, 0, Default, ",") EndFunc ;==>Btn_save_Clicked Func Control_Create_Group1() Local $iX = 30 Local $iY = 225 $g_ahCtl1[$eC1_delete] = GUICtrlCreateButton("Delete", $iX + 0, $iY + 0, 50, 20) $g_ahCtl1[$eC1_shift_dn] = GUICtrlCreateButton("+", $iX + 70, $iY + 0, 20, 20) $g_ahCtl1[$eC1_shift_up] = GUICtrlCreateButton("-", $iX + 95, $iY + 0, 20, 20) $g_ahCtl1[$eC1_del_all] = GUICtrlCreateButton("Delete All", $iX + 0, $iY + 25, 50, 20) $g_ahCtl1[$eC1_update] = GUICtrlCreateButton("Update", $iX + 70, $iY + 25, 50, 20) $g_ahCtl1[$eC1_undo] = GUICtrlCreateButton("Undo", $iX + 0, $iY + 50, 50, 20) $g_ahCtl1[$eC1_redo] = GUICtrlCreateButton("Redo", $iX + 70, $iY + 50, 50, 20) GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE) $g_ahCtl1[$eC1_closepath] = GUICtrlCreateCheckbox("Complete", $iX + 0, $iY + 70, 65, 25) $g_ahCtl1[$eC1_showimg] = GUICtrlCreateCheckbox("Image", $iX + 0, $iY + 90, 65, 25) $g_ahCtl1[$eC1_lock] = GUICtrlCreateCheckbox("Locked", $iX + 0, $iY + 110, 65, 25) EndFunc ;==>Control_Create_Group1 Func Control_Create_Group2() Local $iX = 30 Local $iY = 225 $g_ahCtl2[$eC2_rev] = GUICtrlCreateButton("Reverse", $iX + 0, $iY + 0, 50, 20) $g_ahCtl2[$eC2_edit_rot] = GUICtrlCreateInput("0", $iX + 0, $iY + 25, 40, 20) $g_ahCtl2[$eC2_ud_rot] = GUICtrlCreateUpdown(-1) GUICtrlSetLimit($eC2_ud_rot, 360, -360) $g_ahCtl2[$eC2_rot] = GUICtrlCreateButton("", $iX + 40, $iY + 25, 10, 20) $g_ahCtl2[$eC2_dgroup] = GUICtrlCreateGroup("Coords", 5 + $iX + 70, $iY + 0, 55, 70) $g_ahCtl2[$eC2_decy] = GUICtrlCreateButton("-", 24 + $iX + 70, 16 + $iY + 0, 17, 17) $g_ahCtl2[$eC2_incy] = GUICtrlCreateButton("+", 24 + $iX + 70, 48 + $iY + 0, 17, 17) $g_ahCtl2[$eC2_decx] = GUICtrlCreateButton("-", 8 + $iX + 70, 32 + $iY + 0, 17, 17) $g_ahCtl2[$eC2_incx] = GUICtrlCreateButton("+", 40 + $iX + 70, 32 + $iY + 0, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $g_ahCtl2[$eC2_zout] = GUICtrlCreateButton("Zoom -", $iX + 0, $iY + 75, 50, 20) $g_ahCtl2[$eC2_zin] = GUICtrlCreateButton("Zoom +", $iX + 75, $iY + 75, 50, 20) $g_ahCtl2[$eC2_toall] = GUICtrlCreateCheckbox("Apply to all", $iX + 0, $iY + 100, 80, 25) EndFunc ;==>Control_Create_Group2 Func Control_IsChecked($IdCtrl) Return (BitAND(GUICtrlRead($IdCtrl), $GUI_CHECKED) = $GUI_CHECKED) EndFunc ;==>Control_IsChecked Func GDI_Draw_ArrayPoints(ByRef $aPts, $hImage, $g_bClosePath, $iX, $iY, $sFileName, $iSelected = -1) Local $hWnd = GUICtrlGetHandle($hImage) If UBound($aPts) > 1 Then Local $aPoints = GDI_Points($aPts, $iX, $iY) Else Local $aPoints[1][2] = [[0, 0]] EndIf Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd) ;create a graphics object from a window handle _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF) If FileExists($sFileName) Then Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFileName) Local Const $iWidth = ScaleX(_GDIPlus_ImageGetWidth($hBitmap)) Local Const $iHeight = ScaleY(_GDIPlus_ImageGetHeight($hBitmap)) Local $hBitmap_Scaled = _GDIPlus_ImageResize($hBitmap, $iWidth, $iHeight) ;resize image _GDIPlus_BitmapDispose($hBitmap) ;Done with initial bitmap _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap_Scaled, 0, 0) _GDIPlus_BitmapDispose($hBitmap_Scaled) EndIf Local $hPen = _GDIPlus_PenCreate(0xFFFF0000, ScaleX(1)) Local $hEndCap = _GDIPlus_ArrowCapCreate(1, 1) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) If $g_bClosePath Then _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints, $hPen) Local $iX0, $iY0, $iX1, $iY1 For $i = 1 To $aPoints[0][0] If Not $g_bClosePath And $i < $aPoints[0][0] Then $iX0 = $aPoints[$i][0] $iY0 = $aPoints[$i][1] $iX1 = $aPoints[$i + 1][0] $iY1 = $aPoints[$i + 1][1] _GDIPlus_GraphicsDrawLine($hGraphics, $iX0, $iY0, $iX1, $iY1, $hPen) EndIf Next _GDIPlus_ArrowCapDispose($hEndCap) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphics) Point_Selected($aPts, $hImage, $iSelected) EndFunc ;==>GDI_Draw_ArrayPoints Func GDI_Line_hPath_From_Points($aPts, $iXorig, $iYorig) ;Returns hpath object be sure to delete it when finished Local $hPath = _GDIPlus_PathCreate() ;Create new path object Local $aPoints = GDI_Points($aPts, $iXorig, $iYorig) Local $iX0, $iY0, $iX1, $iY1 If IsArray($aPoints) Then For $i = 1 To $aPoints[0][0] - 1 $iX0 = $aPoints[$i][0] $iY0 = $aPoints[$i][1] $iX1 = $aPoints[$i + 1][0] $iY1 = $aPoints[$i + 1][1] _GDIPlus_PathAddLine($hPath, $iX0, $iY0, $iX1, $iY1) Next EndIf Return $hPath ;_GDIPlus_PathDispose($hPath) EndFunc ;==>GDI_Line_hPath_From_Points Func GDI_Points($aPts, $iXo, $iYO) Local $aGDIPts If IsArray($aPts) And UBound($aPts) > 1 Then Local $aGDIPts[UBound($aPts) + 1][2] $aGDIPts[0][0] = UBound($aPts) For $i = 1 To $aGDIPts[0][0] ;Build points list $aGDIPts[$i][0] = ScaleX($aPts[$i - 1][0]) + $iXo $aGDIPts[$i][1] = ScaleY($aPts[$i - 1][1]) + $iYO Next Else Local $aGDIPts[1][2] = [[0, 0]] EndIf Return $aGDIPts EndFunc ;==>GDI_Points Func Image1_Clicked() If Not Control_IsChecked($g_ahCtl1[$eC1_lock]) Then Local $aCPos = ControlGetPos(GUICtrlGetHandle($g_hImage1), "", 0) Local $aPos = MouseGetPos() If IsArray($aPos) And IsArray($aCPos) Then Local $iXn = Int(($aPos[0] - $aCPos[0] + ScaleX(1) / 2) / ScaleX(1)) Local $iYn = Int(($aPos[1] - $aCPos[1] + ScaleY(1) / 2) / ScaleY(1)) Point_Add(List_Index(), $iXn, $iYn) EndIf Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) Else ToolTip("Locked") Sleep(500) ToolTip("") EndIf EndFunc ;==>Image1_Clicked Func List_Index() Static Local $hWndList1 = GUICtrlGetHandle($g_hList1) Local $iIndex = _GUICtrlListView_GetSelectionMark($hWndList1) If _GUICtrlListView_GetItemSelected($g_hList1, $iIndex) Then Return $iIndex Return -1 EndFunc ;==>List_Index Func List_Update($iIndex = -1) Static $hWnd_List1 = GUICtrlGetHandle($g_hList1) _GUICtrlListView_BeginUpdate($g_hList1) _GUICtrlListView_DeleteAllItems($hWnd_List1) For $i = 0 To UBound($g_aPath_Points) - 1 GUICtrlCreateListViewItem($i & "|" & $g_aPath_Points[$i][0] & "|" & $g_aPath_Points[$i][1], $g_hList1) Next If $iIndex > -1 Then _GUICtrlListView_ClickItem($g_hList1, $iIndex) _GUICtrlListView_EnsureVisible($g_hList1, $iIndex) EndIf _GUICtrlListView_EndUpdate($g_hList1) EndFunc ;==>List_Update Func Point_Add($iIndex, $iX, $iY) If $iIndex <> -1 Then _ArrayInsert($g_aPath_Points, $iIndex, $iX & "|" & $iY, 0) _GUICtrlListView_InsertItem($g_hList1, $iIndex, $iIndex) _GUICtrlListView_SetItemText($g_hList1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($g_hList1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($g_hList1, $iIndex) Else _ArrayAdd($g_aPath_Points, $iX & "|" & $iY, 0) GUICtrlCreateListViewItem(UBound($g_aPath_Points) - 1 & "|" & $iX & "|" & $iY, $g_hList1) _GUICtrlListView_EnsureVisible($g_hList1, UBound($g_aPath_Points) - 1) EndIf State_Save($g_aPath_Points) EndFunc ;==>Point_Add Func Point_Adjust($iX, $iY, $bToAll) If Not $bToAll Then Local $iIndex = List_Index() If $iIndex == -1 And IsArray($g_aPath_Points) Then $iIndex = UBound($g_aPath_Points) - 1 If $iIndex == -1 Then Return $g_aPath_Points[$iIndex][0] += $iX $g_aPath_Points[$iIndex][1] += $iY _GUICtrlListView_SetItemText($g_hList1, $iIndex, $g_aPath_Points[$iIndex][0], 1) _GUICtrlListView_SetItemText($g_hList1, $iIndex, $g_aPath_Points[$iIndex][1], 2) If $iIndex <> UBound($g_aPath_Points) - 1 Then _GUICtrlListView_ClickItem($g_hList1, $iIndex) Else For $i = 0 To UBound($g_aPath_Points) - 1 $g_aPath_Points[$i][0] += $iX $g_aPath_Points[$i][1] += $iY Next List_Update(List_Index()) EndIf State_Save($g_aPath_Points) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndFunc ;==>Point_Adjust Func Point_Delete($iIndex) If $iIndex <> -1 Then _ArrayDelete($g_aPath_Points, $iIndex) _GUICtrlListView_DeleteItem($g_hList1, $iIndex) State_Save($g_aPath_Points) ;List_Update($iIndex) EndIf EndFunc ;==>Point_Delete Func Point_Modify($iIndex, $iX, $iY) If $iIndex <> -1 Then $g_aPath_Points[$iIndex][0] = $iX $g_aPath_Points[$iIndex][1] = $iY _GUICtrlListView_SetItemText($g_hList1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($g_hList1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($g_hList1, $iIndex) State_Save($g_aPath_Points) EndIf EndFunc ;==>Point_Modify Func Point_Selected($aPts, $hImage, $iIndex) If $iIndex > -1 Then GUICtrlSetState($g_hSelSquare, $GUI_HIDE) Local $hWnd = GUICtrlGetHandle($hImage) Local $aPos = ControlGetPos($hWnd, "", 0) If IsArray($aPos) And IsArray($aPts) Then _WinAPI_RedrawWindow($hWnd, Default, Default, $RDW_ERASENOW) Local $iXs = ScaleX($aPts[$iIndex][0]) + $aPos[0] - ScaleX(1) / 2 Local $iYs = ScaleY($aPts[$iIndex][1]) + $aPos[1] - ScaleY(1) / 2 WinMove(GUICtrlGetHandle($g_hSelSquare), "", $iXs, $iYs, ScaleX(1), ScaleY(1)) GUICtrlSetState($g_hSelSquare, $GUI_SHOW) ;ConsoleWrite("Point_Selected" & @CRLF) Else ConsoleWriteError("Error: Point_Selected" & @CRLF) EndIf EndIf EndFunc ;==>Point_Selected Func Point_Swap($iIndex1, $iNext) _GUICtrlListView_BeginUpdate($g_hList1) Local $iIndex2 = 0 Local $aTmp = 0 If $iIndex1 <> -1 Then $iIndex2 = $iIndex1 + $iNext If $iIndex2 > UBound($g_aPath_Points) - 1 Then $iIndex2 = 0 ElseIf $iIndex2 < 0 Then $iIndex2 = UBound($g_aPath_Points) - 1 EndIf _ArraySwap($g_aPath_Points, $iIndex1, $iIndex2) Local $iX1 = _GUICtrlListView_GetItemText($g_hList1, $iIndex1, 2) Local $iY1 = _GUICtrlListView_GetItemText($g_hList1, $iIndex1, 2) Local $iX2 = _GUICtrlListView_GetItemText($g_hList1, $iIndex2, 2) Local $iY2 = _GUICtrlListView_GetItemText($g_hList1, $iIndex2, 2) _GUICtrlListView_SetItemText($g_hList1, $iIndex1, $iX2, 1) _GUICtrlListView_SetItemText($g_hList1, $iIndex1, $iY2, 2) _GUICtrlListView_SetItemText($g_hList1, $iIndex2, $iX1, 1) _GUICtrlListView_SetItemText($g_hList1, $iIndex2, $iY1, 2) _GUICtrlListView_ClickItem($g_hList1, $iIndex2) _GUICtrlListView_EnsureVisible($g_hList1, $iIndex2) Else ;ConsoleWrite("Array Shift" & @CRLF) If $iNext > 0 Then ;ARRAY SHIFT -- Melba23 Local $iUBound = UBound($g_aPath_Points) ; Get size of array $aTmp = _ArrayExtract($g_aPath_Points, 0, $iUBound - 2) ; Extract all but last _ArrayInsert($aTmp, 0, _ArrayExtract($g_aPath_Points, $iUBound - 1, Default)) ; Insert last at top $g_aPath_Points = $aTmp Else $aTmp = _ArrayExtract($g_aPath_Points, 1, Default) ; Extract all but top row _ArrayAdd($aTmp, _ArrayExtract($g_aPath_Points, 0, 0)) ; Add top row at bottom $g_aPath_Points = $aTmp EndIf List_Update(List_Index()) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndIf State_Save($g_aPath_Points) _GUICtrlListView_EndUpdate($g_hList1) EndFunc ;==>Point_Swap Func Points_Reverse($aPts) Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0) ;_GDIPlus_PathFlatten($hPath) _GDIPlus_PathReverse($hPath) Local $aPoints = _GDIPlus_PathGetPoints($hPath) _GDIPlus_PathDispose($hPath) If IsArray($aPoints) Then ;ConsoleWrite("Flipped_Points" & @CRLF) Global $aPts_Rev[$aPoints[0][0]][2] For $i = 1 To $aPoints[0][0] $aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1)) $aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1)) Next Return $aPts_Rev Else Return $aPts EndIf EndFunc ;==>Points_Reverse Func Points_Rotate($aPts, $iDegrees) Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0) ;_GDIPlus_PathFlatten($hPath) Local $hPen = _GDIPlus_PenCreate(0x0, ScaleX(1)) Local $aBounds = _GDIPlus_PathGetWorldBounds($hPath, 0, $hPen) _GDIPlus_PenDispose($hPen) If IsArray($aBounds) Then Local $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, $aBounds[0] + $aBounds[2] / 2, $aBounds[1] + $aBounds[3] / 2) _GDIPlus_MatrixRotate($hMatrix, $iDegrees) _GDIPlus_MatrixTranslate($hMatrix, -($aBounds[0] + $aBounds[2] / 2), -($aBounds[1] + $aBounds[3] / 2)) _GDIPlus_PathTransform($hPath, $hMatrix) _GDIPlus_MatrixDispose($hMatrix) EndIf Local $aPoints = _GDIPlus_PathGetPoints($hPath) _GDIPlus_PathDispose($hPath) If IsArray($aPoints) Then ;ConsoleWrite("Rotate_Points" & @CRLF) Dim $aPts_Rev[$aPoints[0][0]][2] For $i = 1 To $aPoints[0][0] $aPts_Rev[$i - 1][0] = Int($aPoints[$i][0] / ScaleX(1)) $aPts_Rev[$i - 1][1] = Int($aPoints[$i][1] / ScaleY(1)) Next Return $aPts_Rev Else Return $aPts EndIf EndFunc ;==>Points_Rotate Func Points_Scale($iScaleX, $iScaleY) For $i = 0 To UBound($g_aPath_Points) - 1 If $iScaleX > 0 Then $g_aPath_Points[$i][0] *= 2 Else $g_aPath_Points[$i][0] /= 2 EndIf If $iScaleY > 0 Then $g_aPath_Points[$i][1] *= 2 Else $g_aPath_Points[$i][1] /= 2 EndIf Next State_Save($g_aPath_Points) List_Update(List_Index()) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage) EndFunc ;==>Points_Scale Func Points_Update($aPts, $g_bClosePath = False, $b_Show_Image = True, $iSelected = -1) Local $_Image_File = $g_sImagefile If Not $b_Show_Image Then $_Image_File = "" GDI_Draw_ArrayPoints($aPts, $g_hImage1, $g_bClosePath, 0, 0, $_Image_File, $iSelected) EndFunc ;==>Points_Update Func ScaleX($iX) Local $iXs = $g_iXScale If $iXs == 0 Then $iXs = -1 If $iXs > 0 Then $iX = $iX * $iXs Else $iX = $iX / Abs($iXs) EndIf Return $iX EndFunc ;==>ScaleX Func ScaleY($iY) Local $iYs = $g_iYScale If $iYs == 0 Then $iYs = -1 If $iYs > 0 Then $iY = $iY * $iYs Else $iY = $iY / Abs($iYs) EndIf Return $iY EndFunc ;==>ScaleY Func SelSquare_Drag() Local $iIndex = List_Index() If $iIndex <> -1 Then Local $cInfo = GUIGetCursorInfo($g_hForm1) Local $aPosSelOrig = ControlGetPos($g_hForm1, "", $g_hSelSquare) If IsArray($aPosSelOrig) Then Local $iSubtractX = $cInfo[0] - $aPosSelOrig[0] Local $iSubtractY = $cInfo[1] - $aPosSelOrig[1] EndIf If IsArray($cInfo) Then Do $cInfo = GUIGetCursorInfo($g_hForm1) ControlMove($g_hForm1, "", $g_hSelSquare, $cInfo[0] - $iSubtractX, $cInfo[1] - $iSubtractY) Until Not $cInfo[2] EndIf Local $aPosSelNew = ControlGetPos($g_hForm1, "", $g_hSelSquare) If IsArray($aPosSelNew) And IsArray($aPosSelOrig) Then Local $iXm = $g_aPath_Points[$iIndex][0] + Int(($aPosSelNew[0] - $aPosSelOrig[0]) / ScaleX(1)) Local $iYm = $g_aPath_Points[$iIndex][1] + Int(($aPosSelNew[1] - $aPosSelOrig[1]) / ScaleY(1)) Point_Modify($iIndex, $iXm, $iYm) Points_Update($g_aPath_Points, $g_bClosePath, $g_bShowImage, $iIndex) EndIf EndIf EndFunc ;==>SelSquare_Drag Func SplitDir($FullPath) Local $sDrive, $sDir, $sDummy _PathSplit($FullPath, $sDrive, $sDir, $sDummy, $sDummy) Return $sDrive & $sDir EndFunc ;==>SplitDir Func SplitFileName($FullPath) Local $sDummy, $sFileName, $sExt _PathSplit($FullPath, $sDummy, $sDummy, $sFileName, $sExt) Return $sFileName & "" & $sExt EndFunc ;==>SplitFileName Func State_Cleanup(ByRef $a1) If (UBound($a1) > $g_iUndo_Max + 2) Then Local $a1Rem = _ArrayExtract($a1, 1, Default) $a1Rem[0] = $a1[0] Local $sTmp = $a1[1] If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite("Cleanup Delete (UnD) " & $sTmp & @CRLF) EndIf $a1 = $a1Rem EndIf EndFunc ;==>State_Cleanup Func State_Destroy($bRedo_Only = False) Local $sTmp While (UBound($g_asRedo_Files) > 1) $sTmp = _ArrayPop($g_asRedo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (ReD) " & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE) If $bRedo_Only Then Return While (UBound($g_asUndo_Files) > 1) $sTmp = _ArrayPop($g_asUndo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (UnD)" & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE) EndFunc ;==>State_Destroy Func State_Is_Diff(ByRef $a1, ByRef $a2) Local $bIsDiff = True If UBound($a1) = UBound($a2) Then $bIsDiff = False For $i = UBound($a1) - 1 To 0 Step -1 If $a1[$i][0] == $a2[$i][0] And $a1[$i][1] == $a2[$i][1] Then ContinueLoop Else ;ConsoleWrite("Diff " & $i & @CRLF) $bIsDiff = True ExitLoop EndIf Next Else ;ConsoleWrite("Diff " & @CRLF) EndIf Return $bIsDiff EndFunc ;==>State_Is_Diff Func State_Restore(ByRef $aPts, $bUndo) Local $sTmp = "" Local $aRes If $bUndo Then $sTmp = _ArrayPop($g_asUndo_Files) ;ConsoleWrite(", Restore (UnD)" & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($g_asRedo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($g_asUndo_Files) < 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE) If UBound($g_asRedo_Files) > 2 Then GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_ENABLE) If UBound($g_asUndo_Files) > 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo) If Not @error Then Return $aRes Else ConsoleWriteError("Failed to Restore " & $sTmp) EndIf Else $sTmp = _ArrayPop($g_asRedo_Files) ;ConsoleWrite(", Restore (ReD) " & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($g_asUndo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($g_asRedo_Files) < 2 Then GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE) If UBound($g_asUndo_Files) > 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_ENABLE) If UBound($g_asRedo_Files) > 1 And Not State_Is_Diff($aPts, $aRes) Then Return State_Restore($aPts, $bUndo) If Not @error Then Return $aRes Else ConsoleWriteError("Failed to Restore " & $sTmp) EndIf EndIf Return $aPts EndFunc ;==>State_Restore Func State_Save($aPts) If $g_iUndo_Max < 1 Then Return Local $sTmp = _TempFile(@TempDir, "DPP_") If UBound($g_asRedo_Files) > 2 Then _ArrayAdd($g_asUndo_Files, _ArrayPop($g_asRedo_Files)) _ArrayAdd($g_asUndo_Files, $sTmp) _FileWriteFromArray($sTmp, $aPts, 0, Default, ",") If UBound($g_asRedo_Files) > 2 Then State_Destroy(True) State_Cleanup($g_asUndo_Files) ;ConsoleWrite("Save State " & UBound($g_asUndo_Files) & " " & $sTmp & @CRLF) If UBound($g_asUndo_Files) > 2 Then GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_ENABLE) If @error Then MsgBox(0, @ScriptName & " Error", "Unable to create undo file " & $sTmp) GUICtrlSetState($g_ahCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($g_ahCtl1[$eC1_redo], $GUI_DISABLE) $g_iUndo_Max = 0 EndIf EndFunc ;==>State_Save Func Tab1_Select() Local $iStateCtl1, $iStateCtl2 Local $tabindex = GUICtrlRead($g_hTab1) ;ConsoleWrite("tab" & $tabindex + 1 & "_selected" & @CRLF) Select Case $tabindex = 0 $iStateCtl1 = $GUI_SHOW $iStateCtl2 = $GUI_HIDE Case $tabindex = 1 $iStateCtl1 = $GUI_HIDE $iStateCtl2 = $GUI_SHOW Case Else _GUICtrlTab_ActivateTab($g_hTab1, 0) Return EndSelect For $i = 0 To UBound($g_ahCtl1) - 1 GUICtrlSetState($g_ahCtl1[$i], $iStateCtl1) Next For $i = 0 To UBound($g_ahCtl2) - 1 GUICtrlSetState($g_ahCtl2[$i], $iStateCtl2) Next EndFunc ;==>Tab1_Select Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) Static Local $hWndList1 = GUICtrlGetHandle($g_hList1) If Not IsHWnd($hWndList1) Then $hWndList1 = GUICtrlGetHandle($g_hList1) If @error Then Return $GUI_RUNDEFMSG If $wParam = $g_hList1 Then Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam) Switch DllStructGetData($tNMHDR, "Code") Case $LVN_KEYDOWN, $NM_CLICK GUICtrlSendToDummy($g_hList1_LVN, $lParam) EndSwitch EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY  


      DrawPathPoints.au3
    • islandspapand
      By islandspapand
      Hi All
      i am currently trying to add a function to my project that can send SMS, i have gone with Twilio for the sms service that use a REST API.
      I have never worked with an API before, and could use some help.
      I can get my function working with using cURL.exe and copy past command from the website with the following code. And thats great unfortunately i am have issue with character like æøå when sending a SMS appears like a box or ?. this does not happen if i do it from the website so it looks like a Unicode issue in curl.exe.
      I have done some searching on the forum and understand that i should be able to implement this curl command with the WinHTTP UDF from @trancexx so i don't need a third part exe and it might fix my charater issue.
      Unfortunately i really don't understand how i am to change curl commands to the WinHTTP and i was hoping some good maybe give me an example i could learn from.
      Thanks in advanced
      i have removed the AuthToken number from the script.
      _SendSMS("00000000","SomeOne","SMS body info") Func _SendSMS($SendTo,$SendFrom,$Msgtxt) $AccountSID = "ACbb765b3180d5938229eff8b8f63ed1bc" $AuthToken = "Auth Token number" $Data = '"https://api.twilio.com/2010-04-01/Accounts/'&$AccountSID&'/Messages.json"'& _ '-X POST \ --data-urlencode "To=+45'&$SendTo&'" \ --data-urlencode "From='&$SendFrom&'" \ --data-urlencode "Body='&$Msgtxt&'" \ -u '&$AccountSID&':'&$AuthToken&'' ShellExecute(@ScriptDir&"\curl.exe","-k "&$Data) ;~ curl 'https://api.twilio.com/2010-04-01/Accounts/ACbb765b3180d5938229eff8b8f63ed1bc/Messages.json' -X POST \ ;~ --data-urlencode 'To=+4500000000' \ ;~ --data-urlencode 'From=Reception' \ ;~ --data-urlencode 'Body=Test Body' \ ;~ -u ACbb765b3180d5938229eff8b8f63ed1bc:[AuthToken] EndFunc  
       
    • fenhanxue
      By fenhanxue
      i want to copy a picture file to clipboard, so that i can paste the picture through ctrl+V
      this is my code ,but it dosen't work :
      #AutoIt3Wrapper_UseX64 = n #Include <Clipboard.au3> #include <GDIPlus.au3> _GDIPlus_Startup() $hClipboard_Bitmap = _GDIPlus_BitmapCreateFromFile('C:\1.jpg') _ClipBoard_Open(0) _ClipBoard_SetDataEx($hClipboard_Bitmap,$CF_BITMAP) _ClipBoard_Close() _GDIPlus_Shutdown() can you help me
×