wakillon

Bitmap2Svg

11 posts in this topic

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.

1 person likes this

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

Share this post


Link to post
Share on other sites



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!
¯\_(ツ)_/¯

Share this post


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

Share this post


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!
¯\_(ツ)_/¯

Share this post


Link to post
Share on other sites
4 minutes ago, UEZ said:

GDI+ pathes are using polygons. ;)

I wanted to say to use only polygons, because it's more simple for work with complex shape...

 


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

Share this post


Link to post
Share on other sites

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

Share this post


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!
¯\_(ツ)_/¯

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

See next post.

Edited by UEZ

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

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

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 &= '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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 &= 'jbEmMi/wT6giEU+A/QOmIaoJoaLV4Sf/A/Wj3yoBT/CCAREDJwJcJx3wBcoZDxA8T+DfOJm2alsamlLhDwkmWBFShvM/0AQxHwThI1DE8CwMITb1ARWj4ZL/mEumd3gQQgUmUvUE7Iqbtar/pjOarirBqIr4K5H/AWI0T6BOo9hv8K7K8gDiBEkNOQoesEoH4WUXOhWf8J8CL0D/AuIUP5AET4D/A9JL2z9ZRvpv6rDMiblpqIoR2YlqpLMSOj/wH19K+AIB9QPYegsGIY0BhxgghhL3HyIpNPAE1gjqk5D3OBAWgXOEDAH4Af8eFUn7AjYZP+CC8AOGGer5epZB6VgB//pjIl8CuhoX6iDMASpnUftnZhD/B8cQlSKgJfMa3QF+K/GEK5ES9P/DC5EccG4N4Spl1j9qhQIqA2B78Qv/2ippz/EDFQbaEjDkBWFrAV4HBgT/0kEm9/ECKfACrdAd5KmvIHAqA/FvOfQCynGhgQAezSGakLIKEb2gSGC/yQE4BguirwJOgpYF4fJe9gFP8N8K6pvyBdgvEAb/kCdbCWnq9wI6Cz/wSw008jTQQy+g6/ACkfQPYgZaTPpv+rAt8QN6gS9gW/EDPhY6WwP/4Neh5zXwAv/h+gRBpBWr/g4/EGY/kEdK+ASVlv81tfoRP5AOL1AJKzbwAm4Qn+FF8AOkL3DvYvED1gIvsN4GUUdgczgO8Y4DpgXxAv+CCk8gwJBOBj+Qc2qNoG33A0GgPgf6Xwc/UB8/sMMDP3C+A6nz8QTSXk+gCvACHbz/W/EQkWEeNFl/XfCYpC9gmrIuKi/wn7dP0A/pX/AEygUvIPCw+0OgXfUCYbL7yaB18ASx9wEF9gO1ADdWD0Aa+taCYTL0CTYKIRxgPQUwJQs2/yYuoIGKYh6p6PAD4ZECG4uuSab/ngNZbi69c4Yob1B/ro3yA0IGb1BSD+DfBD9QumptoRoUP2BZCb6AwQQ174Z/JkUMbjNho4oeBW0ujOAeE382WzcQmVTVGY4gYT4cPhYmZoP/rk9g8QRiIvGHA2HSYE2kbfUB6fkD/xEH+glXij8gQAGawNEhoAt88hJP8O8r8QVaQQ/Qhj8gRQrxGdUVOhFBav/G6+HYA24l4KnxA8YFPyBX8AQOMmrL8AH/lgqQSVEon1AjP2C5BJO6EppQ0MLgLxX0Ai3wBdgvYHKhNgg/YIwOcQQ1/8qEoU5g6kc/oOf0BUZOH+DspN7cT6B2Af86BDBlDXExBub09gQp8QPV8APOW2+gffQA//XwA7oTP2DykDWmHfgDxfgEuQquAfBvcgEOBNCwKAHyAOH+A2YgPyBGoHYBP+AvcRN+XiJQHXYBaF7wAI4GPxAaMPOv1GFOA08g6fEAzfADUfID+fIDGh/gLxj/2tUx5gPmCPAEMgE/oCyi+ZEaEU/gmvID99ZUPxBlUIChHg850ocGBTr78SWj6A02BYhGI6mKoOZVagay/8yIyZIXH2CV8wJuAT+gffcEffIFKfIA/9pMT9AEL4D/BLa5P9AEL4D/AyYCT6A68AP/Iav/ZPACLfAE2OpQ8ATKL4i7ZPrfzi+Aq94FGhM/YLTxA4n6AimgHhxv8F9DHxCgL9AGoGlx4f0EZgJgsxRQ8C8YYH4CL+C8scoyP2Apk54YTyAW8ALd8QP/CfoDTfAD+E9gAfYDtfkCKfQDvroh+wD/vgF0iQYR08ABZgUnbgHyCKHWAj8uOBoIJrnwEJEEChZhlQAFBf8eD78wCQdPoHTyA3o0LyBS8wQtACIS4KUUfzj1cKQv4KfxA/hPENM/4GnyA/36A/9uFGnOoLsq8AO6b8yeuC8gTAdJB38zYk1himBMMO4FYY8WA19gxmLyHYYgbgQ48yxwUg9Zrxqq2qRP8C2WkLgw4xppDiZPoH/yArX1ByIBD/Afaz8Q6y+gI/ED5hFP4PgR+KCcAw5Q970QA29QIkHj4xDezyZaA9KOKGzxAv6x+wN9+wOB+gN18wOG'
    $Obj_Data &= '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'
    $Obj_Data &= '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'
    $Obj_Data &= '/1XKigk/kKovIKD3A5YGP2Bk8AJqXV8QIi/wL3LxAaBvECcfQP8ByhBP4Fig/hAvIILwBP8t8AOiJ2vf9A2SExreT+C58wOmMk+gxPAC78YIL2D19gOi3AAzzwDhpwT+E5DA14Wj3QU1VkwgbnKRDDaZAu9QEeOnePIGM40FojNh4mLeJz/wryTwAe4CT1DDH9BFX1A7EFwxxg0hIWD+24kQb+UQOiwhd4+J8gCWoEEINW8zA0AQlvcn08/hKQRvMnAqBk/Qr0XwA8qKD5BhP6ATAj/JIHI2kaN9Urf+BJEjSQTtGzdGQKcd8wQaCQ/w2zgBo7waprRhMGO+SJoCH0D9Av8l8APJ8AQ7zBCSNCH6AQF1PfsQifUA/2oDT2Az8AHqG0/glPED3hYvYM7xBV5lL6DF9wP/KhAvIGD2ArouLwD/A24ZL9AyL9AtX6Av8AL/lf0DFq4voD30A735BGn5AjIXTzBXAC+Q5B/w75TyBWYhH2DN8wQOIj+g0vME+B/QUk9QbD+wr0z4A/IMHxBYUSwxBBCB80IGZTfwA/8mCl/QBD8gR/ADofAB+H/guPEBils/IGj1Af/4P9DsX6Dq+QFWni/g3PUE0h1fkB4foArxAv/6Ci9gyvEEmhIfYLLxBXIGH6D88QVN8ANuBy/w26kAUyegtBD24mYJ9QUSMi/QBPCX0xfg0gEjbHDuEKtP8wRuDz+gzfAD/8XzANr9sIcOkivgHodZAaoBoQIQ/1V3VvORcCDNBoYQojv1CCEK8LEvzQCHDGDuxdLGYDYVOYZPptrxA/8uHlg0P0DIahWK+wJ+C6my8AQ5E/8XNBBG1xNY9oIBUv+hf1HKISF1ET82NMoz4UKEth+tH7TyICkZpP9kahLyA0pCKtD0A7asP2DV9ANWRy9gufED/6pHK6D0A2Y8L2CPCwECOxYQFRXx9AP/ofQCGicf4LrxBCmw8icvYI8R5R9pHf/RYxIHD5BhTwD6A2IHH0D/BdKyPyDL8gL/bfUEVs0/EP4/oAjwA13+AS4dH5CaP6Ar8wT/Ohs/YHDwAqYHD6CB8QXwL9A3LyBb8APR8wT/GoQ/4F2i9h8fYLTl/foB/lM/0ALvEMhfsG9o8gJ9+gJJ+gPRCCWNMVJ+QYb/ytPVaj+gSPICYjIvkIxQiCBMKCZ+9q9g8AW+PSCsEa0GmXgiCj8gdfAC/gYfkC8P8QUh/QJp/gL6NPAsDmFDMzgQ8S4FbuUB9hlg408Ga0sQojWPYJ/5A7/lETCuHVHJcKwM4Q5m6gJRGfBzg+PVcHInP1CkP9D2PxDDT5AEH/AvaPADHpwRgJAb4Nho0RWmvWG2Ef9GDhF9D+BU9QXWM6huoD40LHr1A6YH+S/08gJuGj/gJfADxfgDEg0vkJE/oBL6A9KhP/BfaD/g0PEX2o1fIBTzAydEEME/piYRH/V/Qwvis/AKhhEvkPXguFOATyDc8QLQ+C8m/ATvO6BZ8wJhEaUAKo8hEFh+OE/wb9j+AukIVnrRWSGAbPH1BM39A24gL/Cfwl/gNfEDUC8gFvcD89IQe0QgbQPpZv+ODj9g8/ACrkc/0GU/0GDqqfQDCfUBjbX+/0LwAN0r+1cQ/5QQoy1Q6jhPIGABN/+TVxCHpRDeLGco8QM6EB/QKT8gTPEDjhtf8B/iD2BV8ATaCR/QB5A/QS/xewYXL/AfTk/QSi/wtBFhnGL+mkkG64IQ/j+P8B+WPyAF9AKt/wVWAC8gvPABqjBvILzwAPAP8G9JyE7QKM0mtgbnz/ADVfYCRg5f4CfwAP+tAH4u5l0jhhNRyAFlpfMFTfQB/2H9AlX/A63+A/QfIHWXunfsEpeOJfsvePUDtKiX9QLR+AWDqzAdLupw98oB+u+jl6mVZNwhWWTq8PAD6iVh5hP/UGKD8QLuKE9gE/MC5ZK2jpuMGcH8r27xAtoYP2Bh9wPaGG8gBPABHggvYJXyATkeezGg0a2gN282iHHzEwZRFPB/FgDW'
    $Obj_Data &= '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'
    $Obj_Data &= 'L6CC8gWJg4RfkEk/UEb5Lwb2BgphH+CN8wPWAj+gdfACKgorwPADrgs/8F8NPxDJPxBrP+C88AJ58gSaBy8QDz8A+gL/PfIF9A8gKvIEPfIDug4/4KvxAk3wBPg/8K8E8ANt/wKaANrVKg7yA5oWPyBH8QM+FC/wL68U7ighVwI6WWFC+gm5+QNKNy8A+gP/RfUD9C/g4SVCNGFAFO47qEP0AAZ9P/DbI3BTLmGaFwoFZ5yZxfIDxmFP8C/78wItoIQ/oLTpuOqO9wB+XYm7/mRZGD+AqzBuwnGuHE9wwghi82/EBBkU6jafYFP7A4YeT5AQquvBDfAA/pYGP6AC9QPuBT8gjvADHQ+6Q+GIAzD/ZieaFRgzHxB1T2Ck18ojliZx8QDXb4UObnVmaKC6iCBpFU+REDlqe1/wnwhZBepz8gTsiasWDE+gJPMBCRz//gAgAByeD6h18gJiAF9A/wCkTxAUP/CP/wLOCT/g+vMDdpghwAaKzODqAF7Vz/AuYP0B9D8gAQI0+l1WYhpfP6DF9AP/YsFPoCD8A3n8Ak3wA/hfoB10anBsA/cC/54lT6C+8QKGD+1x8gEt8ALYqin2A8L1T/B/ywHBBHYjEVcmgvACzgc/oDn4A5obL/BfY9xpqHfxAzYAT+AN8ALmAz8QXD/gIvAF/9WDwhVfUJof0BdP4JaT6gI/AKhGBfpP+wEqTpApESFxZwOWW2HvFFDxb+9zDfYDfjwvkFZPUFPpjPAEjfQCx+EQ/4SgxxamYZjqH5AEP0D/Ao5pT1Cdb3Dfpw/gV6EWBC/QNHDzWAAhuBqWDvgP+gFeBT9A/wMGBl+gavAA9C+QlD8wogIv8P+2Aj/gl/sDvk1PYLwI8ny/IJzyA82tggr678+g1iVKpmn+A7hqEvEEaihfoBfxAP1vbBAnWRCyiSG4ZGO3EEUGM5IV8AeTEqbGDnvOEc0IfgbQCb/gRfYC91oqP+Cl9QEuWosNOI5HII0CfYP/hq0vUAIvAP8ClfUDkhKrSaCN/ALJ+ATvGngv4BTwAvSAkzogxgRNDr4V9u9q9QPaAx+Q9z9QGU9QLyG8Fz5KYzzwAf/WYmoD8QRh8AOl8gOt9AJWYWrk8AFbQpD/Kf0F1ay2BqkwwpIj7gOxeprqHan/zh1P0P8vMGABj2GN8AWCCA/g7vAC7jE/4HbyA/2WMn8gv+f4P+BS+gNmKW/goOI2hjDwFzMWDMERoWAKB7FXCKG2B9qK1u2sEE7uYaPTHIYhJvgAM+Z+8d8EoGgEUKUGEE0AXrpRPnboAPGvuhtKB9AJlp7q5wX7kWD2bT9gz/ME/0YBLxBuL9BoT/A/BC8Qbi8w9ASZq1mm+i8K8QImHuvkht+KES0EMLWtA8FM/wcDIAFgifEEM0fwA8H5Au3+AxoST+Az8AP/uiA/IEqg5QYLLxAKw/C1DtZiKy/zA/+B9gKiiyRKENb896AAoRQAAgPhJ2Hf2gOgKhkzFkLhbmFSG0+gXvAClgU/8G+Z8QKqASls8APm3z+gTsmK/RIVUDjw3wU/kK3qYqA6LqxUcAeoEDqZJzWQ/za4iglHjmC6AytCsJjZVS8g+BP/ZkJ2IA2xIgkioxFSND/Qaz+QKdpkL/Cv5hbxFm0GW50QofYKyok/EM8/4MCX/zI0P2AP9ATY6cKx7hk/ULAv4MS0DZD9wfsGyXBqfj8gxRgNBoI3ISMObP9Vx136AWdgELYWkKfwogMWhtyC+a/89gPONj/QAIv9AmIJP+BB9APufGEzEPftBSqhqGYBaQI12rQRMUcI91Y04SYVvi7W3BDjJRbSoeFicv1ZopmjRfMBcf4DO7YQbrRWI5QL+1IE8FQE4oRgdrnwIw4x4zQeNWL/ghwvYGAR5oXn2vEDQLDbACbe8QN5Er3K6pHTByHVYPoNHwATOA5kcf8XA2F3YGkCiqFh48gRqmXWQ/B/IAPiehO6F0YKMCFlJj10hfMC/9m+phkv0PJPUNIvIA7w'
    $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 &= '4fEBSiU/UCM/YKGi/2XzA9HwAtTpmvQCsfYDXaYmKT8gkfMC/4n3A1HxA9HyA32iMFpNL+BH8gS2TbFvIhJqbpHiaMLwA8pIfuO2EQIjP/B1o7MJMmEQmhIhBGm2Ij9g4fMD/7HzAUZIP5BKP5BFP0D6AyYvP6D78wfKL/6vsvkC6fEDBmU/0CMvkB4/4KXxA/Z3LzAXAvtvAvADShIv4NH3Ay4E4G5kk3mArRAq5vYvV/MFUi6peJDaNT/QAD+AnfZ6Kj+4/x/pkKYd7OLxAlNvEALTR/gCxkOKq/+uCpvCPyCw8ALJ8gMtsAX9AuYCT9ACP/CP/xep/gYiWA/gV/ADSfAD9C/QCU+g+sD/fgAPIJvUChEv4Kz1AZpaKbC1li0pNPAD/8IJP6AL8gS99gKSBE+A/wLyGk8g2fEC9fAE/w4iP5CQPxAfXyCJ8AGWAQ/w9g3hu2cw+q+M+AROiem58AJKC7qpCKlBxuAPwIr/oiY/UCkvcPIH0W8BBQ1ibpRZ4/ovSqlKFl/gOfAAapHq6vEEEfEACjhfIPXxAfpB8APwH9BZKzegPgN5U8cw4+/XIAadgVsP5xAmQiGUENAF888DpgbWw5rAKDCkBf4EAjw/kNT5n/tPkAI/gI1eEC7ZDh4BI8F5XQn/Ej0heB7qYyWaoAIKadmZtg0/oG/0A/85mwGaZZDKCxgd7Hv0AyXyAdqMT/DvcfMBLbnVlaZJK1iRQjhPoL2QVaD/chbrr7SqShkPK3ShDhcf0IFbiPp/egFPoGGQOfsD2D8ge/APghlP4O+wxhov8N8kPxCVPxBtP/CoAZr2TyAi8ALUKX7wA//an08QC+oW8AEmBC9AvT4KT1AQH4CtfzcRA77EtmERIvJQ5gRrHP4Deqn5L6SxPuBv0ACOvVGW/fUEYxER+gjwVaNiBDhDomD6FtoAivsDii0v8C/G8QQGGpkTT6Aj8ALiWjGgC1UQPyBs8AT/dgYpP/AF4ZXp8AM1pgYIHxBoGbhf8G8zkHnyEYQvkCc/EEOr/qryDhgdL/CfLVogGkc/EFpPEB3o3/cEqgdoRKL/siFaitkda2mgpgWKqcXxA0Wk/zIPT1BEP9BOP9A/H1BhPxBFCf0BTg3479GgWR/WEOZ9kfIZL6BtsoQ/oDih/1YTmjo/ELlaq6rkkPGBvYHw++9H8QI9oPnwA4QoOLBN+AJNkR2B5S+r8AMB8APQZgbiiwQgf7UQIzc5Kkswg5PDFPkBSCAWgJFDY24AMzY1h0xxA4IDoh0ITCFYCzo1OOzSWeDVBzL4gfOREzOj1AZY4mYfVjJQBfI0I14JNTRYYpUKttSQHqEdBiniHDAmS4AlMCIGkFMfAaKQJmUOESA1dlNAkxtyXushyhzJIDUx0RFYYhQJ/3PnECHCnQSFC/Jm4HUEcs0gzwZ+N1jSxBDMkCih/QS+HIDjZoMl9yMRICLNgBUq3FCjXxJTZ2CQAr0EWDCTDDCTF4M1VQB1AZUSODJmC9AvmQxYUgVQF1ApUQsAk2own0QTaFF1QCs5OSIAgCXjDy0Q8lTRBiJTY+O/CVjiL7YXamKAFQIAYPcFWFPakGNdZBAvcmNWCjJhJO4KIXPstgARIDM4N90OWGJtHOe9GVhROjBDE12iHgAmKfAsMgx1tTcwrgBQhlBA7A8E/kUIghvQBhuyIGkDjh6AFTduOGZeEHmTk4bwA5eBBTF/MYkKiTbqLqCiAbUOtCH8D9+ymIAlNQtsGfZHkCMbtWAvAv8ND720bhLg1wHCYpA6a88Bfgyw7FUAWEATozgJNZ0nXjbQfiQI0WJSbhgTriAqEDF5C+3RyRduEGYZEKPgBgkTMhDwZ1OpFJ6gUAAS0sHcXoAQsfJfLGJ4ANzAPFELPu/AANEi/pYC4P8AZOSqEkUALQuptDHcaQv+IhGTs1CQodYJODf+jT11C4MeEKJV0RYsDxRNCzH/UQvMoKoPAtjATMUB3R5dC/8NE0KnUAqQ11Mc'
    $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 &= 'YzSkLoYBAW0AH7RA9omIBP8VAvaFAQHXQkB2B+diGBDQBvHvxDEpki6GAQFtED6kFN/oYhj/ENAG4ZlE4YQuhgEBbRBOHPQvWIEuhgEBbRA+pGMNAkYBAFf/FRIFHh+0QKod6WIYENAG4UNK/zmLLoZheQFtEO521Axp1BD2hfEPAQ8aMGYb6GIYENAG4cQx31WA/0hQIVHg8UEL5A2FRgsBEW0Q/55JNJAKYec1SFAhUeDxQQtj7Jb/SFAhUeDxQQsTTmvUEPaFAQH/NleNBBUSBR4ftEAPVIBIUCHxX+DxQQvj2JVIUCFR4PFBC2RMk/8uhgEBbRBOHCQegS6GAQFtEP+O0dRGadQQ9oXhMAENOK416GIY/xDQBuHEMd6KiAQVEgUeH7Qw/4WzRg1hXxgQ4FXiLoYBAW0Q/+52tLsChwQVEgUeH7QwvgTqYhj/ENAG4cQxroyIBBUSBR4ftDD/8a0uhgEBbRBOHKM2A8LgAUf/FRIFHh+0MGZV6mIYENAG8EEL9K+XhUhQIWBfGBBgSNhIUCHwb18YEFA47mIYENAG8EEL0yn672IYENAG4ZlEogroYhgQ0Abx725HcFohYF8YEHDpASTlZkjwXyFR4PFBC5V56GIYENAG4Zk0/8oS6WIYENAG4UNK2hvoYhgQ8N8G4Zk09myIBBUSBR4ftDAXSpD/SFAhUeDxQQujkBPfLRBwVCHxX+DxQQsjA51OkgERbRCeSRSl+O9iGBDQBuFuR/WILoYBAW0Q/04cU1Vq1BD2hQEBjkAjHoEuhvEPAW0QH7TgSFAhUeDxQQvVDPlv1BD2hWFVAYXzAEYNYV8YEGBa4P8uhgEBbRAvLEDhlEYNYV8YEPDvM+EuhgEBbRCeSSQQhC6GAQH/bRBOHGSjEB/RMEhQIVHg8UEL82/OoC6GoXQHbRDPhkBiPehiGBDw3wbhbkedkkYNYV8YEGAmN/Ll948EFRIFHh+0QORq1BD2hQEB/8ao43yELoYBAW0QH7TgSFAh8V/g8UELI+GbAnpQIWBfGBBgnjL/VkzoYhgQ0AbwQQskl5IuhgEB/20AH7QwzaAuhmGNBW0Q7nYjzYf/SFAhYF8YEOAh2UhQIWBfGP8Q8FMDjQQVAvaF4XQAzmTuYhj/ENAG8WwIJHGGLoYBAW0QThwP8O9iGBDQBvHCAm7hBxUSBR4ftDD/xhfqYhgQ0AbhQ0r1iC6GAQH/bRBOHASnFRIFHh+08ABIUCHxX+DxQQsVMWnUEPaFAQEuCu5iGP8Q0AbhxDHaOOliGBDQBuGZNP8+auliGBDQBuGZREYm6GIYEPDfBuEYTc2QRg1hXxgQYK7bSPBfIVHg8UEL9F0FiAQVEgUeH7RA/5bkiAQVEgUeH7QwgQhacKAeRP8uhgEBbRAvLOBIUCFR4PFBC/PvsADCRWAlQS6GAQFtEI7RRJ7/Rg1hXxgQYNk4D1RwSFAhUeDx/0ELU49r1BAAABGFM1oq6GIY/xDQBvHCAo4EFRIFHh+0QC64+I8EFRIFHh+0UG2URg1hXxgQ8G984S6GAQFtAB+0MC64iQQVAv/2hQEBBs2NBBUC9oVRHHC+BP2PBBUC9oUBATZX7mIYENAG8f8WDmQOeEhQIWBfGBDgQ9pZA/8VEgUeH7QwxjTqYhgQ0Abhbkf/8Y0uhgEBbRBOHKT8gi6G4dAU/xBRye5iGBDQBuEY7UhQIfFf4PFBC6Nroi6GAQFtED6kpJuA/zAAEW0QnkljL5MuhgEBbRD/ThwEpxUSBR4ftEBwatQQ9oXxDwEWRVSP52IYENAG8ZcFjgT/FRIFHh+0UJ2SRg1hXxgQYOsw/4oL6GIYENAG4cRBUYouhgEB/20QThwTFGrUEPaF4QocQeFGDfFvXxgQUDhTcmnUEPaFAQE2V/7vYhgQ0AbhxEHhlEYNYV8YEPBfOJMFadQQ9oUBAW6/jQQVEv8FHh+0MA24Rg1hXxgQ0IBDnv9GDWFfGBDgEeAuhgEBbRAv'
    $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 = "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"
        $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
1 person likes this

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

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯

Share this post


Link to post
Share on other sites

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


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

Share this post


Link to post
Share on other sites
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!
¯\_(ツ)_/¯

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • UEZ
      By UEZ
      Here a small function to mark a region on the desktop and capture that region to a bitmap handle or to the clipboard:
      #include-once #include <Clipboard.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WinAPIGdi.au3> #include <WindowsConstants.au3> #Region Example ;save the captured bitmap to a file FileDelete(@ScriptDir & "\Captured.bmp") Global $hHBitmap = _WinAPI_MarkScreenRegionAndCapture() _WinAPI_SaveHBITMAPToFile(@ScriptDir & "\Captured.bmp", $hHBitmap) _WinAPI_DeleteObject($hHBitmap) If FileExists(@ScriptDir & "\Captured.bmp") Then ShellExecute(@ScriptDir & "\Captured.bmp") ;copy captured bitmap to clipboard Switch _WinAPI_MarkScreenRegionAndCapture(1, True) Case 1 MsgBox($MB_ICONINFORMATION, "Information", "Marked region was properly captured to clipboard!", 30) Case 0 MsgBox($MB_ICONERROR, "ERROR", "An error has occured!", 30) EndSwitch #EndRegion ; #FUNCTION# ==================================================================================================================== ; Name ..........: _WinAPI_MarkScreenRegionAndCapture ; Description ...: Selected area on desktop will be captured and save to clipbord or GDI bitmap handle will be returned. ; Syntax ........: _WinAPI_MarkScreenRegionAndCapture([$iFillMode = 0[, $bClipboard = True]]) ; Parameters ....: $iFillMode - [optional] an integer value. Default is 0. ; 0: marked area filled with solid color ; 1: marked area filled with hatch pattern ($HS_DIAGCROSS) ; 2: marked area without any fill pattern / color - only red border ; $bClipboard - [optional] a boolean value. Default is False. If True then no GDI bitmap handle will be returned. ; If false then GDI bitmap handle will be returned. ; Return values .: 0 / 1 / -1 / GDI bitmap handle ; Author ........: UEZ ; Version .......: 0.91 build 2016-09-29 ; Modified ......: ; Remarks .......: Do not forget to dispose returned GDI bitmap handle for non clipboard mode using _WinAPI_DeleteObject! ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func _WinAPI_MarkScreenRegionAndCapture($iFillMode = 0, $bClipboard = False) Local $iOld = AutoItSetOption("MouseCoordMode", 1) Local Const $hDesktop = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Local Const $aFullScreen = WinGetPos($hDesktop) ;should work also on multi screens Local Const $iW = $aFullScreen[2], $iH = $aFullScreen[3] Local Const $hGUI_Screencapture = GUICreate("", $iW, $iH, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED)) GUISetState(@SW_SHOW, $hGUI_Screencapture) Local Const $hDC = _WinAPI_GetDC($hGUI_Screencapture) Local Const $hGfxDC = _WinAPI_CreateCompatibleDC($hDC) Local Const $hBitmapGDI = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local $hObjOld = _WinAPI_SelectObject($hGfxDC, $hBitmapGDI) Local $tSize = DllStructCreate($tagSIZE) $tSize.x = $iW $tSize.y = $iH Local $tSource = DllStructCreate($tagPOINT) Local $tBlend = DllStructCreate($tagBLENDFUNCTION) $tBlend.Alpha = 0xFF $tBlend.Format = 1 Local $tDest = DllStructCreate($tagPOINT), $pPoint = DllStructGetPtr($tDest) $tDest.x = $aFullScreen[0] $tDest.y = $aFullScreen[1] Local Const $hPen = _WinAPI_CreatePen($PS_SOLID, 1, 0x0000FF) Local Const $hPen_Orig = _WinAPI_SelectObject($hGfxDC, $hPen) Local $hBrush, $iAlpha2, $iFlag $iFillMode = $iFillMode > 2 ? 2 : $iFillMode < 0 ? 0 : $iFillMode Switch $iFillMode Case 0 $hBrush = _WinAPI_CreateBrushIndirect($BS_SOLID, 0x808080) $iAlpha2 = 0xA0 $iFlag = $ULW_ALPHA Case 1 $hBrush = _WinAPI_CreateBrushIndirect($BS_HATCHED, 0x808000, $HS_DIAGCROSS) $iAlpha2 = 0x30 $iFlag = $ULW_ALPHA Case 2 $hBrush = _WinAPI_CreateBrushIndirect($BS_HOLLOW, 0x000000) $iAlpha2 = 0xFF ;not needed $iFlag = $ULW_COLORKEY EndSwitch Local $hBrush_Orig = _WinAPI_SelectObject($hGfxDC, $hBrush) Local $aMPos, $aMPos_old[4], $tRECT = _WinAPI_CreateRect(0, 0, 0, 0) Do GUISetCursor(16, 1, $hGUI_Screencapture) $aMPos = GUIGetCursorInfo($hGUI_Screencapture) $aMPos_old[0] = $aMPos[0] $aMPos_old[1] = $aMPos[1] $aMPos_old[2] = MouseGetPos(0) $aMPos_old[3] = MouseGetPos(1) Switch $aMPos[2] Case 0 ;display crosshair _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT) _WinAPI_DrawLine($hGfxDC, $tDest.x, $aMPos[1], $iW, $aMPos[1]) _WinAPI_DrawLine($hGfxDC, $aMPos[0], $tDest.y, $aMPos[0], $iH) _WinAPI_UpdateLayeredWindow($hGUI_Screencapture, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $ULW_COLORKEY) Case 1 ;capture selected region $tBlend.Alpha = $iAlpha2 While $aMPos[2] ;mark region GUISetCursor(14, 1, $hGUI_Screencapture) ;WinGetHandle(AutoItWinGetTitle())) $aMPos = GUIGetCursorInfo($hGUI_Screencapture) _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT) ;clear bitmap ;draw rectangle $tRECT.Left = $aMPos_old[0] $tRECT.Top = $aMPos_old[1] $tRECT.Right = $aMPos[0] $tRECT.Bottom = $aMPos[1] _WinAPI_Rectangle($hGfxDC, $tRECT) If $iFillMode <> 2 Then _WinAPI_InvertRect($hGfxDC, $tRECT) _WinAPI_UpdateLayeredWindow($hGUI_Screencapture, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $iFlag) Sleep(10) WEnd _WinAPI_SelectObject($hGfxDC, $hObjOld) _WinAPI_ReleaseDC($hGUI_Screencapture, $hDC) _WinAPI_DeleteDC($hGfxDC) _WinAPI_DeleteObject($hBitmapGDI) _WinAPI_SelectObject($hGfxDC, $hPen_Orig) _WinAPI_DeleteObject($hPen) _WinAPI_SelectObject($hGfxDC, $hBrush_Orig) _WinAPI_DeleteObject($hBrush) GUIDelete($hGUI_Screencapture) ;capture region $aMPos[0] = MouseGetPos(0) $aMPos[1] = MouseGetPos(1) Local Const $hDC_Region = _WinAPI_GetDC(0) Local Const $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Region) Local Const $iW_Region = Abs($aMPos[0] - $aMPos_old[2]), $iH_Region = Abs($aMPos[1] - $aMPos_old[3]) Local $hHBitmap_Captured = _WinAPI_CreateCompatibleBitmap($hDC_Region, $iW_Region, $iH_Region) $hObjOld = _WinAPI_SelectObject($hMemDC, $hHBitmap_Captured) _WinAPI_BitBlt($hMemDC, 0, 0, $iW_Region, $iH_Region, $hDC_Region, _ $aMPos[0] > $aMPos_old[2] ? $aMPos_old[2] : $aMPos[0], _ $aMPos[1] > $aMPos_old[3] ? $aMPos_old[3] : $aMPos[1], BitOR($SRCCOPY, $CAPTUREBLT)) Local $hHBitmap_Clipboard = _WinAPI_CopyImage($hHBitmap_Captured, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG)) _WinAPI_SelectObject($hHBitmap_Captured, $hObjOld) _WinAPI_DeleteDC($hHBitmap_Captured) _WinAPI_ReleaseDC(0, $hDC_Region) AutoItSetOption("MouseCoordMode", $iOld) If $bClipboard Then ;put captured region to clipboard If Not _ClipBoard_Open(0) Then _WinAPI_DeleteObject($hHBitmap_Clipboard) Return SetError(1, 0, 0) EndIf If Not _ClipBoard_Empty() Then _WinAPI_DeleteObject($hHBitmap_Clipboard) Return SetError(2, 0, 0) EndIf Local Const $hCP = _ClipBoard_SetDataEx($hHBitmap_Clipboard, $CF_BITMAP) If Not $hCP Or @error Then _WinAPI_DeleteObject($hHBitmap_Clipboard) Return SetError(3, 0, 0) EndIf _ClipBoard_Close() _WinAPI_DeleteObject($hHBitmap_Clipboard) Return 1 Else Return $hHBitmap_Clipboard EndIf EndSwitch Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _WinAPI_SelectObject($hGfxDC, $hObjOld) _WinAPI_ReleaseDC($hGUI_Screencapture, $hDC) _WinAPI_DeleteDC($hGfxDC) _WinAPI_DeleteObject($hBitmapGDI) _WinAPI_SelectObject($hGfxDC, $hPen_Orig) _WinAPI_DeleteObject($hPen) GUIDelete($hGUI_Screencapture) AutoItSetOption("MouseCoordMode", $iOld) Return -1 EndSwitch Until False EndFunc ;==>_WinAPI_MarkScreenRegionAndCapture Might be useful...
       
      Download:  _WinAPI_MarkScreenRegionAndCapture.au3  (same as above in the code box)
       
      Tested only on Win10 x64 but should work also on other Window versions. If not please reply.
       
    • Beege
      By Beege
      This is a small UDF I put together just for fun that will embed and extract complete directory's in and from your script. It only has two functions, _EmbeddedDirectory_Create() and _EmbeddedDirectory_Extract(). The udf uses Wards machine code functions so they have pretty good speed. The example I set up packs all files located in Autoit Include directory. Both compression and decompression of the directory was less than 500ms on my pc which I was happy with. Let me if you have any problems or questions. Thanks
       
      Example:
       
      #include "EmbedDir.au3" ;Check location of autoit includes Global $sIncludeDir = 'C:\Program Files\AutoIt3\Include\' If Not FileExists($sIncludeDir) Then $sIncludeDir = 'C:\Program Files (x86)\AutoIt3\Include\' If Not FileExists($sIncludeDir) Then Exit (MsgBox(0, 'Directory Not Found', 'Unable to locate Includes Directory')) ;Create embedded directory function Global $sCompressed_Includes = _EmbeddedDirectory_Create($sIncludeDir, '_Extract_Includes') Global $iTime = (@extended / 1000) & ' ms' ;create example file and write extract function to it Global $hExtractExample = FileOpen(@ScriptDir & 'Extract_Example.au3', 2) FileWrite($hExtractExample, '#include "EmbedDir.au3"' & @LF & @LF & _ '$sExt = _Extract_Includes()' & @LF & _ '_EmbeddedDirectory_Extract($sExt, @ScriptDir & "AutoIt_Extracted")' & @LF & _ 'ConsoleWrite("Extract Time = " & @extended/1000 & "ms" & @LF)' & @LF & @LF & _ $sCompressed_Includes) FileClose($hExtractExample) ;Show stats of the directory we just embeded $aSize = DirGetSize($sIncludeDir,1) If IsArray($aSize) Then Msgbox(0,"Directory Details", _ "Size = " & Int($aSize[0]/1024) & 'KB' & @LF & _ "Files = " & $aSize[1] & @LF & _ "Dirs = " & $aSize[2] & @LF & _ "Compression time = " & $iTime & @LF & @LF & _ "Open Extract_Example.au3 to extract") EndIf  
      UDF:
      EmbedDir.zip
    • wakillon
      By wakillon
      Convert SVG file to PNG using Cairo and rsvg libraries (and their imports)
      #Region ;************ Includes ************ #include <File.au3> #EndRegion ;************ Includes ************ ; typedef enum _cairo_status Global Const $CAIRO_STATUS_SUCCESS = 0 Global Const $CAIRO_STATUS_NO_MEMORY = 1 Global Const $CAIRO_STATUS_INVALID_RESTORE = 2 Global Const $CAIRO_STATUS_INVALID_POP_GROUP = 3 Global Const $CAIRO_STATUS_NO_CURRENT_POINT = 4 Global Const $CAIRO_STATUS_INVALID_MATRIX = 5 Global Const $CAIRO_STATUS_INVALID_STATUS = 6 Global Const $CAIRO_STATUS_NULL_POINTER = 7 Global Const $CAIRO_STATUS_INVALID_STRING = 8 Global Const $CAIRO_STATUS_INVALID_PATH_DATA = 9 Global Const $CAIRO_STATUS_READ_ERROR = 10 Global Const $CAIRO_STATUS_WRITE_ERROR = 11 Global Const $CAIRO_STATUS_SURFACE_FINISHED = 12 Global Const $CAIRO_STATUS_SURFACE_TYPE_MISMATCH = 13 Global Const $CAIRO_STATUS_PATTERN_TYPE_MISMATCH = 14 Global Const $CAIRO_STATUS_INVALID_CONTENT = 15 Global Const $CAIRO_STATUS_INVALID_FORMAT = 16 Global Const $CAIRO_STATUS_INVALID_VISUAL = 17 Global Const $CAIRO_STATUS_FILE_NOT_FOUND = 18 Global Const $CAIRO_STATUS_INVALID_DASH = 19 Global Const $CAIRO_STATUS_INVALID_DSC_COMMENT = 20 Global Const $CAIRO_STATUS_INVALID_INDEX = 21 Global Const $CAIRO_STATUS_CLIP_NOT_REPRESENTABLE = 22 Global Const $CAIRO_STATUS_TEMP_FILE_ERROR = 23 Global Const $CAIRO_STATUS_INVALID_STRIDE = 24 Global Const $CAIRO_STATUS_FONT_TYPE_MISMATCH = 25 Global Const $CAIRO_STATUS_USER_FONT_IMMUTABLE = 26 Global Const $CAIRO_STATUS_USER_FONT_ERROR = 27 Global Const $CAIRO_STATUS_NEGATIVE_COUNT = 28 Global Const $CAIRO_STATUS_INVALID_CLUSTERS = 29 Global Const $CAIRO_STATUS_INVALID_SLANT = 30 Global Const $CAIRO_STATUS_INVALID_WEIGHT = 31 Global Const $CAIRO_STATUS_INVALID_SIZE = 32 Global Const $CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED = 33 Global Const $CAIRO_STATUS_DEVICE_TYPE_MISMATCH = 34 Global Const $CAIRO_STATUS_DEVICE_ERROR = 35 Global Const $CAIRO_STATUS_INVALID_MESH_CONSTRUCTION = 36 Global Const $CAIRO_STATUS_DEVICE_FINISHED = 37 Global Const $CAIRO_STATUS_LAST_STATUS = 38 ; typedef enum _cairo_format Global Const $CAIRO_FORMAT_INVALID = -1 Global Const $CAIRO_FORMAT_ARGB32 = 0 Global Const $CAIRO_FORMAT_RGB24 = 1 Global Const $CAIRO_FORMAT_A8 = 2 Global Const $CAIRO_FORMAT_A1 = 3 Global Const $CAIRO_FORMAT_RGB16_565 = 4 Global Const $CAIRO_FORMAT_RGB30 = 5 ; Check libraries. $aList = _FileListToArray ( @ScriptDir, '*.dll', 1, 0 ) For $i = 1 To UBound ( $aList ) -1 If _GetBinaryType ( @ScriptDir & '\' & $aList[$i] ) <> 'i386' Then Exit MsgBox ( 262144+16, 'Error', $aList[$i] & ' is not 32bit !', 5 ) ;~ ConsoleWrite ( $aList[$i] & @TAB & 'Version ' & FileGetVersion ( $aList[$i] ) & @Crlf ) Next #Region ------ Global Variables ------------------------------ FileChangeDir ( @ScriptDir & '\Libraries' ) Global $h_RsvgDll = DllOpen ( @ScriptDir & '\Libraries\librsvg-2-2.dll' ) Global $h_CairoDll = DllOpen ( @ScriptDir & '\Libraries\libcairo-2.dll' ) Global $sPngFilePath = @DesktopDir & '\' & @HOUR & @MIN & @SEC & @MSEC & '.png' Global $sSvgFilePath, $hRsvg, $pCairoSurface, $pCr #EndRegion --- Global Variables ------------------------------ FileChangeDir ( @ScriptDir & '\SVG files' ) $sSvgFilePath = FileOpenDialog ( 'Select a Shape', @WorkingDir, 'Vector Graphic (*.svg)', 1+2, '' ) If @error Then Exit ; Open the SVG image file $hRsvg = _Rsvg_handle_new_from_file ( $sSvgFilePath ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $hRsvg : ' & $hRsvg & @Crlf ) ; Get dimensions $aSize = _Rsvg_handle_get_dimensions ( $hRsvg ) If Not @error Then ConsoleWrite ( '> Width : ' & $aSize[0] & ', Height : ' & $aSize[1] & @Crlf ) ; Create a Surface into which we render the SVG drawing $pCairoSurface = _Cairo_image_surface_create ( $CAIRO_FORMAT_ARGB32, $aSize[0], $aSize[1] ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $pCairoSurface : ' & $pCairoSurface & @Crlf ) ; Create a new Cairo renderer $pCr = _Cairo_create ( $pCairoSurface ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $pCr : ' & $pCr & @Crlf ) ConsoleWrite ( 'Cairo status after _Cairo_create : ' & _Cairo_status ( $pCr ) & @Crlf ) ; Render the SVG into the Cairo buffer _Rsvg_handle_render_cairo ( $hRsvg, $pCr ) ConsoleWrite ( 'Cairo status after _Rsvg_handle_render_cairo : ' & _Cairo_status ( $pCr ) & @Crlf ) ; Save to png _Cairo_surface_write_to_png ( $pCairoSurface, $sPngFilePath ) ConsoleWrite ( 'Cairo status after _Cairo_surface_write_to_png : ' & _Cairo_status ( $pCr ) & @Crlf ) _Cairo_surface_finish ( $pCairoSurface ) ConsoleWrite ( 'Cairo status after _Cairo_surface_finish : ' & _Cairo_status ( $pCr ) & @Crlf ) _Rsvg_handle_close ( $hRsvg ) ConsoleWrite ( 'Cairo status after _Rsvg_handle_close : ' & _Cairo_status ( $pCr ) & @Crlf ) ; Display _BitmapDisplayInWindowsViewer ( $sPngFilePath ) ; Cleanup _Cairo_destroy ( $pCr ) _Cairo_surface_destroy ( $pCairoSurface ) DllClose ( $h_RsvgDll ) DllClose ( $h_CairoDll ) Exit Func _BitmapDisplayInWindowsViewer ( $sFilePath ) If Not FileExists ( $sFilePath ) Then Return SetError ( -1 ) Run ( 'rundll32 shimgvw.dll,ImageView_Fullscreen ' & $sFilePath ) EndFunc ;==> _BitmapDisplayInWindowsViewer() Func _Cairo_create ( $pCairoSurface ) Local $aRet = DllCall ( $h_CairoDll, 'ptr:cdecl', 'cairo_create', 'ptr', $pCairoSurface ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_create() Func _Cairo_destroy ( $pCr ) Local $aRet = DllCall ( $h_CairoDll, 'int:cdecl', 'cairo_destroy', 'ptr', $pCr ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_destroy() Func _Cairo_image_surface_create ( $iFormat, $iWidth, $iHeight ) Local $aRet = DllCall ( $h_CairoDll, 'ptr:cdecl', 'cairo_image_surface_create', 'int', $iFormat, 'int', $iWidth, 'int', $iHeight ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_image_surface_create() Func _Cairo_image_surface_create_for_data ( $iFormat, $iWidth, $iHeight, $iStride ) Local $tStruct = DllStructCreate ( 'byte[' & $iStride*$iHeight & ']' ) Local $aRet = DllCall ( $h_CairoDll, 'ptr:cdecl', 'cairo_image_surface_create_for_data', 'ptr', DllStructGetPtr ( $tStruct ), 'int', $iFormat, 'int', $iWidth, 'int', $iHeight, 'int', $iStride ) If @error Then Return SetError ( @error, 0, 0 ) $tStruct = 0 Return $aRet[0] EndFunc ;==> _Cairo_image_surface_create_for_data() Func _Cairo_status ( $pCr ) Local $aRet = DllCall ( $h_CairoDll, 'int:cdecl', 'cairo_status', 'ptr', $pCr ) If @error Then Return SetError ( @error, 0, 0 ) Switch $aRet[0] Case $CAIRO_STATUS_SUCCESS Return 'SUCCESS' Case $CAIRO_STATUS_NO_MEMORY Return 'NO MEMORY' Case $CAIRO_STATUS_INVALID_RESTORE Return 'INVALID RESTORE' Case $CAIRO_STATUS_INVALID_POP_GROUP Return 'INVALID POP GROUP' Case $CAIRO_STATUS_NO_CURRENT_POINT Return 'NO CURRENT POINT' Case $CAIRO_STATUS_INVALID_MATRIX Return 'INVALID MATRIX' Case $CAIRO_STATUS_INVALID_STATUS Return 'INVALID STATUS' Case $CAIRO_STATUS_NULL_POINTER Return 'NULL POINTER' Case $CAIRO_STATUS_INVALID_STRING Return 'INVALID STRING' Case $CAIRO_STATUS_INVALID_PATH_DATA Return 'INVALID PATH DATA' Case $CAIRO_STATUS_READ_ERROR Return 'READ ERROR' Case $CAIRO_STATUS_WRITE_ERROR Return 'WRITE ERROR' Case $CAIRO_STATUS_SURFACE_FINISHED Return 'SURFACE FINISHED' Case $CAIRO_STATUS_SURFACE_TYPE_MISMATCH Return 'SURFACE TYPE MISMATCH' Case $CAIRO_STATUS_PATTERN_TYPE_MISMATCH Return 'PATTERN TYPE MISMATCH' Case $CAIRO_STATUS_INVALID_CONTENT Return 'INVALID CONTENT' Case $CAIRO_STATUS_INVALID_FORMAT Return 'INVALID FORMAT' Case $CAIRO_STATUS_INVALID_VISUAL Return 'INVALID VISUAL' Case $CAIRO_STATUS_FILE_NOT_FOUND Return 'FILE NOT FOUND' Case $CAIRO_STATUS_INVALID_DASH Return 'INVALID DASH' Case $CAIRO_STATUS_INVALID_DSC_COMMENT Return 'INVALID DSC COMMENT' Case $CAIRO_STATUS_INVALID_INDEX Return 'INVALID INDEX' Case $CAIRO_STATUS_CLIP_NOT_REPRESENTABLE Return 'CLIP NOT REPRESENTABLE' Case $CAIRO_STATUS_TEMP_FILE_ERROR Return 'TEMP FILE ERROR' Case $CAIRO_STATUS_INVALID_STRIDE Return 'INVALID STRIDE' Case $CAIRO_STATUS_FONT_TYPE_MISMATCH Return 'FONT TYPE MISMATCH' Case $CAIRO_STATUS_USER_FONT_IMMUTABLE Return 'USER FONT IMMUTABLE' Case $CAIRO_STATUS_USER_FONT_ERROR Return 'USER FONT ERROR' Case $CAIRO_STATUS_NEGATIVE_COUNT Return 'NEGATIVE COUNT' Case $CAIRO_STATUS_INVALID_CLUSTERS Return 'INVALID CLUSTERS' Case $CAIRO_STATUS_INVALID_SLANT Return 'INVALID SLANT' Case $CAIRO_STATUS_INVALID_WEIGHT Return 'INVALID WEIGHT' Case $CAIRO_STATUS_INVALID_SIZE Return 'INVALID SIZE' Case $CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED Return 'USER FONT NOT IMPLEMENTED' Case $CAIRO_STATUS_DEVICE_TYPE_MISMATCH Return 'DEVICE TYPE MISMATCH' Case $CAIRO_STATUS_DEVICE_ERROR Return 'DEVICE ERROR' Case $CAIRO_STATUS_INVALID_MESH_CONSTRUCTION Return 'INVALID MESH CONSTRUCTION' Case $CAIRO_STATUS_DEVICE_FINISHED Return 'DEVICE FINISHED' Case $CAIRO_STATUS_LAST_STATUS Return 'LAST STATUS' Case Else Return 'UNKNOW ERROR' EndSwitch EndFunc ;==> _Cairo_status() Func _Cairo_status_to_string() Local $aRet = DllCall ( $h_CairoDll, 'str:cdecl', 'cairo_status_to_string' ) If @error Then Return SetError ( @error, 0, 0 ) ;~ If $aRet[0] = '<unknown error status>' Then Return '' Return $aRet[0] EndFunc ;==> _Cairo_status_to_string() Func _Cairo_surface_destroy ( $pCairoSurface ) Local $aRet = DllCall ( $h_CairoDll, 'int:cdecl', 'cairo_surface_destroy', 'ptr', $pCairoSurface ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_surface_destroy() Func _Cairo_surface_finish ( $pCairoSurface ) Local $aRet = DllCall ( $h_CairoDll, 'int:cdecl', 'cairo_surface_finish', 'ptr', $pCairoSurface ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_surface_finish() Func _Cairo_surface_write_to_png ( $pCairoSurface, $sFilePath ) Local $aRet = DllCall ( $h_CairoDll, 'int:cdecl', 'cairo_surface_write_to_png', 'ptr', $pCairoSurface, 'str', $sFilePath ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Cairo_surface_write_to_png() Func _GetBinaryType ( $sFilePath ) ; by Dougiefresh Local $hFile = FileOpen ( $sFilePath, 16 ) If $hFile = -1 Then Return SetError ( -1, 0, 'Invalid' ) If BinaryToString ( FileRead ( $hFile, 2 ) ) = 'MZ' Then FileSetPos ( $hFile, 60, 0 ) FileSetPos ( $hFile, Int ( FileRead ( $hFile, 4 ) ) +4, 0 ) Local $sFileRead = FileRead ( $hFile, 2 ) FileClose ( $hFile ) If $sFileRead = '0x6486' Then Return 'AMD64' If $sFileRead = '0x4c01' Then Return 'i386' If $sFileRead = '0x0002' Then Return 'IA64' EndIf FileClose ( $hFile ) Return 'Unknown' EndFunc ;==> _GetBinaryType() Func _Rsvg_handle_close ( $hRsvg ) Local $iError = 0 Local $aRet = DllCall ( $h_RsvgDll, 'ptr:cdecl', 'rsvg_handle_close', 'ptr', $hRsvg, 'int', $iError ) If @error Then Return SetError ( @error, 0, 0 ) If $iError Then Return SetError ( $iError, 0, 0 ) Return $aRet[0] EndFunc ;==> _Rsvg_handle_close() Func _Rsvg_handle_get_dimensions ( $hRsvg ) Local $aSize[4], $tRsvgDimensionData = DllStructCreate ( 'int width;int height;double em;double ex' ) Local $aRet = DllCall ( $h_RsvgDll, 'int:cdecl', 'rsvg_handle_get_dimensions', 'ptr', $hRsvg, 'ptr', DllStructGetPtr ( $tRsvgDimensionData ) ) If @error Then Return SetError ( @error, 0, 0 ) $aSize[0] = $tRsvgDimensionData.width $aSize[1] = $tRsvgDimensionData.height $aSize[2] = $tRsvgDimensionData.em $aSize[3] = $tRsvgDimensionData.ex $tRsvgDimensionData = 0 Return $aSize EndFunc ;==> _Rsvg_handle_get_dimensions() Func _Rsvg_handle_new_from_file ( $sSvgFile ) If Not FileExists ( $sSvgFile ) Then Return SetError ( -1, 0, 0 ) Local $iError = 0 Local $aRet = DllCall ( $h_RsvgDll, 'ptr:cdecl', 'rsvg_handle_new_from_file', 'str', FileGetShortName ( $sSvgFile ), 'int', $iError ) If @error Then Return SetError ( @error, 0, 0 ) If $iError Then Return SetError ( $iError, 0, 0 ) Return $aRet[0] EndFunc ;==> _Rsvg_handle_new_from_file() Func _Rsvg_handle_render_cairo ( $hRsvg, $pCr ) Local $aRet = DllCall ( $h_RsvgDll, 'bool:cdecl', 'rsvg_handle_render_cairo', 'ptr', $hRsvg, 'ptr', $pCr ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] ; Returns TRUE if drawing succeeded. EndFunc ;==> _Rsvg_handle_render_cairo() Func _Rsvg_init() ; deprecated since version 2.36 and should not be used in newly-written code. Local $aRet = DllCall ( $h_RsvgDll, 'int:cdecl', 'rsvg_init' ) If @error Then Return SetError ( @error, 0, 0 ) Return $aRet[0] EndFunc ;==> _Rsvg_init() Script and files are available in the downloads Section
       
    • wakillon
      By wakillon
      Convert SVG file to PNG using Cairo and rsvg libraries
    • DrAhmed
      By DrAhmed
      Hey
      I'm not really familliar with GDI Plus , I am looking for how tocConvert a bitmap image to JPG in memory without saving it to disk
      Because I want to send it later via TCP directly without using FileRead and other stuff ..
      The only function I found is below but it saves the image in disk
      Func SaveBmp2JPG($Bitmap, $sSave = "Converted.jpg", $iQuality = 20) ;coded by UEZ 2013 If Not IsPtr($Bitmap) Then $Bitmap = _GDIPlus_ImageLoadFromFile($sFile) If @error Then Return SetError(1, 0, 0) EndIf Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG") Local $tParams = _GDIPlus_ParamInit(1) Local $tData = DllStructCreate("int Quality") Local $pData = DllStructGetPtr($tData) Local $pParams = DllStructGetPtr($tParams) DllStructSetData($tData, "Quality", $iQuality) _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData) If Not _GDIPlus_ImageSaveToFileEx($Bitmap, $sSave, $sCLSID, $pParams) Then Return SetError(2, 0, 0) Return True EndFunc what my code now looks like :
      #include <ScreenCapture.au3> #include <guiconstantsex.au3> #include <gdiplus.au3> #include <memory.au3> #include <staticconstants.au3> Global $ghGDIPDLL = $__g_hGDIPDll Example() Func Example() _GDIPlus_Startup() Local $hHBmp = _ScreenCapture_Capture("") ;create a GDI bitmap by capturing my desktop Local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBmp) ;convert GDI bitmap to GDI+ bitmap _WinAPI_DeleteObject($hHBmp) ;release GDI bitmap resource because not needed anymore Local $hBitmap_Scaled2 = _GDIPlus_ImageResize($hBitmap, @DesktopWidth / 1.5, @DesktopHeight / 1.5) ;resize image SaveBmp2JPG($hBitmap_Scaled2,'Test.jpg',99) ; ===> Saving to disk ?? _GDIPlus_Shutdown() EndFunc ;==>Example Func SaveBmp2JPG($Bitmap, $sSave , $iQuality) ;coded by UEZ 2013 If Not IsPtr($Bitmap) Then $Bitmap = _GDIPlus_ImageLoadFromFile($sFile) If @error Then Return SetError(1, 0, 0) EndIf Local $sCLSID = _GDIPlus_EncodersGetCLSID("JPG") Local $tParams = _GDIPlus_ParamInit(1) Local $tData = DllStructCreate("int Quality") Local $pData = DllStructGetPtr($tData) Local $pParams = DllStructGetPtr($tParams) DllStructSetData($tData, "Quality", $iQuality) _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData) If Not _GDIPlus_ImageSaveToFileEx($Bitmap, $sSave, $sCLSID, $pParams) Then Return SetError(2, 0, 0) Return True EndFunc