Jump to content

Recommended Posts

Do not expect a SVG file as Sodipodi, Inkscape or Adobe Illustrator can generate.
This "converter" doesn't actually trace or convert the image to vector. 
It just embed the bitmap image within an SVG container.

#Region    ;************ Includes ************
#Include <GDIPlus.au3>
#Include <Memory.au3>
#EndRegion ;************ Includes ************

Global $_B64E_CodeBuffer, $_B64E_CodeBufferMemory, $_B64E_Init, $_B64E_EncodeData, $_B64E_EncodeEnd
Global $sFile, $hImage, $iW, $iH, $sType, $hFile, $sBase64String, $sFileRead, $sSvgPath, $sString

_GDIPlus_Startup()

$sFile = FileOpenDialog ( 'Select an Image', @DesktopDir, 'Images (*.jpg;*.png;*.gif;*.bmp)', 1+2 )
If @error Then Exit

$sType = _FileGetType ( $sFile )
If @error Then
    ConsoleWrite ( '! File Type not supported, error : ' & @error & @Crlf )
Else
    $hFile = FileOpen ( $sFile, 16 )
    If $hFile=-1 Then Exit MsgBox ( 262144+4096+16, 'Error', 'Can not Access this file.', 4 )
    $hImage = _GDIPlus_ImageLoadFromFile ( $sFile )
    $iW = _GDIPlus_ImageGetWidth ( $hImage )
    $iH = _GDIPlus_ImageGetHeight ( $hImage )
    _GDIPlus_ImageDispose ( $hImage )
    $sFileRead = FileRead ( $hFile )
    FileClose ( $hFile )
    $sBase64String = _Base64Encode ( $sFileRead, 4000 )
    $sString = '<svg' & @CRLF & _
        '     version="1.1"' & @CRLF & _
        '     xmlns="http://www.w3.org/2000/svg"' & @CRLF & _
        '     xmlns:xlink="http://www.w3.org/1999/xlink"' & @CRLF & _
        '     width="' & $iW & 'px" height="' & $iH & 'px"' & @CRLF & _
        '     viewBox="0 0 ' & $iW & ' ' & $iH & '" preserveAspectRatio="none">' & @CRLF & _
        '   <g>' & @CRLF & _
        '<image width="' & $iW & '" height="' & $iH & '" xlink:href="data:image/' & $sType & ';base64,' & @CRLF & _
        $sBase64String & @CRLF & _
        '"/>' & @CRLF & _
        '   </g>' & @CRLF & _
        '</svg>' & @CRLF
    $sSvgPath = @TempDir & '\' & @HOUR & @MIN & @SEC & @MSEC & '-' & $iW & 'x' & $iH & '.svg'
    $hFile = FileOpen ( $sSvgPath, 1+2+8 )
    If $hFile = -1 Then
        MsgBox ( 262144+4096+16, '', 'An error occurred whilst writing the temporary file.' )
    Else
        FileWrite ( $hFile, $sString )
        FileClose ( $hFile )
        ShellExecute ( 'iexplore.exe', $sSvgPath )
    EndIf
EndIf

_GDIPlus_Shutdown()
Exit

Func _FileGetType ( $sFilePath )
    If Not FileExists ( $sFilePath ) Then Return SetError ( -1 )
    If FileGetSize ( $sFilePath ) = 0 Then Return SetError ( 1, 0, 0 )
    Local $hFile, $Binary, $Ret
    $hFile = FileOpen ( $sFilePath, 16 )
    If $hFile = -1 Then Return SetError ( 3, 0, 0 )
    $Binary = FileRead ( $hFile )
    FileClose ( $hFile )
    Local $sString =  StringTrimLeft ( $Binary, 2 )
    Local $sStringLeft = StringReplace ( StringTrimLeft ( StringLeft ( $Binary, 14 ), 2 ), '00', '' )
    Local $sStringLeft12 = StringLeft ( $sStringLeft, 12 )
    Local $sStringLeft8 = StringLeft ( $sStringLeft, 8 )
    Local $sStringLeft4 = StringLeft ( $sStringLeft, 4 )
    Select
        Case $sStringLeft12 = '474946383961' Or $sStringLeft12 = '474946383761'
            $Ret = 'GIF'
        Case $sStringLeft4 = 'FFD8'
            $Ret = 'JPG'
        Case $sStringLeft4 = '424D'
            $Ret = 'BMP'
        Case $sStringLeft8 = '89504E47'
            $Ret = 'PNG'
        Case Else
            Return SetError ( 2, 0, '' )
    EndSelect
    If $Ret = 'GIF' Then
        StringReplace ( $sString, '0021F904', '0021F904' )
        If @extended > 1 Then Return SetError ( 3, 0, '' ) ; animated gif.
    EndIf
    Return $Ret
EndFunc ;==> _FileGetType()

Func _Base64E_Exit() ; by Ward
    $_B64E_CodeBuffer = 0
    _MemVirtualFree ( $_B64E_CodeBufferMemory, 0, $MEM_RELEASE )
EndFunc ;==> _Base64E_Exit()

Func _Base64Encode ( $Data, $LineBreak=76 ) ; by Ward
    Local $State = _Base64EncodeInit ( $LineBreak )
    Return _Base64EncodeData ( $State, $Data ) &  _Base64EncodeEnd ( $State )
EndFunc ;==> _Base64Encode()

Func _Base64EncodeData ( ByRef $State, $Data ) ; by Ward
    If Not IsDllStruct ( $_B64E_CodeBuffer ) Or Not IsDllStruct ( $State ) Then Return SetError ( 1, 0, '' )
    $Data = Binary ( $Data )
    Local $InputLen = BinaryLen ( $Data )
    Local $Input = DllStructCreate ( 'byte[' & $InputLen & ']' )
    DllStructSetData ( $Input, 1, $Data )
    Local $OputputLen = Ceiling ( BinaryLen ( $Data )*1.4 )+3
    Local $Output = DllStructCreate ( 'char[' & $OputputLen & ']' )
    DllCall ( 'user32.dll', 'int', 'CallWindowProc', 'ptr', DllStructGetPtr ( $_B64E_CodeBuffer )+$_B64E_EncodeData, 'ptr', DllStructGetPtr ( $Input ), 'uint', $InputLen, 'ptr', DllStructGetPtr ( $Output ), 'ptr', DllStructGetPtr ( $State ) )
    Return DllStructGetData ( $Output, 1 )
EndFunc ;==> _Base64EncodeData()

Func _Base64EncodeEnd ( ByRef $State ) ; by Ward
    If Not IsDllStruct ( $_B64E_CodeBuffer ) Or Not IsDllStruct ( $State ) Then Return SetError ( 1, 0, '' )
    Local $Output = DllStructCreate ( 'char[5]' )
    DllCall ( 'user32.dll', 'int', 'CallWindowProc', 'ptr', DllStructGetPtr ( $_B64E_CodeBuffer ) + $_B64E_EncodeEnd, 'ptr', DllStructGetPtr ( $Output ), 'ptr', DllStructGetPtr ( $State ), 'int', 0, 'int', 0 )
    Return DllStructGetData ( $Output, 1 )
EndFunc ;==> _Base64EncodeEnd()

Func _Base64EncodeInit ( $LineBreak=76 ) ; by Ward
    If Not IsDllStruct ( $_B64E_CodeBuffer ) Then
        If @AutoItX64 Then
            Local $Opcode = '0x89C08D42034883EC0885D2C70100000000C64104000F49C2C7410800000000C1F80283E20389410C740683C00189410C4883C408C389C94883EC3848895C242848897424304889CB8B0A83F901742083F9024889D87444C6000A4883C001488B74243029D8488B5C24284883C438C30FB67204E803020000BA3D0000004080FE3F7F08480FBEF60FB614308813C643013D488D4303C643023DEBBC0FB67204E8D7010000BA3D0000004080FE3F7F08480FBEF60FB614308813C643013D488D4302EB9489DB4883EC68418B014863D248895C242848897424304C89C348897C24384C896424484C89CE83F80148896C24404C896C24504C897424584C897C24604C8D2411410FB6790474434D89C64989CD0F82F700000083F8024C89C5747B31C0488B5C2428488B742430488B7C2438488B6C24404C8B6424484C8B6C24504C8B7424584C8B7C24604883C468C34C89C54989CF4D39E70F840B010000450FBE374D8D6F014489F025F0000000C1F80409C7E8040100004080FF3FBA3D0000007F08480FBEFF0FB614384489F78855004883C50183E70FC1E7024D39E50F84B2000000450FB675004983C5014489F025C0000000C1F80609C7E8BD0000004080FF3FBA3D0000007F08480FBEFF0FB61438BF3F0000008855004421F74C8D7502E896000000480FBED70FB604108845018B460883C0013B460C89460875104C8D7503C645020AC7460800000000904D39E5742E410FBE7D004D8D7D01498D6E01E8560000004889FA83E70348C1EA02C1E70483E23F0FB60410418806E913FFFFFF4489F040887E04C7060000000029D8E9CCFEFFFF89E840887E04C7060200000029D8E9B9FEFFFF89E840887E04C7060100000029D8E9A6FEFFFFE8400000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F58C3'
        Else
            Local $Opcode = '0x89C08B4C24088B44240489CAC1FA1FC1EA1E01CAC1FA0283E103C70000000000C6400400C740080000000089500C740683C20189500CC2100089C983EC0C8B4C2414895C24048B5C2410897424088B1183FA01741D83FA0289D87443C6000A83C0018B74240829D88B5C240483C40CC210000FB67104E80C020000BA3D00000089F180F93F7F0989F20FBEF20FB6143088138D4303C643013DC643023DEBBD0FB67104E8DF010000BA3D00000089F180F93F7F0989F20FBEF20FB6143088138D4302C643013DEB9489DB83EC3C895C242C8B5C244C896C24388B542440897424308B6C2444897C24348B030FB6730401D583F801742D8B4C24488954241C0F820101000083F80289CF747D31C08B5C242C8B7424308B7C24348B6C243883C43CC210008B4C244889D739EF0F84400100008D57010FBE3F89542418894C241489F825F0000000C1F80409C6897C241CE8330100008B542418C644240C3D8B4C241489C789F03C3F7F0B0FBEF00FB604378844240C0FB644240C8D790188018B74241C83E60FC1E60239EA0F84CB0000000FB60A83C2018954241C89C825C0000000C1F80609C6884C2414E8D8000000BA3D0000000FB64C24148944240C89F03C3F7F0B0FBEF08B44240C0FB6143083E13F881789CEE8AD00000089F10FBED18D4F020FB604108847018B430883C0013B430C894308750EC647020A8D4F03C7430800000000396C241C743A8B44241C8B7C241C0FBE30894C241483C701E8650000008B4C241489F283E60381E2FC000000C1EA02C1E6040FB60410880183C101E9E4FEFFFF89F088430489C8C703000000002B442448E9B2FEFFFF89F189F8884B04C703020000002B442448E99CFEFFFF89F088430489C8C703010000002B442448E986FEFFFFE8400000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F58C3'
        EndIf
        $_B64E_Init = ( StringInStr ( $Opcode, '89C0' )-3 ) / 2
        $_B64E_EncodeData = ( StringInStr ( $Opcode, '89DB' )-3 ) / 2
        $_B64E_EncodeEnd = ( StringInStr ( $Opcode, '89C9' )-3 ) / 2
        $Opcode = Binary ( $Opcode )
        $_B64E_CodeBufferMemory = _MemVirtualAlloc ( 0, BinaryLen ( $Opcode ), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE )
        $_B64E_CodeBuffer = DllStructCreate ( 'byte[' & BinaryLen ( $Opcode ) & ']', $_B64E_CodeBufferMemory )
        DllStructSetData ( $_B64E_CodeBuffer, 1, $Opcode )
        OnAutoItExitRegister ( '_Base64E_Exit' )
    EndIf
    Local $State = DllStructCreate ( 'byte[16]' )
    DllCall ( 'user32.dll', 'none', 'CallWindowProc', 'ptr', DllStructGetPtr ( $_B64E_CodeBuffer )+$_B64E_Init, 'ptr', DllStructGetPtr ( $State ), 'uint', $LineBreak, 'int', 0, 'int', 0 )
    Return $State
EndFunc ;==> _Base64EncodeInit()

Thanks to Ward for his Base64 functions.

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

Link to post
Share on other sites

Are you trying to write a SVG parser? I started with it but it seems very complicated to parse all kind of SVG files. Good luck if yes.

Anyhow, you can use Potrace (a cmd line tool) to convert a bitmap to a SVG format.

 

My idea was to convert a SVG to pathes which I can use with GDI+ to do some graphical stuff, e.g. a rotating world map.

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites

No, as i said in the first post,  It just embed the bitmap image within an SVG container.

May be it can interest someone...

Potrace is limited to black and white and the quality of the result is not really interesting.

And IMHO, instead of use "pathes" with GDI+, it would be better to work with polygons.

 

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

Link to post
Share on other sites
2 minutes ago, wakillon said:

No, as i said in the first post,  It just embed the bitmap image within an SVG container.

I know but I thought it was primary stage to embed the bitmap...

 

3 minutes ago, wakillon said:

And IMHO, instead of use "pathes" with GDI+, it would be better to work with polygons.

GDI+ pathes are using polygons. ;)

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites

Example

#Region    ;************ Includes ************
#Include <Array.au3>
#include <GDIPlus.au3>
#EndRegion ;************ Includes ************

Global $hGUI, $hGraphic, $hBrush, $hPen, $hPen2, $hPath, $aPoints

$hGUI = GUICreate ( '', 700, 700 )
GUISetState()

_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ( $hGUI )
_GDIPlus_GraphicsSetSmoothingMode ( $hGraphic, $GDIP_SMOOTHINGMODE_HIGHQUALITY )
_GDIPlus_GraphicsClear ( $hGraphic, 0xFFFFFFFF )
$hBrush1 = _GDIPlus_BrushCreateSolid ( 0xFF8800AA )
$hBrush2 = _GDIPlus_BrushCreateSolid ( 0xFFFF00AA )
$hBrush3 = _GDIPlus_BrushCreateSolid ( 0xFF00FF00 )
; Code Generated by ShapeScanner Size=684x689 (reduction level=8) from D:\Bureau\france-silhouette.jpg
Local $aPoints = [[402,0],[148,350],[148,351],[155,358],[162,363],[169,367],[176,372],[183,369],[187,374],[181,381],[182,386],[188,393],[187,400],[183,407],[176,414],[181,421],[188,424],[195,428],[202,435],[205,442],[200,448],[196,441],[189,434],[182,436],[180,443],[179,450],[178,457],[177,464],[177,472],[176,479],[174,486],[179,490],[186,493],[183,500],[176,505],[172,512],[171,519],[170,526],[168,533],[167,540],[165,547],[163,554],[161,561],[158,568],[155,575],[150,582],[143,589],[136,591],[137,597],[144,604],[149,603],[155,609],[150,616],[154,623],[161,616],[164,617],[170,624],[177,627],[184,631],[191,632],[196,639],[203,645],[210,646],[217,643],[224,650],[230,657],[235,656],[242,655],[249,658],[256,657],[263,658],[270,657],[277,652],[279,645],[286,648],[293,650],[300,655],[307,657],[314,660],[318,667],[325,663],[332,665],[339,669],[346,676],[353,680],[359,687],[366,684],[373,680],[380,681],[387,686],[394,688],[401,681],[408,678],[417,678],[424,680],[431,678],[426,671],[419,664],[417,657],[416,650],[417,643],[419,636],[422,629],[426,622],[432,615],[440,615],[447,609],[452,602],[459,596],[466,593],[473,592],[480,597],[496,597],[503,602],[510,605],[517,606],[524,602],[529,603],[536,606],[543,603],[547,608],[548,614],[558,614],[565,617],[572,618],[579,625],[586,620],[593,623],[600,619],[605,620],[610,619],[617,612],[621,613],[628,608],[627,601],[631,594],[638,589],[643,582],[650,576],[657,569],[664,566],[671,559],[670,552],[675,545],[680,538],[679,533],[676,526],[669,529],[662,532],[655,531],[648,528],[641,525],[634,519],[635,512],[630,505],[636,498],[642,491],[638,484],[633,477],[630,478],[623,472],[617,465],[624,459],[631,454],[638,451],[642,444],[643,437],[636,430],[632,423],[628,416],[621,413],[622,406],[629,404],[634,397],[632,390],[625,383],[618,377],[622,370],[621,365],[616,358],[609,357],[602,359],[595,361],[588,366],[589,373],[582,380],[573,380],[574,378],[581,372],[583,365],[578,358],[579,354],[583,347],[590,341],[597,334],[597,326],[603,319],[610,313],[616,306],[622,299],[627,292],[622,285],[623,281],[630,276],[637,281],[644,282],[651,275],[657,268],[652,261],[652,249],[657,242],[656,235],[653,228],[655,221],[657,214],[661,207],[660,200],[662,193],[663,186],[669,179],[674,172],[678,165],[683,158],[682,154],[675,153],[668,150],[661,151],[652,151],[645,148],[638,141],[631,146],[620,146],[613,139],[606,144],[603,143],[599,136],[596,129],[589,122],[582,121],[575,118],[568,122],[561,121],[554,116],[547,117],[540,120],[538,119],[533,112],[526,107],[519,104],[512,98],[507,93],[503,86],[504,81],[507,74],[502,67],[495,72],[491,79],[488,86],[481,88],[474,87],[467,84],[472,77],[468,70],[467,63],[460,58],[455,59],[450,58],[443,53],[437,46],[430,43],[423,42],[420,35],[418,28],[411,23],[404,28],[397,27],[392,21],[389,20],[390,13],[388,6],[381,0],[374,3],[367,4],[360,6],[353,8],[346,10],[339,15],[335,22],[333,29],[334,34],[334,45],[333,52],[332,59],[335,66],[334,71],[327,77],[320,84],[313,88],[306,91],[299,94],[288,94],[281,97],[274,102],[267,106],[260,113],[256,120],[257,127],[256,134],[249,139],[242,138],[235,133],[218,133],[211,131],[204,129],[197,128],[192,121],[195,114],[194,107],[187,104],[182,105],[175,107],[168,104],[161,101],[155,104],[160,111],[159,118],[161,125],[162,132],[167,139],[171,146],[169,153],[171,160],[171,170],[170,177],[175,184],[174,188],[167,189],[160,186],[157,179],[150,182],[143,185],[136,184],[129,182],[122,187],[115,193],[113,192],[109,185],[104,178],[99,171],[95,164],[87,164],[80,166],[73,164],[66,170],[61,177],[54,175],[47,174],[40,175],[33,177],[29,176],[22,178],[16,177],[9,182],[2,189],[0,196],[2,203],[8,206],[12,213],[9,220],[2,222],[3,228],[10,231],[17,233],[20,240],[21,247],[28,249],[35,243],[42,242],[44,243],[47,250],[55,250],[62,252],[69,259],[76,261],[81,268],[87,274],[94,270],[101,275],[108,274],[115,275],[113,282],[115,289],[120,295],[127,296],[133,300],[135,307],[142,311],[138,318],[132,325],[133,329],[140,336],[146,343],[148,350]]

$hPath = _GDIPlus_PathCreate()
$aPoints = _PolygonSetPos ( $aPoints, 120, 150 )
_GDIPlus_PathAddPolygon ( $hPath, $aPoints )
_GDIPlus_GraphicsFillPath ( $hGraphic, $hPath, $hBrush1 )
;
$aPoints73 = _PolygonRescale ( $aPoints, 50, 0, 0 )
_GDIPlus_PathReset ( $hPath )
_GDIPlus_PathAddPolygon ( $hPath, $aPoints73 )
_GDIPlus_GraphicsFillPath ( $hGraphic, $hPath, $hBrush2 )
;
$aPoints57 = _PolygonRescale ( $aPoints, 50, -1, 120 )
$aPoints57 = _PolygonRotate ( $aPoints57, 33 )
_GDIPlus_PathReset ( $hPath )
_GDIPlus_PathAddPolygon ( $hPath, $aPoints57 )
_GDIPlus_GraphicsFillPath ( $hGraphic, $hPath, $hBrush3 )
;
$aPoints15 = _PolygonRescale ( $aPoints, 15 )
$aPoints15 = _PolygonRotate ( $aPoints15, 180 )
_GDIPlus_PathReset ( $hPath )
_GDIPlus_PathAddPolygon ( $hPath, $aPoints15 )
_GDIPlus_GraphicsFillPath ( $hGraphic, $hPath, $hBrush2 )
;
Do
    Sleep ( 20 )
Until GUIGetMsg() = -3
;
_GDIPlus_PathDispose ( $hPath )
_GDIPlus_BrushDispose ( $hBrush3 )
_GDIPlus_BrushDispose ( $hBrush2 )
_GDIPlus_BrushDispose ( $hBrush1 )
_GDIPlus_GraphicsDispose ( $hGraphic )
_GDIPlus_Shutdown()
Exit

Func _PolygonRescale ( $aPoints, $Percent, $xPos= -1, $yPos = -1 )
    If UBound ( $aPoints, 2 ) <> 2 Then Return SetError ( 1, 0, '' )
    If $Percent < 1 Then $Percent = 1
    Local $aSize = _PolygonGetSize ( $aPoints ), $aPos = _PolygonGetPos ( $aPoints )
    If $xPos = -1 Then $xPos = $aPos[0] + $aSize[0]/2*( 1 - $Percent/100 )
    If $yPos = -1 Then $yPos = $aPos[1] + $aSize[1]/2*( 1 - $Percent/100 )
    For $i = 1 To UBound ( $aPoints ) -1
        $aPoints[$i][0] = $xPos + $Percent*( $aPoints[$i][0] - $aPos[0] )/100
        $aPoints[$i][1] = $yPos + $Percent*( $aPoints[$i][1] - $aPos[1] )/100
    Next
    Return $aPoints
EndFunc ;==> _PolygonRescale()

Func _PolygonRotate ( $aPoints, $AngleDeg, $iCenterX=-1, $iCenterY=-1 )
    If UBound ( $aPoints, 2 ) <> 2 Then Return SetError ( 1, 0, '' )
    Local $aSize = _PolygonGetSize ( $aPoints ), $aPos = _PolygonGetPos ( $aPoints )
    If $iCenterX = -1 Then $iCenterX = $aPos[0] + $aSize[0]/2
    If $iCenterY = -1 Then $iCenterY = $aPos[1] + $aSize[1]/2
    Local $fPi = ACos( -1 ), $AngleRad = $fPi*$AngleDeg/180, $x, $y
    Local $CosAngle = Cos ( $AngleRad ), $SinAngle = Sin ( $AngleRad )
    For $i = 1 To UBound ( $aPoints ) -1
        $x = $aPoints[$i][0] - $iCenterX
        $y = $aPoints[$i][1] - $iCenterY
        $aPoints[$i][0] = $iCenterX + $x*$CosAngle - $y*$SinAngle
        $aPoints[$i][1] = $iCenterY + $x*$SinAngle + $y*$CosAngle
    Next
    Return $aPoints
EndFunc ;==> _PolygonRotate()

Func _PolygonGetPos ( $aPoints )
    If UBound ( $aPoints, 2 ) <> 2 Then Return SetError ( 1, 0, '' )
    Local $aRet[2]
    Local $iXMax = _ArrayMax ( $aPoints, 1, 1, -1, 0 )
    Local $iYMax = _ArrayMax ( $aPoints, 1, 1, -1, 1 )
    Local $aSize = _PolygonGetSize ( $aPoints )
    $aRet[0] = $iXMax - $aSize[0] +1
    $aRet[1] = $iYMax - $aSize[1] +1
    $aPoints = 0
    Return $aRet
EndFunc ;==> _PolygonGetPos()

Func _PolygonSetPos ( $aPoints, $x=0, $y=0 )
    If UBound ( $aPoints, 2 ) <> 2 Then Return SetError ( 1, 0, '' )
    Local $iXMin = _ArrayMin ( $aPoints, 1, 1, -1, 0 )
    Local $iYMin = _ArrayMin ( $aPoints, 1, 1, -1, 1 )
    For $i = 1 To UBound ( $aPoints ) -1
        $aPoints[$i][0] = $x + $aPoints[$i][0] - $iXMin
        $aPoints[$i][1] = $y + $aPoints[$i][1] - $iYMin
    Next
    Return $aPoints
EndFunc ;==> _PolygonSetPos()

Func _PolygonGetSize ( $aPoints )
    If UBound ( $aPoints, 2 ) <> 2 Then Return SetError ( 1, 0, '' )
    Local $aRet[2]
    Local $iXMin = _ArrayMin ( $aPoints, 1, 1, -1, 0 )
    Local $iYMin = _ArrayMin ( $aPoints, 1, 1, -1, 1 )
    Local $iXMax = _ArrayMax ( $aPoints, 1, 1, -1, 0 )
    Local $iYMax = _ArrayMax ( $aPoints, 1, 1, -1, 1 )
    $aRet[0] = $iXMax - $iXMin +1 ; width
    $aRet[1] = $iYMax - $iYMin +1 ; height
    $aPoints = 0
    Return $aRet
EndFunc ;==> _PolygonGetSize()

 

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

Link to post
Share on other sites

That's what I meant, too. Even more you can use it to do some 3D stuff but the more polygons you have the less is the speed.

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites

Here another example:

#include <GDIPlus.au3>

_GDIPlus_Startup()
Global $hPath = _GDIPlus_PathCreate()

Global Const $sObj = BinaryToString(_Obj_Data())
Global $aColor = ConvertObj2Path($sObj, $hPath, 1, 0, 0)


Global Const $hIter = _GDIPlus_PathIterCreate($hPath)
Global Const $iIterCnt = _GDIPlus_PathIterGetSubpathCount($hIter)
ConsoleWrite("Subpath count: " & $iIterCnt & @CRLF)
$hSubPath = _GDIPlus_PathCreate()

Global $bColor = False
If $iIterCnt = UBound($aColor) Then $bColor = True

Global $aWorldbounds = _GDIPlus_PathGetWorldBounds($hPath)
Global $hGUI = GUICreate("Test", $aWorldbounds[2], $aWorldbounds[3])
GUISetState()

Global $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI), $hPen = _GDIPlus_PenCreate(0xFFFF0000, 1), $hBrush = _GDIPlus_BrushCreateSolid(0xFF808080)
_GDIPlus_GraphicsClear($hGfx, 0xFF000000)
_GDIPlus_GraphicsSetInterpolationMode($hGfx, 7)
_GDIPlus_GraphicsSetSmoothingMode($hGfx, 5)
_GDIPlus_GraphicsSetCompositingQuality($hGfx, 2)

ConsoleWrite("Polygon count: " & _GDIPlus_PathGetPointCount($hPath) & @CRLF)

_GDIPlus_PenSetAlignment($hPen, 1)
_GDIPlus_PenSetLineJoin($hPen, 2)

For $i = 1 To $iIterCnt
    DllCall($__g_hGDIPDll, "int", "GdipResetPath", "handle", $hSubPath)
    DllCall($__g_hGDIPDll, "int", "GdipPathIterNextSubpathPath", "handle", $hIter, "int*", 0, "handle", $hSubPath, "bool*", 0)
    Switch $bColor
        Case 0
            $c = Random(0, 255, 1)
            _GDIPlus_BrushSetSolidColor($hBrush, 0xFF000000 + 0x10000 * $c + 0x100 * $c + $c)
        Case Else
            DllCall($__g_hGDIPDll, "int", "GdipSetSolidFillColor", "handle", $hBrush, "dword", $aColor[$i - 1])
    EndSwitch
    DllCall($__g_hGDIPDll, "int", "GdipFillPath", "handle", $hGfx, "handle", $hBrush, "handle", $hSubPath)
;~  DllCall($__g_hGDIPDll, "int", "GdipDrawPath", "handle", $hGfx, "handle", $hPen, "handle", $hSubPath)
Next

Do
    Switch GUIGetMsg()
        Case -3
            _GDIPlus_PathIterDispose($hIter)
            _GDIPlus_PathDispose($hPath)
            _GDIPlus_PathDispose($hSubPath)
            _GDIPlus_PenDispose($hPen)
            _GDIPlus_BrushDispose($hBrush)
            _GDIPlus_GraphicsDispose($hGfx)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

;OBJ formatted data
Func ConvertObj2Path($sObj, $hPath, $fScale = 1.0, $fDx = 0.0, $fDy = 0.0) ;only 2d is supported
    Local $aVertices = StringRegExp($sObj, "(?mi)v\h*(-?\d*\.{0,1}\d+\h*-?\d*\.{0,1}\d+\h*-?\d*\.{0,1}\d+)", 3)
    If @error Then Return 0
    Local $aFaces = StringRegExp($sObj, "(?mi)f\h*(\d+\h*.*)", 3)
    Local $i, $j, $k = 1, $aPolygon, $tPoints = DllStructCreate("float coordinates[6]"), $aColor[UBound($aFaces)]
    For $i = 0 To UBound($aFaces) - 1
        $aTmp = StringRegExp($aFaces[$i], "\d+", 3)
        For $j = 0 To 2
            $aPolygon = StringRegExp($aVertices[$aTmp[$j] - 1], "-?\d*\.{0,1}\d+", 3)
            $tPoints.coordinates(($k)) = $aPolygon[0] * $fScale + $fDx
            $tPoints.coordinates(($k + 1)) = $aPolygon[1] * $fScale + $fDy
            $k += 2
        Next
        If UBound($aTmp) = 4 Then $aColor[$i] = $aTmp[3]
        DllCall($__g_hGDIPDll, "int", "GdipAddPathPolygon", "handle", $hPath, "struct*", $tPoints, "int", 3)
        $k = 1
    Next
    $tPoints = 0
    $aVertices = 0
    $aFaces = 0
    Return $aColor
EndFunc   ;==>ConvertObj2Path

;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-09-19

Func _Obj_Data($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Obj_Data
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= 'INJy9Qfif7FrJQA2iq1GCq7UMZP70O527bzwA8kGNaYRYJNpINBj6QH/fQJM4I8RFgevUBxgXwA2AOGKZv6GFD+gj/AD1gA/EAQP0L0f0AggCBYz/+o7Ig9pMfwCAl9PoLryA1IsL2Bh8wNJ8AL/9E/gX/ADQfsD6fsDTh4/oB7yAvJ2PxDtP/Cfij8QlU9gYPQFqkbecC+A9ADkP+DX8wH/Gl8/oOnyAyY+P+AD8wTmMC+A/wOkT2D38wL/9C8gw6G6CmrG8QPd/QMV+gMx/gLuRHFfDrACDaHDB6AHo5gAigPhuwP/UGWcGVAgZxDS+Cbd9ANiRC/gQPQC/2IkP2BOkooEKlHwAwnwBtQoK/UCkgYf8I+tsmBPoNPwAhYIP+CxoqYrT+D48QMJ+wH/3fMC8ig/IHfyBeX/AOnwA3KpTxCSKTvwA/9SBB9QAj8A/wOKBk8QLC+givgBxilgqXqvbQI3xiw1oyQAgRfuwZAA8K9CgaoPD+Ab8AK+Cz8goPkEZkc/4I6hFfgC/9YHT5CGLxD8L2AG8ATuDB8A+gMiNz9A/wL/BgcgcABIUkxn4/ACy5EQ0gDgSQLvFrDi8vAJThJj00dQ25AEr5DcP/Bf16qAEXYF4MMXjhbXRT8g7fACFf4D/9X2ApIKP+A78APWAZylL2A7+QJR+wLNvP+uNC+gT/EDcfUEFfYBzikvoEb7BIIZH9B/P/DvgfkEUfgCCrWQknArBWHwejoG0UHw+2UDYeOsUeopoVOVBlwfIMPwAxn7Av+CVi/QMD/g0/ECEgw/0C6gRxX1FWFs/2YMXwD6AM32A6SQDqBULRVownk/4C+m9QMWekv4ApZaT4Cdhp4/4JIAN/3NnP39AA45P2Dn8gaCBTClAgGzGQH235w/0AlvYAnwAcYsL2DOoN47P6CalYZ6+a8HHrYlf+BiovoAP0CoCgI/gP0DNgFv8N+NP6BX8gFh8wIJ9AJWC9JnoguBvfsB9zH+A0HwAxtUEIRQI6cQajImzxL/SOCtEJj41gIx9AfhL212j0/gsvEC/yJGP+CT+gTyIS+QoCqs9AO+e4q7iiMv8N8AP4CtHfEDLfAD2GrT+gZZ/QImDC/wn3wvIAvwBloBH2Av8AFWBz+gGPMDaktf4NOU/5rOLyC/9AMt8AP4P2BwoTUIwiWhc/EA9634BH5PTyAmApUANmIbIlzwC14NP/BvYfAC5gRfoIrwAZY2H2BirZuKgLGyvop5TayYOuNABDOBAMZLcXsL4dzb5igQMjUlDxlT7n8R83+PDbGSBCF/hZV7Wlc/0BSaVlrI+4+ZIfAD/o2KqyIPT+CK8QKiVh9gLfID/wJVH2Cf8AKyfk9QEy+giPUDCgI/ICvwA/QP8D8DCiFHFbOWEEoEVYwgqx4wFX7yb7gvKWkKdemrkI4KqZPwA5q4T2Dz8gL/ll3dyB+Qwy+QVj+QYC8gqfEC7hw/0CFP8J8cP2Ddp2X9Aq5EP+Ae8AV2AlkqH7B2ClHvSA6qG+LHb/EMNzqaYFMscW1ZUIUWNepSYGMuEF4O5t8Y9358kPrg/1CavkFjJgBMoeNh/+p4T6D98QTuN1/gHOBWwB9gH/ICpsAvoCnyBP9GTS/gKQXjehDCknCxBJhPT2CM8ALBEf+BAAoEoeEBUkG/oGLREfgCSbzCCvAfB7HBA7JJCCVYEdtNELr3YZh98jZP8K9k8QL2FT8gpaIyxi9Q0y/girJh9QL99QH/bjoaAKmA/ARyTx8gKPIAShih9BgLBBH/oNdL3tdPYMHyAzJXH2BB+ANmhT+gx/EE/4WkOfQCWfsCORQrhDDyBOC1YAYM8P8iCRHpsH0B4VLxCl4W6M3xAXYq66/yA79mB1CzZALlJCp2INFYINwXUPRvzSHWBmF/ULZjT6Ct8AaGJQ+gYvIDAiQv8K9Iotg/QKgF8QPYL1AtQChqpdEvS1+hGT8dYIUSe1UhfQ82Ilz6rgfwAGH9Av0GNHI2YGod67YQ'
    $Obj_Data &= 'IgGf8N8EP4D/AwIEPyA+EZkBfirhB2NQ8O+PAEwhSHv+SGAgA/uWMDYLFnQv8K8+8wZtgzZoYIAA5lci5Fzxo13wBe/yBVAQYVcFNJ6nVo8ZPV+QRz/w3/0vQPoEpmBfgP8Ayg1q+vkBCfQDzfwCtXIGcCMOU2Y9QSO2EzlmDvCvQnDmRdoN2gg/ENAPENpPoAAcc4cQ/mrxIdNiar7jEhqCNiDE8gneJFDzbxVzsmsvIIT5BdIDDxDtLyAQ+AIedR9gdxD7gvLRA6Dqch+wEB4akmM4YG9pEP82CCCTIuZWVl0vIHL6BC35Av2ujfoC/03/A9YHT6BG+AKiFB9gJvEEsbwKdh9gS/QD/341L5CX4O0Btg2oA/QBVgBPIADgYlM/8C8k8AL1keYVj9Es63IA1nqRKSAgcP9aPh9Qth+gBfIHGeFl9AXLBxC9DxkAfzBNcI3zBL4iIbQGhiwi6fMAihA/8G8D8QP+ID9QaA8QYxy/D2CO9QOnhiBaAr/g37IfYGDwBwH6AKX6AYaAkksAFTn/cWEB/wG98QNd8gGWCm9QWh50oecbfzMXtxACJNZkT9BfH4D/BDqUP6Cq9wP/qZSET2Cw9gOFpZ4NP5BdT1BYH2Du8AL18fMBofIDNmI/4F0TNRI2cDM3BfKvqPACDxvwBCYqP6DlFkYZcV4NYSR0wjw/8C/k8gL4L1DhX2ADoGoRKoHxAm4AT+BEAv+JA6voIAoEWfJuq/IEefgDFiIvYFXwAv96CsEUmigwgRAmVvEDgh7aWhI28D/UCSFnBI4Dj+DX8AFKHk+QllkfoTUf/wY+YUIaWj6P4DvwBhH9A235AfX/Ap4AT/CfWB9g3iBK9nFfAeG+cRIuH6A28QPOLU/wbxDxA6YRDyCj9wVmlV8gUfkAKjU/UDMf4FfzA/d1/AW+Ny/g8B15CDW2sQUUEQh9NbJhYYJvWf4C2hRSoFBj+wR/MsZFNaIGsaQQpoGhMBCFgAv/A0gQnaFyfl4+LxA5XxBYP6B98QK9+QH/BgVvUBQP0Gwv4LrwBIYYL1CRX2AI8wXR9gD/lsY/IG72FZoATyA0/QZZ+wHp8QVGGh+gxvIC/94DTyCk8gMaJR8gzvECekZf4Kr0AYoTq5fxBP8l8QHR8AMeGpoCL+Cx8gS5/QOeAT8AA/9xCkLkEIjQoShO9AFN8AP4H+CK9QX7fhgfEDqai5FxIX4SMHVy1ig/oC+I8gD6gyA6HKEbZhY2ExBw8x+eYNsUFwYQtlZ/oI/D5fgBdgCqIPIF/dYSDyDA8AN2HWnS8QJNFLreEZOz8G92A3oVPyAP8ANiCz/QIi8g0/IEgaJaIC/wL/7zBI4/L6BS8QLaE08gYvAC6f0EchM/YFjyAO/anJIE4BobM0lkIQcWaUEf/8rvz+DexVZeaMn4BCJry44aGl/QWD/wb33wAp5hLxDgb9AwXtU/YJT3BA4VH5DML9CelD8Qnz/gfPABM1ENVkARo/4BezfBaIQgYiPEcPP6A4cO/WLzpaAP2LLsCdJF1meQo9Ye/3uDkKShCgyk4GoGf5lgHlQ/4Oj2Av7iED8g8/YENhFfQO+1+gbCX6BZLDP59Xb1CI8QEDoxILBqMzFJGf+NMlIFprbxAjXzA65XT1AzL5Aev+Fa4f8t8gGUHWygJBHtBzEEUPYPA/FfEhCS4aGRyggfIJfwA4X4Al4n4D0f/2IPU0GW8j8g+v8CHgEvEDJfkFsfYF7xB//aFy788wOOFk+QBD+gC/QC8lRuDeAqR/ofXl/RWD/gYfwDvkH6+xwhEZEB8wAN8AP/2BptP2Ap8AK+Dz8A+gJCAh/A/gHmsPqu9SM/vRAighDj+XCaWx+gLPQGRk0P8O6NDuUEgmuBoxhhifoGZfIB2hIf8N8OT6AWGy62sYEEYTNQfqhSZODiE/taiWeQ9AT+Ej9gOJHqBT9AU8vheBD/eQKGOeVjsK3yA5H9BDn+AVI5X6AT8wT/BjEv4MnyA+og'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= 'CfHfNcIlWg3tYjhn0kDarOy0EHUi/xDhZdsxFBkhVSlN3y6GY9RA/3APUArSadKAD+BiON4a4hHgLobyf9IB8kELY2gCOmKgSUEuhnLSAfJBC/OvRpxIUApw0gHyQQtkCJEuhnLSAfL/QQvTDNvjcdIB8kELpZuALoZy0gHy/0ELFMLpYignHSAftDDZri6GctIB8v9BCyQZkC6GctIB8kELpLCKSFAh8V/g8UELZEOHthlQIVHg8UEL4xah/y6GctIB8kELY7ahLoZy0gHyQQuTefrvYignHSAftDCuGOpiKCcdIB+0MKYF+u9iKCcdIB+0QGmZLoZy0gHyQQuUIvrf43HSAfJBC9P06mIoJx0gH7RAhaP/PR4nHSAftDAeAepiKCcdIB+0MA24/z0eJx0gH7QwRn2JBBUSBR4ftED//mKIBBUSBR4ftECWjYgEFRL/BR4ftDC2DupiKCcdIB+0QGI9iAT/FRIFHh+0QO48iAQVEgUeH7RA//YV6WIoJx0gH7RQbZQ9HicdIB+0QP8HJICeflAhUeDxQQuTs9vjcdIB8v9BCyMalkhQIVHg8UELY2SiLobyf9IB8kELoySbSFAKcNIB8kELJH+D/0hQCnDSAfJBC6SShEhQCnDSAfL/QQukTpIuhnLSAfJBCxQx6WIoJx0g/x+0MH2tLoZy0gHyQQsz/wEpKwgVEv8FHh+0MPdxkEhQIVHg8UELZJCF/0hQIVHg8UELpJKESFAhUeDx/0ELU6zqYignHSAftDB2B+piKCcdIP8ftDC+BOpiKFdCMU4cI4WKSFAh8V/g8UEL5LGDSFAhUeDxQQtkX5H/LoZy0gHyQQtkIJAuhnLSAfJBCySAif9IUCFR4PFBC9TJ4ZQBcFQh8V/g8UELZQ54SFAhUeDxQQvjgZX/SFAhUeDxQQske4hIUCFR4PH/QQtTj9vjcdIB8kELJPmKSFAh8V/g8UELZIGSLoZy0gHyQQvTgNvj8X/SAfJBC1NV2+Nx0gHyQQsDxxUS/wUeH7RAGrSIBBUSBR4ftECqrviPBBUSBR4ftEDyVIgEFRIFHv8ftEDyVIgEFRIFHh+0QNZaiAT/FRIFHh+0ME6QiQSlACcdIB+0QP+uxogEpQAnHSAftDBnPZBIUArwf9IB8kELo1Ce9QelACcdIB+0MPaJ+Y8EpQAnHSAftEDWA+liKCcdIB+0QP/dmS6GctIB8kEL4zmYSFAhUeDx/0ELY/qTSFAhUeDxQQuke4tI8F8hUeDxQQtTG9vjcdIB8kELlHn572IoJx0gH7Qw4hHqYignHSAftDCaS/AfBWB8QS6GctIB8kELI5QEzjbgG0L/LoZy0gHyQQvkLpAuhnLSAfJBC9MM+9/jcdIB8kELI6UEhltBTj0eJx0g/x+0MEYJ6mIoJx0gH7RASrKIBBUS/wUeH7QwTlaJBBUSBR4ftECCT/iPBBUSBR4ftEBOkIgEFRIFHv8ftEAuROliKCcdIB+0MMGvLoZy0gHy/0ELk7PqYignHSAftDCiCupiKCcdIP8ftEDBEHwANz0eJx0gH7QwZa7/LoZy0gHyQQsjx6AuhnLSAfJBC+SikP8uhnLSAfJBCwS3FRIFHh+0QKY/+e9iKCcdIB+0MPWoLoZy0gHyQQtjwKP/LoZy0gHyQQsTpepiKCcdIB+0MEYJ+u9iKCcdIB+0MPmjLoZy0gHyQQukbIj/SFAKcNIB8kELI9ajLoZy0gHyQQv1r06CLoZy0gHyQQvlF3dIUCFR4PH/QQskRolIUCFR4PFBC2RIiPEK/xUSBR4ftDBOHOpiKCcdIB+0MHD8XyFR4PFBCxNO2+Nx0gHyQQukFJL/LoZy0gHyQQvkzpMuhnLSAfJBC5Nc+9/jcdIB8kEL46ehLoZy0gHyQQvjLqD/LoZy0gHyQQsktJIuhnLSAfJBC2RakP8uhnLSAfJBC1OP6mIoJx0gH7RAHjv572IoJx0gH7QwBgLqYignHSAftDCmefmP'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= 'LOD9SFAhUeAQ4NCAjQQxEFEnAxE26I0ENBBRAxHXLgqNBDcQgQMR1iBd+bAHAxFtEO52jgQzENEG8e3E4UhgAxFtEI7RjgQVEv8FDhBgjNpIUCFR4AABldz/SFAhUeAAAYVDBuqGBBUS/wUOv0YQWeA9DhDQBuGZRPmT/z0OENAG8UELjgQVEgUOEPBfya06ABUSBQ4Q0IAkC2NI8F8hUeAAAT4TjQQVEgUOEPBfOA/Q4+BMAG0QPqRUVdnjAAH/bRBOHI4EFRIFDhDgxNFI8F8hUeCgYgCFM1YgUEAANz0O/xDQBuHEMZ2iPQ4Q0AbhQ0r/zZA9DhDQBuHEQcV6vgdQIfFf4AABhTPuH4cEFRIFDhDwb3M15gyHBBUSBQ4Q4AjUSPBfIVHgAAEeARNO2eMAAW0Q/04cpApwSFAhUeAAAX43rSIQ/xDRBvEWDo4EFRIFDhBgUdT/SFAhUeAAAYXzAD0OENAG8f/CAi69ABUC9oUBARZFYwV8SPBfIWBfGBBgWtBIUCFgXxgQ8O/m0khQIWBfGBDgmdRIUCHwb18YENCA7mIYENAG4cThSPBfIWBfGFIOYJXWSFAhUeDxQQvzD8cVEgUeH7Qw+aMuhgEBbRD/Thxu/gAVEgUeH7RQ5NnjAAH/bRBOHI4EFRIFHh+0QCmiPQ7/qRQQ4TPRSFAhUeDxQQvTDPvf4wABbRBOHNQM2eMAAW0Q/z6kVI/oYhgQ0AbxbAjkVXJI8F8hUeDxQQuka4JIUCFR4PFBC/MvjZD6E1AhUeDxQQuTP9vjAAH/bRBOHGMhhkhQIVHg8UELUzj73+PgUQFtEI7RBYc9DhDQBvHvxOFIUCFR4PFBCw+ABBUSBR7/H7RACZ0uhgEBbRBv4VApgj0O/xDQBvFBC44EFRIFHh+0MFJu+e+AARUSBR4ftFDk2eMAAW0Q/+52VBvZ4wABbRBOHNNjatQQ//aFAQG2Do0EFQL2hQEBNlf0n1znYhgQ0AbwQQsjrRDHPlFI8F8hYF8Yjhrg5tJIUCFgXxgQ8F84o2GALoYBAW0QH7RQ+XMuhvEPAW0QThzubBYQ0QbhxDFw9g8='
    $Obj_Data = _WinAPI_Base64Decode($Obj_Data)
    If @error Then Return SetError(1, 0, 0)
    Local Const $bString = ASM_DecompressLZMAT($Obj_Data)
    If @error Then Return SetError(3, 0, 0)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\salvador-dali 800x800+.obj", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_Obj_Data

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode

Func ASM_DecompressLZMAT($Data)
    Local Const $MEM_COMMIT = 4096, $PAGE_EXECUTE_READWRITE = 64, $MEM_RELEASE = 32768
    If @AutoItX64 Then
        Local $Code = "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"
        $Code &= "5/o1kEQsAf7ChQJKEWf+KPU06QsjULCtlHGUMyrwiJMbCggKTje0+TgXdGmQGXisYu9BxgKaIwr4HApKAQw/fMgSArJnA8oeSdHJqVNxagiueGUCImaKKhdshPB5iEkCHQnGQAMYF+nk0TdpgoAK8OuH/JE5agKytTp0np6Md2oBNUARWlgo5ukqCBEPM8DqFFEU4sX7H0lHQRVGyjMdg+gB5l6gi9M1J/HokAOWAfx2ZkGJJMMQiQIWuiDb/YIUHMFqySVhq4Q/EoD5Ib0MLCkZJjioUnA8/SgzlwEgZ+l9+kmBIKC0SwEvhHYkd/kuc1LVL4gDxlvdTLhpnpUVrlgn0tgHBqF6VvdwlLTPoJJ25AaLKogBuFfhaNsouwhkkD30gC3PKfdMOUUXg6RCPEWE5GmqAgGJ34M5dDgBRS4MLEkU5osYwO0ICfUwg8MkMfbrGC6J3jNUMPudSzS61JpAOsDuDkQJ1uWIN6HSnU1B2MYJ/ggfdJxF1O1noN92jOjoIHOIFu14FBrh3UCvPDk0dbGeRUnrwDOA0IQkEmvC5TiHZDxswO9VBGiYGv/Q1z2Uv0e3v8aGuFuA7/qDMecDPuoC3f/PO4A1wZASAyFgkAEpOdKgg1TWthyYWinmP54MgPQ1rpzBR+OdCEYCHEO1BcMDOcaC9fR5oBo8GGDxgnnegRnF2iZt6RmJwkbrjn4p8qoMCSAYRQ6cvNeaxiJiGCSvOZAFRYXbkA70MXZ1sTmh0KG2oM9Bt5W+SEs/+hTR6rtEiKKLuvOtooQEl+AwB6Sx8Mb1KK6aJBq4YaVSQDXA6wSRHIq227VjhUtlKx3UBa18GgWXOfkOr+nyMcp0ZSdGEbZc1CMS4wQlSgtC30Omp/KB+1oPKnRQ9EQShmkMl24oN7gEjZ+pwxjrLDDTqDNh1hKn5n9lRwVE6bcp2xQSMVB1sGCmVDoaAtoCuIKBAW5VeSOErdLKzbsNjZ8RTZmcApMQdecB3HP+FAg/JJ+NmvzUTHOjIt7TkJgYBb9/EUQhUO/8PnQEJDQ/sBD4jRJdaLEkJ5wDdiOD7unrB7ILGRdBcdoxdoGIBEeLFBAsbWhG0TzMfyziHYvp8ajvXg6NsmoEqsjRi+nXKl+X0QMJB/nqHkS5Qo10HoCvOfFyf6I9r6rpHxgxHDB1vqaa+0OlDh2qtDIng0TpiGhjPsVSGmVkO6kF9olT69UaI5FKwyILSDvNuBQ4vvLDsAuJAjMxwB+4vj8769/2oQfYYkoFt3Qw+wqswICLAfaIoUIRAx3rvNQQBxe1VwyMzwbQlQD+/POqX2DDAA=="
    Else
        Local $Code = "Uw8AAIkAwIPsLItEJDDoUHwId1R7EMwINBEM/+syDQgdOCcE50A//X+c6DUwAoPELDjCEH5k224cXHz02VkIIJERCCIsRAQooy+qChEcEFVXVgxTgeyMf4sZnCSwD8eyXwwEjgis/wOJbhxejA4/hPCgi7uU+qSFB4wjDrTyqCGDwAHpvFYRy3tMOwKNBwHfg8F8G3zp/wHkD7YGiAeL07i3FsbAJEv/wegJHQHQJdh/2QSD3GkUMepkfKxAAQ+GAwSpZKgJopmGNlgBGXNnX87CvKdAyhlgERQ/BSFLDS+AUe+FZ776CGRUchiKQCuUeLREZSuhkhhMYgPeLM6D+dWkMSD0dgEQCo1yHP87Sv8MhFcGHXTBPoHuP0RHk2Z8FIAIGcAK99AhxskBAsHpCYmCPByNBAGYyYs8A4M5/g+POvUythhOFzE5x1RMBkHVjSJIGHiiUSSSMDJcS88wGDgxIIPuZwGdcHXoJ+CT6yroy4tMyj34XEOEgTYKApo0YxzEyAMzr/ikwBwRidmZx6U4gMocPmY5y3VVyaYDyAEYurkOC3cM3znOhfattJnr4qyYkgH9kIxwRQk6AnWfBXRmQ4JS6xB3Ig4FAYPpbzrOAup11QHwhcmNcIwS6Tt6MNqyRY8Z80QGi2zSiEygo8UBKfkfOfVysdkYgDQpdm8LN8DB5Qc56SlyDwsQA3oxgztrgf5JiROfAqCHpQeSb1OEhVVv46a/hP4o6RNddwo1kf4OKRoi9CQ7Fol2BBkc+J19GSBmgOQ/miqE7vqBtAJQ3SjB4AYECAaJ9R2Il8Do+oh2RlC4QdChhy+kUtRsTETUglZmIijlbyAq3yKKuwfk/6bHNJhDwBgcdgW+N99ZisYB4pIYGxlVt6Q0wL7PgeeRgAHB7glmA6Qe5ImB5hiQLLM5iQzM339AORj0rEi7nYV1z0KrHDmEZmGhMh5CZlTGe9tEELDpgf2r5nu6kF0SD5XBRztE+PgBic52CISKIoUi3aB6kplpWOoQjSnH8OnKHUDzkks2L0pv2KdK8S8IJQQWgwY6OXwvPocY1uVI8KQi5vbKIEB1hA3UNxtlektd8InB4Q8rtQ4YwOkUTwGRTY+NfRJAACh0BMZF80mC8TlirQqD6gU5RD+ZOubHZhmIKmBCgbxJrIsigSwYyqgb9VfqqbCqDIM5iTTJSBqB4h4ajMSJ6eCMk5nBqx6Nh+KBE4AvFBaFsKTNVK3VRIPh4gGF0iMqfZVLk3I7iBEutHJiK4QZA3LCBQaBxIzMOFsJXl9dw5SLoHhBApHzpIQS5hWvHzU/JCI3gYgLVD8ULgIOyESEh+EDTu4JESJPzgJuXiZmBCBsxvGRMrUPHy8T/RAD2gnFAogNNyCyClZ0CYMy+BExoKu9PRDyhk3ZtxmNSO5tgyGkFU0xuIRdisuITZZpLKWSCNmHHunbLmuLAqYqJBqIgXwkEKazERsJRDnPmKuGNZInicZUE/tNi1wqRJofQMHtbFI6C41V/IZ81WmBwuJDOyWC/MkiysgJwppwwe62B4Pg1YjWpYhfRNViAZlRQRjiBIlCiBdrHt2RL0cBSAoMgkHuwlLXX2s3tNiOQJieSMZPQYHVBZ0OA/IIBC9qD4GkowDwjTzvAe2xOgJ0IIu8zNNI6ow0AzmDAgffNQaFKwsF6oVE8gmirmoQUh7d+vMXKCXhHBa/iatAki1YmsclIB6/E+ml/ElsfGpDBaL9FNFDTeKG6RkxrrMhNQFi7gROttRZrWpbq1iHVVP+MVCl/ZOaGBRxg+HwiExN7cUvCJAc6cL71d+rEwH2IEB/dpyaIPkJ1hPUCjRtWAiI29SYzs/F2+uZSdxACppmh4nGZjQQgzkEsMdAAtmeDAYlyPvUssIL6bv+mAkguEoKCRqDgVyB+QuLE3cPpxmEBQLN/GDy6JBpB7ZKBDpOPC7sSAENzzDRKLkFDIne6w08HGsKSo6ywv91B+iJhcDu7KnUMNHzOQfD6bj6VOtFAbsNCoXz2awNxHQBiA7p/KMhyCorVQ/DSZHU6dFS"
        $Code &= "/id8kUgoGcQx6d+KOQN0d42I71gbLXDqiaQjkCShGg8y0SwBdmp/IAxNAuyIAxEMjZ1rWqFq5KNJslERd1oWbQJAg8rwiFZAKkYDpA6gQ+m+0DV3jICU8LqooVCJssR4BJCC6UOvryGF5gG/funUP/0JA3VnuSrYwlk7kUyTCc7NZTuRQY/pjfmmZn0gdJowKggWDjLA6hRWhKlwjUclqiIz1Yh3mr816TY1iU36JAPdLd+EZAqzN5cUEPdH9UCZavcmEkP+bTBBCK9U0y2OyBEwBArp7/grkhiJkXCOQLEbRwGbJIJYoJJfEukL+jQ/zCX1IYgGYvT4RXnKmbLed054IOL8uUuTuCXnyU5ilktxoulxgIVVMe1XVr6hUVNskdyszpdIJyPGOOVSiG1pIYbi6yAG0ynROc7MVRS9jx6E21zTO1DWMd0xPhQyLB9UTYjeJPIdMURi0Bf3o+sqwFwnRTMl598XV8HjArXaiBHrRp5N62KZAwh0kNBkGWyJ6UbRRnnpe/EnhnmJS+Acg3HxM7I4FBd4GTXJgIvBhNIpdaZaY+uwS3YcS9KPjYaQLwySxhsUU9mpCbcMMSMxCctzEks9Mly+xH37cTEg2OuYNHP595luKIJo7gwaA8gSnmQBCnPv44nZLFY/nKHzHIjkTgfqgPLOrNVAr5mElhwKIeOpH/vyILUvgcMDOcFwo/TEF40UD9dmgsiNtD4LhgrIgcKDCusBKcrLagESEE+YKO3Rx/uywkNwazfLYRk7QfEQdmjNFjGJEEOga1EAFtt14YvSEyAa6cH+wpPL0euIlaSbvNO61pOm+vWAldmB4f9BB9nBbGdwr6+KhVGBoa+qHkTr26S1KYVLlz/gHY1UMwFKORTcDsSCL1p0gGx0dotUhCQcMsZtpKV3JnvTZSWB+6KvdGeE9BJGhgyVvLgJuASef6p+mI/pgqq1sZ8cCIjBFhTp0v2U99kWQMt/kWCyOIiDoOmbQll20GeGdZlTVCilAoSAobMBjPXP/Ir6OrfRwiViCcEiIZJYdA7SZioLVNR4txuNmhFZIKYCWxBUzhNp1TE/TQsKTDP8dR3hopA4XAUzgRSD4n+O9BEEhxwSf4nQEdU8qF+VJHQw2Ql2LBl9621xUcdEaoNTDVAbxgSj0Z49Fw6LKlL8xkZcC4kpdeUBgOme/FneaKTJKBJUgrBBBAqshOmg/ZknRdMQzx/UFFTVA4MkoEEdRn5FgYwyJwY4j0TpxJeA8aADdEgrY6fF2h6zJKgaDmVUcEoTTBGNFowTQYEw6Tmmi8XkMWVaJl8MLH8xxG/ry4yDt4CBw5E2CenFJCy4jUBF5CjfRDSJAx32vBi4Ajvr4e/ahQfamHtUBzH7geLAiyANDBLpsaFCAxHrvN0QQQe1V71NEoXJF0hFiQxpxhcDsuYJCPfHA5BaCqpSSQoAdfaJysHpAh7886sW0V23xqpfwwA="
    EndIf
    Local $Opcode = String(_LZMAT_CodeDecompress($Code))
    Local Const $_LZMAT_Compress = (StringInStr($Opcode, "89C0") + 1) / 2
    Local Const $_LZMAT_Decompress = (StringInStr($Opcode, "89DB") + 1) / 2
    $Opcode = Binary($Opcode)
    Local $_LZMAT_CodeBufferMemory = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", BinaryLen($Opcode), "dword", $MEM_COMMIT, "dword", $PAGE_EXECUTE_READWRITE)
    $_LZMAT_CodeBufferMemory = $_LZMAT_CodeBufferMemory[0]
    Local Const $_LZMAT_CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $_LZMAT_CodeBufferMemory)
    DllStructSetData($_LZMAT_CodeBuffer, 1, $Opcode)
    Local Const $OutputLen = Int(BinaryMid($Data, 1, 4))
    $Data = BinaryMid($Data, 5)
    Local Const $InputLen = BinaryLen($Data)
    Local Const $Input = DllStructCreate("byte[" & $InputLen & "]")
    DllStructSetData($Input, 1, $Data)
    Local Const $Output = DllStructCreate("byte[" & $OutputLen & "]")
    Local Const $Ret = DllCallAddress("uint", DllStructGetPtr($_LZMAT_CodeBuffer) + $_LZMAT_Decompress, "struct*", $Input, "uint", $InputLen, "struct*", $Output, "uint*", $OutputLen)
    DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $_LZMAT_CodeBufferMemory, "ulong_ptr", 0, "dword", $MEM_RELEASE)
    Return BinaryMid(DllStructGetData($Output, 1), 1, $Ret[4])
EndFunc   ;==>ASM_DecompressLZMAT

Func _LZMAT_CodeDecompress($Code)
    Local Const $MEM_COMMIT = 4096, $PAGE_EXECUTE_READWRITE = 64, $MEM_RELEASE = 32768
    If @AutoItX64 Then
        Local $Opcode = "0x89C04150535657524889CE4889D7FCB28031DBA4B302E87500000073F631C9E86C000000731D31C0E8630000007324B302FFC1B010E85600000010C073F77544AAEBD3E85600000029D97510E84B000000EB2CACD1E8745711C9EB1D91FFC8C1E008ACE8340000003D007D0000730A80FC05730783F87F7704FFC1FFC141904489C0B301564889FE4829C6F3A45EEB8600D275078A1648FFC610D2C331C9FFC1E8EBFFFFFF11C9E8E4FFFFFF72F2C35A4829D7975F5E5B4158C389D24883EC08C70100000000C64104004883C408C389F64156415541544D89CC555756534C89C34883EC20410FB64104418800418B3183FE010F84AB00000073434863D24D89C54889CE488D3C114839FE0F84A50100000FB62E4883C601E8C601000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D3C1E20241885500EB7383FE020F841C01000031C083FE03740F4883C4205B5E5F5D415C415D415EC34863D24D89C54889CE488D3C114839FE0F84CA0000000FB62E4883C601E86401000083ED2B4080FD5077E2480FBEED0FB6042884C078D683E03F410845004983C501E964FFFFFF4863D24D89C54889CE488D3C114839FE0F84E00000000FB62E4883C601E81D01000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D389D04D8D7501C1E20483E03041885501C1F804410845004839FE747B0FB62E4883C601E8DD00000083ED2B4080FD5077E6480FBEED0FB6042884C00FBED078D789D0C1E2064D8D6E0183E03C41885601C1F8024108064839FE0F8536FFFFFF41C7042403000000410FB6450041884424044489E84883C42029D85B5E5F5D415C415D415EC34863D24889CE4D89C6488D3C114839FE758541C7042402000000410FB60641884424044489F04883C42029D85B5E5F5D415C415D415EC341C7042401000000410FB6450041884424044489E829D8E998FEFFFF41C7042400000000410FB6450041884424044489E829D8E97CFEFFFF56574889CF4889D64C89C1FCF3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3"
    Else
        Local $Opcode = "0x89C0608B7424248B7C2428FCB28031DBA4B302E86D00000073F631C9E864000000731C31C0E85B0000007323B30241B010E84F00000010C073F7753FAAEBD4E84D00000029D97510E842000000EB28ACD1E8744D11C9EB1C9148C1E008ACE82C0000003D007D0000730A80FC05730683F87F770241419589E8B3015689FE29C6F3A45EEB8E00D275058A164610D2C331C941E8EEFFFFFF11C9E8E7FFFFFF72F2C32B7C2428897C241C61C389D28B442404C70000000000C6400400C2100089F65557565383EC1C8B6C243C8B5424388B5C24308B7424340FB6450488028B550083FA010F84A1000000733F8B5424388D34338954240C39F30F848B0100000FB63B83C301E8CD0100008D57D580FA5077E50FBED20FB6041084C00FBED078D78B44240CC1E2028810EB6B83FA020F841201000031C083FA03740A83C41C5B5E5F5DC210008B4C24388D3433894C240C39F30F84CD0000000FB63B83C301E8740100008D57D580FA5077E50FBED20FB6041084C078DA8B54240C83E03F080283C2018954240CE96CFFFFFF8B4424388D34338944240C39F30F84D00000000FB63B83C301E82E0100008D57D580FA5077E50FBED20FB6141084D20FBEC278D78B4C240C89C283E230C1FA04C1E004081189CF83C70188410139F374750FB60383C3018844240CE8EC0000000FB654240C83EA2B80FA5077E00FBED20FB6141084D20FBEC278D289C283E23CC1FA02C1E006081739F38D57018954240C8847010F8533FFFFFFC74500030000008B4C240C0FB60188450489C82B44243883C41C5B5E5F5DC210008D34338B7C243839F3758BC74500020000000FB60788450489F82B44243883C41C5B5E5F5DC210008B54240CC74500010000000FB60288450489D02B442438E9B1FEFFFFC7450000000000EB9956578B7C240C8B7424108B4C241485C9742FFC83F9087227F7C7010000007402A449F7C702000000740566A583E90289CAC1E902F3A589D183E103F3A4EB02F3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3"
    EndIf
    Local Const $AP_Decompress = (StringInStr($Opcode, "89C0") - 3) / 2
    Local Const $B64D_Init = (StringInStr($Opcode, "89D2") - 3) / 2
    Local Const $B64D_DecodeData = (StringInStr($Opcode, "89F6") - 3) / 2
    $Opcode = Binary($Opcode)
    Local $CodeBufferMemory = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", BinaryLen($Opcode), "dword", $MEM_COMMIT, "dword", $PAGE_EXECUTE_READWRITE)
    $CodeBufferMemory = $CodeBufferMemory[0]
    Local Const $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $CodeBufferMemory)
    DllStructSetData($CodeBuffer, 1, $Opcode)
    Local Const $B64D_State = DllStructCreate("byte[16]")
    Local Const $Length = StringLen($Code)
    Local Const $Output = DllStructCreate("byte[" & $Length & "]")
    DllCallAddress("none", DllStructGetPtr($CodeBuffer) + $B64D_Init, "struct*", $B64D_State, "int", 0, "int", 0, "int", 0)
    DllCallAddress("int", DllStructGetPtr($CodeBuffer) + $B64D_DecodeData, "str", $Code, "uint", $Length, "struct*", $Output, "struct*", $B64D_State)
    Local Const $ResultLen = DllStructGetData(DllStructCreate("uint", DllStructGetPtr($Output)), 1)
    Local $Result = DllStructCreate("byte[" & ($ResultLen + 16) & "]"), $Ret
    If @AutoItX64 Then
        $Ret = DllCallAddress("uint", DllStructGetPtr($CodeBuffer) + $AP_Decompress, "ptr", DllStructGetPtr($Output) + 4, "struct*", $Result, "int", 0, "int", 0)
    Else
        $Ret = DllCall("user32.dll", "uint", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer) + $AP_Decompress, "ptr", DllStructGetPtr($Output) + 4, "ptr", DllStructGetPtr($Result), "int", 0, "int", 0)
    EndIf
    DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $CodeBufferMemory, "ulong_ptr", 0, "dword", $MEM_RELEASE)
    Return BinaryMid(DllStructGetData($Result, 1), 1, $Ret[0])
EndFunc   ;==>_LZMAT_CodeDecompress

 

Edited by UEZ
Shorten code

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to post
Share on other sites
50 minutes ago, wakillon said:

SVG are 3D ? I thought they were only 2D...

I don't know whether it is possible to store also data for z-axis but you can transform 2D to 3D as I did in the rotating world map (see post#2).

You have the x/y coordinates and you can add the z coordinate manually - there you go for 3D.

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By UEZ
      As already annouced in >this topic here the GUI version of the GDI+ v1.1 color effects.
       

       
      GDI+ Color Transformer.au3:
       
      ;IMPORTANT: You are not allowed to sell this code or just parts of it in a commercial project or modify it and distribute it with a different name! ;Distributing copies of the program in compiled pe format (exe) must be free of any fee! ;~ #AutoIt3Wrapper_AutoIt3Dir=c:\Program Files (x86)\AutoIt3\3.3.8.1\ ;~ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_Icon=Color_32x32.ico #AutoIt3Wrapper_Res_Field=CompanyName|UEZ Software Development #AutoIt3Wrapper_Res_Field=ProductName|GDI+ Color Transformer #AutoIt3Wrapper_Res_Field=ProductVersion|%AutoItVer% #AutoIt3Wrapper_Res_Fileversion=0.9.7.0 #AutoIt3Wrapper_Res_Field=Build|2016-04-23 #AutoIt3Wrapper_Res_LegalCopyright=UEZ Software Development #AutoIt3Wrapper_Res_Language=1033 #AutoIt3Wrapper_Res_Field=URL|http://www.autoitscript.com/forum/index.php?showtopic=151155 #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3" #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_UPX_Parameters=--best --lzma #include <Clipboard.au3> #include <Constants.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <GUIMenu.au3> #include <Misc.au3> #include <SliderConstants.au3> #include <StaticConstants.au3> #include <TabConstants.au3> #include <WindowsConstants.au3> Global $iResult = _GDIPlus_Startup() If @error Then If @error = 2 Or @extended < 6 Then Global $sUrl = "http://www.winsxs.org/?OtherTech/thread-13-1-1" Global $iChoice = MsgBox(4 + 16 + 262144, "Error", _ "GDIPlus.dll v1.1 is needed to run this script properly!" & @CRLF & _ "How to use GDI+ v1.1 e.g. on WinXP: " & $sUrl & @CRLF & @CRLF & "Open site with default browser?") If $iChoice = 6 Then ShellExecute($sUrl) Exit Else Exit MsgBox(16 + 262144, "Error", "Cannot initialize GDI+", 120) Endif EndIf Global Const $ghGDIPDll = $__g_hGDIPDll DllCall("Kernel32.dll", "long", "SetProcessDEPPolicy", "long", False) ;disable DEP for this process Global $tRECTF = DllStructCreate($tagGDIPRECTF) DllStructSetData($tRECTF, "X", 0) DllStructSetData($tRECTF, "Y", 0) Global Enum $iAdjustExposure = 0, $iAdjustDensity, $iAdjustContrast, $iAdjustHighlight, $iAdjustShadow, _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms534098(v=vs.85).aspx $iAdjustMidtone, $iAdjustWhiteSaturation, $iAdjustBlackSaturation Global Enum $iCurveChannelAll = 0, $iCurveChannelRed, $iCurveChannelGreen, $iCurveChannelBlue ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms534100(v=vs.85).aspx Global $iType = $iAdjustExposure, $iChannel = $iCurveChannelAll Global $bUpdatePreview = False Global $hGUI = GUICreate("GDI+ Color Transformer by UEZ v0.9.7 build 2016-04-23", 1200, 690, -1, -1, Default, $WS_EX_TOPMOST + $WS_EX_ACCEPTFILES) GUISetFont(12, 400, 0, "Times New Roman") GUISetBkColor(0xFFFFFF, $hGUI) Global $iTab = GUICtrlCreateTab(824, 232, 369, 393, $TCS_MULTILINE, $TCS_EX_FLATSEPARATORS) Global $iSlider_BWThreshold_Default = 50, $iSlider_BlurRadius_Default = 0, $iSlider_BCBrightness_Default = 0, $iSlider_BCContrast_Default = 0, _ $iSlider_CBCyanRed_Default = 0, $iSlider_CBMagentaGreen_Default = 0, $iSlider_CBYellowBlue_Default = 0, _ $iSlider_CMRed_Default = 100, $iSlider_CMGreen_Default = 100, $iSlider_CMBlue_Default = 100, $iSlider_SharpenRadius_Default = 0, $iSlider_SharpenAmount_Default = 0, _ $iSlider_HSLLightnLevel_Default = 0, $iSlider_HSLHueLevel_Default = 0, $iSlider_HSLSatLevel_Default = 0, _ $iSlider_LevelsShadow_Default = 0, $iSlider_LevelsHighlight_Default = 100, $iSlider_LevelsMidtone_Default = 0, _ $iSlider_TintHue_Default = 0, $iSlider_TintAmount_Default = 0, _ $iSlider_GSLumRed_Default = 31, $iSlider_GSLumGreen_Default = 61, $iSlider_GSLumBlue_Default = 8 Global $GDIP__RLUM = $iSlider_GSLumRed_Default / 100, $GDIP__GLUM = $iSlider_GSLumGreen_Default / 100, $GDIP__BLUM = $iSlider_GSLumBlue_Default / 100; ; Colors luminace Global $iTabSelection = 0, $iBGDefColor = 0xFFFFFF #Region Tabs #Region B/W Global $iBW = GUICtrlCreateTabItem("Black / White") Global $iLabel_BWThreshold = GUICtrlCreateLabel("Threshold", 837, 411, 93, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_BWThreshold = GUICtrlCreateSlider(837, 443, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_BWThreshold_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_BWThreshold = GUICtrlGetHandle($iSlider_BWThreshold) Global $iInp_BWThreshold = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_BWThreshold_Default / 100), 1126, 455, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion B/W #Region Blur Global $iBlur = GUICtrlCreateTabItem("Blur") ;~ GUICtrlSetState(-1, $GUI_SHOW) Global $iCheckbox_BlurExpandEdge = GUICtrlCreateCheckbox("Expand Edge", 838, 381, 177, 25) GUICtrlSetFont(-1, 12, 400, 0, "Arial") GUICtrlSetTip(-1, "If set, the bitmap expands by an amount equal to the radius so that it can have soft edges." & @CRLF & _ "the bitmap remains the same size and the soft edges are clipped.") Global $iLabel_BlurRadius = GUICtrlCreateLabel("Radius", 838, 445, 64, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_BlurRadius = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 255, 0) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetTip(-1, "Range is from 0 to 255") GUICtrlSetData(-1, $iSlider_BlurRadius_Default) Global $hSlider_BlurRadius = GUICtrlGetHandle($iSlider_BlurRadius) Global $iInp_BlurRadius = GUICtrlCreateInput($iSlider_BlurRadius_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion Blur #Region BC Global $iBC = GUICtrlCreateTabItem("Brightness / Contrast") Global $iLabel_BCBrightness = GUICtrlCreateLabel("Brightness", 838, 377, 99, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_BCBrightness = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 255, -255) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetTip(-1, "Range is from -255 to 255") GUICtrlSetData(-1, $iSlider_BCBrightness_Default) Global $hSlider_BCBrightness = GUICtrlGetHandle($iSlider_BCBrightness) Global $iInp_BCBrightness = GUICtrlCreateInput($iSlider_BCBrightness_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_BCContrast = GUICtrlCreateLabel("Contrast", 838, 504, 80, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_BCContrast = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetTip(-1, "Range is from -100 to 100") GUICtrlSetData(-1, $iSlider_BCContrast_Default) Global $hSlider_BCContrast = GUICtrlGetHandle($iSlider_BCContrast) Global $iInp_BCContrast = GUICtrlCreateInput($iSlider_BCContrast_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion BC #Region CB Global $iCB = GUICtrlCreateTabItem("Color Balance") Global $iLabel_CBCyanRed = GUICtrlCreateLabel("Cyan Red", 838, 355, 87, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CBCyanRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetData(-1, $iSlider_CBCyanRed_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_CBCyanRed = GUICtrlGetHandle($iSlider_CBCyanRed) Global $iInp_CBCyanRed = GUICtrlCreateInput($iSlider_CBCyanRed_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_CBMagentaGreen = GUICtrlCreateLabel("Magenta Green", 838, 445, 139, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CBMagentaGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetData(-1, $iSlider_CBMagentaGreen_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_CBMagentaGreen = GUICtrlGetHandle($iSlider_CBMagentaGreen) Global $iInp_CBMagentaGreen = GUICtrlCreateInput($iSlider_CBMagentaGreen_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_CBYellowBlue = GUICtrlCreateLabel("Yellow Blue", 838, 535, 107, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CBYellowBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetData(-1, $iSlider_CBYellowBlue_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_CBYellowBlue = GUICtrlGetHandle($iSlider_CBYellowBlue) Global $iInp_CBYellowBlue = GUICtrlCreateInput($iSlider_CBYellowBlue_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion CB #Region CC Global $iCC = GUICtrlCreateTabItem("Color Curve") Global $iLabel_CCCurveAdjust = GUICtrlCreateLabel("Curve Adjustments", 838, 355, 171, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlCreateGroup("", 0, 0, 0, 0) Global $iRadio_CCExposure = GUICtrlCreateRadio("Exposure", 837, 387, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") GUICtrlSetState(-1, $GUI_CHECKED) Global $iRadio_CCDensity = GUICtrlCreateRadio("Density", 927, 387, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCContrast = GUICtrlCreateRadio("Contrast", 1017, 387, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCHighlight = GUICtrlCreateRadio("Highlight", 1107, 387, 65, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCShadow = GUICtrlCreateRadio("Shadow", 837, 411, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCMidtone = GUICtrlCreateRadio("Midtone", 927, 411, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCWhiteSaturation = GUICtrlCreateRadio("White Satur.", 1017, 411, 81, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCBlackSaturation = GUICtrlCreateRadio("Black Satur.", 1107, 411, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iLabel_CCCurveChannel = GUICtrlCreateLabel("Curve Channel", 838, 445, 132, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("", 0, 0, 0, 0) Global $iRadio_CCCurveAllChannel = GUICtrlCreateRadio("All Channel", 837, 477, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") GUICtrlSetState(-1, $GUI_CHECKED) Global $iRadio_CCCurveRed = GUICtrlCreateRadio("Red", 927, 477, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCCurveGreen = GUICtrlCreateRadio("Green", 1017, 477, 73, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") Global $iRadio_CCCurveBlue = GUICtrlCreateRadio("Blue", 1107, 477, 65, 17) GUICtrlSetFont(-1, 8, 400, 0, "Arial") GUICtrlCreateGroup("", -99, -99, 1, 1) Global $iLabel_CCValue = GUICtrlCreateLabel("Value", 838, 535, 54, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CCValue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 255, -255) GUICtrlSetData(-1, 0) GUICtrlSetTip(-1, "Range is from -255 to 255") Global $hSlider_CCValue = GUICtrlGetHandle($iSlider_CCValue) Global $iInp_CCValue = GUICtrlCreateInput(0, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion CC #Region CLUT Global $iCL = GUICtrlCreateTabItem("Color LUT") Global $iLabel_CLUT = GUICtrlCreateLabel("Coming soon!", 838, 425, 340, 60) GUICtrlSetFont(-1, 34, 400, 0, "Arial Black", 4) GUICtrlSetBkColor(-1, 0xFFFFFF) #EndRegion CLUT #Region CM Global $iCM = GUICtrlCreateTabItem("Color Matrix") Global $iLabel_CMRed = GUICtrlCreateLabel("Red", 838, 355, 38, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CMRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_CMRed_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_CMRed = GUICtrlGetHandle($iSlider_CMRed) Global $iInp_CMRed = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMRed_Default / 100), 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_CMGreen = GUICtrlCreateLabel("Green", 838, 445, 57, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CMGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_CMGreen_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_CMGreen = GUICtrlGetHandle($iSlider_CMGreen) Global $iInp_CMGreen = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMGreen_Default / 100), 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_CMBlue = GUICtrlCreateLabel("Blue", 838, 535, 43, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_CMBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_CMBlue_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_CMBlue = GUICtrlGetHandle($iSlider_CMBlue) Global $iInp_CMBlue = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_CMBlue_Default / 100), 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion CM #Region Greyscale Global $iGreyscale = GUICtrlCreateTabItem("Greyscale") Global $iLabel_GSLumRed = GUICtrlCreateLabel("Luminance Red", 838, 355, 138, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_GSLumRed = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_GSLumRed_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_GSLumRed = GUICtrlGetHandle($iSlider_GSLumRed) Global $iInp_GSLumRed = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumRed_Default / 100), 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_GSLumGreen = GUICtrlCreateLabel("Luminance Green", 838, 445, 157, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_GSLumGreen = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_GSLumGreen_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_GSLumGreen = GUICtrlGetHandle($iSlider_GSLumGreen) Global $iInp_GSLumGreen = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumGreen_Default / 100), 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_GSLumBlue = GUICtrlCreateLabel("Luminance Blue", 838, 535, 143, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_GSLumBlue = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_GSLumBlue_Default) GUICtrlSetTip(-1, "Range is from 0 to 1") Global $hSlider_GSLumBlue = GUICtrlGetHandle($iSlider_GSLumBlue) Global $iInp_GSLumBlue = GUICtrlCreateInput(StringFormat("%04.2f", $iSlider_GSLumBlue_Default / 100), 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion Greyscale #Region HSL Global $iHSL = GUICtrlCreateTabItem("Hue / Sat. / Lightn.") Global $iLabel_HSLHueLevel = GUICtrlCreateLabel("Hue Level", 838, 355, 92, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_HSLHueLevel = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 180, -180) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetData(-1, $iSlider_HSLHueLevel_Default) GUICtrlSetTip(-1, "Range is from -180 to 180") Global $hSlider_HSLHueLevel = GUICtrlGetHandle($iSlider_HSLHueLevel) Global $iInp_HSLHueLevel = GUICtrlCreateInput($iSlider_HSLHueLevel_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_HSLSatLevel = GUICtrlCreateLabel("Saturation Level", 838, 445, 150, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_HSLSatLevel = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetData(-1, $iSlider_HSLSatLevel_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_HSLSatLevel = GUICtrlGetHandle($iSlider_HSLSatLevel) Global $iInp_HSLSatLevel = GUICtrlCreateInput($iSlider_HSLSatLevel_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_HSLLightnLevel = GUICtrlCreateLabel("Lightness Level", 838, 535, 144, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_HSLLightnLevel = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetData(-1, $iSlider_HSLLightnLevel_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_HSLLightnLevel = GUICtrlGetHandle($iSlider_HSLLightnLevel) Global $iInp_HSLLightnLevel = GUICtrlCreateInput($iSlider_HSLLightnLevel_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion HSL #Region Levels Global $iLevels = GUICtrlCreateTabItem("Levels") Global $iLabel_LevelsHighlight = GUICtrlCreateLabel("Highlight", 838, 355, 83, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_LevelsHighlight = GUICtrlCreateSlider(838, 387, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_LevelsHighlight_Default) GUICtrlSetTip(-1, "Range is from 0 to 100") Global $hSlider_LevelsHighlight = GUICtrlGetHandle($iSlider_LevelsHighlight) Global $iInp_LevelsHighlight = GUICtrlCreateInput($iSlider_LevelsHighlight_Default, 1126, 399, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_LevelsMidtone = GUICtrlCreateLabel("Midtone", 838, 445, 75, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_LevelsMidtone = GUICtrlCreateSlider(838, 477, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetData(-1, $iSlider_LevelsMidtone_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_LevelsMidtone = GUICtrlGetHandle($iSlider_LevelsMidtone) Global $iInp_LevelsMidtone = GUICtrlCreateInput($iSlider_LevelsMidtone_Default, 1126, 489, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_LevelsShadow = GUICtrlCreateLabel("Shadow", 838, 535, 75, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_LevelsShadow = GUICtrlCreateSlider(838, 567, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_LevelsShadow_Default) GUICtrlSetTip(-1, "Range is from 0 to 100") Global $hSlider_LevelsShadow = GUICtrlGetHandle($iSlider_LevelsShadow) Global $iInp_LevelsShadow = GUICtrlCreateInput($iSlider_LevelsShadow_Default, 1126, 579, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion Levels #Region Negative Global $iNegative = GUICtrlCreateTabItem("Negative") Global $iLabel_Negative = GUICtrlCreateLabel("Nothing to configure", 838, 445, 340, 60) GUICtrlSetFont(-1, 23, 400, 0, "Arial Black", 4) GUICtrlSetBkColor(-1, 0xFFFFFF) #EndRegion Negative #Region Sharpen Global $iSharpen = GUICtrlCreateTabItem("Sharpen") Global $iLabel_SharpenRadius = GUICtrlCreateLabel("Radius", 838, 377, 64, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_SharpenRadius = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 255, 0) GUICtrlSetData(-1, $iSlider_SharpenRadius_Default) GUICtrlSetTip(-1, "Range is from 0 to 255") Global $hSlider_SharpenRadius = GUICtrlGetHandle($iSlider_SharpenRadius) Global $iInp_SharpenRadius = GUICtrlCreateInput($iSlider_SharpenRadius_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabelSharpenAmount = GUICtrlCreateLabel("Amount", 838, 504, 72, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_SharpenAmount = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, 0) GUICtrlSetData(-1, $iSlider_SharpenAmount_Default) GUICtrlSetTip(-1, "Range is from 0 to 100") Global $hSlider_SharpenAmount = GUICtrlGetHandle($iSlider_SharpenAmount) Global $iInp_SharpenAmount = GUICtrlCreateInput($iSlider_SharpenAmount_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion Sharpen #Region Tint Global $iTint = GUICtrlCreateTabItem("Tint") ;~ GUICtrlSetState(-1, $GUI_SHOW) Global $iLabel_TintHue = GUICtrlCreateLabel("Hue", 838, 377, 39, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_TintHue = GUICtrlCreateSlider(838, 409, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 180, -180) GUICtrlSetData(-1, $iSlider_TintHue_Default) GUICtrlSetTip(-1, "Range is from -180 to 180") Global $hSlider_TintHue = GUICtrlGetHandle($iSlider_TintHue) Global $iInp_TintHue = GUICtrlCreateInput($iSlider_TintHue_Default, 1126, 421, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) Global $iLabel_TintAmount = GUICtrlCreateLabel("Amount", 838, 504, 72, 27) GUICtrlSetFont(-1, 12, 400, 0, "Arial Black") GUICtrlSetBkColor(-1, 0xFFFFFF) Global $iSlider_TintAmount = GUICtrlCreateSlider(838, 541, 278, 45, BitOR($GUI_SS_DEFAULT_SLIDER, $TBS_BOTH, $TBS_ENABLESELRANGE)) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetLimit(-1, 100, -100) GUICtrlSetData(-1, $iSlider_TintAmount_Default) GUICtrlSetTip(-1, "Range is from -100 to 100") Global $hSlider_TintAmount = GUICtrlGetHandle($iSlider_TintAmount) Global $iInp_TintAmount = GUICtrlCreateInput($iSlider_TintAmount_Default, 1126, 553, 49, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_NUMBER, $ES_READONLY)) #EndRegion Tint GUICtrlCreateTabItem("") #EndRegion Tabs ;~ Global Const $STM_SETIMAGE = 0x0172; $IMAGE_BITMAP = 0 Global $hTmp = _GDIPlus_BitmapCreateFromMemory(_Logo(), True) Global $iPicLogo = GUICtrlCreatePic("", 8, 8, 1184, 196, BitOR($SS_CENTERIMAGE, $GUI_SS_DEFAULT_PIC, $WS_BORDER)) Global $hB = GUICtrlSendMsg($iPicLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $hTmp) If $hB Then _WinAPI_DeleteObject($hB) _WinAPI_DeleteObject($hTmp) Global $iW_Prev = 800, $iH_Prev = 450 Global $iPicPreview = GUICtrlCreatePic("", 8, 232, $iW_Prev, $iH_Prev, BitOR($GUI_SS_DEFAULT_PIC, $WS_BORDER, $SS_CENTERIMAGE)) Global $hPicPreview = GUICtrlGetHandle($iPicPreview) Global $iBtnSave = GUICtrlCreateButton("&Save Image", 1117, 634, 75, 49, $BS_MULTILINE) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetTip(-1, "Press right mouse buttom to copy image to clipboard") Global $iBtnLoad = GUICtrlCreateButton("&Load Image", 1036, 634, 75, 49, $BS_MULTILINE) Global $iBtnApply = GUICtrlCreateButton("&Apply Effect", 825, 634, 75, 49, $BS_MULTILINE) GUICtrlSetState(-1, $GUI_DISABLE) Global $iBtnUndo = GUICtrlCreateButton("&Undo Effect", 905, 634, 75, 49, $BS_MULTILINE) GUICtrlSetState(-1, $GUI_DISABLE) Global $iLabelImg = GUICtrlCreateLabel(" Image Info:", 8, 214, 68, 16) GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 4) GUICtrlSetColor(-1, 0xF0F0F0) GUICtrlSetBkColor(-1, 0x0) Global $i, $j = 89, $k = 256 For $i = 0 To 731 ;76 + 732 GUICtrlCreateLabel("", 76 + $i, 214, 1, 16) GUICtrlSetBkColor(-1, 0x10000 * Int($j * $i / $k) + 0x100 * Int($j * $i / $k) + Int($j * $i / $k)) Next Global $iLabelImgInfo = GUICtrlCreateLabel(" no image loaded", 76, 214, 732, 16) GUICtrlSetFont(-1, 10, 400, 0, "Times New Roman", 5) GUICtrlSetColor(-1, 0xB0F0B0) GUICtrlSetBkColor(-1, -2) Global $iLabel_BgColor = GUICtrlCreateLabel("Bg Color", 984, 634, 47, 19) GUICtrlSetFont(-1, 9, 400, 0, "Times New Roman") GUICtrlSetBkColor(-1, -2) Global $iBtnBgColor = GUICtrlCreateButton("", 992, 654, 32, 28, $WS_BORDER) GUICtrlSetBkColor(-1, $iBGDefColor) GUICtrlSetTip(-1, "Change image background color (used also for save format)." & @CRLF & "PNG file format is excluded by background color") Global Enum $iReset = 0x400, $iClipboard Global $hQMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hQMenu, 0, "Reset to default", $iReset) $hTmp = _GDIPlus_BitmapCreateFromMemory(Reset_Icon()) Global $hBmp_Reset = _GDIPlus_Convert2HBitmap($hTmp, $COLOR_MENU) _GUICtrlMenu_SetItemBmp($hQMenu, 0, $hBmp_Reset) _GDIPlus_BitmapDispose($hTmp) Global $hQMenu2 = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_InsertMenuItem($hQMenu2, 0, "Copy image to clipboard", $iClipboard) Global $hBmp_Clipboard = _GDIPlus_BitmapCreateFromMemory(_Clipboard(), True) _GUICtrlMenu_SetItemBmp($hQMenu2, 0, $hBmp_Clipboard) GUISetState(@SW_SHOW) Global $hDLL_GDI32 = DllOpen("gdi32.dll") Global $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_Prev, "int", $iH_Prev, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0) Global $hHBitmap_Preview = _GDIPlus_BitmapCreateHBITMAPFromBitmap($aResult[6]) _GDIPlus_BitmapDispose($aResult[6]) Global $hDC = _WinAPI_GetWindowDC($hPicPreview) Global $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Global $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap_Preview) Global $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGDefColor) Global $tGUID = DllStructCreate($tagGUID) Global $hImage = 0, $hImage_tmp, $hBmp_Preview = 0, $hBmp_tmp = 0, $hBmp_Save = 0, $hBmp_Save_1bpp = 0, $hCtx_tmp, $hBmp_Undo, $hBmp_Empty, _ $iWidth, $iHeight, $aPixelFormat, $aImageRawFormat, $hEffect, $aAnim, $sPrefix, $sFile, $iBGColor = $iBGDefColor, _ $bDnD = False, $bStart = False, $bDrawFX = False, $t, $iOld GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL") GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_PAINT, "WM_PAINT") GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES") GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIRegisterMsg($WM_HSCROLL, "") GUIRegisterMsg($WM_NOTIFY, "") GUIRegisterMsg($WM_PAINT, "") GUIRegisterMsg($WM_DROPFILES, "") GUIRegisterMsg($WM_CONTEXTMENU, "") GUIRegisterMsg($WM_COMMAND, "") If $hBmp_tmp Then _GDIPlus_GraphicsDispose($hCtx_tmp) _GDIPlus_BitmapDispose($hBmp_tmp) EndIf _WinAPI_DeleteObject($hBmp_Reset) _WinAPI_DeleteObject($hBmp_Clipboard) _GDIPlus_GraphicsDispose($hGraphic) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteObject($hHBitmap_Preview) _WinAPI_ReleaseDC($hPicPreview, $hDC) _WinAPI_DeleteDC($hDC) If $hImage Then _GDIPlus_ImageDispose($hImage) GUIDelete() _GDIPlus_Shutdown() DllClose($hDLL_GDI32) Exit Case $iBtnApply If $hBmp_Undo Then _GDIPlus_BitmapDispose($hBmp_Undo) $hBmp_Undo = _GDIPlus_ImageClone($hImage) Switch $iTabSelection Case 0 _GDIPlus_BlackAndWhite($hImage, $hCtx_tmp, GUICtrlRead($iInp_BWThreshold), False) Case 7 _GDIPlus_Greyscale($hImage, $hCtx_tmp, False) EndSwitch _GDIPlus_BitmapDispose($hImage) $hImage = _GDIPlus_ImageClone($hBmp_tmp) $bUpdatePreview = True GUICtrlSetState($iBtnUndo, $GUI_ENABLE) GUICtrlSetState($iBtnSave, $GUI_ENABLE) ResetSettings() Case $iBtnUndo _GDIPlus_BitmapDispose($hImage) $hImage = _GDIPlus_ImageClone($hBmp_Undo) If $hBmp_tmp Then _GDIPlus_GraphicsDispose($hCtx_tmp) _GDIPlus_BitmapDispose($hBmp_tmp) EndIf $hBmp_tmp = _GDIPlus_ImageClone($hImage) $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp) $bUpdatePreview = True Case $iBtnBgColor $t = $iBGColor $iBGColor = _ChooseColor(2, 0xFF0000, 2, $hGUI) If @error Then $iBGColor = $t _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor) GUICtrlSetBkColor($iBtnBgColor, $iBGColor) $bUpdatePreview = True Case $iBtnLoad If Not $bDnD Then $sFile = FileOpenDialog("Load an image", "", "Images (*.jpg;*.bmp;*.png;*.gif;*.tif)|All (*.*)", 3, "", $hGUI) If @error Then ContinueLoop EndIf If $hImage Then _GDIPlus_ImageDispose($hImage) $hImage = _GDIPlus_ImageLoadFromFile($sFile) If Not $hImage Then ContinueLoop $iWidth = _GDIPlus_ImageGetWidth($hImage) $iHeight = _GDIPlus_ImageGetHeight($hImage) $aAnim = DllCall($ghGDIPDll, "uint", "GdipImageGetFrameDimensionsCount", "handle", $hImage, "int*", 0) DllCall($ghGDIPDll, "uint", "GdipImageGetFrameDimensionsList", "handle", $hImage, "struct*", $tGUID, "int", $aAnim[2]) $aAnim = DllCall($ghGDIPDll, "uint", "GdipImageGetFrameCount", "handle", $hImage, "struct*", $tGUID, "uint*", 0) $aPixelFormat = _GDIPlus_ImageGetPixelFormat($hImage) $aImageRawFormat = _GDIPlus_ImageGetRawFormat($hImage) $sPrefix = "" If $aAnim[3] > 1 Then $sPrefix = "animated " ;~ CopyImage2Gfx($hImage, $hGraphic, $hDC, $hDC_backbuffer, $iWidth, $iHeight) GUICtrlSetData($iLabelImgInfo, StringRegExpReplace($sFile, ".*\\(.*)", "$1") & ", " & $sPrefix & $aImageRawFormat[1] & ", " & $iWidth & "x" & $iHeight & ", " & $aPixelFormat[1] & ", " & Round(FileGetSize($sFile) / 1024, 2) & " kb") $bDnD = False $bStart = True $bUpdatePreview = True DllStructSetData($tRECTF, "Width", $iWidth) DllStructSetData($tRECTF, "Height", $iHeight) If $hBmp_tmp Then _GDIPlus_GraphicsDispose($hCtx_tmp) _GDIPlus_BitmapDispose($hBmp_tmp) EndIf $hBmp_tmp = _GDIPlus_ImageClone($hImage) $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp) GUICtrlSetState($iBtnApply, $GUI_ENABLE) If $hBmp_Undo Then _GDIPlus_BitmapDispose($hBmp_Undo) $hBmp_Undo = _GDIPlus_ImageClone($hImage) If $hBmp_Empty Then _GDIPlus_BitmapDispose($hBmp_Empty) $hBmp_Empty = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight) $iOld = $iTabSelection For $iTabSelection = 0 To 12 ResetSettings() Next $iTabSelection = $iOld Case $iBtnSave $sFile = FileSaveDialog("Save Image", "", "Image (*.png;*.jpg;*.bmp;*.gif;*.tif)", 2, "", $hGUI) If @error Then ContinueLoop If $hBmp_tmp Then _GDIPlus_GraphicsDispose($hCtx_tmp) _GDIPlus_BitmapDispose($hBmp_tmp) EndIf $hBmp_tmp = _GDIPlus_ImageClone($hBmp_Empty) $hCtx_tmp = _GDIPlus_ImageGetGraphicsContext($hBmp_tmp) DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_tmp, "int", 7) Switch $iTabSelection Case 0 ;Black & White DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtx_tmp, "int", 5) _GDIPlus_BlackAndWhite($hImage, $hCtx_tmp, GUICtrlRead($iInp_BWThreshold), False) Case 1 ;Blur $hEffect = _GDIPlus_EffectCreateBlur(GUICtrlRead($iInp_BlurRadius), BitAND(GUICtrlRead($iCheckbox_BlurExpandEdge), $GUI_CHECKED)) Case 2 ;Brightness / Contrast $hEffect = _GDIPlus_EffectCreateBrightnessContrast(GUICtrlRead($iInp_BCBrightness), GUICtrlRead($iInp_BCContrast)) Case 3 ;Color Balance $hEffect = _GDIPlus_EffectCreateColorBalance(GUICtrlRead($iInp_CBCyanRed), GUICtrlRead($iInp_CBMagentaGreen), GUICtrlRead($iInp_CBYellowBlue)) Case 4 ;Color Curve $hEffect = _GDIPlus_EffectCreateColorCurve($iType, $iChannel, GUICtrlRead($iInp_CCValue)) Case 5 ;Color LUT Case 6 ;Color Matrix Local $tColorMatrix = DllStructCreate($tagGDIPCOLORMATRIX) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMRed), 1) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMGreen), 7) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMBlue), 13) DllStructSetData($tColorMatrix, "m", 1, 19) DllStructSetData($tColorMatrix, "m", 1, 25) $hEffect = _GDIPlus_EffectCreateColorMatrix($tColorMatrix) Case 7 ;Greyscale _GDIPlus_Greyscale($hImage, $hCtx_tmp, False) Case 8 ;Hue / Saturation / Lightness $hEffect = _GDIPlus_EffectCreateHueSaturationLightness(GUICtrlRead($iInp_HSLHueLevel), GUICtrlRead($iInp_HSLSatLevel), GUICtrlRead($iInp_HSLLightnLevel)) Case 9 ;Levels $hEffect = _GDIPlus_EffectCreateLevels(GUICtrlRead($iInp_LevelsHighlight), GUICtrlRead($iInp_LevelsMidtone), GUICtrlRead($iInp_LevelsShadow)) Case 10;Negative _GDIPlus_Negative($hImage, $hCtx_tmp) Case 11;Sharpen $hEffect = _GDIPlus_EffectCreateSharpen(GUICtrlRead($iInp_SharpenRadius), GUICtrlRead($iInp_SharpenAmount)) Case 12;Tint $hEffect = _GDIPlus_EffectCreateTint(GUICtrlRead($iInp_TintHue), GUICtrlRead($iInp_TintAmount)) EndSwitch If $iTabSelection <> 0 And $iTabSelection <> 7 Then _GDIPlus_BitmapApplyEffect($hImage, $hEffect) _GDIPlus_EffectDispose($hEffect) EndIf _GDIPlus_SaveBitmap($sFile, $hBmp_tmp, 90, $iBGColor) ;~ Switch _GDIPlus_ImageSaveToFile($hBmp_tmp, $sFile) ;~ Case 0 ;~ MsgBox(16 + 262144, "Error", "Image couldn't be saved!", 20, $hGUI) ;~ Case Else ;~ MsgBox(64 + 262144, "Information", "Image has been successfully saved!", 20, $hGUI) ;~ EndSwitch Case $iRadio_CCExposure, $iRadio_CCDensity GUICtrlSetLimit($iSlider_CCValue, 255, -255) GUICtrlSetData($iSlider_CCValue, 0) GUICtrlSetData($iInp_CCValue, 0) GUICtrlSetTip($iSlider_CCValue, "Range is from -255 to 255") If BitAND(GUICtrlRead($iRadio_CCExposure), $GUI_CHECKED) Then $iType = $iAdjustExposure Else $iType = $iAdjustDensity EndIf $bUpdatePreview = True Case $iRadio_CCBlackSaturation, $iRadio_CCWhiteSaturation If BitAND(GUICtrlRead($iRadio_CCBlackSaturation), $GUI_CHECKED) Then $iType = $iAdjustBlackSaturation GUICtrlSetLimit($iSlider_CCValue, 254, 0) GUICtrlSetData($iSlider_CCValue, 0) GUICtrlSetData($iInp_CCValue, 0) GUICtrlSetTip($iSlider_CCValue, "Range is from 0 to 254") Else $iType = $iAdjustWhiteSaturation GUICtrlSetLimit($iSlider_CCValue, 255, 1) GUICtrlSetData($iSlider_CCValue, 255) GUICtrlSetData($iInp_CCValue, 255) GUICtrlSetTip($iSlider_CCValue, "Range is from 1 to 255") EndIf $bUpdatePreview = True Case $iRadio_CCContrast, $iRadio_CCHighlight, $iRadio_CCShadow, $iRadio_CCMidtone GUICtrlSetLimit($iSlider_CCValue, 100, -100) GUICtrlSetData($iSlider_CCValue, 0) GUICtrlSetData($iInp_CCValue, 0) GUICtrlSetTip($iSlider_CCValue, "Range is from -100 to 100") If BitAND(GUICtrlRead($iRadio_CCBlackSaturation), $GUI_CHECKED) Then $iType = $iAdjustContrast ElseIf BitAND(GUICtrlRead($iRadio_CCHighlight), $GUI_CHECKED) Then $iType = $iAdjustHighlight ElseIf BitAND(GUICtrlRead($iRadio_CCShadow), $GUI_CHECKED) Then $iType = $iAdjustShadow Else $iType = $iAdjustMidtone EndIf $bUpdatePreview = True Case $iRadio_CCCurveAllChannel $iChannel = $iCurveChannelAll $bUpdatePreview = True Case $iRadio_CCCurveRed $iChannel = $iCurveChannelRed $bUpdatePreview = True Case $iRadio_CCCurveGreen $iChannel = $iCurveChannelGreen $bUpdatePreview = True Case $iRadio_CCCurveBlue $iChannel = $iCurveChannelBlue $bUpdatePreview = True Case $iCheckbox_BlurExpandEdge $bUpdatePreview = True Case $iTab Switch GUICtrlRead($iTab) Case 0 ;Black & White $iTabSelection = 0 Case 1 ;Blur $iTabSelection = 1 Case 2 ;Brightness / Contrast $iTabSelection = 2 Case 3 ;Color Balance $iTabSelection = 3 Case 4 ;Color Curve $iTabSelection = 4 Case 5 ;Color LUT $iTabSelection = 5 Case 6 ;Color Matrix $iTabSelection = 6 Case 7 ;Greyscale $iTabSelection = 7 Case 8 ;Hue / Saturation / Lightness $iTabSelection = 8 Case 9 ;Levels $iTabSelection = 9 Case 10;Negative $iTabSelection = 10 Case 11;Sharpen $iTabSelection = 11 Case 12;Tint $iTabSelection = 12 EndSwitch $bUpdatePreview = True EndSwitch If $bUpdatePreview And $bStart Then $bUpdatePreview = False DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hGraphic, "int", 7) $hImage_tmp = _GDIPlus_ImageClone($hImage) Switch $iTabSelection Case 0 ;Black & White DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hGraphic, "int", 5) _GDIPlus_BlackAndWhite($hImage_tmp, $hGraphic, GUICtrlRead($iInp_BWThreshold)) $bDrawFX = False Case 1 ;Blur $hEffect = _GDIPlus_EffectCreateBlur(GUICtrlRead($iInp_BlurRadius), BitAND(GUICtrlRead($iCheckbox_BlurExpandEdge), $GUI_CHECKED)) $bDrawFX = True Case 2 ;Brightness / Contrast $hEffect = _GDIPlus_EffectCreateBrightnessContrast(GUICtrlRead($iInp_BCBrightness), GUICtrlRead($iInp_BCContrast)) $bDrawFX = True Case 3 ;Color Balance $hEffect = _GDIPlus_EffectCreateColorBalance(GUICtrlRead($iInp_CBCyanRed), GUICtrlRead($iInp_CBMagentaGreen), GUICtrlRead($iInp_CBYellowBlue)) $bDrawFX = True Case 4 ;Color Curve $hEffect = _GDIPlus_EffectCreateColorCurve($iType, $iChannel, GUICtrlRead($iInp_CCValue)) $bDrawFX = True Case 5 ;Color LUT $bDrawFX = False Case 6 ;Color Matrix Local $tColorMatrix = DllStructCreate($tagGDIPCOLORMATRIX) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMRed), 1) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMGreen), 7) DllStructSetData($tColorMatrix, "m", GUICtrlRead($iInp_CMBlue), 13) DllStructSetData($tColorMatrix, "m", 1, 19) DllStructSetData($tColorMatrix, "m", 1, 25) $hEffect = _GDIPlus_EffectCreateColorMatrix($tColorMatrix) $bDrawFX = True Case 7 ;Greyscale _GDIPlus_Greyscale($hImage_tmp, $hGraphic) $bDrawFX = False Case 8 ;Hue / Saturation / Lightness $hEffect = _GDIPlus_EffectCreateHueSaturationLightness(GUICtrlRead($iInp_HSLHueLevel), GUICtrlRead($iInp_HSLSatLevel), GUICtrlRead($iInp_HSLLightnLevel)) $bDrawFX = True Case 9 ;Levels $hEffect = _GDIPlus_EffectCreateLevels(GUICtrlRead($iInp_LevelsHighlight), GUICtrlRead($iInp_LevelsMidtone), GUICtrlRead($iInp_LevelsShadow)) $bDrawFX = True Case 10;Negative _GDIPlus_Negative($hImage_tmp, $hGraphic) $bDrawFX = False Case 11;Sharpen $hEffect = _GDIPlus_EffectCreateSharpen(GUICtrlRead($iInp_SharpenRadius), GUICtrlRead($iInp_SharpenAmount)) $bDrawFX = True Case 12;Tint $hEffect = _GDIPlus_EffectCreateTint(GUICtrlRead($iInp_TintHue), GUICtrlRead($iInp_TintAmount)) $bDrawFX = True EndSwitch If $bDrawFX Then _GDIPlus_GraphicsClear($hCtx_tmp, 0xFF000000 + $iBGColor) _GDIPlus_BitmapApplyEffect($hImage_tmp, $hEffect) _GDIPlus_GraphicsDrawImageRect($hCtx_tmp, $hImage_tmp, 0, 0, $iWidth, $iHeight) _GDIPlus_EffectDispose($hEffect) CopyImage2Gfx($hBmp_tmp, $hGraphic, $hDC, $hDC_backbuffer, $iWidth, $iHeight) Else DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY) EndIf _GDIPlus_ImageDispose($hImage_tmp) EndIf WEnd Func ResetSettings() Switch $iTabSelection Case 0 ;Black & White GUICtrlSetData($iSlider_BWThreshold, $iSlider_BWThreshold_Default) GUICtrlSetData($iInp_BWThreshold, StringFormat("%04.2f", $iSlider_BWThreshold_Default / 100)) $bUpdatePreview = True Case 1 ;Blur GUICtrlSetData($iSlider_BlurRadius, $iSlider_BlurRadius_Default) GUICtrlSetData($iInp_BlurRadius, $iSlider_BlurRadius_Default) GUICtrlSetState($iCheckbox_BlurExpandEdge, $GUI_UNCHECKED) $bUpdatePreview = True Case 2 ;Brightness / Contrast GUICtrlSetData($iSlider_BCBrightness, $iSlider_BCBrightness_Default) GUICtrlSetData($iInp_BCBrightness, $iSlider_BCBrightness_Default) GUICtrlSetData($iSlider_BCContrast, $iSlider_BCContrast_Default) GUICtrlSetData($iInp_BCContrast, $iSlider_BCContrast_Default) $bUpdatePreview = True Case 3 ;Color Balance GUICtrlSetData($iSlider_CBCyanRed, $iSlider_CBCyanRed_Default) GUICtrlSetData($iInp_CBCyanRed, $iSlider_CBCyanRed_Default) GUICtrlSetData($iSlider_CBMagentaGreen, $iSlider_CBMagentaGreen_Default) GUICtrlSetData($iInp_CBMagentaGreen, $iSlider_CBMagentaGreen_Default) GUICtrlSetData($iSlider_CBYellowBlue, $iSlider_CBYellowBlue_Default) GUICtrlSetData($iInp_CBYellowBlue, $iSlider_CBYellowBlue_Default) $bUpdatePreview = True Case 4 ;Color Curve GUICtrlSetData($iSlider_CCValue, 0) GUICtrlSetData($iInp_CCValue, 0) GUICtrlSetState($iRadio_CCExposure, $GUI_CHECKED) GUICtrlSetState($iRadio_CCCurveAllChannel, $GUI_CHECKED) $bUpdatePreview = True Case 5 ;Color LUT ;~ $bUpdatePreview = True Case 6 ;Color Matrix GUICtrlSetData($iSlider_CMRed, $iSlider_CMRed_Default) GUICtrlSetData($iInp_CMRed, StringFormat("%04.2f", $iSlider_CMRed_Default / 100)) GUICtrlSetData($iSlider_CMGreen, $iSlider_CMGreen_Default) GUICtrlSetData($iInp_CMGreen, StringFormat("%04.2f", $iSlider_CMGreen_Default / 100)) GUICtrlSetData($iSlider_CMBlue, $iSlider_CMBlue_Default) GUICtrlSetData($iInp_CMBlue, StringFormat("%04.2f", $iSlider_CMBlue_Default / 100)) $bUpdatePreview = True Case 7 ;Greyscale GUICtrlSetData($iSlider_GSLumRed, $iSlider_GSLumRed_Default) GUICtrlSetData($iInp_GSLumRed, StringFormat("%04.2f", $iSlider_GSLumRed_Default / 100)) GUICtrlSetData($iSlider_GSLumGreen, $iSlider_GSLumGreen_Default) GUICtrlSetData($iInp_GSLumGreen, StringFormat("%04.2f", $iSlider_GSLumGreen_Default / 100)) GUICtrlSetData($iSlider_GSLumBlue, $iSlider_GSLumBlue_Default) GUICtrlSetData($iInp_GSLumBlue, StringFormat("%04.2f", $iSlider_GSLumBlue_Default / 100)) $GDIP__RLUM = $iSlider_GSLumRed_Default / 100 $GDIP__GLUM = $iSlider_GSLumGreen_Default / 100 $GDIP__BLUM = $iSlider_GSLumBlue_Default / 100 $bUpdatePreview = True Case 8 ;Hue / Saturation / Lightness GUICtrlSetData($iSlider_HSLHueLevel, $iSlider_HSLHueLevel_Default) GUICtrlSetData($iInp_HSLHueLevel, $iSlider_HSLHueLevel_Default) GUICtrlSetData($iSlider_HSLSatLevel, $iSlider_HSLSatLevel_Default) GUICtrlSetData($iInp_HSLSatLevel, $iSlider_HSLSatLevel_Default) GUICtrlSetData($iSlider_HSLLightnLevel, $iSlider_HSLLightnLevel_Default) GUICtrlSetData($iInp_HSLLightnLevel, $iSlider_HSLLightnLevel_Default) $bUpdatePreview = True Case 9 ;Levels GUICtrlSetData($iSlider_LevelsHighlight, $iSlider_LevelsHighlight_Default) GUICtrlSetData($iInp_LevelsHighlight, $iSlider_LevelsHighlight_Default) GUICtrlSetData($iSlider_LevelsMidtone, $iSlider_LevelsMidtone_Default) GUICtrlSetData($iInp_LevelsMidtone, $iSlider_LevelsMidtone_Default) GUICtrlSetData($iSlider_LevelsShadow, $iSlider_LevelsShadow_Default) GUICtrlSetData($iInp_LevelsShadow, $iSlider_LevelsShadow_Default) $bUpdatePreview = True Case 10;Negative $bUpdatePreview = True Case 11;Sharpen GUICtrlSetData($iSlider_SharpenRadius, $iSlider_SharpenRadius_Default) GUICtrlSetData($iInp_SharpenRadius, $iSlider_SharpenRadius_Default) GUICtrlSetData($iSlider_SharpenAmount, $iSlider_SharpenAmount_Default) GUICtrlSetData($iInp_SharpenAmount, $iSlider_SharpenAmount_Default) $bUpdatePreview = True Case 12;Tint GUICtrlSetData($iSlider_TintHue, $iSlider_TintHue_Default) GUICtrlSetData($iInp_TintHue, $iSlider_TintHue_Default) GUICtrlSetData($iSlider_TintAmount, $iSlider_TintAmount_Default) GUICtrlSetData($iInp_TintAmount, $iSlider_TintAmount_Default) $bUpdatePreview = True EndSwitch EndFunc ;==>ResetSettings #Region GDI+ FX functions Func _GDIPlus_BlackAndWhite($hBitmap, $hGraphic, $iThreshold, $bUpdate = True) Local Const $hIA = _GDIPlus_ImageAttributesCreate() _GDIPlus_ImageAttributesSetThreshold($hIA, $iThreshold) Local $pBWMatrix = DllStructGetPtr(_GDIPlus_ColorMatrixCreateGrayScale()) _GDIPlus_ImageAttributesSetColorMatrix($hIA, $GDIP_COLORADJUSTTYPE_DEFAULT, True, $pBWMatrix) Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap) If $bUpdate Then CopyImage2Gfx($hBitmap, $hGraphic, $hDC, $hDC_backbuffer, $iW, $iH, $hIA) Else _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor) _GDIPlus_GraphicsDrawImageRectRect($hGraphic, $hBitmap, 0, 0, $iW, $iH, 0, 0, $iW, $iH, $hIA) EndIf _GDIPlus_ImageAttributesDispose($hIA) EndFunc ;==>_GDIPlus_BlackAndWhite Func _GDIPlus_Greyscale($hBitmap, $hGraphic, $bUpdate = True) Local $ii, $iJ, $tColorMatrix, $aLums[4] = [GUICtrlRead($iInp_GSLumRed), GUICtrlRead($iInp_GSLumGreen), GUICtrlRead($iInp_GSLumBlue), 0] $tColorMatrix = DllStructCreate($tagGDIPCOLORMATRIX) For $ii = 0 To 3 For $iJ = 1 To 3 DllStructSetData($tColorMatrix, "m", $aLums[$ii], $ii * 5 + $iJ) Next Next DllStructSetData($tColorMatrix, "m", 1, 19) DllStructSetData($tColorMatrix, "m", 1, 25) Local Const $hIA = _GDIPlus_ImageAttributesCreate() _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $tColorMatrix) Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap) If $bUpdate Then CopyImage2Gfx($hBitmap, $hGraphic, $hDC, $hDC_backbuffer, $iW, $iH, $hIA) Else _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor) _GDIPlus_GraphicsDrawImageRectRect($hGraphic, $hBitmap, 0, 0, $iW, $iH, 0, 0, $iW, $iH, $hIA) EndIf _GDIPlus_ImageAttributesDispose($hIA) EndFunc ;==>_GDIPlus_Greyscale Func _GDIPlus_Negative(ByRef $hBitmap, ByRef $hGraphic) Local Const $hIA = _GDIPlus_ImageAttributesCreate() _GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, _GDIPlus_ColorMatrixCreateNegative()) CopyImage2Gfx($hBitmap, $hGraphic, $hDC, $hDC_backbuffer, _GDIPlus_ImageGetWidth($hBitmap), _GDIPlus_ImageGetHeight($hBitmap), $hIA) _GDIPlus_ImageAttributesDispose($hIA) EndFunc ;==>_GDIPlus_Negative #EndRegion GDI+ FX functions #Region Message Functions Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg, $wParam Switch $lParam Case $hSlider_BWThreshold GUICtrlSetData($iInp_BWThreshold, StringFormat("%04.2f", GUICtrlRead($iSlider_BWThreshold) / 100)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_BlurRadius GUICtrlSetData($iInp_BlurRadius, GUICtrlRead($iSlider_BlurRadius)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_BCBrightness GUICtrlSetData($iInp_BCBrightness, GUICtrlRead($iSlider_BCBrightness)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_BCContrast GUICtrlSetData($iInp_BCContrast, GUICtrlRead($iSlider_BCContrast)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CBCyanRed GUICtrlSetData($iInp_CBCyanRed, GUICtrlRead($iSlider_CBCyanRed)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CBMagentaGreen GUICtrlSetData($iInp_CBMagentaGreen, GUICtrlRead($iSlider_CBMagentaGreen)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CBYellowBlue GUICtrlSetData($iInp_CBYellowBlue, GUICtrlRead($iSlider_CBYellowBlue)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CCValue GUICtrlSetData($iInp_CCValue, GUICtrlRead($iSlider_CCValue)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CMBlue GUICtrlSetData($iInp_CMBlue, StringFormat("%04.2f", GUICtrlRead($iSlider_CMBlue) / 100)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CMGreen GUICtrlSetData($iInp_CMGreen, StringFormat("%04.2f", GUICtrlRead($iSlider_CMGreen) / 100)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_CMRed GUICtrlSetData($iInp_CMRed, StringFormat("%04.2f", GUICtrlRead($iSlider_CMRed) / 100)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_GSLumBlue GUICtrlSetData($iInp_GSLumBlue, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumBlue) / 100)) $GDIP__BLUM = GUICtrlRead($iSlider_GSLumBlue) / 100 $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_GSLumGreen GUICtrlSetData($iInp_GSLumGreen, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumGreen) / 100)) $GDIP__GLUM = GUICtrlRead($iSlider_GSLumGreen) / 100 $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_GSLumRed GUICtrlSetData($iInp_GSLumRed, StringFormat("%04.2f", GUICtrlRead($iSlider_GSLumRed) / 100)) $GDIP__RLUM = GUICtrlRead($iSlider_GSLumRed) / 100 $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_HSLHueLevel GUICtrlSetData($iInp_HSLHueLevel, GUICtrlRead($iSlider_HSLHueLevel)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_HSLLightnLevel GUICtrlSetData($iInp_HSLLightnLevel, GUICtrlRead($iSlider_HSLLightnLevel)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_HSLSatLevel GUICtrlSetData($iInp_HSLSatLevel, GUICtrlRead($iSlider_HSLSatLevel)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_LevelsHighlight GUICtrlSetData($iInp_LevelsHighlight, GUICtrlRead($iSlider_LevelsHighlight)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_LevelsMidtone GUICtrlSetData($iInp_LevelsMidtone, GUICtrlRead($iSlider_LevelsMidtone)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_LevelsShadow GUICtrlSetData($iInp_LevelsShadow, GUICtrlRead($iSlider_LevelsShadow)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_SharpenAmount GUICtrlSetData($iInp_SharpenAmount, GUICtrlRead($iSlider_SharpenAmount)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_SharpenRadius GUICtrlSetData($iInp_SharpenRadius, GUICtrlRead($iSlider_SharpenRadius)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_TintAmount GUICtrlSetData($iInp_TintAmount, GUICtrlRead($iSlider_TintAmount)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) Case $hSlider_TintHue GUICtrlSetData($iInp_TintHue, GUICtrlRead($iSlider_TintHue)) $bUpdatePreview = True If BitAND(GUICtrlGetState($iBtnSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($iBtnSave, $GUI_DISABLE) EndSwitch Return "GUI_RUNDEFMSG" EndFunc ;==>WM_HSCROLL Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg, $lParam Switch $wParam Case $iReset ResetSettings() Case $iClipboard Local $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp_tmp) Local $hClipboard_Bitmap = _WinAPI_CopyImage($hHBmp, 0, 0, 0, $LR_COPYDELETEORG + $LR_COPYRETURNORG) _ClipBoard_Open(HWnd($hGUI)) _ClipBoard_Empty() _ClipBoard_SetDataEx($hClipboard_Bitmap, $CF_BITMAP) If Not @error Then MsgBox(64 + 262144, "Information", "Image put to clipboard!", 10) Else MsgBox(16 + 262144, "Error", "An error has occured: " & @error, 10) EndIf _ClipBoard_Close() _WinAPI_DeleteObject($hHBmp) _WinAPI_DeleteObject($hClipboard_Bitmap) EndSwitch Return "GUI_RUNDEFMSG" EndFunc ;==>WM_COMMAND Func WM_CONTEXTMENU($hWnd, $Msg, $wParam, $lParam) #forceref $Msg, $wParam, $lParam Local $aCI = GUIGetCursorInfo(HWnd($hGUI)) If Not @error Then Switch $aCI[4] Case $iTab _GUICtrlMenu_TrackPopupMenu($hQMenu, $hWnd) Return True Case $iBtnSave _GUICtrlMenu_TrackPopupMenu($hQMenu2, $hWnd) Return True EndSwitch EndIf Return "GUI_RUNDEFMSG" EndFunc ;==>WM_CONTEXTMENU Func WM_PAINT($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg,$wParam, $lParam DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY) Return "GUI_RUNDEFMSG" EndFunc ;==>WM_PAINT Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg,$wParam, $lParam DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY) Return "GUI_RUNDEFMSG" EndFunc ;==>WM_NOTIFY Func WM_DROPFILES($hWnd, $Msg, $wParam, $lParam) #forceref $hWnd, $Msg, $lParam Local $aRet = DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", -1, "ptr", 0, "int", 0) If @error Then Return SetError(1, 0, 0) Local $sDroppedFile, $tBuffer = DllStructCreate("char[256]") If $aRet[0] = 1 Then DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", 0, "ptr", DllStructGetPtr($tBuffer), "int", DllStructGetSize($tBuffer)) $sDroppedFile = DllStructGetData($tBuffer, 1) If StringInStr(FileGetAttrib($sDroppedFile), "D") Then DllCall("shell32.dll", "none", "DragFinish", "int", $wParam) Return MsgBox(16 + 262144, "Error", "This is not a file ;-)", 20, $hGUI) EndIf EndIf DllCall("shell32.dll", "none", "DragFinish", "int", $wParam) $sFile = $sDroppedFile $bDnD = True GUICtrlSendMsg($iBtnLoad, $BM_CLICK, 0, 0) Return "GUI_RUNDEFMSG" EndFunc ;==>WM_DROPFILES #EndRegion Message Functions #Region needed additional functions Func _GDIPlus_SaveBitmap($sFilename, $hBmp, $iJPGQual = 90, $iTpColor = 0) Local $bError = False, $bResult, $aResult, $hBmp_BG, $hBmp1bpp, $hCtxt1bpp; $hBmp8bpp, $hCtxt8bpp Local $sSaveTypes = "|jpg|bmp|gif|png|tif|", $sSaveType = "jpg" Local $sSuffix = StringRight($sFilename, 3) If StringInStr($sSaveTypes, $sSuffix) Then $sSaveType = $sSuffix Else $sFilename &= "." & $sSaveType EndIf If FileExists($sFilename) Then Local $iChoice = MsgBox(4 + 32 + 256 + 262144, "Warning", "'" & $sFilename & "' already exists!" & @CRLF & @CRLF & "Overwrite file?", 0, $hGUI) If $iChoice = 7 Then Return 0 FileDelete($sFilename) EndIf If Not $iTabSelection Then $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF01INDEXED, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap $hBmp1bpp = $aResult[6] $hCtxt1bpp = _GDIPlus_ImageGetGraphicsContext($hBmp1bpp) DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt1bpp, "int", 5) _GDIPlus_GraphicsDrawImageRect($hCtxt1bpp, $hBmp, 0, 0, $iWidth, $iHeight) _GDIPlus_GraphicsDispose($hCtxt1bpp) $hBmp = $hBmp1bpp ;~ ElseIf $iTabSelection = 7 Then ;~ $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", $GDIP_PXF08INDEXED, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap ;~ $hBmp8bpp = $aResult[6] ;~ $hCtxt8bpp = _GDIPlus_ImageGetGraphicsContext($hBmp8bpp) ;~ DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hCtxt8bpp, "int", 0) ;~ _GDIPlus_GraphicsDrawImageRect($hCtxt8bpp, $hBmp, 0, 0, $iWidth, $iHeight) ;~ _GDIPlus_GraphicsDispose($hCtxt8bpp) ;~ $hBmp = $hBmp8bpp EndIf Switch $sSaveType Case "jpg" Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG") Local $tParams = _GDIPlus_ParamInit(1) Local $tData = DllStructCreate("int Quality") DllStructSetData($tData, "Quality", $iJPGQual) Local $pData = DllStructGetPtr($tData) _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData) Local $pParams = DllStructGetPtr($tParams) If $iTpColor Then $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor) $bResult = _GDIPlus_ImageSaveToFileEx($hBmp_BG, $sFilename, $sCLSID, $pParams) _GDIPlus_BitmapDispose($hBmp_BG) Else $bResult = _GDIPlus_ImageSaveToFileEx($hBmp, $sFilename, $sCLSID, $pParams) EndIf If Not $bResult Then $bError = True Else $bError = False EndIf $tData = "" $tParams = "" Case Else If $iTpColor And $sSuffix <> "png" Then $hBmp_BG = _GDIPlus_ChangeBGColor($hBmp, 0xFF000000 + $iTpColor) $bResult = _GDIPlus_ImageSaveToFile($hBmp_BG, $sFilename) _GDIPlus_BitmapDispose($hBmp_BG) Else $bResult = _GDIPlus_ImageSaveToFile($hBmp, $sFilename) EndIf If Not $bResult Then $bError = True Else $bError = False EndIf EndSwitch If Not $iTabSelection Then _GDIPlus_BitmapDispose($hBmp) If $bError Then MsgBox(16 + 262144, "ERROR", "An error has occured - the image couldn't saved!", 30, $hGUI) Return 0 EndIf MsgBox(64 + 262144, "Information", "Image successfully saved to '" & $sFilename & "'", 10, $hGUI) Return 1 EndFunc ;==>_GDIPlus_SaveBitmap Func _GDIPlus_ChangeBGColor($hBitmap, $iBGColor) Local $iW_TP = _GDIPlus_ImageGetWidth($hBitmap), $iH_TP = _GDIPlus_ImageGetHeight($hBitmap) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW_TP, "int", $iH_TP, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) ;create empty 32 bit bitmap Local $hBmp_TP = $aResult[6] Local $hCtxt_TP = _GDIPlus_ImageGetGraphicsContext($hBmp_TP) _GDIPlus_GraphicsClear($hCtxt_TP, $iBGColor) _GDIPlus_GraphicsDrawImageRect($hCtxt_TP, $hBitmap, 0, 0, $iW_TP, $iH_TP) _GDIPlus_GraphicsDispose($hCtxt_TP) Return $hBmp_TP EndFunc ;==>_GDIPlus_ChangeBGColor Func CopyImage2Gfx($hBmp, $hGraphic, $hDC, $hDC_backbuffer, $bW, $bH, $hIA = 0) Local $f, $iXPos, $iYPos, $iImgW, $iImgH _GDIPlus_GraphicsClear($hGraphic, 0xFF000000 + $iBGColor) If $bW < $iW_Prev And $bH < $iH_Prev Then $iXPos = ($iW_Prev - $bW) / 2 $iYPos = ($iH_Prev - $bH) / 2 $iImgW = $bW $iImgH = $bH Else If $bW > $bH Then $f = $bW / $iW_Prev If ($bH / $f) > $iH_Prev Then $f = $bH / $iH_Prev Else $f = $bH / $iH_Prev EndIf $iImgW = Int($bW / $f) $iImgH = Int($bH / $f) $iXPos = ($iW_Prev - $iImgW) / 2 - 2 $iYPos = ($iH_Prev - $iImgH) / 2 - 2 EndIf If $hIA Then _GDIPlus_GraphicsDrawImageRectRect($hGraphic, $hBmp, 0, 0, $bW, $bH, $iXPos, $iYPos, $iImgW, $iImgH, $hIA) Else _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBmp, $iXPos, $iYPos, $iImgW, $iImgH) EndIf DllCall($hDLL_GDI32, "bool", "BitBlt", "handle", $hDC, "int", 2, "int", 2, "int", $iW_Prev - 4, "int", $iH_Prev - 4, "handle", $hDC_backbuffer, "int", 0, "int", 0, "dword", $SRCCOPY) EndFunc ;==>CopyImage2Gfx Func _GDIPlus_Convert2HBitmap($hBitmap, $iColor); removes alpha backround using system color and converts to gdi bitmap Local $iBGColor = _WinAPI_GetSysColor($iColor) $iBGColor = 0x10000 * BitAND($iBGColor, 0xFF) + BitAND($iBGColor, 0x00FF00) + BitShift($iBGColor, 16) Local $iWidth = _GDIPlus_ImageGetWidth($hBitmap), $iHeight = _GDIPlus_ImageGetHeight($hBitmap) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0) Local $hBitmap_New = $aResult[6] Local $hCtx_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_New) Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $iBGColor) _GDIPlus_GraphicsFillRect($hCtx_new, 0, 0, $iWidth, $iHeight, $hBrush) _GDIPlus_GraphicsDrawImageRect($hCtx_new, $hBitmap, 0, 0, $iWidth, $iHeight) Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_New) _GDIPlus_BrushDispose($hBrush) _GDIPlus_BitmapDispose($hBitmap_New) _GDIPlus_GraphicsDispose($hCtx_new) Return $hHBitmap EndFunc ;==>_GDIPlus_Convert2HBitmap ;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17 Func Reset_Icon() Local $Reset_Icon $Reset_Icon &= "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACC0lEQVR42mNkIAKwxjMJM/9i8vjx9M86hkMM35HlGAlpZslmcFMxllssrMcidq7/Ydr3pX9nE2dANIOImD7HXCltAT9hUX4GEUkhhps7vj+/kHpBCq8B7BHMvPwezFUCnHylopI8zOxM7AyszGwMAvwCDPwK3Axz9Hf6/rv9fwtOA5itGIPlUvjXiMryMPDy8jFwMHMwcLJzMgjw8jNoK6gwrF9y/vGh2MNy+L3AwcDGYMRgoJMivdLQWUOBm4WbgYebh4HxNyPDP5FvDPNd92S92/N5OsFAtFqj8cDCVVeenY2D4fyxa3c4jkvclnDm9fzw4BvDishNjAQNCDhu/VbfREPo28/vDA8OvPq42mePQGRKLPfyOYu/EhWNQUdt3uiaawh//PKR4cdhln8zfJczo6vBa4DHJtPHZj66Mm/fvWf4tov5//yoNUwwuf///7MwMjL+wWuAzUyd97ZpJgJvnr5h2H/i9Ls7IS+FQeJrVq1nDAkL/E/QBYELvK+yeX3UYv/Ew7Dn7u4HDGdzjJ9VTXxHtBeCZwR1vOO9H8tjwyL15fC3R5/OftQ62//kK9EGgIDaZMmez4ovikV5JRmYtvBmXui+OQMkPmPxSsaM2PD/BA0AgfA6t9gzpqcX/WT6yiC6V0n3fN+NK/uOXmZ0stYlzgAQiOwOdb/14+yEs5z3/jOUMGjBxAESN7ER3OAlewAAAABJRU5ErkJggg==" Return Binary(_Base64Decode($Reset_Icon)) EndFunc ;==>Reset_Icon Func _Clipboard($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Clipboard $Clipboard &= 'iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQCAMAAAAVv241AAABBVBMVEX8/f/s7vD49vj5+vv4+fuQSBTh4eH4+vvk5ujt7u/t7vDj5efAwMDy8vP09fbS0tLc2tr49/j9/v/59/jw8PD7/f/Tizba2trDkFbQgSTg29OtfUTq2MDk5OTj4+Pk4uHPfyLk4+LdkTLSiTbSgiPLeyLj4+Tn5+e2il62mn/m5ube1cvs7u+zgU+5cCnk5ebWlEOufEHNzc3Fdyazbi7Ozs7MzMytcDiyczq2k2+vd0fj5OaxbzauflatajSvh2bk5eenZjKyknahYTGleVbv7Ozz8vPHxcOudkHz9PXw8fLl5uedXS6ZURuxcDaQRxSMRhSJRhaMTiOTXDSYaEWUXjeYTxv6l0DeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVR4Xj2M1a6EUAADe3CHdXd3d3eXq///KbtLgHlpJm0K7xtOUQKfhL/ZOrR1vdePpDPIho1CjOPi5Uo0iFCCgglPSkimXJZII+TyltBSER3BmjHVGuoNj9uEFo/oypTPhCEDDAVH7hhPnNkUM7vhyRyLpX0trrCW7WuywdbY7VVV007nyxU3ln2wz6/vn9+//xdk9BJOUsHn+gAAAABJRU5ErkJggg==' Local $bString = Binary(_Base64Decode($Clipboard)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\clipboard_paper_16x16.png", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Clipboard Func _Logo($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Logo $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= 'RraQyCZxtGNt2+1rZK5u6l9PBlRkV591g/BZ6Z4vcM3hSi0V1gKMdteF+DGf242f4kaAoG4Or0ONmLeOfRt2W6oatKImYisCayOqEticBjrsxFZH01Cx4d52iktioKWSsuoZckXZh2Qh2NTJwNZqjtO0OLWhvOpS1OEPYT4zf3Vy/wAzfdlKzeGUlbB1FO1kKz0sqG7IBupYPLxj70XpMeEsgB/DehX8Xp6iGOgy+66L4NLxVbq3QS5PIvGLzsSiYR5q+0p1KmMLNHGIaCmTqx8U2/MZD+rVfxH2Ojv4Zutbk23tHnKY6baLU0saWRGuNq4z+HbkETIr6avHqWdbVg0rBIUvBKvBUSOcNhtXTtuGQNIEIhIRCquyq1GA8W9xX8O3O0b+/D8N6OjfA4/nsgcnWhWlJRqO8RBYA7TRnFhzPIeHdQx9caaPH0q/cjN9tD+kUka43IeynqaVA5OrkW/CK2xx+8eSJLlWAyDXgzyj4sjYcbUeGKFW2hUWaTR01ufGNYfTrkIwBsOdqT0/EOVMhYtIAfI6Efzds5SnhVk67LqRYXCF6P2u3OMiQHGNmvNd0GKHZE6nlqDSe7Fk94b1oWNBr22q4jvgRlDujpsTcm0MpTojqknaJlncVDM2DxceO5KOFE6xuKHj1FvYT4zu40yMovxy1aXhnToiNpePq2N+6F2fTBSG46P8uWrv4Z1KSOVZKXdmNMdcWGDONdvDW7ERwpWC18RSjJgZIrxR83UrvP8AiOO7WXemh/xFW2O8K3lAx0mTqx8V7UBXMlZF21MzSiOXsdWPivOETMcTyE7TOJm0Zm1j4/m7X3XP/TtxrCVj4pt9ipsoM2jsyxcfuL99orfbfbdsIlEaaPudHfxX+67Y/vgfDejo3wLze48rIhLhpGfTQE9wprAaMHyByKU7E05TjelYkarTj9hW+3HRVz8W0EHgovFaH57IvyL0vtplYM8hV6j07MJoU9qXxfm0IZE43jXgowU28ZUjBrkvNFXb3JVWbTs2rnGMC35jwUI6jTLJspi3exVGJNBTbxkPAozatiK2Ocz3MZEjUY91UgB8rJ8fDp1Bdlbycenjb0fyUuHTDm9Qe1kLC7AJUAMINDWsz/j7Lc8yESiNNH2zZXQsSGPJxFkhyE1K5AkIWE5lnZ2HqDs3Tgx1co7GI8UMw7/T3y8FetEO+Kvd3V66JaVzJvIlCp2jFn9VtBhxYs+LWZfU7mWJvH14+LFAFpp1ICjMfVyWR++xXroNaMFGOvUzeMj+WuEm7vjzPjzgsKJVzXNORGfbWJ9vlZnnsR/p1kdnwe1GEKNntamNAWIJtpgmmwAujNtozkPItOcXq2ZUzws+Ll4YBQtnxuJrjkMVksmsFPKWWB8N73Vh/Fc8/qZbE3yld/Dejo8lWPKeWx5ZFcXw6tP4xVif08lmRMkKbJyMj3mkSYz0sRW+C/GOd+6xOzDHHwf4rt1MxV/Fvxh4yNKFoNLIPGVvHwszxl0hHefjJffLIPyyVdvDKayQOsCvY69K20zjx+RgePc+L0u/LdJ3t/4bE/iXsF/jR/CJ8ZyTtRy7bGIXg8PGG/x2DHvGuL7bg/zGWbmW9XkWoC1G1XekeoSL20Nr05ZAFpg1xwrgyEuqUkt5sHw3udGHtZOkSJa1od0b45meNm8BfV0TJNJYk0hjtneNCs3TEKzctV5HNFNkGio5Rk+RsEXbWraAENMMjFyyp04Vx602XtyDAFRqgLUXdVo+OPixFYwTmJcG/eV4eIx9k2WRqRshpmlKBxQswGe5SVTLhsJrqneaLfXIEepea4PJUu7DWK9l3r8oixTQd8dRqjDEuVswHpjMhhmT+H6NiFkLttsrRkZq1mFyEgDsRhiuLSqUMVGrXNasPDTVIdxlbTccsD4b3yVp/FWf5m3Pp3apFB/SStS02Fg71qTcL4vh1ZjtqD9NFohsP9MhFfS4EcQoVoZRpNj67eCN4xawg+OOi3g/xjv7/Ef27S0x' $Logo &= '5sshARx4Y8y05fZl+X2yl18uX7syD4ZOrA9tbG+MstBnRaArE44fmpFHSVKjGqG6RqtfE15VaOHjwgP4RVkW6tnIR3kRx8Zibho1wduDAx/8W7eMg2inbq5jo7YsXxJdbhKTsgO/Mzcsi38tOHc5W3HhlgfDe+TIwdq3i5dbvZgQrIDrTp3+14bfJszU+Oo1TdpaLbZna393c+BSd3LfDXkPHmvyBW4qI9KcfBqloWSlO+7yDesyDDS0roZlCLHWqghU7k7QoaTex0Ye1k8dIkg2Y2Xd3ijdsaPSqLhRcob0HelJnyDD5NexQ7S6WQrLnkZIGJ5lEHS4LIgMWrV76nXxtGyC40fBRbV3EQPNo5Gu/LIlVXFNEsA6Ux+KlPJVg/T7RTijpN75K2/imT8KUBXBY+ySrYE/hSWXqltUogyOqdAwrcG9CQ2r+LHbXRyIVzvp3yEl9PsFeFK/EOKx5aQSDd4Awhq1alV7avpGZVm4ZnHa6RcpJrZS5AqbHwm/VGAOOadywVpRFgJikIDc8oFvDek47R6/JTxE60mlfgnDkLapY4VUbC8Zeka0Lp5KSx1ElacG9Jsi463LIjq3p3ow8ZaiW5X7K7rGU3qUpN4ysdDHHeViPwatyaeInXfhfZRje5djcsWel4p08lWD9PtFOKOk36DxUw7U6u0XFAK/0Civ9P0V/p+ig4amCZYaavCdyxLHtJS7IDw6s12Vu0qmMFWiMGlGGvR2Uh7XQURaUY69HinEmGmb3OyKHayGKHaaUrNRRIM4pwnt2m563PljvvuCj4ce04GXbsoi0mitKUV0lGGkzJ2Uh7TgZMBRFpcU8U40w0zfoTVz4xg5fTbN+FaVfHGukE3q8drpJoaTN6OykPacC7dl27LoMmCmguK4Jo+k47VzHmLYBRhUHejxtTZ3RjhqodQ2SIEGlIfi7i42Xxb2myo217HipB2u3ZMBNDS0nhtdJNDXq7J4JhriniumminZZGi9wVXHduaMU8VIO09dl27KItLgukmGmb9LS4rgumumumngsyGwSm0L/R+i9VV8YIEYVWZRBpMNa9uv1nZTFtErbVnChLN6d4K/NtIZyxWHqTDXg2vTS0iFGFv0GKNza/WksrCXZQhdtgp4sVWIg6UW/S0tLS0te7SeKnBX6Vwl6VG6ZVMQGu4gaUYaWk8E0Eze7S1+w4rj7NLS1+1lDa6KYKYa4rX7d4pxJwMu2ZNXUB6TN6k5cJnsZKGFsGsUPc78WgeVixhS2LNT9aUNrpJhpm/buyce10kw0zf7zr97paWvc2MqtdyN16IMdkw5IXstWxUhAL1gmwtI7s2m/X1/zzNULD2MDjYEDayA6pKl4N6HplqwSU8XStWB/wDw5maKCSyG9/D0mlZ9CCgaHx/0N//EADsRAAEDAgIGBwcCBgMBAAAAAAEAAgMEERIhECIxQVHwEzJhgZGxwQUUIHGh0eEwQjNAQ1Bw8SNSYHL/2gAIAQMBAT8B/wARAX/mA1ztg+AC62f2SGmdJrHIJkEX7W3+fNkIWnOw8AjDGcm28Ah0bqk4Rl9gnPhY7Cdv/wAhBrJdgDvlkfTyT6UOzi8N/wCdNPK7DGb7PTPSQWmx0gXUVO1m0Xd9Bz4JswGXSDn6KQgts7MePPcqpkLMm7fpz4/BFAZRe9gp2xxxNDPH9GmAiYLnM5/ZEtky2/VGCO/U8/ugIgOqPBTVDqduocz9P1oqdtgX79y6CI6uDz9VK1rXkNNx/KU8QkdrbApJAwY3dw53KSaSXrFNcWm4TawkHHt4qn/d8vUKo/inRBMZjgft3FVLBI3pN+/RDlCT8/K3rojwtYHRi1/FVJvM7nZppWW195yH3U02LUb1RzfRDUGPVObVI8yPLjvUVM6QYjkF7lHxKngMPaFTOsHBVR18PDnzTI3SOwtTaNu8p9ELahzTWOebNXusmKydBExhc52npZP+xTXyPcG4jmqqZ2Vjtueed6E8w2OPinyvk6xXu8mH' $Logo &= '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' $Logo &= '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' $Logo &= 'Zb1DHKdJFHdlbf6fA1m1fSr+9XNYHsPhXJsK8W6tbgfzULpFzHdm8Npn6Kak7d5ppNZI2DrovJznbWx8IOVGYbDyYlusD1f1rEf2ngh/Ibmv8aIbWDtp4T5B1dm7lk6xagBsSIDvP9OVG88ZD7q6qzHyiT6/COTpHUvbWWLW4Fh1saA8GxFxy5VuznYoq+Lf9hTqrxcar6KtIqsOsVpMNcxDpJw7KFjyTLxQH21PJ5z2HYNXLo4hnkO6r4t9IfNGpa8Wir2CrSordooMpLYc8fI5AmV2JF+at6XSrokKkgHbXiBzd7nZTSYotPlF+cdXdWmZVDnYALBfmJPumsHBuRcx9nhOsUUjsptqWpBiLKynYN1XvoI+O80Mselmc5Q0vO9NWTadp41CGdo4y1mK+qudNMR2ge6voVb72uvGpAncKtFiBEfsTVmdtND5wGscl3YKOs1zXDdmuo5XBjjziwO01bDre21jsFa5kH7H9avZZR9nUauOQpBqt0nO6vG3mbi/woiNQvYKmkbbmyr1AcjKiO9tpUXtTaiGbObUAIH1cdVF5YeYNtn8DxJyR+efdV2UyNxc3rULVcLo385dVGKbpjfxHHk8RDIxvbZYd9eNPOuRqq8zGBOA6X9KSKGMGSTa784gUFjFhUiiJzlPk6608t4kjIIS+s699azXNDsOpDVr6+B1cls2vhV2VwPuGrq1+XR4dTI+/gO2rzYjL1Rr8a8XiW/aUGgMUthucbOQJldiRfmi9LpV0SMtwDtrxA5u922U8uKLYjKL846u6tMyqHOwKLBfCY8BSJcahxqFOLX8Dxjqt+Jr6VP3q+kX96rqQR1cjnzpDU/9p4LVGx3qDR60Hv5Yk86QfGsQ32gvcOW43G9StwU0o4Vzjc8BtoeBGNyXeoV4yX+YNFpNcz7Tw6uQh5FB7a5jq3YeSSLyRrXs5JX8yAmkB2218mVNbsbCrA3c9JuNbas00ffXi3Vuw0VbWDqNNG3kG1Qyea3qNLpb82gFFgKlCi5y0Cuw/MBPOZR66P2YwPb4TDdInrFGZlu3q5IXPRVtfI9+FZYF0h847K8ZIbcF1CtgqyjNUqTq2j1ZQwrJ5pK+urbCNYPA0j2AJGulUtls16CRiyjlDrqWXb20T1Ui7yLnt5OdLGva1SKjh1bnixv28k+iVSSRct2V8pZRmte1WnXRHjuoAaw7qPXylP0S9Pr6qsuoVmYgDrr6VO+rqbihKOlFr9HJPH+2KaUDnk317uSFjsIK36+RH3NzGqSLzhWae0j+ocltjjotwrLJmjQbatEgXk+UQixHTA3jk0MJsfKbzRWgwqZyOkb76/Rr+zXjkDD7OqtzRuKaMm+jOWoZPNb1Gl0t+bQCiwFTAazalZDcHwsvnyRr3uByKNyQe0/9vgBgxR12MK+jw+LT+G3vFNGIjDOou0UgsbceusXlXIFly6uwckTZW52v11Mi7cqt3/6eCxqMcFFP1ADlvuiW/pNO/nOT6610C0TZW1rlF6+hk/dqRYwWY7hV5m0Y4DbSYeFbX50h4+DM32QPbUF+v5hb7E53JoYzlt0iK2cjJIbsm/iKTrj9/JOx8t1iHv5XfzBYdvIY0Noxq1b62VddR4iuf01NjUnYKNKsXTc7eFXeRz+1Wp5B+2aYgsc22/zEA+3epPur4UPp9laGFsgXpEVrZz+0ayl5LffNBQSQONFW2VlgTN7BV55PQtaowTxbXVlFuQnixPr5JF4PRd61sUXzVrfQhl519hqP7/uNHspGGwilhXUCLmtlZsovxtyOR1tSJxCDkUi4AN8u7kNLfpNzjRkO7ZWaY5q2UGXo+UKk4FDS9lN/Z+8U6RMUjU21b61s/wC8ays8mXhmoC5Nt5onhroHjV5WVe02o5J42PU166ddOsvyuHNwzitSPUpkVlXIb0GJ1Zb0+LyNndNJr9VZdKGfgvOPdX4vgZyOMnix69fqq87wQDqu/wAKWD5UkzLujGc9wrETOjRq0nMD' $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= '6s0IDogppDCNhlwnJ3pco4O3YOVuiZMlnUuKhmWHgC36fVLLZT0YRQPBGYLApL06+0e4H93eFoI8UAH0ZYQ8aCUGb6YXb6hvEdN3Fe11YAY9AgVpBTSITpK8tCU7XUdZVGkdzLwIzrD3SrK8JIeB12rD3wiyUWew1eCofM5MrzP490pEwQ98LdGAxwmE1DYMLfBSCQTeCbyq6xrRbRXb5SzwZWiXKtLFmwHywX4EzrJuAn5KrS+YdwHJEfgQRd7lPxiVGRV2N72wBKQBvAN5vNCMNaQVJS1hbojmB5gO8HdLo0hm8TzHmnUhO8OBCHvgQWarjJmZJ0fwoQrGI1DO6D7WBslFL2F0A2mOQmXkh6KDqL1lciDD3wZRBuszfSmfN5sgb4CoBDN4RvKVMN1gTyKtqJN5TmA5leYHmU5iOZXmC+CiBuhG8HmFugMEgm8E3lV1jWm1FVvlLP4KiWEzLXT/AEdJgMGprsIpFuzuwwYgkEioyKkNtyS4hpOj6e0e6/BDhMyGkNHEEXYoPx5IMSKg1k9JddeO/PP66S0Rw8Br7vH3A+8MPwh8G3bAzddfh7y2WE3z1VP3MLxGVqD2TVcrBA0wG5Gvq3CPzW/LzCCBEQIPRJhE1gyMHIcLrGZ3N8Yd3VhrgnbOALK2sg92QvunP4QFWCY8GP8ARcj7nAqp5D4YYAkML0g2OV2IGc52j8wlDzhJWisHLhSK3zcTcJR6MLNHaWN6kbk147SrEWrRu3MU83fQbaJtAuweA+5ph4JctiYdQ2mp8E7VZ2AfLAoxDrSVlSKsvuWGC++hHMoOxgeuspGl3Fl0NpQ9eJh2OMSnm4+qjWnaKSz2XMEdt9QTO2OfzzALdSPYI/gVJWG36nfNzqSqRsnWAFEv0hw/pBpEsZdbTjEbk3jUtY7omOpXq1HZ1hpcddpTrlK46Z09WIX1ws+kCDHAR8uu8pY87hOqCRqVr19JpDJRm1axE4EBZr7xJTdApAQlkhDmD5Qald9m8cKT3z00gVVOCvxMqB0rR+ZRHqg0k5URJc+dROdEv6m8BvdUTL095GaCnCLVzvKahl5XlmEvyneWYMxh0kceeBW0o2IdWVb5wg+IhNTqCvRia1lsdhl9Ji6jJnxBADyMJNZU1joL0DXdbTUE4letpmLHBD6VKxGaTb/E3iVOjDhdpY2hq3Jrx2j4IDwnbmLQDL4GibULqHgPuaYeLoZZaFjmVzEx6t/eOu1f8j+5WJWTAldwKsubVPJC/wCtOqWlczIc/c+mPqKu6+CPCESWqUo3GNrhz0lmOT6w8fAHcw72H8Jeb/APtfDBtO+APJn6Iqg2GgI2rUXXcXKks0fA6StS+Mih10PmfssBfxMBDjxqMVJeNXYN2aUB2nCK0xGyzhlKnOIUUTCSjdXzG3zGUv8Arlj4lIKA82/geOOIesqBzd5TcH3iSM8TrKfa6VPpoRMq178m3tM/VXb5D8xhFZ1TV3/yALGoA0iDEVHMq+vQhxD+DNLKf9miU5/qSvxMRBiV4Nabb/qPJ9okR0aXVVXUusTlhcWVKJDGu0HfaD1GU4L/AHFWtFawDrFVZ6QuBe0C1Zuwvyl3bdZ2ETXVg4ROOxpWTDLwQ2ErXDHgOUlVaDTp38yNr1WlVbh5Ws1Nl4iNc4GZYUu80evzEIBdtJAaMecqvui4NamVDbs+qCuDhHUo/UNCX8QCmVQogqSgNidySVS5r2sCoJojOV7zbiKxReAUDvh+JYiRZXZ4hzEbQlO4Yik3O+ldH1iXmqHeUou43gue8sjcbyi/dHVL0J3Yg1fOJfSH6JJzdycmHLAX7h3g9fVlDud2Z87An7hE57ZTzmviX3ktuTb2qbWVi+Q/MrGsqpq7rX0gCwqAIFdjo5jEBsJDjxZrTWdFe32UzlNm5VXNiTT4BfUuvZHCTPz9QH7z2lfCQh4KsHUWDTMKWFLn1uZML2E7N11iEpZidRfvmJNEZkQuIFma9F7Ttfyz9zAylSm3' $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= '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' $Logo &= 'zjcLmD3qE18PAh4gFeIoukv8fcT84o+2JW6gMv3KbX5h4G5ahNtFXaB4CjxGi5Mb0qH2fAFcrAmxH3H3AqXUBPFzThYovgZTfvBTcA1+OW2EwAPctLyBNwWtZSGEFy8iNjMCsqtWvWPXww/qFtF2/wCMSbwaE8xJ6h13Va8N+xCWmCjyzAs/2OkO9fE+5AjAoZQyQMVhGlIAxVRDlhbGzIBYAyq0BBd5ZScoNkCxhR/eXP8AuMf+4oRQQRMwxrLGC7IDbM2n3G9EMKZaLhThHnD3G4UNUPoMxom9xCNacaLtboMsste0HKmHQFkZ2cMNGFpYAUYmUGNzJ2dTxFvJP2mjW4Kt2eIWJMhZdYE1UxUA8xGj/U6wWh2kA+oIQi1zfZZYR7RLDUQADzHE1VmLhpxCMxlqkeQcaOjBBYFdE0RgUhHWXliLOHuLdMosIBhhGs25LbCYAHuW1oIG4LWspDD4ZaTUu0E9oNB05DbR5jIKxUzNaHKeIm3dQ4DgNA2PhoWYgWQhTdR/QgjbRhQiIPGXEOtxE0ot4P8Aoe5UPlYkwpoRFiI59IhQ8EBFrvJPCxwimkIUibIHKbxWoFj0Go1NtMiWZZQ74oYHTHCj8SpEwVcQBxaVuT7kQrGrl6RjgXyA6kJIMVTUkFCqDVoo9sQajmaBe+plsVLd6crVMq6rb5hPEAaRhpLTEJzLaAOom5CbCoiyFRD4aiv6Dd2mLtlcJweTmqILmoWR5OrKEQqmfuMMySue7krV0a+AKHKHCO8qj0lUqu86qj6EsUEBOtP2J5gHtiZQqpkZSujwLqMHszKzoaM96+ISUsG0dCVYZsqdnU8Q5eL2nA21250x5qWAyn4iairO5tuRA2RBAs93VzFRnkPaGr7Y0zAOuNCTQOF1WR7xmPmzLtirqh1PMdn4JcGA1EftBvBKEhI72qUnq4/RfW1PEyCKbCdMgPBDfaFny3UizHBSNqYzL4wbWFwXquWjtCWwsP1ZwHlzo1FgB5TUqtABaAzWIhuUCaLV4DYMBGOhHIQSomgN8ytsplc7rPuI5XrY3uti3Mg0fiL7UdGW94eoFYExldzxkPwQRFCxG7Iquyqwvi2ZsjS19WZhGaKwrWAFQ6qMvuCrm8KCr0JcFVWi9L1p+IbgYJ+WRk7LuNPVhBSjUTZgo8IpeKHd2w4c1obwPkV2Sd6FA8Srm1G0nBLiySc2MOFhPLGL3tLfl4BVMM7tonlrBKnkzaBBjxwRUcsvxDCaUiFC63ym8cKmYjOkA1uHacmmGp2mrjWPTVqDdkU8HEHs0aCeocSGr0utADox/aJh1aA24TZl1+E1aeEgptwCuV6QqyUFVGA1dN8yk0CUp9Vs+zDqWzYkC3zUCtMuJkBJFtWqbrzKgvFcERwLCrqrxcr5LFsS04BurVzpB0y1aAmG0/7sUi4NOp8AzYvuAjL0Ffwti/8A264MOiuMoviXGBSoqHo0Qd1x2ZXiV94M1DxJ9EqDzk6UGrlKhky+Fcvo8OYAMDbNi3NRVnc23Iw7IOoWe7q5lbZljtDV9saWw2FkxYNBoXpm+8bj7IF22Lqh1PPLs/J+NCGtg6BrFx13oBl5flMxPbPJV9iGmoQ4jsmdLbaLWrc6kseuf9xeVP8ATeFHrFUX3IGJ2jmRbZ4oZpCw7O1NJLiHYNoZ4sRjesTLp1EUP7gBqX9wH4CL4JWpjQ6BbL6cQBahnBEAC2VRdoaCU+GyL+oF3S872r7jFF+kKi4BZuQFrWxQ5aMay8Ug7h0YrI6XxDH1UjZ+9PiE21R3H5yA05WIEqNoFQHld2WMpTAHdxGRgDsanSDfnMRvI55ho1cITPEuSpoV9XcbPmCOiVTFZtW/a9PBB4msu0qGZXq1R7UW7BB1vn7LB8Eu1wc989DV7Rwm7t/T0NjaZNnpu+pvEGxZKi9o5A8RDd0DUSo90xe1lexEpVE3Y/QfEvs4msEWNZTCFlBTgcBKX77rTNHqMmGtH91lR/gqDEVS' $Logo &= 'oZzSc0k9XCs5DdLT8ekAkVPgMRpRFvhBTldfbGbMwQAHUomqGCGhTTbvheC8X1iBfEaRAQl5Y+1Q+I22oUo65m3uWgW8+DhrL5YBsBwL9y1Qd/fwRInCylNRpWjTPWX8l48I+gmZMlAVFjT/AGll3VbTynAdRhWt4NrhP2wqNUDVd15WAuDSJ4qMnpnSWGU6Ma/ZucpDLqqXrRAstV+pbS75a8Qai5N6rrE0lMC6B+t457q6C2oYKV1xHhEzqlYgKAhW3djzA/KPamkF2mKlUyqEv40Y8nmW/U5FgpOii3pqSsSv0QLFOQvXVrbEIZTGoAqggqMYqgO7AU49t73KAAwaPklxKZA1Wj1Z8QxnaIxmetn5Q+ZV06QEKoqjLFNv3TCntwyBOyg1zU8bjfbStlM3b8mPyqzXGGL81M8rXcDoOL3uYEaBlRsIOh9nh3IqAliupXs5jgFWQvktZfMo7xB9BpUpLlHI3fFy4XsibMV7N3qWgTgHYimWtX340xVGES/9of0m7j9R60qPbEFN5YByvGE+kiv827Wr2hk0sl2P0HxBDFRrDIej7mLOxwHARp9LdaZo9S2IRVj/AOdpUYfJ+qHgYeVH04kaLp2lxYOoBUuAO3BhBhgvmcOg6gNgMJ6gJfNLHS1HesA+5ihqzJcUl1dWS3sZuYFKKVB7RNTaVWVnV2xfddw3Qo5gVubfIS3tRYRYgljLCBnF4ICwVfN6EjVg1t6gn4zXuIOZF11A3ZpCcgXmAoys83R9BCSvKNAGrMGVbhuBLqlPCO0oA6cqP6hjgotbF/VxbT65Efj8oh7F9XFMtFpwYj2vkqo3BqJ5T9EXApm3Z/FwGLEQ+VQzV+0CtIga/wDSr4l51Y7x84YOrgHYrWZwydV1e7De1QTzGRV9wBpeUqrmgpQHbD8otO0BI14KQv2B4lAniUXDTuOSp4B5+BXbTAIYVeOkDgF5wRxde0UJpmC0LmGrGSnUfzADpXPB+Alr6Dxn9RzVxYFdHOQL5g1T3H9CE1LnZUigLxd6Cgy7u+LlQh/DSyqGZNwdPzwRZHf4Y0PjUl0OqfSV/UVRVhlWB2ArTmWjzVYAITVYOFETxDGzTADYsDBt0gJWhA1dI/kiFZmTQ66D/wAQkQXrS/t0JXFhlFv2J0O6h9Q5la1t1n/lRA/cZ7EvZb7oCfksvXQY9X0EXXRZdPAZdt5eIOS3LvrFMWG2wtTuUMwkyUSGRSQG+IjwS1cIRzLBFJVA7YYcEF60awXAsAUvrrCHjaAkreV2s+sB4gMGoHW1/DAQKOoms5OitIWaIKqqbVUJUil2JRAtCKvP+KPEuNUOXwHuWVHV0+BLKw2cRGTWH0a1oJrcwcoDynmNAtUvOItxiq+P+kbDrJT6nVV2Y4iAqd5Bvq6DdaaXLooNm6N13Yp1jiTW1T7Ix+g3yXMIvUo9sStqjgvVEx4UXQ/GEqasFUUA25JfGnF3eKdUfugYdLiDEjiGrV1jDjG25FYbA00VxXOAHB0tl4yWSp1crb0hVELq46noVH2LzScGgPXJD6HFvVUb5loEhgwrJqEtlil01WIxcN9RB9iCtZWDbIVSiDfaOEpq6+AjsAS5kt2y/CPZjQLDAa0k5HcvKW5zKhD5WQrdqxai1HZQUMMByI5EhPwcnv8A0rqRWfaEjMOm5aXOMgwQrrWyh7j3CX0igpzGbc7R7wf1HdawNaXL1u4lUpYNaP0fl8MW6KszGyLmKdaQtxicy+GY2lYwF0ddg3am6PTTCeBqYHxxRDCUGtXsEE8PYKqgmtpvabR2iMFIGz3bji0AWLF7UJbiw3qUTiL0mgdI4ia27LQmiWNLdIOkU0raqKqdm5R4Zg7OSi/Eh1GduNhLjm3Ea1BUZxfOjGDWi3kH2TMfslQMYmxZehCHsWsQsRgHmCkuX8w0C/IwHQ1rSjnoywFwrDWubiNM/U0IaTEAhEWFbbJr8QQiy96qh9kRhdevc1Vz2IMZY7UDIvoKYgbQ' $Logo &= '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' $Logo &= '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' $Logo &= 'TBe3QLqE/ZO+JMvytHBQbaB4gRzaDyFarq5h0CCiBCAGXllxW1Y9gQAUStVB1kQuEcEAwP4JcMuPiRbLYvixk6mjuM2Got7zVOmb+yFkaUNdkdTlYJxwZXToIP8AtbvUn9dHeK3msXdW/ELu1srqfjn4l1xtBMkRcPUI3T1KrCCcERUG9kU3A7JSQRpLa4c0+otolFBjBCGkUthHSAYH8n4CHdop2CIxB3RLU6MlbPFUoc5d2hxe/FKvywxL2o5R70NEoQ7WRRjTCAJUEy4si+iNmn1DbfUJs9RsgDpBTSZtIWgjjLzE1U89WrBOrc2je417azKqi9uAlmFSWl6hxyrkO0DsIVVzmWidTfemGtdDdI2QhQQ5AwGob6jkKYKFS9kjU4K9H5AX3mFyLZ7lqWzbS1FNJiGg+LDMNbJZXCnT6jeiGYJWqqbZMkaYStKlbSO6RDSAGkPWQuuoRwTAVGTxYSoUobtomNGXLP4hbAwnlHoVWFQ3JLKFbfUM6fUpqExVUYwjpAMD/AkB1JtEVtHjTppTshMCVCEBhRNBhCpS3qUi5ujWQMWP6uWxW8sdpzsgUJrZjoEqMfUpsJpJCgp8JEup8ATaEVEleIU2lfySEdICxfzsMaEd0EdLHSIUiYBTwIvKI89Zn0dgvRbvAMsNhvuGP7UXamq2SjDQYY2Stga0iOJXiCeKOsoVFp0NWVKjaVgTQlSo2g29gNvE6ZcV3jtK8QJtKiSvEK7Sv5ukuIsTJHCQZVaAN2Hu1hT24UGr2HM9Kkd9uOqSwWAnSBKjFeIU2lfFRtEcfEGU4lOIRXwqVCgdkFMQbb32VNNQQUyniqbOWfji/wA6Xafk1DW77qgxBBRDTSOaQQ0fGPmol2leIA2hSVG0rxCK+Kj0TDaVGOyVLNYS6QR0hxUS7RkSAbTsleIV2lf46lSpUqVoNrI1n6Tak2qbZANof6ioLrNgl3hL3H1GOn1GzGUlEoQ+EogVqBsBFtVgjUVS4K8QlCWUAsWMLlm1bwIhkFNPb+dzl2otoL0miJDmlACSw6kIpU4HWtZoZWWW4qDT/NUgWsijfw8O2BX+pUYIS8shfo9TZ0E6QpKjbaV4gf69Sv8AaSNtSU4geJUr/YqNoh2+QCaED+AcP0lYlk0hEhdX1BA9cRhsgwUcGLsuqGseUwQIjgdbD+FRpbVWrVzQL0BWgUA9GKiIJTYvZTrMzIs0CCTNDejNJbZzRDUA0A2P8yRtqSnEKSv9dI32leIRX/19Qk6F9L1AyrhWIo0GTCyQCNOBEtEPwVc5SZixS3LYXTTFUEeKJIghpVqlp+QY4rTK75yWNapxG0xkqVMk2ujTZmlEFQKtbf8A8HaPNCFiqjdVXlWO7hTIDcitK4LaWLC5wZYBNug9wvwVf6UW7pMJYQygqAoDj/8Ag3//2Q==' Local $bString = Binary(_Base64Decode($Logo)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\GDI+ Color Transformer 07.2.2.1.jpg", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Logo Func _Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_Base64Decode Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize) $tOutput = DllStructCreate("byte[" & $iBufferSize & "]") If @error Then Return SetError(1, 0, 0) Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0) If @error Then Return SetError(2, 0, 0) If $aRet[0] Then Return SetError(3, $aRet[0], 0) Return $aRet[6] EndFunc ;==>_WinAPI_LZNTDecompress #EndRegion needed additional functions Requirements: Vista or higher operating system! Souce Code is made for AutoIt version 3.3.8.1 only!
       
       
      Please report any bug if found (I'm sure you will  )
       
      Download: GDI+ Color Transformer v0.9.7 build 2016-04-23.7z  (previous downloads: 347)
       
      Br,
      UEZ
    • By UEZ
      I'm searching for a way to set an icon for a system menu entry in the console window. I can add / remove entries but I didn't find a way to set an icon for the entry I made.
      Example:
      #AutoIt3Wrapper_Change2CUI=y #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <GuiMenu.au3> #include <WindowsConstants.au3> Global $id_Test = 5000 Global $hConsole = HWnd(DllCall("kernel32.dll", "hwnd", "GetConsoleWindow")[0]) If Not $hConsole Then Exit HotKeySet("{ESC}", "_Exit") Global $hSysmenu = _GUICtrlMenu_GetSystemMenu($hConsole) Global $iCount = _GUICtrlMenu_GetItemCount ($hSysmenu) _GUICtrlMenu_InsertMenuItem($hSysmenu, $iCount, "Test", $id_Test) _GDIPlus_Startup() $hBitmap_GDI = _GDIPlus_BitmapCreateFromMemory(_Test(), True) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hBitmap_GDI = ' & $hBitmap_GDI & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $hBmp1 = _WinAPI_CreateSolidBitmap($hConsole, 0xFF0000, 16, 16) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hBmp1 = ' & $hBmp1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $hBmp2 = _WinAPI_CreateSolidBitmap($hConsole, 0x00FF00, 16, 16) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hBmp2 = ' & $hBmp2 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console ;ConsoleWrite(_GUICtrlMenu_SetItemBmp($hSysmenu, $id_Test, $hBitmap_GDI, False) & @CRLF) ConsoleWrite(_GUICtrlMenu_SetItemBitmaps($hSysmenu, $id_Test, $hBmp1, $hBmp2, False) & ", " & @error & @CRLF) ;_GUICtrlMenu_SetItemBmp($hSysmenu, $id_Test, 8, False) ;set the default close icon _GDIPlus_Shutdown() Do Sleep(1000) Until False Func _Exit() ConsoleWrite("Bye..." & @CRLF) _GUICtrlMenu_DeleteMenu ($hSysmenu, $id_Test, False) _WinAPI_DeleteObject($hBitmap_GDI) _WinAPI_DeleteObject($hBmp1) _WinAPI_DeleteObject($hBmp2) Exit EndFunc ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Test($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Test $Test &= 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA3XAAAN1wFCKJt4AAADKElEQVQ4yz2RT2gcdRTHP7+Z36y7yzZZdvJv22i0rBpiAwnWCMZrUCGIBxEvpQSEHAQhePLkyUKg6Em9iZCcahH0pFYxkIqiIdHKYmPUUHcDmU2TuJnZzc7s/H7PQ5M8ePAu7/M+X56y1hKGYY+IOEDqOI6TzWY1gFIKEcF1XRzHUWmaJnF8bHBy5pfbnz9fb0hBh2F4bm5ubjWKogudTqdVqVT0/Py853kehUKBQqHA2tqaVKtVfenS2P6HH396PDri9D9+cdC/8dkXNW2t9fb29spRFPmtVqtULBaVMYZ8Pk82m8X3farVKjdv3qCn+FbpnFuXfNpQkkwlX33z3RtaKYXW2mqtcV1XtNZks9kzQCaTIeNp4sSh8rAnzSe0HO5bt1arHR51y79pEcEYo05Aylp7OqOUIk0TRp+aYO5Ki3B3VR3s70pictzZGlC5jHW0UgprLVEU4Xke29vbLCwsoLXGcRRxYjk/2MtLz2X4/tvbaO3y9XoPlUe7CI7VAMYYPM+jXC5jrcUYAwipUeSzHhV/k59+bFK5OMytOxco9ezQTQ2A4ujoqDQ+Ph4sLS2JiNiDgwM5PDyQ3SCQ/5ptubv6rsy9XJIfvnxbNv/8W+7d+9deu/aeTE9PB2EYljSAiKje3l7SNCUIAkDQXp77f3zE4uJ1Xnv9KoWRK+zs1DlfHiCXy2OtBcA5AdDpdHBdl4F+n77BEdz2z3zw/iKvvHqVZ194h0wmz0B/Ca094jjmtE4NEBFarRa7jfvkHgqp/rrKxOQzjF6+wtY/u4g9Jo5TfL+EiGCtxVqLFhGUUhhjsNZgrcvqrU948rFhKlNvEkUdtNvBoFEqPVtUSqGUQiulaDabtNttPC/D5t3fqTU0Y5dfpNFogFhEOLsaxzHtdpsgCNT6+rrSSZIwOztrhoeH' $Test &= 'qdfrRmutJp6e4q+tKsbYs3in7+7r65OhoSE9MzNjkiRBt9ttkiRxjTHkcjl3bGxMPYhjSdP0rLvdLt1uF9d1BcDzPHdyclL0yspKuLGxcT0IgkeKxaINgsADXBFxAefEQB4ImNT3/W4Yhk6z2awtLy9H/wPnrsNEnFPl4QAAAABJRU5ErkJggg==' Local $bString = _WinAPI_Base64Decode($Test) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\AutoSave_16x16_04.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Test Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode  
      You must compile and run it to see the menu entry in the console window.

       
      Any idea?
    • By UEZ
      I'm using very often binary strings to read images, sounds, etc. directly for memory to avoid any file installation.
       
      Here a small tool to convert any file to a base64 string incl. compression option to use it within your script to avoid usage of local disk (file install)! It will also created the needed functions!
       

       
      Code is too long now for the code box -> Pastebin.com
       
      Download: File to Base64 String Code Generator v1.20 Build 2020-06-05.7z (6238 downloads previously)
       
       
      Code will run on 3.3.11.4 or higher versions only !
       
      Thanks to:
      Ward for the _Base64Encode() / LZMAT / MsgBoxEx() functions.
      trancexx for the LZNTCompress / LZNTDecompress and _Base64Decode() functions!
      wraithdu for bug fixing and advancing the code!
       
       
      Just load any file(s), convert it and use it in your code! Checkout tooltips when hovering some controls... 😉
       
      Example using some images from ..\AutoIt3\Examples\GUI folder.
       
      Display images from memory in controls:
      ;coded by UEZ 2011 #include <buttonconstants.au3> #include <guiconstantsex.au3> #include <GDIPlus.au3> #include <SendMessage.au3> #include <WinAPISysWin.au3> _GDIPlus_Startup() ;~ Global Const $IMAGE_BITMAP = 0 Global Const $STM_SETIMAGE = 0x0172 Global $msg Global Const $hGUI = GUICreate("Example", 600, 250) Global Const $idLogo = GUICtrlCreatePic("", 215, 20, 169, 68) Global Const $idButton = GUICtrlCreateButton("", 266, 150, 78, 81, $BS_FLAT + $BS_BITMAP) Global Const $hButton = GUICtrlGetHandle($idButton) Global Const $Bmp_Logo = _GDIPlus_BitmapCreateFromMemory(AutoIt_Logo(), True) _WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo)) Global Const $Bmp_Button = _GDIPlus_BitmapCreateFromMemory(Merlin(), True) _WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button)) _WinAPI_UpdateWindow($hButton) GUISetState() While True $msg = GUIGetMsg() Switch $msg Case $idLogo MsgBox(0, "Information", "The picture has been clicked!") Case $idButton MsgBox(0, "Information", "the button has been clicked!") Case $GUI_EVENT_CLOSE _WinAPI_DeleteObject($Bmp_Logo) _WinAPI_DeleteObject($Bmp_Button) _GDIPlus_Shutdown() GUIDelete($hGUI) Exit EndSwitch WEnd Func AutoIt_Logo() Local $AutoIt_Logo $AutoIt_Logo &= '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' $AutoIt_Logo &= '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' $AutoIt_Logo &= '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' $AutoIt_Logo &= 'cy5hgUkAqHEOcABh1yoABOpwVLGVSVcAZYpQ1AQvsBMAfYoZ69AEe4AABTHzZgA0ABsA4AsP0D+WCrMAHmBImEED/eUAEPEKAC5Qr50AsAqkCpDX8AkABkALbxAGofAARVJrC0FzsPcAYFi0kLW+KgUAV7kGwvCmLQAABxcLbAPRD9IAig0JkADkmQEA4LAuGogXHQAAA85gLntAGOMAxBSD0AEJMAYAd4AXCTAANDAAdEtwBTKQBF8AAAlYME6EAQMAotMEAgADIzAAAAlQB/81lpIA/wAEqUAkrQMAHIMQGom3BCAA0wH6kgSD0L0A3QoHQNQQ0uAAC+zgAs7gDAgAgAb+iKqVe7kAW1APiCABUQsAOJ/bDVpgA2EAAAG0wKsQywkAczALZ9AJzuAAAiwgAObDU6AA6Q9CYAXqMAEALgAHwICzWYMADxoHtuyAAScA1gS+QIMIgAAAVtACPoABOzAAAVFQryEsAIsAdG4u8AL4W68AL6DCTNByJvAAuFaAADjQYggAMAE+IABgsAcATHAbWfOnGwAAtkF8bdzRBEAAELZEOwEUCwcAMqB4jDsMGXAAvy7gAssgAnwA4HR6EASWCwEAAQxBUXs4CIwACFTAwDNQAHoAIAW4hpk0cMYA7DBnLmQ2WUMAAzS8AzIgA0AA/+CzYvMAzuAAC4icyEAgeZkA0AQykAHfIgAAMhAAe9AIwIAAyIi8yIuUCQgABQSJfMpA8AAA8NNyrmECviAACZLgCwKwA2AA8ACpMHkzkQkAD6AOkhDJigwABoqXA00QB7MAcsq/LMYOIQYAauADL9ACLeAAAgiAAmuMqkEA0Kqw8Az18EAAP7DN1xNHEAAACzNQCOnVx6sAsAzOzA7zwQ8ATUB3AuFIlfQASEP8D+5cSXgAQCQttwdxkM8Ae3BQTPDOP+sAnRH2zpMHGcIAjAd7AAL5HAcAILAH69YxYTEAz5GUbSGSA1cAgG30PFwPkQMA0rADPsAOzgwAzfybCAqgB4IAMA4zAAungAsAXPQETxBHzxAADm4wDkGgBz0A/4CNa9AF5twAAi8Axhk8m7IAswRAHdSbw0gAQh3Uf5QDNMcABOc5c0VX1EAAHRY50NRF/UcAjDRESs0E58MA1Ljx01PNFlEA7dRUndHVIAAAHe3MLUAEZ1AAA+jwCuSgB4UAYNJuEA6nMNcA4QDTqCDOt/AACokwByKwAdwAcM4+sANxcJ4AQw0SUR3WG5EAA4pddIgtFGIAYA0CAAfs8AIAzayPJUBvPUAADkcQBIWACp4A7dmFUAhHMFMA61UDQxABE6AA0ywAB4K91AMABCyR8dg7kAEAAEDZPrwMUcAABYuQCK7QA7cAcATADdy3QA4ArwANiwANSFAAgzqNpxggA3EA0EevDduxXQ0AQCAJPsACto0AxstwATeARW0A/wANsiAL0PAA3WiABDzwDZ0A0AKTzQI+EL4AILDURifd3SEARA8gALTNAuwAkN8vMAEemg4Av9AFQ9AFZ/AACzywDVbQwy8AwA4sAAAZAAwAARAIWR3d8p0AMplgDWAALgAAwAL4PdnOIAwAy0AEII4ANMAAnwmu4AxuAkAA8NznU9gT/iYAslMNpAAEJoAAAT6Q4Rue3zgAnt8aDgAzLAAAKa7O89LYLS4AIlGdCdUQCAEAIAMmsA4Z4AMANQ4AUM7jPpAAAetgApv83C4AdAXsPOTAUuQAV6AKpPCsQLAAA8AgAGb+yZMA3GiBAORaLuQAXI4pi50JV/AA5aqgCk8KAqQAAAKBoArqfD4Ac66+Ev7mmNIA1HI+5+syRHMAIO4rgC7ojF4AEIp92IxddIoA3eiUXumWfukAmJ7pmr7pnB4AEAA7' $AutoIt_Logo = _Base64Decode($AutoIt_Logo) Local $tSource = DllStructCreate('byte[' & BinaryLen($AutoIt_Logo) & ']') DllStructSetData($tSource, 1, $AutoIt_Logo) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>AutoIt_Logo Func Merlin() Local $Merlin $Merlin &= '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' $Merlin &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7' Return Binary(_Base64Decode($Merlin)) EndFunc ;==>Merlin Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) Local $tBuffer, $Ret $tOutput = 0 $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']') If @error Then Return SetError(1, 0, 0) $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0) If @error Then Return SetError(2, 0, 0) If $Ret[0] Then Return SetError(3, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[6] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then $tOutput = 0 Return SetError(4, 0, 0) EndIf Return $Ret[6] EndFunc ;==>_WinAPI_LZNTDecompress Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode  
       
      Play a wave file from memory:
      ;coded by UEZ #AutoIt3Wrapper_UseX64=n #include <apiconstants.au3> $binWave = Wave() $tWave = DllStructCreate('byte[' & BinaryLen($binWave) & ']') $pWave = DllStructGetPtr($tWave) DllStructSetData($tWave, 1, $binWave) _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT)) $tWave = 0 Sleep(2000) ; #FUNCTION# ==================================================================================================================== ; Name...........: _WinAPI_PlaySound ; Description....: Plays a sound specified by the given file name, resource, or system event. ; Syntax.........: _WinAPI_PlaySound ( $sSound [, $iFlags [, $hInstance]] ) ; Parameters.....: $sSound - The string that specifies the sound to play. The maximum length is 255 characters. If $sSound is ; empty, any currently playing waveform sound is stopped. ; $iFlags - The flags for sound playing. This parameter can be one or more of the following values. ; ; $SND_APPLICATION ; $SND_ALIAS ; $SND_ALIAS_ID ; $SND_ASYNC ; $SND_FILENAME ; $SND_LOOP ; $SND_MEMORY ; $SND_NODEFAULT ; $SND_NOSTOP ; $SND_NOWAIT ; $SND_PURGE ; $SND_RESOURCE ; $SND_SYNC ; ; Windows Vista or later ; ; $SND_SENTRY ; $SND_SYSTEM ; ; Three flags ($SND_ALIAS, $SND_FILENAME, and $SND_RESOURCE) determine whether the name is interpreted ; as an alias for a system event, a file name, or a resource identifier. If none of these flags are ; specified, _WinAPI_PlaySound() searches the registry or the WIN.INI file for an association with ; the specified sound name. If an association is found, the sound event is played. If no association ; is found in the registry, the name is interpreted as a file name. ; ; If the $SND_ALIAS_ID flag is specified in $iFlags, the $sSound parameter must be one of the ; $SND_ALIAS_* values. ; ; (See MSDN for more information) ; ; $hInstance - Handle to the executable file that contains the resource to be loaded. If $iFlags does not ; contain the $SND_RESOURCE, this parameter will be ignored. ; Return values..: Success - 1. ; Failure - 0 and sets the @error flag to non-zero. ; Author.........: Yashied ; Modified.......: ; Remarks........: None ; Related........: ; Link...........: @@MsdnLink@@ PlaySound ; Example........: Yes ; =============================================================================================================================== Func _WinAPI_PlaySound($sSound, $iFlags = 0x00020010, $hInstance = 0) Local $TypeOfSound = 'ptr' If $sSound Then If IsString($sSound) Then $TypeOfSound = 'wstr' Else $sSound = 0 $iFlags = 0 EndIf Local $Ret = DllCall('winmm.dll', 'int', 'PlaySoundW', $TypeOfSound, $sSound, 'ptr', $hInstance, 'dword', $iFlags) If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0) Return 1 EndFunc ;==>_WinAPI_PlaySound Func Wave() Local $Wave $Wave &= 'UklGRg4qAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YeopAACv/rTxoAOxDSX6RfPpB20LO/Yr9lkL+Qdd8xX6lg2yA9Pxm/5iDg7/xfFBA64Nhfo384wHiQuV9gD2CAsxCKTz0vlYDQAEA/JG/kAOaf/Y8eMCqg3k+izzLwekC+z21/W2CmcI7vOQ+RoNTAQ18vH9HQ7C/+7xhAKlDUL7I/PSBrwLRvew9WQKmwg39FD52wyVBGjyoP32DRkAB/IpApwNn/sc83cG0Que94z1EgrMCIH0E/mbDN0EnPJP/c8NcAAg8s8BkQ38+xjzGgbmC/b3a/W+CfwIzPTX+FoMIwXS8gH9pg3EADzydQGFDVf8FvPABfYLTvhM9WsJKAkY9Z74FwxmBQrztfx7DRcBWvIdAXYNsfwV82UFBQyn+C/1GAlSCWX1Z/jUC6gFQ/Np/E4NagF48sYAZQ0L/RnzCwURDP74FPXFCHoJsfU0+I8L6AV88yH8IA26AZnycQBSDWP9HfOzBBoMVvn89HIInwn/9QH4SgsmBrfz2vvxDAkCvPIcADwNvP0j81oEIwys+eb0HgjECUz20fcEC2AG9POV+8AMVQLg8sz/JA0R/izzAgQnDAT60/TLB+QJmvaj974KmgYw9FP7jQygAgfzev8LDWf+N/OsAysMWvrB9HcHAwrp9nj3dgrRBm/0EPtbDOoCLvMq//AMu/5E81UDLAyw+rL0JAcgCjb3T/cwCgUHrvTR+iYMMQNX893+1AwN/1PzAQMrDAT7pvTRBjoKhvcn9+cJOAfu9JT67wt4A4Lzj/62DF//ZPOsAigMWfub9H4GUgrV9wL3nwlpBy71Wvq5C7sDrvNF/pYMr/9381kCIwyt+5L0LAZoCiP44PZVCZcHcPUh+oEL/QPb8/r9dQz//4vzBgIcDAH8jPTZBXwKcvi/9gwJxAey9en5SAs+BAn0s/1SDEoAo/O2ARMMU/yI9IgFjQrB+KH2wgjuB/X1tPkOC3wEOfRt/S4MlQC882YBCAyk/IX0NwWdCg/5hfZ3CBcIOPaB+dIKuQRr9Cj9BwzhANXzFwH7C/X8hvTlBKsKXfls9i4IPAh89lD5lgr0BJ305vzgCykB8fPJAOwLRf2I9JYEtQqs+VP25AdgCL/2IvlZCiwF1fSl/K4LcgEa9HsAywua/Z/0OwSpCgr6VPaDB2wIIvcI+foJUgUt9XL8YAuxAV/0LwCUC+79yPThA44Kafpf9iMHcAiB9/X4ngl1BYP1QvwQC+4BpPTr/1cLP/719IoDbwrF+m/2xQZvCN/35vhDCZIF2vUV/MIKJwLp9Kb/HguL/iL1NgNQCh37gPZqBm4IOvjZ+OkIrgUu9uv7dQpeAi31Y//lCtj+TvXjAjEKdvuP9g4GbgiX+Mn4jwjNBYP2v/snCpYCcvUh/6sKI/989ZACEgrN+6H2tQVqCPD4v/g4COUF1vaa+9oJyAK39eT+cApp/6z1QgLvCSD8tvZgBWMIRPm5+OQH+QUm93n7jwn0Avv1rf41Cqr/3PX6AcoJbvzP9g0FVwia+bb4kQcJBnn3W/tDCR4DP/Z4/vkJ6f8N9rMBpgm7/Ob2vAROCO35sfg+BxwGxvc8+/oISgOB9kH+wQkmAD32bQGCCQf9/fZrBEUIPvqv+O0GKwYU+CD7sQhyA8P2D/6HCWIAbfYpAV0JUf0X9x8ENQiN+rH4ngY2BmL4CftnCJUDCPfg/UsJmgCg9ukANAmX/TX30wMlCNv6tPhQBkAGrfjz+h4ItwNL97P9DgnSANP2qgAMCdz9UveJAxUIJ/u4+AMGSQb4+N761wfXA4z3if3VCAQBBPdwAOQIHv5t90UDBAhu+7z4vAVPBj/5zfqUB/IDzPdj/ZsIMwE39zcAughd/o73AAPuB7f7xvhyBVEGifm++kwHDQQO+D/9XghiAWv3AQCQCJn+r/e9AtgH/vvS+CkFUgbR+bL6BgckBFH4' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= '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' $Wave &= 'CwCyAHX/w/+xAMX/T/8JAar/MP9SAU7/fP83AS3/y//YAHn/tv+hAOf/TP/PAAAAA/8pAbb/Iv9DAWz/ff/5AIv/nf+cAPv/V/+UAEIA+f7kABwA5/4oAcX/Lv8IAbH/d/+hAAQAaP9kAGgADv+SAHMA0P7rACcA8f77AO3/SP+mABEAb/9GAHcANP9DALAA3P6WAIYA0P7OADgAHP+fACoAa/83AHUAYP8EAMsACv82ANIA0f6EAIsA/f6FAFIAXf8vAHAAg//d/8kAR//h//4A9f4pANYA9/5TAIUAT/8kAHAAm//I/7UAif+d/wgBN//M/wcBEP8NALsASP8OAHwApf/C/5kAwv91//IAiP95/w==' Return Binary(_Base64Decode($Wave)) EndFunc ;==>Wave Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode  
       
      Display Font from Memory:
      ;coded by UEZ #include <GDIPlus.au3> Global Const $bFont = _bFont() $sFontname = "Jellyka - Estrya's Handwriting" $hGui = GUICreate("Example 1", 400, 320) $tFont = DllStructCreate('byte[' & BinaryLen($bFont) & ']') DllStructSetData($tFont, 1, $bFont) $hFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($tFont), DllStructGetSize($tFont)) GUICtrlCreateLabel("AutoIt Memory Font Example", 25, 10, 380, 100) GUICtrlSetFont(-1, 100, 400, 0, $sFontname, 4) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGui) $hCollection = _GDIPlus_FontPrivateCreateCollection() _GDIPlus_FontPrivateAddMemoryFont($hCollection, $tFont) $hFamily = _GDIPlus_FontFamilyCreate($sFontname, $hCollection) $hFont = _GDIPlus_FontCreate($hFamily, 80) $hFormat = _GDIPlus_StringFormatCreate() $tLayout = _GDIPlus_RectFCreate(60, 230, 400, 80) $hBrush = _GDIPlus_BrushCreateSolid(0xFF404040) _GDIPlus_GraphicsFillRect($hGfx, 0, 200, 400, 200, $hBrush) _GDIPlus_BrushSetSolidColor($hBrush, 0xFFF0F0AF) _GDIPlus_GraphicsDrawStringEx($hGfx, "GDI+ Schrift", $hFont, $tLayout, $hFormat, $hBrush) While GUIGetMsg() <> -3 Sleep(10) WEnd GUIDelete($hGui) _WinAPI_RemoveFontMemResourceEx($hFont) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_Shutdown() $tLayout = 0 GUIDelete() Exit #region ;Code was generated by: File to Base64 String Code Generator Func _bFont() Local $bFont $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= 'UwOwEBT+BgCGBBAcJBUHNAAUCRMzBRgUEQATmgGazCAExYKDtAbVAXwDnfAcg3EOIjEdARYXN0BqZwEPojVAACsBYAFyI8gALHDISAU74AgAjC8lFFyoaFQQEMAECBAEC0UcIDv+y34u8GM0CABEEAkvFEIBCgCdMwgwEnYcCAgoZCzwGekA2wFwaQN7AIAq0GMwIxWUFh+ANA9ASDYz0ADCFwBwNCcmIxR+YFkzgTkANTMVkFiwAFmQAAQ8cTsM0BRkABoaJFCiGgR8ACEfFBQIFQcOABYcSGAYSAgMABQDexR4EEBQAAQjZSwYgCAECDQYCAAAC10cRgBGFAwQEBhAPAAgSxEPKQQIBgwWDGE8YIm8AUUDiJgAJMAAMhcDMDvdgA4X03rwFuE7NYA7YIcB4Ak3EjcBNQoGABwUHBgIDB8FIBi8BDQ8EHcLCQBACIhAHAwDmAgo/uAQNc1LBEQABAxICF+lNDgICETYwHco6z0QICwMATAgsloGAADqAW4DAgAoAFQ0AMA0ExBnN/BIF8cxg9JMgmgWMzLhD0FmAhcwLC8BNAUIvwAzMhcVFAcnBwAnNTQTMxUjPgAYHCiJNw8FZAAMe20QNAQQFAB+bjxAMDQQEAAIBhIYEBwBEAAEHwWwQAwIGAAUFAMCFqoECACUJi50TBEPBAAOBgQIBEw4GABHTSQQMBiUkAAWBhAEFgoIBAAMCBP+fQgAAAAAAgAGAMoBZgADQgAdACcAAAIBAO4HIzc1JyKgBwYVNjsADhYAhwAjIicmNTQ3NgADFh8BNjU0JwAjIgE6Hw0QCAAEFFeBNCkvBABVSxRsBFtFLADQNdkgbBhEhAAMOANCGBQoFAAUBNhpMyRgIAAkUAw4QDDcyAAo/iBlAwQLLQBIMAABACAAmUABtANZAC8DdRQADwEzNjMWHQECBgB5FBcyNxUGAAcjJj0BNjcjAAYjJjU3Nj8BACYjIgcjJzU2ADcBcDwIhEgEAEIaGAuZaBQTACEXKQgoBU8IACUfFIhpbwwSABJC4hAQLvIDAFksCCmXZBQCAAoEFCyqShYGADQINhIMIBhSAIIMBhYslYsYQAw4EAggKIGBAwAAdAGbA3AALcwAP4BGAEIUB4B8AANgDwEiLwEAfQBENBQ/AYHKI4B+BxYzIDcXNjUmgEs0A1QiNYBXH4ANPwAUJwAmIwYBJ1x4LQBTEOQcayUImAAgVBAMKgYEHAAEPRcJEyAYZAAYKBR4CFxEJAAMe1EIaBsdRAADcGQ0EFxAfAAsGCSdMwRYMAAMcroYKARgOAAENAwceCgIBAAsVFAXGRj+SAAcd1lEGAR4NCAcS00QD8BtAQAADAApAXAD7QBaMgADFwBLw00zwE0rVAEiwI03xAE/wTMHTiNAK8B0gDQzMsFSAQBkDDI6KCAkNAAQHBIaCEISRAAvKRQvDVwcQAAIDA8dHCgMJABBR1QYBAPtDAAU2k5Omn6WWAAYFAQgdBSu8gAgSBBVNwgPJSAQJCgYREB4LGgI1VMEwVAjAQoAAHYCQwALABcATAATA7ABcDQXyAJCIYCoHAwoGYMBAkMAJBQWEgYeEBgOxQUCgDbAEhgANwAoeAJFwBIbzRIWF0mDAjI3QFs1QAMSGAAUIQdAFAwkEAgYAkVFEroIiHoANgQUBIAkSyECDMBLHQFgATEDKAwAEsBLMwAUAwdAFhczFScHgRUTADQBGQwM5ASGAC4EECyo6AMMAAwIF/7XFBclAAgEBBUvBCMBBCUQwiUVAaMCQFwCR8BewCXCiQUApDQbwskBAxSAXIATOwEBALgY/vmoDGSsAE+wHP75tBhIAEhYAkcFBwwlgAcMDBRQBQsAhAgIEAwAFQEAEQGAAQFFAp0AE0E6HQSdJkG5IG1gTx0IoACA9BQSAhulNACUeAKdNBY6GAAwxAwICAwhhyAzFSgYNGAIAgAALgAoAWoDjAB4IgAs5VeAQcASpEE0ghOgVSsBBhUXwh0M' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= 'dhdDCzcnNgFABFtFEKwIoCMMIDEPJBAMwD0UNAAEhCVXtAwYEAIQ4JYcDAQFAtgAQBUXEEaGCAQgVooIDOQgARgsABQI5BQEDycUANBiQkAECUf+APgcPyEQD0VMBNBgcZkAY/8kAuBzBHgALdAToFnSJfYGgAcSCiMjejEboSuRHiGwAR8BIyZwexA3QDYTFAc1B2CZAQD7aBC0TIxgoAAIgJRYsEwKOgAUWnaUQCQEDwAtTNRrCRgUDAAMBHiAj+FfHQAMpIR4NIJyXQCrFJSgYCQEMwDZj0kMTHir/QCYuKwSvo2vAYAsvFT6vAgEEACIAAAEsBIMAzBwkOIQcC9JAF0zHREmwUk6AwBcNjAugK+igy8BUcAeNCcjwCgjoAE1FUBeN9MCFgBaIyYjEaCaIiciUBY1AjWSNBAgFzPhAjUzQIAIMzY18AMBZDAsAJDgbIWXEPxcAAxgY5uUT2WpAIM07DgECEgcAHYyCARQUy0wAPRgRAxsAoYnAAEER1kCEhcJAdAobCw4BCwECAAbLRAESHwYAwCodNfxeHR0AQBckKedbP5M8ACQQJheNiTV0wAoKCwQEMQ0IACCUgQraY9XeAAlG15+CScRBwAUFAgIMBAUDAAEAQFPODAMMACgCEdtDKhoWBBIXSsE8BloAJ9AAvADFwATkLNO9xMQ5CPwny+ANUEQEAxAEPngDCYjkUHgLFEQUF2go+gHBiWVMDXREbOjwmoANTYBXBwNJ6AAiBycmZOhGwQAmDioZCAopKggQLw3GQQwG2Y+AAgkTAQMRVswIAEMBCMRcDEUBABvFXQEZlJTVQAgZiIIHwMXGADIOzEIe1lQkAAgDNqyMP5AbgAaBHhCRoFvHAAEBBUDIHgEaEAoBLiMtBzhMgQABJBoMFhYMBQCqDFN4wH8Ad8DTpxwHVANkpkzN3C9M/8wxmBpYbZR0vFM0AvQAJLA8BYzFSKQJ8HBYtBwVuGRDSY1Ji8gKrGjwB4ANQaHCCAEWCSACDQILAQMtIAMIBAEAxkQUdAdE4AQDgo8LD5CINIAIwQUChoEDwUEBAjAPDVfDKQMAANjRSc5A5wWQEYMGAgHCaCwECAPMSAYMGBRHAQAUHCUCHAkHEwAECBAJCwQDAcAVTkvEBQYTAzACBi0KyVk4dqwUaAPAjwAuzCHC7LCJWaGo+eFAzQ4hQAakAJcAOLweAwAoJejMhAveAE2uqx37Ax3ATNGI//TAwoEZxEQRisAWXMiBgcCBBcH0MIQHwE3M14UwC+gBTAFsGInUFATxDYLci83NSWwBoA87DcnYGShPzfiJbAigddcMjeSjQFKc0AB4QwLAFFAIAIekEAEABg8f0UYVyEMBCcZcBRATJRAfACMBGwgAbNARAAkCCxdfyw0OAAYOAQEO5EPbQCRU2JyIHQgsAAowFcEZxgzuQD+818NFxBY/gD9dRAEDgbsWACcBCRoEAgDqQCzASG//oH+2AAoDEOtBMMoBAALFQgQCAlzLQgXGQ9AbAwQCAQA2TtYRARocBiAj5EbJQRLeXG3gbAUAFYDUgQ2kEJ+QtEPMD9y5eEiQAsRMCZzsTCQDRcWETCTTQExI8Q2BcBWFAECgGvwbAIiUDEANycBvhAAkIB01HN95XMAHGyCbokzPVsAooIwtD1LELwAiFC8eHBQKlYABDUCJQgQ/owA+zkEHBgYGAsAATUBVhIEBDYAD32GouioFrwAULxKWnOVhIwACHTEZT8cvUMAHLh6biDEgEgACBwwDAgQOv4Adv7KohgIMCAAcwGFAW42DAAAAAMATgDbBYIAAgsAGQAlADIAAAABMxckITIAFxUUBQcjIicAFhUmJwQjJjUAND8BFwUVFjsAATI3NSYjIgcIIRQXARg/ATQnACMiAV4I1AFTAAEZvR/+pEhMADmLGD13/v9TAJCUVEz++CYuABBdy1V/c0EBAOyIaUsg7ZsMAIxI6AILiHBQAAxzRQQkGQs2AEJECEBQ' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= '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' $bFont &= 'NjEyZFEgAWQzNgQxM2CIZXN0aW0gYXRlZAmA5WVpAGdodGgMdGhygmVkAXMLZml2ZQEUDHPgEG6EAQlhcgByb3dsZWZ0B9kiAXVwgODgAHLBA4MDEGRvd24jAWJvdIJoIwF1cGRuDCYBAGJzZQpvcnRowUH1YWwMaW5gHYAbAHRpb24LZXF1AGl2YWxlbmNlgAVob3VzZQ1gEIBsb2dpY2FssHFGCsECsBNsdHCmAGLwdAhTRtAYAACBAJIAV4AAASKDADOFADKFADRVhQA4hQA5hQA2hQA3VYUANYQANHUEMuUDNVUlBjWVBTN1BDIVATK9NQIydQRyAAIFxQIzZQjWMoYA1Qcy9QgzhgClAVo0JQYxRgeVBTKlCjTrxgKVBTT1CDR2DZUFYg0fEgoGDnYEEgFQb2Jsb1hjawcwHHEABdMAbFJmcwBydPQAdNCOZERlBVIAB2RrcgAJEGZpbGzALW94BgJIwBE3MwZIMThENTRjADUxCuMBcgFgIAd0cmlhZ3VKcHMAcvQAZG5zAGxkZgZhm2xlggMQYGnQbnZidbADdJEAowEgCm9wZW5EAXNtomngKmFjZXAmdsYAAANzdW4GZmVtRZAmBEEABXNwMAoEAGNsdWIFaGVhIUAHZGlhbeA2C21kdXO0J2UOuAD0N0YTQF50ADUAAgAB//8AAAI=' $bFont = _Base64Decode($bFont) Local $tSource = DllStructCreate('byte[' & BinaryLen($bFont) & ']') DllStructSetData($tSource, 1, $bFont) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>_bFont Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) Local $tBuffer, $Ret $tOutput = 0 $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']') If @error Then Return SetError(1, 0, 0) $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0) If @error Then Return SetError(2, 0, 0) If $Ret[0] Then Return SetError(3, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[6] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then $tOutput = 0 Return SetError(4, 0, 0) EndIf Return $Ret[6] EndFunc ;==>_WinAPI_LZNTDecompress #endregion  
       
      Display embedded ico file in system tray:
      #include <GDIPlus.au3> #include <WindowsConstants.au3> _GDIPlus_Startup() Global $hBmp = _GDIPlus_BitmapCreateFromMemory(_AutoIt_Icon()) ;load ico and convert it to a GDI+ bitmap ;convert bitmap to HIcon Global $hIcon = _GDIPlus_HICONCreateFromBitmap($hBmp) _WinAPI_TraySetHIcon($hIcon) Global $hGUI = GUICreate("Display embedded ico file in tray", 320, 50) GUICtrlCreateLabel("Look at tray icon", 0, 0, 300, 200) GUICtrlSetFont(-1, 30) GUISetState() Do Until GUIGetMsg() = -3 _GDIPlus_BitmapDispose($hBmp) _WinAPI_DestroyIcon($hIcon) _GDIPlus_Shutdown() Exit Func _WinAPI_TraySetHIcon($hIcon) ;function by Mat Local Const $tagNOTIFYICONDATA = _ "dword Size;" & _ "hwnd Wnd;" & _ "uint ID;" & _ "uint Flags;" & _ "uint CallbackMessage;" & _ "ptr Icon;" & _ "wchar Tip[128];" & _ "dword State;" & _ "dword StateMask;" & _ "wchar Info[256];" & _ "uint Timeout;" & _ "wchar InfoTitle[64];" & _ "dword InfoFlags;" & _ "dword Data1;word Data2;word Data3;byte Data4[8];" & _ "ptr BalloonIcon" Local Const $TRAY_ICON_GUI = WinGetHandle(AutoItWinGetTitle()), $NIM_ADD = 0, $NIM_MODIFY = 1, $NIF_MESSAGE = 1, $NIF_ICON = 2, $AUT_WM_NOTIFYICON = $WM_USER + 1, $AUT_NOTIFY_ICON_ID = 1 Local $tNOTIFY = DllStructCreate($tagNOTIFYICONDATA) DllStructSetData($tNOTIFY, "Size", DllStructGetSize($tNOTIFY)) DllStructSetData($tNOTIFY, "Wnd", $TRAY_ICON_GUI) DllStructSetData($tNOTIFY, "ID", $AUT_NOTIFY_ICON_ID) DllStructSetData($tNOTIFY, "Icon", $hIcon) DllStructSetData($tNOTIFY, "Flags", BitOR($NIF_ICON, $NIF_MESSAGE)) DllStructSetData($tNOTIFY, "CallbackMessage", $AUT_WM_NOTIFYICON) Local $aRet = DllCall("shell32.dll", "int", "Shell_NotifyIconW", "dword", $NIM_MODIFY, "ptr", DllStructGetPtr($tNOTIFY)) If (@error) Then Return SetError(1, 0, 0) Return $aRet[0] <> 0 EndFunc ;==>_Tray_SetHIcon ;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17 Func _AutoIt_Icon($bSaveBinary = False, $sSavePath = @ScriptDir) Local $AutoIt_Icon $AutoIt_Icon &= 'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3Z1rU1NTLubm5saAAAAAFZOSClTTkuPa2lotnNycrlgXFmwQjs1dUtDPjkAAAAAAAAAAAAAAAAAAAAAAAAAAJyamdiurq7/Pj08wDUuKW5/f3/snJiU/5WGdv+WgGv/fndx/25raP+Tk5P5ODErfQAAAAAAAAAAAAAAAAAAAADAv749ubm57ZaWl/9qamr/jXpp/45kPP+vekj/uoBI/6qVgf9dWFT/i3Nd/62trf85Mix+AAAAAAAAAAAAAAAAAAAAAKGdm4e9vr//eHh5/4BWL//YnGH/1Jpj/9aXW//Oqof/kpSX/4NYLv+YfWT/np+g/UpCPEMAAAAAAAAAAAAAAABfWFJ8yszN/7zBxf98b2P/t39I/9iZXf/amVr/z6R6/6autv+eelf/nWo5/6qimv9aV1SgAAAAAAAAAAAAAAACbGhlpqGXjf/Fwr//ub7D/4Z+d/+Td1v/oXVL/7CSdf+4wMj/nH5g/7uBSP+Xgm3/c3JxywAAAA0AAAAAJBoRE5OTk8+Jc17/tJFw/9bZ2//O0dX/wsfL/7a7wP+5urz/ys7S/5eCb/+9gkj/l3xi/4SDguB5cm0UAAAAAAAAAAKGhYS7k4Z4/6hvOf/Zupv/19zh/4iEgP+qk33/19TS/9nc4P+jmpH/p3I+/5uEbv+BgH/XAAAADAAAAAAAAAAAa2ZjiaWhnf+NZ0P/3rCE/+POuf+vsbT/lo6I/93c3P/i5ef/tK2m/5RrQ/+onZP/XVhVoAAAAAAAAAAAAAAAAFpTTByWlZTtkIJ0/8Wniv/jvpr/6N3S/+zw9P/n5+f/5ejq/66gk/+PeWT/2drb/25oY61nYFsXAAAAAAAAAAAAAAAATUU/ZMbHyP+nnZP/xK6Z/9zDrP/o497/8PHy/724sv+dj4L/ycjG/83Oz//g4eH/c25prAAAAAQAAAAAAAAAAAAAAABGPjl+q6qq8cPAvv+7sqr/vLGn/7u1r/+9uLT/29vc//L09f+urq7/x8jI/7y6uOEAAAAbAAAAAAAAAAAAAAAAAAAAAEQ9NzlpZGCemJaU25WSj92dmpfhcmxooUpCPH/c29r/zs/Q/93e3/+DfXmxAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx2cRB+eHMSenNuFgAAAAAAAAAAWVJMYZmUkcJnYFuiZV5ZKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAA//+sQRAfrEEAD6xBAAesQYADrEGAA6xBAAGsQQABrEEAAaxBgAOsQYABrEHAAKxB4ACsQfAArEH8YaxB//esQQ==' Local $bString = Binary(_Base64Decode($AutoIt_Icon)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\AutoIt.ico", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_AutoIt_Icon Func _Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_Base64Decode  
       
      Display a transparent image in GUI:
      #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPIConstants.au3> #include <WinAPISysWin.au3> _GDIPlus_Startup() Global $iW, $iH, $hImage, $hBitmap, $hGUI $hImage = _GDIPlus_BitmapCreateFromMemory(_Torus()) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $iW = _GDIPlus_ImageGetWidth($hImage) $iH = _GDIPlus_ImageGetHeight($hImage) $hGUI = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetState() _WinAPI_DisplayTransparentBitmapInGUI($hBitmap, $hGUI) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() GUIDelete() Func _WinAPI_DisplayTransparentBitmapInGUI($hHBitmap, $hGUI, $iOpacity = 0xFF) If Not BitAND(GUIGetStyle($hGUI)[1], $WS_EX_LAYERED) = $WS_EX_LAYERED Then Return SetError(1, 0, 0) Local Const $hScrDC = _WinAPI_GetDC(0), $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC), $hOld = _WinAPI_SelectObject($hMemDC, $hHBitmap) Local $tSize = DllStructCreate($tagSIZE) $tSize.X = $iW $tSize.Y = $iH Local $tSource = DllStructCreate($tagPOINT) Local $tBlend = DllStructCreate($tagBLENDFUNCTION) $tBlend.Alpha = $iOpacity $tBlend.Format = 1 _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, DllStructGetPtr($tSize), $hMemDC, DllStructGetPtr($tSource), 0, DllStructGetPtr($tBlend), $ULW_ALPHA) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_SelectObject($hMemDC, $hOld) _WinAPI_DeleteObject($hHBitmap) _WinAPI_DeleteDC($hMemDC) Return True EndFunc ;Code below was generated by: 'File to Base64 String' Code Generator v1.19 Build 2014-11-14 Func _Torus($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Torus $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= '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' $Torus &= 'Xz4Uf070Ex4rO+SAz5IHnO4HF8yCKeEr4JfuGu8B6O+pOUiJ+MZSPykOlj1VHHwa4LHbAe6mKVLdRISjWqwjexshmuSPJMqoBFjyVGjja1rqGxhi4xAh5W1KpSIZnn8xwIuREK9BQpyJ8DpyoOQP9gfAH3lIIz8wRwAGtfcEDvSUxwcBfFvauw7VmtoaodbvH0DY9KBQxQEUPlvuwhL/+wBbaeCrEbM9ZE3j/sc6urfJInl8NmSYSAKYV7XUNzCixaRRBs2kYPJ0MF5Y/SMAZ58D8PLjcMHI+iQ8fmQKfrLLKOhleV8bIXukp1oRgINZu+2Ou1G1TTMGkjjUm4saQeC2xgWP6wL0gT0A2zYBPHg3wKY7ALaPAXyy2BCGIfjlMCgxQsSAHiNDOILExEug2uta6hsYw0bxCGnDvtlGr7DuhQCnnQdwwXokBhLk+XjyaLxoFbVeTcSksbW5mcd6YImnl+a1a4atTUqU+hHYFq9uEC/tRjrpoq7Z9yTAo1sR/Aj6xx4D2NMdrwQNS/1w6BJ5PAR/eKxJFhUwnAwTVQ8wwhtbVjYq+GvySGzXSHEqwFHPAzgRCXH0mQDnIknOXm0D69V40brEXjcQK8zGtFsQOV1EyDSiY3ovwDNY0j+8GeDpbUiApwD27x1viBE5XHkI/HA/lEKxQbFioA8D5ZjMWbYEIFtuJCAbB/wxAmSR47ym+ZbWoYc44gUApz8bF8o0HYEkWYvk4Do01GbH4B+s0Q3hApbee1EDTNN5EjwYyG7DY308RkM3kKbfiYq/mAXgyeS4nCEJYsBvk0JNmaG2QbNGJcOyseVIArJxwB8jQpQAUCdIFhz3VRDHIElW2zjFTttcP0/DNfe7FkhZcM/jmpRC4dSlEtjhfps3CEv+JiK0eYJhZFhWtlxJQBYCOuYhQiKEniAkAW+HrbUbCQEV0D0JgmMQ2R7VVGS7zSOM6g3COEFuh54gBHxblmjZEYBsQcciXWCjB94LfgO/yFysyeildsQxLqX5ulScl0BnUsjjBQwSAmBpSRCCHWAQ/P3IdTHwN3mCMPuzbOVPaMuZBGz8QiToJdglKSTQm8ggPQUfCz0AQJwEIfgXggRN8cCo8UEohWLgb5NCsSzRsrZDgQRk4QuUpT4fk6BuIkNsv0kSQXAeoJ0EsxnUQA5AFSMB7zd5gCYpVDTsD4sLwuzRsicA2aFCArJQHuRD1jEyhKX/qHFAE/gXkgQx0If7MSIMA39TXBDuHzK2nAPjNvPdjyGeGWoLjtvA3yaLAAbBv9DZIT7eJoPajo0bFxwypb+0Q5UEbDEitJEhBHkuPidGCIDBuABgcUkQS5OGwCcroJkQo8QFhxz42Q51ErCNQoa2Y8MC4ibwL3R2iNfDAuQ2GXTYgp/tcCEB2zAJNEwWATR7AwiOASwMCXi7LUBua0oRk0FN0uiwsMONBGyhBIqBP+YJQgnU5g34OogcH9VickgeV5HtJlI0ESIkw2EDfrbDlQRsUv60AT88DhAnBUC89J8NAdjCGCA81lR5NiwgDusKDnnZ02SHOwnYRs0MNTWTaIsL5LHZ2LDgOLY9CvBD6XTY2goJBk16BoDhnmCUOoL5IsGodQVNGaLDVvK02QoJmq0N9G0eYLE9Aa/b2hGtlPottkKC0SyWGeL9SfIEfExBPJZYsYitkGB2NumeYMXGsBUSzJ8tpSdYsTnYCgkWx+aLBCu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2Yiu2YvNn/x8H6goDo7OU7wAAAABJRU5ErkJggg==' Local $bString = Binary(_WinAPI_Base64Decode($Torus)) If $bSaveBinary Then Local $hFile = FileOpen($sSavePath & "\Torus.png", 18) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Torus Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode  
       
       
      More examples:
      Playing SWF file (source code is too large for codebox)
      AutoIt Windows Screenshooter
      Play MP3 from mem using FMOD
      Toolbar from mem
      Play a GIF anim from mem
      Load animated cursor (.ani) from memory
       
      Br,
      UEZ
       
      History:
       
    • By HamidZaeri
      I can't show SVG content using _IEWriteDocHTML!
      If i save the same SVG code into a file and navigate to the file, it works.
      Global $oIE = _IECreateEmbedded() GUICreate('TEXT?',180,99,5,5, BitOR(0x00C00000, 0x00080000)) GUICtrlCreateObj($oIE,4,4,172,64) _IENavigate($oIE, "about:blank") _IEDocWriteHTML($oIE, '<HTML><BODY><svg xmlns="http://www.w3.org/2000/svg" width="400" height="110"> <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" /> Sorry, your browser does not support inline SVG. </svg></BODY></HTML>') While 1 GUISetState() ; This part will show svg not supported message! Wend _IENavigate($oIE, @ScriptDir&'\1.svg') While 1 GUISetState() ; This part will show svg correctly. Wend If i use _IECreate() it works too.
      I'm on win 10 x64 with IE 11
    • By Beege
      Heres a function for searching for a bitmap within another bitmap. The heart of it is written assembly (source included) and working pretty quick I feel. I have included an example which is pretty basic and should be easily enough for anyone to get the concept. 
      You will be given a small blue window that will take a screencapture of that size:

       
      It will then take a full screenshot and highlight all locations that it found

      Please let me know if you have any issues or questions. Thanks!
       
      Update 8/5/2019:
      Rewrote for fasmg. Added full source with everything needed to modify
      BmpSearch_8-5-2019.7z
      BmpSearch.zip
       
      GAMERS - Asking for help with ANY kind of game automation is against the forum rules. DON'T DO IT.
×
×
  • Create New...