wakillon

PostStampBuilder

30 posts in this topic

Glad you like it !

Thanks.

1 person likes this

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

#4 ·  Posted (edited)

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 = '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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 ;==> 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 &= '/iH7664FhFf+xlr1wC3c2qsTs+Xl54A9ztFONbwOgyz88DnSla+2jeJnX3K+rgdL2r2/daKFt56uAjexo6JoupgbjGm3/wAcAQsRNrHlvgNqmymmyuuAtvaP2xv4EeeBzXlC6UtsdXASknHoag7pgHtAlKFeiOAWbWQraZ2k0cAnub1eVTRQj9cDpGkEE+LDgEgoqvXWJwMAugE/yI+UOBNe1X7a1JHqJ9TArnXtacp116s+eATNudmvHo6D88C38LvxnpOAHb7cyR5kfVwEqGo8l266YEFqyTW1HxTAqy1iAR+eAc3cCfr8cCJsMiw+uj6TgP5aoVtVsztfR064CPbPtsUPM0wFYTUmfu0jAji82x3LNX/L7SPDAuvbqvK1ju+DO3kRpGBJ/wCjsU7x/wCctw7jtSHX44HT8ssRYfTA03rr/F9dMDGpN5130wItYpHGjZ+OBctjZo+MzGBji+1eVny/XAzWp5V3dP1wK5BpWs+WmAcOWutD/E0cCbdrtsFqO24xHxMCilADXbz2wJ5tVoVs+F9OOBQwTaR64GsvpPiYHPV+51rrvA/DAy91WArQ8d35YGmsTYQ8U2+OBD3qMNeXeE9rXUenpgVXlWArFXd6nlgXatrBwitujBPycCbVraG8jX+UxHycCwdddOlvHAIr2yTSdv8ATgTTud7iz2xsbaxJgIFybUKruTy+bgb3NWNz/H+uBq/k0LDJ10wEtq8tzpu/HAF1klPLpgF2txTjNdBsT84wKrp721YehqfBwJtSJv23j5AW1wAtcrz7xRTZVNfgYD+TtJyrYsusjJ6SYG5Vv7r8Z6PpgPPtBNrVh0V2fngS93uVjgDTpBpgVNu5WH/q5ekjgbhRHlFg62JwD22kaMHlyrPjOA6R75rHQ/rgYoW6DU+0Zn1jAn/toQVolf4imnTVwA7tbv8A1r22u9WsjPn/AEwO0uitSd0PHzwNxf5FYNv9b4Eonuq1Kn1wMcbEkb6ws4BxC0Dxk0Z3wJtWCQqWnexPywEEZYef366fLAataz2xbT8Q8pwNbtt9K2e0nxnAK17iB3LRfrauyfHAfx1hJ5Lq/wBsB4sQ+5DVd8A4TqCPTnr9MCuJXwg00NcCdj2FC3Utvgbl3KvKxNXdqf60wMNdOFZTquAtanly3V/bA0TvWanhEf1wMcirWpxOjZ3wCwyMyGiHj5bYE8yf+ztvParUbaebgdQCCtYPPQMCEsa2C1dNIifi4AWbSEUg+11fppgTV/IRUGru6z8cCmzW3H8a6aOmBvdxZPb1N8ALdtrym3Hooj8sDNT+M0r1DT5YE8dGtX2y8rW1Z8sCvx3iOfCfjgXwsGt166OnxwBh31TzwLrZiYg6aanrgMzMsJ08JwAiu2s72wKrHTfAl4JNwnzwFOVYmB+OAIkcV4HhrgZXfi3PAicBbgYE+193h56YBxg5OsOk6xgY7hY/yIlwJS+1XieY6fLAoFItbprGmAVqVH8c2eoMOAXtUike/wBWfpgAdxi3IpV69UwOiEI/b56n1wJY1B4+YzHoYBW/cvppZPJ/fAr3urWPCdcAeczr+2Aiutqof8tMBYjQePX/AEYGiK+006G2BpKAW2fpgaxaFqcnoLp9MDl/2WI7hWsb1JYwKpStCO2ou/E1+TgU90r7LCrvB/XAINygWfDR+IYGK/8AomeVa1dxrL9NMBbeLVDYwJt3e8MVK+L/AL4FFr7tSTX/AGMBUsQsD0wMVhl6aiaTPlgZtZrNIJ2E1cCIv3P/ALB7dteKa4F0qglrNjTRIMCZqvCkEbgfpgZLVr/0gWd6uzgB+Z3LA6zBp5QYDIycoTfo4BDvSQ8sBqp7Uau+258MDWtxrNosdNHAONHc4jrD0wLZtDVIN0dsCeBurZNvHAL21LVsztHTAlWvGzFPFnRMCzuzDUWpoa4FVtZ0jUZwDn29ePtbdfHAPbtFXl1MBa1kfDV1wJtIe0bBqBEvxwL1CWdegjgRZOeoi+Vj9NMCrctCka9HWTAngVOde2lo+2QNPXAr8jWs3rFvLUfjgB3VNR5eBrgbjdt7rNa762GfLALFO3qzx6IT+mAc69z/AOtXXdn9MA7nc/8ARWnKvb5w7FofrgBbvXXWpeJ/Hvr6wYF1O7T70ufyeo4GZs+2xBrHXAWfAseM/tgAuvuqT064A1qosnXXRfngavcvMPb4VNrTOBf5OTBVAPuTTALVkFEjYGJ9YwNKk8X5Q/7YFmpFWH/I1J+OBPGJtYrSxvYlf0wN+Ki8okd+k4DNIiGqdNo/bABHQtH/AMmcA5FH3W5eXh8MCXuB7oiOliMDHcvrZGld53lwHlpLobyRgV+ShpOuBztfs23tCbTpPzwK4sHE0Nwf3MB/IyTWekaTGBrtoQ41j/I/pgH46LzsoPWfb8sCigQ0rPm7YFPIiIKdTAjlqTbV6E64DPcrrEnrvgbk20tUh6TP9HA3AuFWah064G5dKxeNHXAO3buW++nCvQd/mYAXbVb9ubWNIYr8NTAuW1dUX/j4+Hngckt/9d7q3d66J5dcDHa7VTWrcGRsTD4i4FWLGtG2m2rr66YE/wDdcm7bstHerIn/ACkMCwkTuFeM+yxv8fPA07BaPXrgPLt0Y5QvSVcCXudw2oEbTY28cCq9xscgVjZI+uAnK/uQI6jgVz9a+bt9MCIpea2987yQf7YFcWlY7cVjY6fXAg7cW5Wut/CUH4S4CdykxyGzoBbrgZtLFdV6uuAPIOLaPPbAYdJ8NZfDAEP43hjV3cAK6zd5Rtbr+mBq27d/tvyDbXAUoMcgU9cDcxPayddMBtxg9nNemBptrIB11wAgeUEaRynA3slixV88Ab2qlY5z1DR/pgVWnbWbE22Hr6YC2hIsayRGr/TAiwhNaxbrDrgH5mu1bNTR0n5BgVXuTA/9Vuh/XAovNk8DW2uBDwpP45sOvGNPWcAe73jU41rOrD9NMBt3CQbRf01Hw1wJ/Gdy0XrxBmAZfPfA1q27bxo2rV6kuv8ATAa/kqD3LUt564Gvfs6K1pfYtGv98CHt9rucW3ebhrpZqW+BgXz7e1YHxba6eGAzDHbhvf7pDbAi1u0IXuUfFEH44DX8cpzLW9f0wLIh4nNNHV5YCnKK6j/rrgJWonJJwC1KOsaeMpgDtX8eo7kuBZfTzN4wBl0iZ66YEtazBpO64BW3Yt7CeVeiJgI0+0qS7TMfXAzUtFtFNH/TgKpUlTaDAPdZF46eW2AWrxlpfjd/48tMCS17hyoKf8X94wLKhqHFehgVCnu1+mAmmjtG0OARVCNPDT9sA4lVh181/TA3OtvbbSxtMfoYDrWeVlF0MDNZiWPPAgLlvug8Il+eAce1a2utjTlbd+OAvaP/AOw506Vgj47YGeHc9te5ej/xYj54E3//AGTSlaUHdsqvywOlXXlbTTYP0wM/jvX2oVd50X98CUuW9ttT7gD9XXAnl/6OUX4fhN1bVfntgUn/AJ+E90pxNZltXAy9vciw7a6YFlS1ZSvr/fAle2W3pro+OBvz9tmnbsTXfiTH0wGpcN2xE9JfhgDUtBbts9NtPWMCvx2H7gp4Rq4E2bOlCrVd3Y+W+BB+avutbtFKvtajqea7YHWe5AtB+P8AXA5tqV1vV92kErgJxqTT/rDqv6zgNla6atsANa+8IOrrPpgVO0VWtpl0NPPALLTicbNXoap5vlgPKsHGIfBNPXAxxNOITvJP1wM6QvXAakTMp64Gs7Fd3xcCRas8m3l0wM6EpylmDpga1uJ9sFSdtPpgYK9wixVI16fLAa07VB4kJu6rB64GO4XkrXbedD54FBJJNY2NjALcLeyxLbob6YEPdpRKzY6cXY+LgWWrqFWo7sQYGZuRb7XZNsDFPb7mU2SJjA527kWivNKwWqD9MCmy1q1389VjpgS8rw2WnL+M1T64Adskitu2UdWkcLT474CLXR4WrLGjZDzcDW4TJU7q+ED8ZwKqiSFnXU0I+WBSFh1kduuBHAQK'
    $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 &= 'BxoEwr4TOA1ZN1Y2TAxZ5PIGpHRn++Afl7PVCMBZiaMnhGuAB3I0Semn9MCa0tUbdy46yTMVnpM4C3qWPcVbmld5898Bai8kK+b1+GA7C1SOvw9MAGttOM9QQN8CymgntT/WszgQ2WrwSenLQwIjvD79O3P20EfpOB15cmGq+eAkVgJfLfA53v3IeFAsOqavwMBG+jDafH9tMDLJ76tGfT9JwK48WTXSNXAl7drkN3iuvHRTwwMHCAnTo66YFTEvLfx6YE/ynVbHR0wELO4vm/tGBxe33zuF63jtbNXb4EfvgW3BqcbWX+RpgPtXjs78dvlgCqcq2a1r1rGuBQtfDylf3wC88YZrPhv9NMAqrB2ziG4upgVNmBJsdWCMCedR5QRbwfc4FCqhSa7iv0wN+N3rFV6dMAju1f8A/Qemga4GrW0xetEtuhE4Fp2wiwWDxBjAOFe5PMGrpxYZ9UwItW1LDS52+3XQoAD6uA1oarBaZ9us/OcCm8eD/rxwMkvJqngjprgHHeePhgFe3U6Fg6VNR9cCg1S2umk+GANo1D3dI0+uBHDuFuSkW/in7mBXGweM7TgENBtANtFXAlt3IlrMdeX7b4F1u31dE3rt+uAxY0dCdCMAYiNU68dPprgTbk2ql2lTVrMD6yYDFr19sI/c2I+WAV7d6209va6gzPjvgVHarWBtcNSFtHywK5ajxCtvHf5YE25QNayvnOBptXS1Wx00nAJquq1Tc4zPrgXS3btPFn4RE4Ba96ScXuTMeOBvy1NbUa8T7ok9JMAs35KIpqEKhgNbTHO2rsNeOBNuUKQ8dowEvQPM2amuBjuUa8+NqVWFscVfTAdE00/RwKCYVMCWlanImj1g1flgYs6a6PlrgVAazr4/2wOdnlWab+IYG/JUB7o8jrDt5YFl6X1+5NtH98ArWkzD88DbTxulnbl7owNcWDkV8dBnz64Ga8jSwPS0bYBXgQN21vD4YFNrQV7ZqeKT9MDP5ENuXWo/ouAlUeW701wNa1RC0T0GNXAnuV7mkSVPuhh+eAV7f+C1La2Z/bA1u1UuWdzSZiPlgLeHjWn/AOSMfPAwXFg5TuyYG7Zfa0sTrZlnzwNbs9tZ1pfctu+mA8h1Nzx009MCWbfaovn/AGwJ5tEq2tdd0Aj1wF/Jp+NOPVX3fDpgEWHlZef+QQ/LrgKp7rNmd9o+mAVvM6fRwL42YsbdS0fIjAzFfcER06YBykmoC7STr8MCou9Xwjz83ACev3+Wv7YGrW9dbdzm+gYEnc7doGkW3OvywH/sVlODsDr9cAQ7c8r2J/yZPScDETA856rp6SYFPKsHLlOhUj/fTAmGrIX7hbdkj44Ej2XRPx2roVt7TAulSEe2VZmR0+eBbIHtQjaf6YEnbrSeA8ndnfARswI1fDAmww2V08v6YC89ldepB9cDmcwa1rarVmV5OB0L1k95VSOKkfAcDcra1IQ3XbAmz3Na2AHqQ/DADtX3ioO8dTzwKKcbdOJt4npga26cuPkkuBiq1SLIbTbfz64CVqoCzGw/q4E2RIt2rW4sgxM+WuANe7c5VntM/bZNfltgNfyRHcieh5epgPb7de3WK1O32w6MBgbVAqzR+1NRPXAeKCOk/wCo0wMPB5NtI1IwKltqL4k7fIwB5AgPrHX0wOZS8l6MJu2lk9NDAq17LxtVqOyxgFO2pPKzc/ywFeJCw6Sjp8MAqd2rDyueMhGAFjlAgm5O+AvbKzcL25dJ5YBy7hAVrY6iwnwwK4n/APZsmgeHwwILdiih3Cr0GzEeOBbUJ3ncRwAO6PJ7n5CPtiIwK90MRHjtgC0r919V+M4HO1L9y7fnfTYmKx5GB2C6TPEPEwNraSzxh0gT/fA52p2+KWnuT1F5ePTARr2zTlD1hXA6DMLB9PpgTa9aiW22eIz9MDFfYNYjebK/pGBgbacuVfCun1wNFaK8tFnpFfLAkvaz7BQ8dPlLgPHuqn5XmH26aGAHKtStr89fusGvwMCudxRanHWNV9MCPb/6anGeJ0rtPnHTAbV7sca9ynbqmnjOA0retQvb3VNz++BWzxI12nZ+GBosEMBHywJIV90xvO3++Bo7Y/fH/wCUa4G+726afH9cBmlSInyGcA/IElSA6JGBE3Raca26HT4zgVXlbRhTchf7YF8ah7UF3cCY7alUm1ZhcBt263AT21Z0YV+GAAtmsiU29uvxcAr3a2//AK+H+ukYFiJESnRcAap7vHr4eGmBRBAvK3gQTgcnuVqtWvBt/I1080wKDujC1tXSF3+JgN+3ReVzl5MNfk4BWuozweh0+OBP52q1K8YfdM6+ZGBQtmdDro6w+uAWrryU5Dpvgb8mvuSo7x++Bc14+1Gp0MDmpb227bWj/In68cBe3Xe1SxXbQn0lwHevttXth9xouAVVHhet/DQj6YBzb6Ptjqak4FVv7RtM+Eb+eBR3BiNXrGAsJrbgDvtPzwJsayiVPB0wNU61U8J2wDuVYKtmH+RonpGAVNYe5M6ooOANywPb/wC2jpMx+prgUW1itGtfHTj8sDVsshYsV2CZ/pgNOIyqr1d8DcBtPN4vSYZwNNa7WXpprgB3OZFbqmz/AFwJanchta1npxfbga3/AJa2R1L12syP03wGO0aCq6LrvgMxXjLB0nX54GizXjNKVttH998Ae0jW1Y5dLeJ564FNXfZ66xgYrbUtxY2ll+OBPG2te5262Lf47SeuA8eKScNNI1+uBuNbDC+ouAkDqJOBLKzUpdr0nX54GVeiPRk+muBn8+1LFpJmx/TAKd1//vrxsaeWvhgXW0rxN9nQ/wB8Cnke51DpofHAn2snHjOpaN8DcrFiROXj9IjAptocj9f0wJdJKQ234pp+mAHbsvOys/w3DAfwGgLU8DAinaaKvdr3O3tx008pwOtdJIUHaNPhgR+K9Za3sl3WtraB5aYGfxcg7tq17hrUkH9dcCuFeXKZtY05dPQcAeNRlXxnePLAOVrVmmqbX/qYEWteu48reAvy2MDoT3KxarKdY+eBP/XWvGwOuhGn6YCcn7Sp5r/TAyDowWjR3wCbWeFpX/IrA+U64CEfbX94wK2338OuES1Fnk18v9ThUlb2lfbXo1df00wK/wCyNL1sHWJcDXvcQ2q9ScCitnb2+QDOAXvWqcvcvgTgFe5XWtTiu06TgVzqscXkaco1wEtWpFkPDfbA1tINK16M/pgS9os8rNu4f4v2nwwC35bTSlSkactH5DgWc6kW1TqGmAWK2PdCG0nXywJ2ZKe3xWJ+GBpWRgq7TtHXArh/hBPgGBveRrU8n67YG5Og1Y/yjb64GUrGklvLAm1KyMEusTq4DUrqHt+X7YEB2qrapaz1UXAp1NJH/HywFryjeTacAT8e9Yr4i/pgatix7NuvXAxRLSPOejaQ9CMCuGk7TubnywNSLEV5I7qQehOBN+2W0tBGyuuBrVqwOqbLtPwwA5Jxu1Q8J2wFt20gDXycBpWsHudNNZMBQGQ0NuJ+uBJesQpROjAx6YBzsoNh6EST8cDcrw8CHZ5kK+uBXuNeMXiZ1f0wIbduPse5brFdn44Ge12LWLWA7ltSxvGBVe0R7rtjoaEevjgqbvFAXksgT9cCy06WG07PngSlre5DTaVwDnasQjZ3rb2/KDAVqgulXdXAxXtE7A+eBit/cEFT7evzwBrd48f4umqHprgZe0+17QJrtMPwwOntUk+enxwCDkiDHWXAW4IOs9DfzcCbXEalTy5e0wMVsqAVg3N/ngdKmkWeeBprU0+06YBY56IxY32jywJaG7ITtt/vOAnbY0Wk/wCOnyHAK8491WXSOmAfg7S69utV3j+u+BP/AOv2a7NmGQtZsV9JwLtxgqraPr64GikSaptH6b4Gr+STQudZdvTfAm92t4FtO+nj54GW6NTuNbb7Fv00wNCEkHRU1wKDlpW7V6wf1MBtW41i0xueOADWzxVH129MDaU0qvceus4CNre2YTa0TgHKmjziWImN'
    $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

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

#6 ·  Posted (edited)

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

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

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

#9 ·  Posted (edited)

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

#10 ·  Posted (edited)

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

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

#12 ·  Posted (edited)

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

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

1 person likes this

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

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

#15 ·  Posted (edited)

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

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

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

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

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

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

    • 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 $iXScale = 8 Global $iYScale = $iXScale Global $sFileSave = @ScriptDir & "\DrawPath.txt" ;Default Global $b_ClosePath = False Global $b_ShowImage = False Global $sImagefile = "" Global $iUndo_Max = 50 Global $a_sUndo_Files[1] = [""] Global $a_sRedo_Files[1] = [""] Global $aPath_Points[1][2] = [[0, 0]] Global $aPath_Rot_Points Global $Form1 = GUICreate("Draw Path Points", 615, 437, 192, 124) Global $SelSquare = 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 $aCtl1[$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 $aCtl2[$aCtl2_LAST] Control_Create_Group2() ;------------------------------------------------------------------------------- Global $Btn_load = GUICtrlCreateButton("Load", 5, 1, 35, 20) Global $Btn_save = GUICtrlCreateButton("Save", 40, 1, 35, 20) Global $Btn_arr_disp = GUICtrlCreateButton("Array", 75, 1, 35, 20) Global $Edit_encoded = GUICtrlCreateEdit("", 115, 2, 50, 18, $ES_READONLY + $ES_AUTOHSCROLL, $WS_EX_STATICEDGE + $WS_EX_TRANSPARENT) Global $List1 = GUICtrlCreateListView("#|x|y", 5, 24, 161, 201, $LVS_SHOWSELALWAYS Or $LVS_SINGLESEL) Global $List1_LVN = GUICtrlCreateDummy() ;listview notifications Global $Image1 = GUICtrlCreatePic("", 200, 16, 400, 400, -1, $WS_EX_LAYERED) Global $Tab1 = 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($aCtl2) - 1 GUICtrlSetState($aCtl2[$i], $GUI_HIDE) Next GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") List_Update() List_Index() GUISetState(@SW_SHOW) State_Save($aPath_Points) Points_Update($aPath_Points) While 1 $nMsg = GUIGetMsg() If $nMsg > 0 And $nMsg <> $aCtl2[$eC2_ud_rot] And $nMsg <> $aCtl2[$eC2_edit_rot] And GUICtrlRead($aCtl2[$eC2_edit_rot]) <> 0 Then ;ConsoleWrite("Cancel_Rotate? " & $nMsg & @CRLF) If MsgBox($MB_ICONQUESTION + $MB_OKCANCEL + $MB_DEFBUTTON2, "Save?", "Save Rotated Points?", 10) == $IDOK Then _GUICtrlEdit_SetText($aCtl2[$eC2_edit_rot], "0") $aPath_Points = $aPath_Rot_Points State_Save($aPath_Points) List_Update(List_Index()) Else _GUICtrlEdit_SetText($aCtl2[$eC2_edit_rot], "0") Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, List_Index()) ;, True) EndIf EndIf Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Tab1 Tab1_Select() Case $SelSquare ;ConsoleWrite("SelSquare" & @CRLF) SelSquare_Drag() Case $List1 ;ConsoleWrite("List1 " & $nMsg & @CRLF) Local $iIndex = List_Index() If $iIndex <> -1 Then Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $iIndex) _GUICtrlListView_SetItemSelected($List1, $iIndex, True, True) EndIf Case $List1_LVN Point_Selected($aPath_Points, $Image1, List_Index()) Case $List1_LVN Case $Image1 Image1_Clicked() Case $Btn_save Btn_save_Clicked() Case $Btn_load Btn_load_Clicked() Case $Btn_arr_disp _ArrayDisplay($aPath_Points) ;------------------------------------------------------------------- Case $aCtl1[$eC1_shift_up] Local $iIndex = List_Index() Point_Swap($iIndex, -1) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_shift_dn] Local $iIndex = List_Index() Point_Swap($iIndex, 1) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_del_all] $aPath_Points = 0 Dim $aPath_Points[1][2] = [[0, 0]] List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_delete] Local $iIndex = List_Index() Point_Delete($iIndex) _GUICtrlListView_ClickItem($List1, $iIndex) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_redo] $aPath_Points = State_Restore($aPath_Points, False) List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_undo] $aPath_Points = State_Restore($aPath_Points, True) List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Case $aCtl1[$eC1_update] List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) Ascii_Points($aPath_Points) _GUICtrlEdit_SetSel($Edit_encoded, 0, -1) Case $aCtl1[$eC1_closepath] $b_ClosePath = Control_IsChecked($aCtl1[$eC1_closepath]) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) If $b_ClosePath Then GUICtrlSetState($aCtl2[$eC2_rev], $GUI_DISABLE) Else GUICtrlSetState($aCtl2[$eC2_rev], $GUI_ENABLE) EndIf Case $aCtl1[$eC1_showimg] If Not $b_ShowImage Then $sImagefile = FileOpenDialog("Select an image", SplitDir($sImagefile), "All Files(*.*)", 0, SplitFileName($sImagefile), $Form1) EndIf $b_ShowImage = Control_IsChecked($aCtl1[$eC1_showimg]) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) ;------------------------------------------------------------------- Case $aCtl2[$eC2_zin] If Control_IsChecked($aCtl2[$eC2_toall]) Then Points_Scale(1, 1) Else $iXScale += 1 $iYScale += 1 Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf _GUICtrlListView_ClickItem($List1, List_Index()) Case $aCtl2[$eC2_zout] If Control_IsChecked($aCtl2[$eC2_toall]) Then Points_Scale(-1, -1) Else $iXScale -= 1 $iYScale -= 1 Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf _GUICtrlListView_ClickItem($List1, List_Index()) Case $aCtl2[$eC2_rev] Local $iIndex = List_Index() $aPath_Points = Points_Reverse($aPath_Points) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $iIndex) ;, True) List_Update($iIndex) Case $aCtl2[$eC2_edit_rot] ;ConsoleWrite("Rotate" & @CRLF) Local $iIndex = List_Index() Local $iDegrees = GUICtrlRead($aCtl2[$eC2_edit_rot]) $aPath_Rot_Points = Points_Rotate($aPath_Points, $iDegrees) Points_Update($aPath_Rot_Points, $b_ClosePath, $b_ShowImage, $iIndex) ;, True) Case $aCtl2[$eC2_incx] Point_Adjust(1, 0, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_decx] Point_Adjust(-1, 0, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_incy] Point_Adjust(0, 1, Control_IsChecked($aCtl2[$eC2_toall])) Case $aCtl2[$eC2_decy] Point_Adjust(0, -1, Control_IsChecked($aCtl2[$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($Edit_encoded, $sAscEnc) EndFunc ;==>Ascii_Points Func Btn_load_Clicked() ConsoleWrite("Load: " & SplitDir($sFileSave) & @CRLF) $sFileSave = FileOpenDialog("Select a save file", SplitDir($sFileSave), "All Files(*.*)", 0, SplitFileName($sFileSave), $Form1) _FileReadToArray($sFileSave, $aPath_Points, 0, ",") If @error Then Dim $aPath_Points[1][2] = [[0, 0]] Else State_Destroy() State_Save($aPath_Points) EndIf List_Update() Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Btn_load_Clicked Func Btn_save_Clicked() List_Update(List_Index()) $sFileSave = FileOpenDialog("Select a save file", SplitDir($sFileSave), "All Files(*.*)", 0, SplitFileName($sFileSave), $Form1) _FileWriteFromArray($sFileSave, $aPath_Points, 0, Default, ",") EndFunc ;==>Btn_save_Clicked Func Control_Create_Group1() Local $iX = 30 Local $iY = 225 $aCtl1[$eC1_delete] = GUICtrlCreateButton("Delete", $iX + 0, $iY + 0, 50, 20) $aCtl1[$eC1_shift_dn] = GUICtrlCreateButton("+", $iX + 70, $iY + 0, 20, 20) $aCtl1[$eC1_shift_up] = GUICtrlCreateButton("-", $iX + 95, $iY + 0, 20, 20) $aCtl1[$eC1_del_all] = GUICtrlCreateButton("Delete All", $iX + 0, $iY + 25, 50, 20) $aCtl1[$eC1_update] = GUICtrlCreateButton("Update", $iX + 70, $iY + 25, 50, 20) $aCtl1[$eC1_undo] = GUICtrlCreateButton("Undo", $iX + 0, $iY + 50, 50, 20) $aCtl1[$eC1_redo] = GUICtrlCreateButton("Redo", $iX + 70, $iY + 50, 50, 20) GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) $aCtl1[$eC1_closepath] = GUICtrlCreateCheckbox("Complete", $iX + 0, $iY + 70, 65, 25) $aCtl1[$eC1_showimg] = GUICtrlCreateCheckbox("Image", $iX + 0, $iY + 90, 65, 25) $aCtl1[$eC1_lock] = GUICtrlCreateCheckbox("Locked", $iX + 0, $iY + 110, 65, 25) EndFunc ;==>Control_Create_Group1 Func Control_Create_Group2() Local $iX = 30 Local $iY = 225 $aCtl2[$eC2_rev] = GUICtrlCreateButton("Reverse", $iX + 0, $iY + 0, 50, 20) $aCtl2[$eC2_edit_rot] = GUICtrlCreateInput("0", $iX + 0, $iY + 25, 40, 20) $aCtl2[$eC2_ud_rot] = GUICtrlCreateUpdown(-1) GUICtrlSetLimit($eC2_ud_rot, 360, -360) $aCtl2[$eC2_rot] = GUICtrlCreateButton("", $iX + 40, $iY + 25, 10, 20) $aCtl2[$eC2_dgroup] = GUICtrlCreateGroup("Coords", 5 + $iX + 70, $iY + 0, 55, 70) $aCtl2[$eC2_decy] = GUICtrlCreateButton("-", 24 + $iX + 70, 16 + $iY + 0, 17, 17) $aCtl2[$eC2_incy] = GUICtrlCreateButton("+", 24 + $iX + 70, 48 + $iY + 0, 17, 17) $aCtl2[$eC2_decx] = GUICtrlCreateButton("-", 8 + $iX + 70, 32 + $iY + 0, 17, 17) $aCtl2[$eC2_incx] = GUICtrlCreateButton("+", 40 + $iX + 70, 32 + $iY + 0, 17, 17) GUICtrlCreateGroup("", -99, -99, 1, 1) $aCtl2[$eC2_zout] = GUICtrlCreateButton("Zoom -", $iX + 0, $iY + 75, 50, 20) $aCtl2[$eC2_zin] = GUICtrlCreateButton("Zoom +", $iX + 75, $iY + 75, 50, 20) $aCtl2[$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, $b_ClosePath, $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)) $hEndCap = _GDIPlus_ArrowCapCreate(1, 1) _GDIPlus_PenSetCustomEndCap($hPen, $hEndCap) If $b_ClosePath Then _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints, $hPen) Local $iX0, $iY0, $iX1, $iY1 For $i = 1 To $aPoints[0][0] If Not $b_ClosePath 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($aCtl1[$eC1_lock]) Then Local $aCPos = ControlGetPos(GUICtrlGetHandle($Image1), "", 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($aPath_Points, $b_ClosePath, $b_ShowImage) Else ToolTip("Locked") Sleep(500) ToolTip("") EndIf EndFunc ;==>Image1_Clicked Func List_Index() Static Local $hWndList1 = GUICtrlGetHandle($List1) Local $iIndex = _GUICtrlListView_GetSelectionMark($hWndList1) If _GUICtrlListView_GetItemSelected($List1, $iIndex) Then Return $iIndex Return -1 EndFunc ;==>List_Index Func List_Update($iIndex = -1) Static $hWnd_List1 = GUICtrlGetHandle($List1) _GUICtrlListView_BeginUpdate($List1) _GUICtrlListView_DeleteAllItems($hWnd_List1) For $i = 0 To UBound($aPath_Points) - 1 GUICtrlCreateListViewItem($i & "|" & $aPath_Points[$i][0] & "|" & $aPath_Points[$i][1], $List1) Next If $iIndex > -1 Then _GUICtrlListView_ClickItem($List1, $iIndex) _GUICtrlListView_EnsureVisible($List1, $iIndex) EndIf _GUICtrlListView_EndUpdate($List1) EndFunc ;==>List_Update Func Point_Add($iIndex, $iX, $iY) If $iIndex <> -1 Then _ArrayInsert($aPath_Points, $iIndex, $iX & "|" & $iY, 0) _GUICtrlListView_InsertItem($List1, $iIndex, $iIndex) _GUICtrlListView_SetItemText($List1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($List1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($List1, $iIndex) Else _ArrayAdd($aPath_Points, $iX & "|" & $iY, 0) GUICtrlCreateListViewItem(UBound($aPath_Points) - 1 & "|" & $iX & "|" & $iY, $List1) _GUICtrlListView_EnsureVisible($List1, UBound($aPath_Points) - 1) EndIf State_Save($aPath_Points) EndFunc ;==>Point_Add Func Point_Adjust($iX, $iY, $bToAll) If Not $bToAll Then Local $iIndex = List_Index() If $iIndex == -1 And IsArray($aPath_Points) Then $iIndex = UBound($aPath_Points) - 1 If $iIndex == -1 Then Return $aPath_Points[$iIndex][0] += $iX $aPath_Points[$iIndex][1] += $iY _GUICtrlListView_SetItemText($List1, $iIndex, $aPath_Points[$iIndex][0], 1) _GUICtrlListView_SetItemText($List1, $iIndex, $aPath_Points[$iIndex][1], 2) If $iIndex <> UBound($aPath_Points) - 1 Then _GUICtrlListView_ClickItem($List1, $iIndex) Else For $i = 0 To UBound($aPath_Points) - 1 $aPath_Points[$i][0] += $iX $aPath_Points[$i][1] += $iY Next List_Update(List_Index()) EndIf State_Save($aPath_Points) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Point_Adjust Func Point_Delete($iIndex) If $iIndex <> -1 Then _ArrayDelete($aPath_Points, $iIndex) _GUICtrlListView_DeleteItem($List1, $iIndex) State_Save($aPath_Points) ;List_Update($iIndex) EndIf EndFunc ;==>Point_Delete Func Point_Modify($iIndex, $iX, $iY) If $iIndex <> -1 Then $aPath_Points[$iIndex][0] = $iX $aPath_Points[$iIndex][1] = $iY _GUICtrlListView_SetItemText($List1, $iIndex, $iX, 1) _GUICtrlListView_SetItemText($List1, $iIndex, $iY, 2) _GUICtrlListView_EnsureVisible($List1, $iIndex) State_Save($aPath_Points) EndIf EndFunc ;==>Point_Modify Func Point_Selected($aPts, $hImage, $iIndex) If $iIndex > -1 Then GUICtrlSetState($SelSquare, $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($SelSquare), "", $iXs, $iYs, ScaleX(1), ScaleY(1)) GUICtrlSetState($SelSquare, $GUI_SHOW) ;ConsoleWrite("Point_Selected" & @CRLF) Else ConsoleWriteError("Error: Point_Selected" & @CRLF) EndIf EndIf EndFunc ;==>Point_Selected Func Point_Swap($iIndex1, $iNext) _GUICtrlListView_BeginUpdate($List1) Local $iIndex2 If $iIndex1 <> -1 Then $iIndex2 = $iIndex1 + $iNext If $iIndex2 > UBound($aPath_Points) - 1 Then $iIndex2 = 0 ElseIf $iIndex2 < 0 Then $iIndex2 = UBound($aPath_Points) - 1 EndIf _ArraySwap($aPath_Points, $iIndex1, $iIndex2) Local $iX1 = _GUICtrlListView_GetItemText($List1, $iIndex1, 2) Local $iY1 = _GUICtrlListView_GetItemText($List1, $iIndex1, 2) Local $iX2 = _GUICtrlListView_GetItemText($List1, $iIndex2, 2) Local $iY2 = _GUICtrlListView_GetItemText($List1, $iIndex2, 2) _GUICtrlListView_SetItemText($List1, $iIndex1, $iX2, 1) _GUICtrlListView_SetItemText($List1, $iIndex1, $iY2, 2) _GUICtrlListView_SetItemText($List1, $iIndex2, $iX1, 1) _GUICtrlListView_SetItemText($List1, $iIndex2, $iY1, 2) _GUICtrlListView_ClickItem($List1, $iIndex2) _GUICtrlListView_EnsureVisible($List1, $iIndex2) Else ;ConsoleWrite("Array Shift" & @CRLF) If $iNext > 0 Then ;ARRAY SHIFT -- Melba23 Local $iUBound = UBound($aPath_Points) ; Get size of array Local $aTmp = _ArrayExtract($aPath_Points, 0, $iUBound - 2) ; Extract all but last _ArrayInsert($aTmp, 0, _ArrayExtract($aPath_Points, $iUBound - 1, Default)) ; Insert last at top $aPath_Points = $aTmp Else Local $aTmp = _ArrayExtract($aPath_Points, 1, Default) ; Extract all but top row _ArrayAdd($aTmp, _ArrayExtract($aPath_Points, 0, 0)) ; Add top row at bottom $aPath_Points = $aTmp EndIf List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndIf State_Save($aPath_Points) _GUICtrlListView_EndUpdate($List1) EndFunc ;==>Point_Swap Func Points_Reverse($aPts) Local $hPath = GDI_Line_hPath_From_Points($aPts, 0, 0) ;_GDIPlus_PathFlatten($hPath) _GDIPlus_PathReverse($hPath) $aPoints = _GDIPlus_PathGetPoints($hPath) _GDIPlus_PathDispose($hPath) If IsArray($aPoints) Then ;ConsoleWrite("Flipped_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_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 $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($aPath_Points) - 1 If $iScaleX > 0 Then $aPath_Points[$i][0] *= 2 Else $aPath_Points[$i][0] /= 2 EndIf If $iScaleY > 0 Then $aPath_Points[$i][1] *= 2 Else $aPath_Points[$i][1] /= 2 EndIf Next State_Save($aPath_Points) List_Update(List_Index()) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage) EndFunc ;==>Points_Scale Func Points_Update($aPts, $b_ClosePath = False, $b_Show_Image = True, $iSelected = -1) Local $_Image_File = $sImagefile If Not $b_Show_Image Then $_Image_File = "" GDI_Draw_ArrayPoints($aPts, $Image1, $b_ClosePath, 0, 0, $_Image_File, $iSelected) EndFunc ;==>Points_Update Func ScaleX($iX) Local $iXs = $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 = $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($Form1) Local $aPosSelOrig = ControlGetPos($Form1, "", $SelSquare) If IsArray($aPosSelOrig) Then Local $iSubtractX = $cInfo[0] - $aPosSelOrig[0] Local $iSubtractY = $cInfo[1] - $aPosSelOrig[1] EndIf If IsArray($cInfo) Then Do $cInfo = GUIGetCursorInfo($Form1) ControlMove($Form1, "", $SelSquare, $cInfo[0] - $iSubtractX, $cInfo[1] - $iSubtractY) Until Not $cInfo[2] EndIf Local $aPosSelNew = ControlGetPos($Form1, "", $SelSquare) If IsArray($aPosSelNew) And IsArray($aPosSelOrig) Then Local $iXm = $aPath_Points[$iIndex][0] + Int(($aPosSelNew[0] - $aPosSelOrig[0]) / ScaleX(1)) Local $iYm = $aPath_Points[$iIndex][1] + Int(($aPosSelNew[1] - $aPosSelOrig[1]) / ScaleY(1)) Point_Modify($iIndex, $iXm, $iYm) Points_Update($aPath_Points, $b_ClosePath, $b_ShowImage, $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) > $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($a_sRedo_Files) > 1) $sTmp = _ArrayPop($a_sRedo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (ReD) " & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) If $bRedo_Only Then Return While (UBound($a_sUndo_Files) > 1) $sTmp = _ArrayPop($a_sUndo_Files) If $sTmp <> "" And FileExists($sTmp) Then FileDelete($sTmp) ;ConsoleWrite(", Delete (UnD)" & $sTmp) If @error Then ConsoleWriteError("Failed to Delete " & $sTmp) EndIf WEnd GUICtrlSetState($aCtl1[$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($a_sUndo_Files) ;ConsoleWrite(", Restore (UnD)" & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($a_sRedo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($a_sUndo_Files) < 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) If UBound($a_sRedo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_redo], $GUI_ENABLE) If UBound($a_sUndo_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($a_sRedo_Files) ;ConsoleWrite(", Restore (ReD) " & $sTmp) If $sTmp <> "" And FileExists($sTmp) Then _ArrayAdd($a_sUndo_Files, $sTmp) _FileReadToArray($sTmp, $aRes, 0, ",") If UBound($a_sRedo_Files) < 2 Then GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) If UBound($a_sUndo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_ENABLE) If UBound($a_sRedo_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, $bClean = True) If $iUndo_Max < 1 Then Return Local $bFileDiff = True Local $sTmp = _TempFile(@TempDir, "DPP_") If UBound($a_sRedo_Files) > 2 Then _ArrayAdd($a_sUndo_Files, _ArrayPop($a_sRedo_Files)) _ArrayAdd($a_sUndo_Files, $sTmp) _FileWriteFromArray($sTmp, $aPath_Points, 0, Default, ",") If UBound($a_sRedo_Files) > 2 Then State_Destroy(True) State_Cleanup($a_sUndo_Files) ;ConsoleWrite("Save State " & UBound($a_sUndo_Files) & " " & $sTmp & @CRLF) If UBound($a_sUndo_Files) > 2 Then GUICtrlSetState($aCtl1[$eC1_undo], $GUI_ENABLE) If @error Then MsgBox(0, @ScriptName & " Error", "Unable to create undo file " & $sTmp) GUICtrlSetState($aCtl1[$eC1_undo], $GUI_DISABLE) GUICtrlSetState($aCtl1[$eC1_redo], $GUI_DISABLE) $iUndo_Max = 0 EndIf EndFunc ;==>State_Save Func Tab1_Select() Local $iStateCtl1, $iStateCtl2 Local $tabindex = GUICtrlRead($Tab1) ;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($Tab1, 0) Return EndSelect For $i = 0 To UBound($aCtl1) - 1 GUICtrlSetState($aCtl1[$i], $iStateCtl1) Next For $i = 0 To UBound($aCtl2) - 1 GUICtrlSetState($aCtl2[$i], $iStateCtl2) Next EndFunc ;==>Tab1_Select Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) Static Local $hWndList1 = GUICtrlGetHandle($List1) If Not IsHWnd($hWndList1) Then $hWndList1 = GUICtrlGetHandle($List1) If @error Then Return $GUI_RUNDEFMSG If $wParam = $List1 Then Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam) Local $iCode = DllStructGetData($tNMHDR, "Code") Switch DllStructGetData($tNMHDR, "Code") Case $LVN_KEYDOWN, $NM_CLICK GUICtrlSendToDummy($List1_LVN, $lParam) EndSwitch EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY  


    • 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
    • UEZ
      By UEZ
      I saw this code here: http://zoomquilt.org/ and here: http://arkadia.xyz and thought how this can be implemented in AutoIt. Here the results.
       
      The Zoomquilt:
      ;coded by UEZ build 2018-01-10, idea and images taken from http://zoomquilt.org/ ;thanks to spudw2k for the MouseZoom function #pragma compile(Icon, "c:\Program Files (x86)\AutoIt3\Icons\au3.ico") #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe /rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit, $iW, $iH Global Const $sTitle = "GDI Image Zoom v2.1.2 coded by UEZ" AutoItSetOption("GUIOnEventMode", 1) Downloader() GDIPlus_ZoomImage() AutoItSetOption("GUIOnEventMode", 0) _GDIPlus_Shutdown() Func GDIPlus_ZoomImage($bMultimonitor = False) $bExit = False Local $i, $aImages[46], $hImage, $hObj ConsoleWrite("Loading images from local disk..." & @CRLF) Local $fTimer = TimerInit() For $i = 0 To UBound($aImages) - 1 $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\TheZoomquilt" & StringFormat("%02i.jpg", $i)) $aImages[$i] = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) _GDIPlus_ImageDispose($hImage) Next ConsoleWrite(UBound($aImages) & " images loaded in " & TimerDiff($fTimer) & " ms" & @CRLF) Local $tDim = DllStructCreate($tagBITMAP) DllCall("GDI32.dll", 'int', 'GetObject', 'int', $aImages[0], 'int', DllStructGetSize($tDim), 'ptr', DllStructGetPtr($tDim)) $iW = $tDim.bmWidth $iH = $tDim.bmHeight Local $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]"), $aFullScreen[4], $iW_Dt, $iH_Dt $aFullScreen = WinGetPos($hFullScreen) If $bMultimonitor Then $iW_Dt = $aFullScreen[2] $iH_Dt = $aFullScreen[3] Else $iW_Dt = @DesktopWidth $iH_Dt = @DesktopHeight $aFullScreen[0] = "" $aFullScreen[1] = "" EndIf $hGUI = GUICreate($sTitle, $iW_Dt, $iH_Dt, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, $WS_EX_TOPMOST) GUISetState(@SW_SHOW, $hGUI) GUISetCursor(16, 1) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW_Dt, $iH_Dt) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hMemDC = _WinAPI_CreateCompatibleDC($hDC) _WinAPI_SetStretchBltMode($hDC_backbuffer, $STRETCH_DELETESCANS) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hBrush_Clr = _GDIPlus_BrushCreateSolid(0xFF000000), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xFFFFFFFF), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 130, 16) $iFPS = 0 GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") AdlibRegister("CalcFPS", 1000) Local $a[3], $b = 1, $c, $x, $e, $y, $w, $h, $w2 = $iW_Dt / 2, $h2 = $iH_Dt / 2, $q, $r If $iW_Dt > 1.5 * $iH_Dt Then $q = $iW_Dt $r = 0.75 * $iW_Dt Else $q = 1.5 * $iH_Dt $r = 0.75 * $iH_Dt EndIf Do For $e = 0 To 2 $a[$e] = $aImages[Mod(Floor($b) + $e, UBound($aImages))] Next $c = 2^(Mod($b, 1)) For $e = 0 To 2 $x = $w2 - $q / 2 * $c $y = $h2 - $r / 2 * $c $w = $q * $c $h = $r * $c $hObj = _WinAPI_SelectObject($hMemDC, $a[$e]) _WinAPI_StretchBlt($hDC_backbuffer, $x, $y, $w, $h, $hMemDC, 0, 0, $iW, $iH, $SRCCOPY) $c *= 0.5 Next $b += MouseZoom() IF $b < 0 Then $b = UBound($aImages) - $b _GDIPlus_GraphicsDrawStringEx($hCanvas, "FPS: " & $iShowFPS & " @ " & $iW_Dt & "x" & $iH_Dt & " px", $hFont_FPS, $tLayout_FPS, $hFormat_FPS, $hBrush_FPS) _WinAPI_BitBlt($hDC, 0, 0, $iW_Dt, $iH_Dt, $hDC_backbuffer, 0, 0, $SRCCOPY) $iFPS += 1 If $bExit Then ExitLoop Until Not Sleep(0) AdlibUnRegister("CalcFPS") ;release resources _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hMemDC, $hObj) _WinAPI_DeleteDC($hMemDC) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) For $i = 0 To UBound($aImages) - 1 _WinAPI_DeleteObject($aImages[$i]) Next GUIDelete($hGUI) EndFunc ;==>GDIPlus_ZoomImage Func MouseZoom() ;https://www.arduino.cc/reference/en/language/functions/math/map/ Local $iInput = MouseGetPos(1), $iInMin = 0, $iInMax = @DesktopHeight, $iOutMin = 1, $iOutMax = -1, $iStep = 0.025 Return (($iInput - $iInMin) * ($iOutMax - $iOutMin) / ($iInMax - $iInMin) + $iOutMin) * $iStep EndFunc ;MouseZoom() Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS Func Downloader() Local $i, $A = StringSplit("FUjD9hf gbHhxTR 8YyzJdR xP3aNkR 2Qi4fQr E6pW5Ky zmtWIBF Af7LtYp TuXy30d 3nKGLr2 hNoWscB mSBvv3K f4wJ70e mIt9XmM M4TkAyh P4L4qhd hNM6bTv VoT8JXM jqcGH0B DYVoN8n bOPQkOI NeaTfJ1 18ppMNr FZ3d8Jv HsoX2RP mjv4kzI 6rpJbef pySKauq WjNQYRV Ffooo8y Xei5XfD T5A415r LiV0VNB nGcwiO4 b1Gdjjy GE828iy eSQ7SLe 1mPyGgL GNtwJIr KxBlU7E aKXhms5 9Quu2wu Y07quDf r0yC5Qa 273fCkD 2wMyCUw FUjD9hf", " ", 2) Local $sURL For $i = 0 To UBound($A) - 1 If Not FileExists(@ScriptDir & "\Images\TheZoomquilt" & StringFormat("%02i.jpg", $i)) Then If Not FileExists(@ScriptDir & "\Images") Then DirCreate(@ScriptDir & "\Images") $sURL = "http://imgur.com/" & $A[Mod(20 + $i, 46)] & ".jpg" ConsoleWrite("Downloading " & $sURL & ": " & InetGet($sURL, @ScriptDir & "\Images\TheZoomquilt" & StringFormat("%02i.jpg", $i), 8) & " bytes" & @CRLF) ToolTip("Downloading images...Please wait! -> " & $i + 1 & " / " & UBound($A), MouseGetPos(0), MouseGetPos(1)) EndIf Next ToolTip("") EndFunc ;==>Downloader  
       
      Arkadia:
      ;coded by UEZ build 2018-01-10, idea and images taken from http://arkadia.xyz ;thanks to spudw2k for the MouseZoom function #pragma compile(Icon, "c:\Program Files (x86)\AutoIt3\Icons\au3.ico") #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /pe /rm #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #include <GDIPlus.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit, $iW, $iH Global Const $sTitle = "GDI Image Zoom v2.2.1 coded by UEZ" AutoItSetOption("GUIOnEventMode", 1) Downloader() GDIPlus_ZoomImage() AutoItSetOption("GUIOnEventMode", 0) _GDIPlus_Shutdown() Func GDIPlus_ZoomImage($bMultimonitor = False) $bExit = False Local $i, $aImages[49], $hImage, $hObj ConsoleWrite("Loading images from local disk..." & @CRLF) Local $fTimer = TimerInit() For $i = 0 To UBound($aImages) - 1 $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\Arkadia" & $i & ".jpg") $aImages[$i] = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) _GDIPlus_ImageDispose($hImage) Next ConsoleWrite(UBound($aImages) & " images loaded in " & TimerDiff($fTimer) & " ms" & @CRLF) Local $tDim = DllStructCreate($tagBITMAP) DllCall("GDI32.dll", "int", "GetObject", "int", $aImages[0], "int", DllStructGetSize($tDim), "ptr", DllStructGetPtr($tDim)) $iW = $tDim.bmWidth $iH = $tDim.bmHeight Local $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]"), $aFullScreen[4], $iW_Dt, $iH_Dt $aFullScreen = WinGetPos($hFullScreen) If $bMultimonitor Then $iW_Dt = $aFullScreen[2] $iH_Dt = $aFullScreen[3] Else $iW_Dt = @DesktopWidth $iH_Dt = @DesktopHeight $aFullScreen[0] = "" $aFullScreen[1] = "" EndIf $hGUI = GUICreate($sTitle, $iW_Dt, $iH_Dt, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, $WS_EX_TOPMOST) GUISetState(@SW_SHOW, $hGUI) GUISetCursor(16, 1) ;create canvas elements Local Const $hDC = _WinAPI_GetDC($hGUI) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW_Dt, $iH_Dt) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hMemDC = _WinAPI_CreateCompatibleDC($hDC) _WinAPI_SetStretchBltMode($hDC_backbuffer, $STRETCH_DELETESCANS) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY) Local Const $hBrush_Clr = _GDIPlus_BrushCreateSolid(0xFF000000), _ $hBrush_FPS = _GDIPlus_BrushCreateSolid(0xFFFFFFFF), _ $hFormat_FPS = _GDIPlus_StringFormatCreate(), _ $hFamily_FPS = _GDIPlus_FontFamilyCreate("Arial"), _ $hFont_FPS = _GDIPlus_FontCreate($hFamily_FPS, 8), _ $tLayout_FPS = _GDIPlus_RectFCreate(0, 0, 130, 16) $iFPS = 0 GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About") AdlibRegister("CalcFPS", 1000) Local $a[3], $b = 1, $c, $x, $e, $y, $w, $h, $w2 = $iW_Dt / 2, $h2 = $iH_Dt / 2, $q, $r If $iW_Dt > 1.5 * $iH_Dt Then $q = $iW_Dt $r = 0.75 * $iW_Dt Else $q = 1.5 * $iH_Dt $r = 0.75 * $iH_Dt EndIf Do For $e = 0 To 2 $a[$e] = $aImages[Mod(Floor($b) + $e, UBound($aImages))] Next $c = 2^(Mod($b, 1)) For $e = 0 To 2 $x = $w2 - $q / 2 * $c $y = $h2 - $r / 2 * $c $w = $q * $c $h = $r * $c $hObj = _WinAPI_SelectObject($hMemDC, $a[$e]) _WinAPI_StretchBlt($hDC_backbuffer, $x, $y, $w, $h, $hMemDC, 0, 0, $iW, $iH, $SRCCOPY) $c *= 0.5 Next $b += MouseZoom() IF $b < 0 Then $b = UBound($aImages) - $b _GDIPlus_GraphicsDrawStringEx($hCanvas, "FPS: " & $iShowFPS & " @ " & $iW_Dt & "x" & $iH_Dt & " px", $hFont_FPS, $tLayout_FPS, $hFormat_FPS, $hBrush_FPS) _WinAPI_BitBlt($hDC, 0, 0, $iW_Dt, $iH_Dt, $hDC_backbuffer, 0, 0, $SRCCOPY) $iFPS += 1 If $bExit Then ExitLoop Until Not Sleep(0) AdlibUnRegister("CalcFPS") ;release resources _GDIPlus_FontDispose($hFont_FPS) _GDIPlus_FontFamilyDispose($hFamily_FPS) _GDIPlus_StringFormatDispose($hFormat_FPS) _GDIPlus_BrushDispose($hBrush_Clr) _GDIPlus_BrushDispose($hBrush_FPS) _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hMemDC, $hObj) _WinAPI_DeleteDC($hMemDC) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($hGUI, $hDC) For $i = 0 To UBound($aImages) - 1 _WinAPI_DeleteObject($aImages[$i]) Next GUIDelete($hGUI) EndFunc ;==>GDIPlus_ZoomImage Func MouseZoom() ;https://www.arduino.cc/reference/en/language/functions/math/map/ Local $iInput = MouseGetPos(1), $iInMin = 0, $iInMax = @DesktopHeight, $iOutMin = 1, $iOutMax = -1, $iStep = 0.025 Return (($iInput - $iInMin) * ($iOutMax - $iOutMin) / ($iInMax - $iInMin) + $iOutMin) * $iStep EndFunc ;MouseZoom() Func _Exit_About() $bExit = True EndFunc ;==>_Exit_About Func CalcFPS() ;display FPS $iShowFPS = $iFPS $iFPS = 0 EndFunc ;==>CalcFPS Func Downloader() Local $sURL, $i For $i = 0 To 48 If Not FileExists(@ScriptDir & "\Images\Arkadia" & $i & ".jpg") Then If Not FileExists(@ScriptDir & "\Images") Then DirCreate(@ScriptDir & "\Images") $sURL = "http://arkadia.xyz/images/arkadia" & $i & ".jpg" ConsoleWrite("Downloading " & $sURL & ": " & InetGet($sURL, @ScriptDir & "\Images\Arkadia" & $i & ".jpg", 8) & " bytes" & @CRLF) ToolTip("Downloading images...Please wait! -> " & $i + 1 & " / " & $i, MouseGetPos(0), MouseGetPos(1)) EndIf Next ToolTip("") EndFunc ;==>Downloader  
      The missing images will be download and saved to script dir in folder images. Due to internal integer format of the GDI functions the screen is little bit wobbling.
       
      Happy watching. 
    • Miliardsto
      By Miliardsto
      Hello I have problem with my object drawn in gdi
      Func drawTriangle($tabName,$gui_active = 0) _GDIPlus_Startup() ;initialize GDI+ Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($sGUI[$gui_active]) ;create a graphics object from a window handle _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;sets the graphics object rendering quality (antialiasing) Local $hBrush = _GDIPlus_BrushCreateSolid(0xFFEFEFEF) ;color format AARRGGBB (hex) Local $aPoints[5][3] $aPoints[0][0] = 4 $aPoints[1][0] = 0.0 ; left $aPoints[1][1] = 0.0 ; top $aPoints[2][0] = 0.0 ; left $aPoints[2][1] = 30.0 ; top $aPoints[3][0] = 80.0 ; left $aPoints[3][1] = 30.0 ; top $aPoints[4][0] = 110.0 ; left $aPoints[4][1] = 0.0 ; top _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints, $hBrush) ;draw the triangle Local $fBrush = _GDIPlus_BrushCreateSolid(0xFFAAAAAA) ;color format AARRGGBB (hex) Local $sString = $tabName, $aInfo ; from the func param Local $hFormat, $hFamily, $hFont, $tLayout $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Segoe UI") $hFont = _GDIPlus_FontCreate($hFamily, 12, 2) $tLayout = _GDIPlus_RectFCreate(6, 2) $aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $sString, $hFont, $tLayout, $hFormat) _GDIPlus_GraphicsDrawStringEx($hGraphics, $sString, $hFont, $aInfo[0], $hFormat, $fBrush) ;_GDIPlus_GraphicsDrawString($hGraphics, $tabName, 6, 3, "Segoe UI", 12) ; write text ;cleanup GDI+ resources _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() EndFunc After this code execution I got new object rectangle
      Global $ma_border = GUICtrlCreateGraphic(100, 180, 40, 40) GUICtrlSetGraphic($ma_border, $GUI_GR_COLOR, 0x00000, $COLOR_BLUE) GUICtrlSetGraphic($ma_border, $GUI_GR_RECT, 0, 0, 40, 40) GUICtrlSetState(-1,$GUI_DISABLE) And what happens is first func = draw rectangle is pushed to parameters from GUICtrlCreateGraphic func. Left: 100, Top: 180.
      I can simplu reverse order of these func execution but There is too much things to change in my code.
      Can something be done to prevent this slipping?