Jump to content
UEZ

Inline Assembler Snippets

Recommended Posts

UEZ

I will try to maintain this topic by inserting links in the first post (here) to the snippets to keep track of the snippets.

My examples are using AndyG's AssembleIt UDF / AssembleIt2 UDF which is here:

AssembleIt.au3 (needs FASM.au3 -> see link below (ward))

;AssembleIt by Andy @ www.autoit.de

;BIG thx to progandy for the "Buttons" in the debugger
;see examples how to call _AssembleIt()

;Listview changed in Debugger 12.05.2012
;SSE-Register are nor in the right direction (bitwise from right to left) 20.02.2012
;Debugger included 07.04.2011
;modified by UEZ 05.03.2015

#include-once
#include "FASM.au3"
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
;#include <GUIListBox.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <array.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>

;Opt("MustDeclareVars", 1)


If @AutoItX64 Then
    MsgBox(0, "_AssembleIt Error", "Sorry, 64Bit is not supported. Program will be terminated!")
    Exit
EndIf

Global $_ASSEMBLEIT_FLAG = 1
Global $Fasm = FasmInit()
If @error Then
    MsgBox(0, "_AssembleIt Error", "Not able to FasmInit! Program will be terminated!")
    Exit
EndIf

; #FUNCTION# ======================================================================================
; Name ..........: _AssembleIt()
; Description ...: "Wrapper" for the FASM.au3 by Ward
; Syntax ........: _AssembleIt($Returntype, $sFunc, $Type1 = "type", $Param1 = 0, $Type2 = "type", $Param2 = 0....
; Parameters ....: $Returntype          - Data type returned by the assembled program
;                  $sFunc               - Name of the function, in which the Assemblercode is contained
;                  $sType1              - DataType of Parameter1
;                  $sParam1             - Parameter1
;                  $sType2              - DataType of Parameter2
;                  $sParam2             - Parameter2.....and so on, you can pass up to 20 parameters
;
; Return values .: Success    depends on $Returntype    @error=0
;                  Failure    @error = -2   FasmReset has failed
;                  Failure    @error = -3   Error in Assemblercode detected by Fasm
;                  Failure    @error = -4   Function with Assemblercode doesn´t exist (i.e. wrong functionname)
;                  Failure    @error = -5   Error while executing MemoryFuncCall
;
; Author ........: Andy @ www.autoit.de
; Modified ......:
; Remarks .......: _AssembleIt() instructs MemoryFuncCall with cdecl-convention, so only a RET is necessary at the end of the ASM-code
;                  If $_ASSEMBLEIT_FLAG = 0 is set before calling AssembleIt(), an AutoIt-code to call the opcodes without the need of FASM.au3 is created
; Related .......: Fasm.au3 by Ward  http://www.autoitscript.com/forum/index.php?showtopic=111613&view=findpost&p=782727
; Link ..........:
; Example .......:
; =================================================================================================

Func _AssembleIt($Returntype, $sFunc, $Type1 = "int", $Param1 = 0, $Type2 = "int", $Param2 = 0, $Type3 = "int", $Param3 = 0, $Type4 = "int", $Param4 = 0, $Type5 = "", $Param5 = 0, $Type6 = "", $Param6 = 0, $Type7 = "", $Param7 = 0, $Type8 = "", $Param8 = 0, $Type9 = "", $Param9 = 0, $Type10 = "", $Param10 = 0, $Type11 = "", $Param11 = 0, $Type12 = "", $Param12 = 0, $Type13 = "", $Param13 = 0, $Type14 = "", $Param14 = 0, $Type15 = "", $Param15 = 0, $Type16 = "", $Param16 = 0, $Type17 = "", $Param17 = 0, $Type18 = "", $Param18 = 0, $Type19 = "", $Param19 = 0, $Type20 = "", $Param20 = 0) ;assembles the code
    FasmReset($Fasm)
    If @error Then
        MsgBox(0, "_AssembleIt Error", "Error in Function FasmReset()")
        Return SetError(-2, 0, "ERROR -2")
    EndIf
    If $sFunc <> "" Then Call($sFunc) ;extract Assemblercode from function $sFunc()
    If @error = 0xDEAD Then
        MsgBox(0, "_AssembleIt Error", "The called function " & $sFunc & " doesn´t exist or contains errors!")
        Return SetError(-4, 0, "ERROR -4")
    EndIf
    Local $bytecode = FasmGetBinary($Fasm) ;assemble ASM-code to opcodes
    If @extended Then ;shows errors during assembling
        Local $Error = FasmGetLastError() ;gets errors
        MsgBox(0, "FASM-ERROR in function " & $sFunc & "()", "Error Code:" & $Error[0] & _
                @CRLF & "Error Message:" & $Error[1] & @CRLF & "Error Line:" & $Error[2] & @CRLF)
        Return SetError(-3, 0, "ERROR -3")
    Else ;no errors during assembling the code
        FileDelete("asm_test.bin") ;creates binary file with opcodes, in the case that someone wants to use an external debugger^^
        FileWrite("asm_test.bin", BinaryToString(String(FasmGetBinary($Fasm))))
        ;   ConsoleWrite($bytecode & @CRLF)                        ;opcodes, can easily be copied and inserted somewhere....
        If $_ASSEMBLEIT_FLAG = 0 Then ;if less then 4 parameters, CallWindowProcW is possible
            If @NumParams > 10 Then ;only a maximum of 4 parameters in CallWindowProcW posssible
                MsgBox(0, "_AssembleIt Error", "The $_ASSEMBLEIT_FLAG is set to 0, but more than 4 Parameters are used in the Function " & $sFunc & @CRLF & _
                        "Please reduce the number of parameters to a maximum of 4 if you want an AutoItscript with a CallWindowProcW-call!")
                Exit
            Else ;all is ready to create an AutoItscript which can execute the opcodes without FASM.au3
                Local $scriptstring = 'Local $iRet, $tCodeBuffer = DllStructCreate("byte ASM[' & StringLen($bytecode) / 2 - 1 & ']") ;reserve memory for ASM opcodes' & @CRLF & _
                        '$tCodeBuffer.ASM = "' & $bytecode & '" ;write opcodes into memory (struct)' & @CRLF
                $scriptstring &= '$iRet = DllCall("user32.dll", "' & $Returntype & '", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer)'
                Local $n = 1
                For $i = 3 To 9 Step 2 ;CallWindowProcW must be called with 4 parameters...
                    $scriptstring &= ', "' & Eval("Type" & $n) & '", '
                    If Eval("Param" & $n) <> 0 Or Eval("Param" & $n) <> "" Then
                        $scriptstring &= "Param" & $n
                    Else
                        $scriptstring &= '0'
                    EndIf
                    $n += 1
                Next
                $scriptstring &= ')' & @CRLF
                ClipPut($scriptstring) ;puts the AutoItcode into Clipboard
                MsgBox(0, "_AssembleIt() Info!", "The following code was created and written into the Clipboard:" & _
                        @CRLF & @CRLF & $scriptstring & @CRLF & @CRLF & @CRLF & _
                        "This code can now be inserted into an AutoIt-Script, please adapt the parameters in the Dll-call to the used AutoIt-variables!" & _
                        @CRLF & "The Program will be terminated!")
                FasmExit($Fasm)
                Exit
            EndIf
        ElseIf $_ASSEMBLEIT_FLAG = 2 Then
            $scriptstring = '$tCodeBuffer.ASM = "' & $bytecode & '" ;write opcodes into memory (struct) / length: ' & StringLen($bytecode) / 2 - 1
            ClipPut($scriptstring)
            MsgBox(0, "_AssembleIt() Info!", "ONLY the byte code line was created and written into the Clipboard:" & _
                    @CRLF & @CRLF & $scriptstring)
            FasmExit($Fasm)
            Exit
        EndIf

        ;MemoryFuncCall
        Local $scriptstring = 'MemoryFuncCall("' & $Returntype & ':cdecl",' & FasmGetFuncPtr($Fasm) ;cdecl instructs the function to clean the stack, only a simple RET at the end is necessary
        ;Local $scriptstring = 'MemoryFuncCall("' & $Returntype & '",' & FasmGetFuncPtr($Fasm) ;if "compatible" mode to existing programs is required, please commend out this line
        Local $n = 1
        For $i = 3 To @NumParams Step 2 ;all parameters
            $scriptstring &= ',"' & Eval("Type" & $n) & '", $Param' & $n
            $n += 1
        Next
        $scriptstring &= ')'
        Local $a = Execute($scriptstring) ;do the MemoryFuncCall, execute the opcodes
        If @error Then
            MsgBox(0, "_AssembleIt Error", "Error executing the MemoryFuncCall!")
            Return SetError(-5, 0, "ERROR -5")
        EndIf
        ;_arraydisplay($a)
        Return SetError(0, 0, $a[0])
    EndIf
EndFunc   ;==>_AssembleIt

Func _($str) ;short version of Fasmadd
    Fasmadd($Fasm, $str)
EndFunc   ;==>_


;debug-Fenster


Dim $_DBG_LABEL[170]

Global $hwnd_weiterbutton, $_DBG_closebutton
Global $_DBG_firstcall = True, $_DBG_buttonID

Global $_DBG_GUI = GUICreate("AssembleIt Debug-Info 1.0", 670, 550, 10, 10, 0, $WS_EX_DLGMODALFRAME)
Global $_DBG_winpos = WinGetPos($_DBG_GUI)
Global $_DBG_Window_posold_x = $_DBG_winpos[0] ;fensterposition merken
Global $_DBG_Window_posold_y = $_DBG_winpos[1] + $_DBG_winpos[3]

;$WM_MOVING = 0x0216
Global $_DBG_BUTTONSGUI = -1
GUIRegisterMsg(0x0216, "_DBG_WM_MOVING") ; $WM_MOVING
GUIRegisterMsg(0x0232, "_DBG_WM_MOVING") ; $WM_EXITSIZEMOVE
GUIRegisterMsg($WM_MOVE, "_DBG_WM_MOVING")

;~ GUIRegisterMsg($WM_MOVING, "_DBG_WM_MOVING")
;~ GUIRegisterMsg($WM_SIZE, "_DBG_WM_SIZE")
;GUIRegisterMsg($WM_COMMAND, "_DBG_WM_COMMAND")


$_DBG_LABEL[18] = GUICtrlCreateLabel("FPU-Register showed as DOUBLE!", 10, 175, 290, 16)
GUICtrlSetFont(-1, -1, -1, 4)
;GUICtrlSetResizing ( -1, 32+ 2 )
$_DBG_LABEL[17] = GUICtrlCreateLabel("EFlags", 580, 16, 102, 16)
GUICtrlSetFont(-1, -1, -1, 4)

$_DBG_LABEL[38] = GUICtrlCreateLabel("CF =", 580, 32 + 16 * 0, 30, 16);CF
$_DBG_LABEL[59] = GUICtrlCreateLabel("DF =", 580, 32 + 16 * 1, 30, 16)
$_DBG_LABEL[39] = GUICtrlCreateLabel("PF =", 580, 32 + 16 * 2, 30, 16)
$_DBG_LABEL[68] = GUICtrlCreateLabel("OF =", 580, 32 + 16 * 3, 30, 16)
$_DBG_LABEL[48] = GUICtrlCreateLabel("AF =", 580, 32 + 16 * 4, 30, 16)
$_DBG_LABEL[49] = GUICtrlCreateLabel("ZF =", 580, 32 + 16 * 6, 30, 16)
$_DBG_LABEL[58] = GUICtrlCreateLabel("SF =", 580, 32 + 16 * 7, 30, 16)


For $i = 0 To 7
    $_DBG_LABEL[10 + $i] = GUICtrlCreateLabel("ST" & $i & " = ", 10 + Mod($i, 2) * 180, 195 + 16 * Int($i / 2), 30, 16)
    $_DBG_LABEL[80 + $i] = GUICtrlCreateLabel("", 50 + Mod($i, 2) * 180, 195 + 16 * Int($i / 2), 100, 16)
    $_DBG_LABEL[30 + $i] = GUICtrlCreateLabel("XMM" & $i & " = ", 10, 400 + 15 * $i, 40, 16);XMM0-XMM7
    $_DBG_LABEL[90 + $i] = GUICtrlCreateLabel("", 60, 400 + 15 * $i, 300, 16);XMM
    $_DBG_LABEL[40 + $i] = GUICtrlCreateLabel("", 60, 32 + 16 * $i, 400, 16);hex
    $_DBG_LABEL[50 + $i] = GUICtrlCreateLabel("", 150, 32 + 16 * $i, 400, 16);int
    $_DBG_LABEL[60 + $i] = GUICtrlCreateLabel("", 230, 32 + 16 * $i, 300, 16);float
    $_DBG_LABEL[70 + $i] = GUICtrlCreateLabel("", 320, 32 + 16 * $i, 240, 16);bin
    $_DBG_LABEL[100 + $i] = GUICtrlCreateLabel("", 610, 32 + 16 * $i, 40, 16) ;eflags
    $_DBG_LABEL[110 + $i] = GUICtrlCreateLabel("", 280, 400 + 15 * $i, 250, 16);XMM-2xdouble
    $_DBG_LABEL[120 + $i] = GUICtrlCreateLabel("", 440, 400 + 15 * $i, 250, 16);XMM-4xfloat
Next
GUICtrlSetPos($_DBG_LABEL[105], 590, 32 + 16 * 5, 1, 1) ;platz machen für ungenutztes label

$_DBG_LABEL[20] = GUICtrlCreateLabel("FPU-Flags", 10, 270, 55, 16)
GUICtrlSetFont(-1, -1, -1, 4)
$_DBG_LABEL[21] = GUICtrlCreateLabel("CO=            C1=            C2=", 520, 200, 135, 20)

$_DBG_LABEL[25] = GUICtrlCreateLabel("Stack", 370, 175, 130, 20)
GUICtrlSetFont(-1, -1, -1, 4)
$_DBG_LABEL[26] = GUICtrlCreateLabel("HEX", 450, 175, 130, 20)
GUICtrlSetFont(-1, -1, -1, 4)
$_DBG_LABEL[27] = GUICtrlCreateLabel("INT", 550, 175, 130, 20)
GUICtrlSetFont(-1, -1, -1, 4)
For $i = 40 To 0 Step -4
    $_DBG_LABEL[129 + $i / 4] = GUICtrlCreateLabel(StringFormat("[esp %+02.2d]", 40 - $i), 370, 195 + 16 * $i / 4, 50, 16);129-140
    $_DBG_LABEL[141 + $i / 4] = GUICtrlCreateLabel("", 450, 195 + 16 * $i / 4, 100, 16);141-152
    $_DBG_LABEL[155 + $i / 4] = GUICtrlCreateLabel("", 550, 195 + 16 * $i / 4, 100, 16);155-161
Next

$_DBG_LABEL[108] = GUICtrlCreateLabel("SSE-Register            HEX", 10, 375, 150, 20)
GUICtrlSetFont(-1, -1, -1, 4)
$_DBG_LABEL[109] = GUICtrlCreateLabel("2x Double", 280, 375, 100, 20)
GUICtrlSetFont(-1, -1, -1, 4)
$_DBG_LABEL[118] = GUICtrlCreateLabel("4x Float", 450, 375, 100, 20)
GUICtrlSetFont(-1, -1, -1, 4)


;GUIRegisterMsg($WM_COMMAND, "MyWM_COMMAND")

Global $listviewitem_reg32[8]
Global $reg_32[8] = ["EAX", "EBX", "ECX", "EDX", "ESI", "EDI", "ESP", "EBP"]

Global $Listview_reg32 = GUICtrlCreateListView("REG32|HEX|INT|FLOAT|BIN [BIT31....Bit0]", 10, 2, 560, 172, BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_NOSORTHEADER));,$GUI_BKCOLOR_LV_ALTERNATE )
GUICtrlSetFont(-1, 8.5, -1, -1)
GUICtrlSetBkColor($Listview_reg32, 0xF0f0f0) ; Grau
GUICtrlSetBkColor($Listview_reg32, $GUI_BKCOLOR_LV_ALTERNATE)

_GUICtrlListView_BeginUpdate($Listview_reg32)
For $i = 0 To 7
    $listviewitem_reg32[$i] = GUICtrlCreateListViewItem($reg_32[$i] & "|0xDDDDDDDD|88888888888|9.99999999E999|00000000 00000000 00000000 00000000 ", $Listview_reg32)
    GUICtrlSetBkColor($listviewitem_reg32[$i], 0xFFFFFF) ; weiss
Next
For $i = 0 To 4
    _GUICtrlListView_SetColumnWidth($Listview_reg32, $i, $LVSCW_AUTOSIZE_USEHEADER);$LVSCW_AUTOSIZE)
Next
_GUICtrlListView_EndUpdate($Listview_reg32)


;thx progandy für den "button" !
Global Const $tagDLGTEMPLATE = "align 2                        ;DWORD style; DWORD dwExtendedStyle; WORD  cdit; short x; short y; short cx; short cy;"
Global Const $tagDLGITEMTEMPLATE = "align 2                    ;DWORD style; DWORD dwExtendedStyle; short x; short y; short cx; short cy; WORD  id;"



Global $_DBG_noshowflag = 0
Global $dlgproc = DllCallbackRegister("_DlgProc", "bool", "hwnd;uint;wparam;lparam")
Global $_DBG_ = DllCallbackRegister("_DBG_MSGBOX", "dword", "dword;dword;dword;dword;dword;dword;dword;dword;dword")
;speicher reservieren für datenbereich
Global $ptr_dbgmem = Number(_MemGlobalAlloc(600, 0)) ;512 byte + 8 byte weil nur 8byte-align

Local $mod = Mod($ptr_dbgmem, 16) ;benötigt wird für SSE-Register abe 16-byte-align
If $mod <> 0 Then
    $ptr_dbgmem += (16 - $mod) ;16 byte align
EndIf


Global $_dbg_string[100], $_DBG_nr = 0, $_DBG_command[2]
Global $struct_FXSAVE = DllStructCreate("byte[512]", $ptr_dbgmem);platz für Daten aus FXSAVE
Global $struct_STACK = DllStructCreate("dword[11]", $ptr_dbgmem + 520);platz für Daten aus STACK [esp-20] bis [esp+20]
Global $ptr_STACK = DllStructGetPtr($struct_STACK)
;http://siyobik.info/index.php?module=x86&id=128
;ob ich diese flags noch einbaue, weiss ich nicht
Local $struct = DllStructCreate("" & _
        "word FCW;" & _                                        ;FPU control word  0+1
        "word FSW;" & _                                        ;FPU statusword    2+3
        "byte FTW;" & _                                        ;FPU ag word    4
        "byte;" & _                                            ;reserved    5
        "word FOP;" & _                                        ;FPU opcode    6+7
        "dword FIP;" & _                                       ;FPU instruction pointer 8-11
        "word CS;" & _                                         ;        12-13
        "word ;" & _                                           ;reserved    14-15
        "dword FDP;" & _                                       ; 16-19
        "word DS;" & _                                         ;    20+21
        "word ;" & _                                           ;reserved    22-23
        "dword MXCSR;" & _                                     ;MXCSR    24-27
        "dword MXCSR_MASK;" & _                                ;MXCSR_MASK    28-31
        "byte[10] ST0;") ;ST0    32-41


Global $struct_double = DllStructCreate("double[8]") ;platz für 8 doubles der FPU register st0-st7
Global $struct_128SSE = DllStructCreate("byte[128]", Ptr($ptr_dbgmem + 160));platz für 16 byte SSE
Global $struct_EFLAGS = DllStructCreate("dword EFLAGS", Ptr($ptr_dbgmem + 512));platz 32 bit eflags
Global $ptr_SSE = DllStructGetPtr($struct_128SSE) ;pointer
Global $ptr_EFLAGS = DllStructGetPtr($struct_EFLAGS)
Global $struct_SSE64x2int = DllStructCreate("uint64[16]", $ptr_SSE) ;platz für 2x 64byte SSE
Global $struct_SSE32x4int = DllStructCreate("uint[32]", $ptr_SSE) ;platz für 4x 32byte SSE
Global $struct_SSE16x8int = DllStructCreate("word[64]", $ptr_SSE) ;platz für 8x 16byte SSE
Global $struct_SSE64x2dbl = DllStructCreate("double[16]", $ptr_SSE) ;platz für 2x 64byte DOUBLE SSE
Global $struct_SSE32x4flt = DllStructCreate("float[32]", $ptr_SSE) ;platz für 4x 32byte FLOAT SSE



;debug-funktion, aus dem asmcode per call an die callback-adresse aufgerufen
Func _DBG_MSGBOX($anz, $edi, $esi, $ebp, $esp, $ebx, $edx, $ecx, $eax);aus asm übergebene register
    If $_DBG_noshowflag = 1 Then Return 0
    GUISetState(@SW_SHOW, $_DBG_GUI)
    _WinAPI_UpdateWindow($_DBG_GUI)
    ;_DBG_WM_SIZE($_DBG_GUI,0,0,0)


    Dim $reg[8] = [$eax, $ebx, $ecx, $edx, $esi, $edi, $esp, $ebp]
    _GUICtrlListView_BeginUpdate($Listview_reg32)

    For $i = 0 To 7 ;fenster mit Werten füllen
        GUICtrlSetData($listviewitem_reg32[$i], "|" & Ptr($reg[$i]) & "|" & _
                String($reg[$i]) & "|" & _
                StringFormat(" %2.6G", int2float($reg[$i])) & "|" & int2bin($reg[$i])) ;hex
        GUICtrlSetData($_DBG_LABEL[$i + 80], DllStructGetData($struct_double, 1, $i + 1));FPU st0-st7
        ;SSE
        $struct_temp = DllStructCreate("byte[16]", $ptr_SSE + 16 * $i)
        $struct = DllStructCreate("byte[16]")
        For $z = 1 To 16
            DllStructSetData($struct, 1, DllStructGetData($struct_temp, 1, 17 - $z), $z)
        Next

        GUICtrlSetData($_DBG_LABEL[$i + 90], DllStructGetData($struct, 1))



        GUICtrlSetData($_DBG_LABEL[$i + 100], BitAND(2 ^ $i, DllStructGetData($struct_EFLAGS, 1)) / (2 ^ $i));eflags

        $struct = DllStructCreate("double[2]", $ptr_SSE + 16 * $i); 2x 64byte DOUBLE SSE
        GUICtrlSetData($_DBG_LABEL[$i + 110], StringFormat("%6s    %6s", DllStructGetData($struct, 1, 2), DllStructGetData($struct, 1, 1)))
        $struct = DllStructCreate("float[4]", $ptr_SSE + 16 * $i); 4x 32byte FLOAT SSE
        GUICtrlSetData($_DBG_LABEL[$i + 120], StringFormat("%10.5f  %10.5f  %10.5f  %10.5f", DllStructGetData($struct, 1, 4), DllStructGetData($struct, 1, 3), DllStructGetData($struct, 1, 2), DllStructGetData($struct, 1, 1)))
    Next
    GUICtrlSetData($_DBG_LABEL[101], BitAND(2 ^ 10, DllStructGetData($struct_EFLAGS, 1)) / (2 ^ 10));eflags DF
    GUICtrlSetData($_DBG_LABEL[103], BitAND(2 ^ 11, DllStructGetData($struct_EFLAGS, 1)) / (2 ^ 11));eflags OF
    For $i = 0 To 10 ;stack
        GUICtrlSetData($_DBG_LABEL[141 + $i], Ptr(DllStructGetData($struct_STACK, 1, $i + 1)));stack hex
        GUICtrlSetData($_DBG_LABEL[155 + $i], Int(DllStructGetData($struct_STACK, 1, $i + 1)));stack int
    Next
    _GUICtrlListView_EndUpdate($Listview_reg32)

    If $anz = 0 Or Execute($_dbg_string[$anz]) Then
        Switch __GET_MSGBOX_BUTTON()
            Case 0, 1
            Case 2
                $_DBG_noshowflag = True
            Case 3
                DllCall("kernel32.dll", "none", "ExitProcess", "int", 0xDEADBEEF)
        EndSwitch
    EndIf
    Return 0
EndFunc   ;==>_DBG_MSGBOX

Func __GET_MSGBOX_BUTTON()
    Local Static $tDLG, $aOldPos[4] = [0, 0, -1, -1]
    Local $pos_DBB_Window = WinGetPos($_DBG_GUI) ;Positionsdaten der GUI holen
    If $aOldPos[0] <> $pos_DBB_Window[0] Or $aOldPos[1] <> $pos_DBB_Window[1] Or $aOldPos[2] <> $pos_DBB_Window[2] Or $aOldPos[2] <> $pos_DBB_Window[2] Then
        $aOldPos = $pos_DBB_Window
        Local $x = Int($pos_DBB_Window[0] / 2)
        Local $y = Int(($pos_DBB_Window[1] + $pos_DBB_Window[3]) / 2)

        ;es folgen die Daten für den "...NEXT"-Button, der muss ein modales Fenster sein, wer da eine andere Idee hat, bitte melden
        Local $w = Int($pos_DBB_Window[2] / 2) ;breite Button
        Local $h = 30 ;höhe Button
        Local $bTitle = StringToBinary("Next....", 2) ;text Button
        Local $bXY = BinaryMid(Binary($x), 1, 2) & BinaryMid(Binary($y), 1, 2);Buttondaten
        Local $bWH = BinaryMid(Binary($w), 1, 2) & BinaryMid(Binary($h), 1, 2)
        Local $bWhalfH = BinaryMid(Binary(Int($w / 2 - 15)), 1, 2) & BinaryMid(Binary($h), 1, 2)
        Local $bDIALOG = Binary("0x00000090400000040300") & $bXY & $bWH & Binary("0x000000000000") & Binary("0x000000500000000000000000") & $bWhalfH & Binary("0x0100FFFF8000") & $bTitle & Binary("0x0000") & Binary("0x0000")
        ;                   |Style ||ExStyl||cdit|                         |Empty "Arrays"|              |Style ||ExStyl||x ||y |                         |id||BUTTON|                       |Chr0|           |irgend welche anderen Arrays
        $x = Mod(BinaryLen($bDIALOG), 4)
        If $x Then $bDIALOG &= BinaryMid(Binary("0x000000"), 1, $x)
        $bTitle = StringToBinary("End Debugging", 2) ;text Button
        $bDIALOG &= Binary("0x0000005000000000") & BinaryMid(Int($w / 2 - 15), 1, 2) & Binary("0x0000") & $bWhalfH & Binary("0x0200FFFF8000") & $bTitle & Binary("0x0000") & Binary("0x0000")

        $x = Mod(BinaryLen($bDIALOG), 4)
        If $x Then $bDIALOG &= BinaryMid(Binary("0x000000"), 1, $x)
        $bTitle = StringToBinary("Kill", 2) ;text Button
        $bDIALOG &= Binary("0x0000005000000000") & BinaryMid(Int($w - 30), 1, 2) & Binary("0x0000") & BinaryMid(30, 1, 2) & BinaryMid($h, 1, 2) & Binary("0x0300FFFF8000") & $bTitle & Binary("0x0000") & Binary("0x0000")

        $tDLG = DllStructCreate("byte[" & BinaryLen($bDIALOG) & "]")
        DllStructSetData($tDLG, 1, $bDIALOG) ;Button-Daten in struct schreiben
    EndIf
    Local $aRet = DllCall("user32.dll", "int", "DialogBoxIndirectParamW", "ptr", 0, "ptr", DllStructGetPtr($tDLG), "hwnd", 0, "ptr", DllCallbackGetPtr($dlgproc), "lparam", 0)
    If @error Then Return 0
    Return $aRet[0]
EndFunc   ;==>__GET_MSGBOX_BUTTON


;Alle Register, Flags, Stack usw werden in einen Speicherbereich geschrieben und von dort mit
;der Funktion _DBG_MSGBOX() ausgelesen
Func _asmdbg_($_DBG_command = "") ;Register

    _("push dword[esp+40]") ;stack in memory
    _("pop dword[" & $ptr_STACK & "]")
    _("push dword[esp+36]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 4 & "]")
    _("push dword[esp+32]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 8 & "]")
    _("push dword[esp+28]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 12 & "]")
    _("push dword[esp+24]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 16 & "]")
    _("push dword[esp+20]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 20 & "]")
    _("push dword[esp+16]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 24 & "]")
    _("push dword[esp+12]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 28 & "]")
    _("push dword[esp+08]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 32 & "]")
    _("push dword[esp+04]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 36 & "]")
    _("push dword[esp+00]") ;stack in memory
    _("pop dword[" & $ptr_STACK + 40 & "]")

    _("pushfd") ;eflags sichern
    _("pop dword[" & Ptr($ptr_EFLAGS) & "]") ;eflags speichern in struct
    _("pushfd") ;eflags sichern
    _("push eax")
    _("mov eax," & $ptr_dbgmem) ;alle FPU+SSE Registerinhalte und flags sichern
    _("FXSAVE [eax]")
    _("fstp qword[" & DllStructGetPtr($struct_double) & "]") ;alle FPU-Register sichern
    _("fstp qword[" & DllStructGetPtr($struct_double) + 8 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 16 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 24 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 32 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 40 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 48 & "]")
    _("fstp qword[" & DllStructGetPtr($struct_double) + 56 & "]")
    ;  _("fwait")
    _("pop eax")
    _("pushad") ;alle Register sichern
    _("pushad") ;auf den stack für für die msgbox
    If $_DBG_command <> "" Then ;falls kein Befehl übergeben wurde
        $_DBG_nr += 1
        $_dbg_string[$_DBG_nr] = $_DBG_command
        _("push " & Ptr($_DBG_nr)) ;anzahl der
    Else
        _("push " & Ptr(0))
    EndIf
    _("call " & DllCallbackGetPtr($_DBG_)) ;in autoit-callbackroutine springen
    _("mov eax," & $ptr_dbgmem) ;alle FPU+SSE registerinhalte und flags restore
    _("FXRSTOR [eax]") ;restore alle FPU-Register
    ;  _("fwait")
    _("popad") ;alle register wieder zurücksetzen
    _("popfd") ;eflags setzen
EndFunc   ;==>_asmdbg_

Func bin2ascii($bin_string) ;string aus nullen und einsen in 8-bit-ascii text string umwandeln
    Local $step = 8 ;8-Bit ASCII Buchstaben
    Local $ascii_string = "" ;Rückgabestring
    For $f = 1 To StringLen($bin_string) Step $step ;string von Vorne nach hinten 8-bitweise durchsuchen
        Local $t = StringMid($bin_string, $f, $step) ; 8-Bit-Wort, ein ASCII-Buchstabe
        Local $bin = 0 ;startwert für
        For $i = 1 To $step ;jedes Bit suchen
            If StringMid($t, $i, 1) = "1" Then $bin += (2 ^ ($step - $i)) ;wenn Bit=1 dann binärzahl=binärzahl+2^(8-Bitposition)
        Next
        $ascii_string &= Chr($bin)
    Next
    Return $ascii_string
EndFunc   ;==>bin2ascii

Func int2bin($integer) ;32Bit in binärstring darstellen
    Local $bin_string = ""
    For $i = 31 To 0 Step -1 ;asciicode in bits
        If Mod($i + 1, 8) = 0 Then $bin_string &= " "
        If BitAND($integer, 2 ^ $i) Then
            $bin_string &= "1"
        Else
            $bin_string &= "0"
        EndIf

    Next
    Return $bin_string
EndFunc   ;==>int2bin

Func int2float($integer)
    Local $struct = DllStructCreate("int")
    Local $struct2 = DllStructCreate("float", DllStructGetPtr($struct))
    DllStructSetData($struct, 1, $integer)
    Local $ret = DllStructGetData($struct2, 1)
    $struct = 0
    $struct2 = 0
    Return $ret
EndFunc   ;==>int2float

Func _DlgProc($hwnd, $uMsg, $wParam, $lParam)
    ;thx to progandy!
    If $uMsg = $WM_INITDIALOG Then
        $_DBG_BUTTONSGUI = $hwnd
    ElseIf $uMsg = $WM_CLOSE Then
        DllCall("user32.dll", "bool", "EndDialog", "hwnd", $hwnd, "int_ptr", 0)
        Return True
    ElseIf $uMsg = $WM_COMMAND Then
        DllCall("user32.dll", "bool", "EndDialog", "hwnd", $hwnd, "int_ptr", BitAND($wParam, 0xFFFF))
        Return True
    ElseIf $uMsg = $WM_DESTROY Then
        $_DBG_BUTTONSGUI = -1
    EndIf
    Return False
EndFunc   ;==>_DlgProc

Func _DBG_WM_MOVING($hwnd, $uMsg, $wParam, $lParam)
    If $hwnd = $_DBG_GUI And IsHWnd($_DBG_BUTTONSGUI) Then
        Local $pos = WinGetPos($hwnd)
        WinMove($_DBG_BUTTONSGUI, "", $pos[0], $pos[1] + $pos[3])
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_DBG_WM_MOVING


Func _DBG_WM_SIZE($hwnd, $message, $wParam, $lParam);fenstergrösse wird verändert
    Local $posgui = WinGetPos($_DBG_GUI)
    $_DBG_Window_posold_x = $posgui[0] ;fensterposition merken
    $_DBG_Window_posold_y = $posgui[1]
    ;WinMove($hwnd_weiterbutton, "", $pos[0], $pos[1] + $pos[3], 200, 60);buttonposition anpassen
    WinMove($hwnd_weiterbutton, "", $posgui[0], $posgui[1] + $posgui[3], $posgui[2], 60);fensterposition anpassen
    WinMove($_DBG_GUI, "", $posgui[0], $posgui[1], $posgui[2], $posgui[3]);fensterposition anpassen
    _WinAPI_SetWindowPos($_DBG_buttonID, 0, 0, 0, $posgui[2], 60, 0x0020);buttonpos im fenster resze
EndFunc   ;==>_DBG_WM_SIZE

You can use also different inline assembler UDFs, e.g. Extended Flat Assembler (by Beege) or the originaly by Ward The Embedded Flat Assembler (FASM) UDF

Without the help of AndyG and Eukalyptus I wouldn't be able to create ASM code - many thanks!!!

Many thanks dudes - you rock! :thumbsup:

 

I'm a novice in assembler coding - please don't blame me.

 

Feel free to post your snippets here!

 

Categories

String

_ASM_StringLFCharCount (counts the line feeds within a string)

_ASM_StringReplaceWChar (replaces a unicode char within a string)

_StringReverse / _StringReverse2 (reverse a string coded by AndyG)

 

Graphic

_ASM_DrawRectFilled (draws a filled rectangle)

_ASM_ImageInvert (inverts (negative) an image)

_ASM_BitmapCreateBitmapWithAlpha (merges an image with an alpha blend image)

_ASM_ImageCreateNegativeMMX (inverts (negative) an image using MMX)

_ASM_DrawLineUsingGDIPlus (draws a line using the GDIPlus lib)

_ASM_BitCompareBitmapsMMX (bitwise bitmap compare)

_ASM_BitmapGetAverageColorValue / _ASM64_BitmapGetAverageColorValue.au3 (gets the average color of a bitmap)

Edited by UEZ
  • Like 3

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
UEZ

Counts the line feeds within a string:

_ASM_StringLFCharCount.au3

#include <AssembleIt.au3>

;~ $_ASSEMBLEIT_FLAG =  2  ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

Global $sString, $i

For $i = 1 To 150000
    $sString &= "I forgot that AutoIt uses UCS2 charset" & @CRLF
Next


Global $iRet, $fEnd
Global $tResult = DllStructCreate("dword AmountLF")

Global $t = TimerInit()
$iRet = _ASM_StringLFCharCount_Bin($sString)
;~ $iRet = _AssembleIt("dword", "_ASM_StringLFCharCount", "str", $sString, "ptr", DllStructGetPtr($tResult))
$fEnd = TimerDiff($t)
ConsoleWrite($iRet & " @LF chars found in " & $fEnd & " milliseconds" & @CRLF)
;~ ConsoleWrite($tResult.AmountLF & " @LF chars found in " & $fEnd & " milliseconds" & @CRLF)

Func _ASM_StringLFCharCount_Bin($sString)
    Local $tCodeBuffer = DllStructCreate("byte ASM[27]") ;reserve memory for ASM opcode
    $tCodeBuffer.ASM = "0x8B7424048B7C240831DBAC3C0074093C0A75F783C301EBF2891FC3" ;write opcodes into memory (struct) / length: 27
    Local $tResult = DllStructCreate("dword AmountLF")
    DllCall("user32.dll", "none", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "str", $sString, "ptr", DllStructGetPtr($tResult), "int", 0, "int", 0)
    Return $tResult.AmountLF
EndFunc

Func _ASM_StringLFCharCount() ;no wchar support!
    _("use32") ;32Bit!
;~     _("org " & FasmGetBasePtr($Fasm))  ;needed for assembleit debugger
    _("mov esi, dword[esp+4]") ;get start address of the string
    _("mov edi, dword[esp+8]") ;get address to save the result (struct)
    _("xor ebx, ebx") ;set ebx = 0
    _("_loop:")
        _("lodsb") ;load char from [esi] to al register as byte and increment esi by one
        _("cmp al, 0") ;is char = 0
        _("jz _end") ;if yes then jump to end mark
        _("cmp al, 0Ah") ;if not compare it with @lf char
        _("jne _loop") ;if not @lf jump to _loop mark
        _("add ebx, 1") ;if yes increase ebx by one -> ebx += 1
        _("jmp _loop") ;jump to _loop mark
    _("_end:")
;~  _ASMDBG_()
    _("mov [edi], ebx") ;write count result to struct
    _("ret")
EndFunc

 

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
UEZ

Draws a filled rectangle:

_ASM_DrawRectFilled.au3

#include <AssembleIt.au3>
#include <GDIPlus.au3>
#include <Memory.au3>

_GDIPlus_Startup()

Global Const  $iWidth = 300, $iHeight = 200

Global $fTimer = TimerInit()
Global Const $iStride = 4 * $iWidth
Global $tBitmapData = DllStructCreate("dword pixel[" & $iStride * $iHeight & "]")
Global Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iStride, DllStructGetPtr($tBitmapData))
ConsoleWrite("GDI+ preperation: " & TimerDiff($fTimer) & @CRLF)

Global $hGUI = GUICreate("ASM Test", $iWidth, $iHeight)
GUISetState()
Global $hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)


;~ $_ASSEMBLEIT_FLAG = 2   ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

;                                       0           4           8        12         16       20
Global $tRect = DllStructCreate("dword iPosX;dword iPosY;dword iW; dword iH;dword ARGB;dword iWidth;dword iBase")
$tRect.iPosX = 150
$tRect.iPosY = 100
$tRect.iW = 20
$tRect.iH = 30
$tRect.ARGB = 0xFFFF0000
$tRect.iWidth = $iWidth

Global $iRet, $tCodeBuffer = DllStructCreate("byte ASM[192]") ;reserve memory for ASM opcodes
$tCodeBuffer.ASM = "0x8B7424048B7C2408558B6F1831C08B078985A800000083ADA8000000018B47048985AC00000083ADAC000000018B47088985B00000008B470C8985B40000008B47108985B80000008B47148985BC000000E8020000005DC3505351528B9DB00000008B8DB800000031C00385AC0000000385B4000000F7A5BC0000000385B00000000385A8000000890C8683ADB00000000177D4899DB000000083ADB40000000175C55A595B58C3000000000000000000000000000000000000000000000000" ;write opcodes into memory (struct) / length: 192
If $_ASSEMBLEIT_FLAG = 0 Then ;when Assembleit
    $tRect.iBase = FasmGetBasePtr($Fasm)
Else  ;when CallWindowProcW
    $tRect.iBase = DllStructGetPtr($tCodeBuffer)
EndIf

$fTimer = TimerInit()
;~ $iRet = DllCall("user32.dll", "uint", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "ptr", DllStructGetPtr($tBitmapData), "ptr", DllStructGetPtr($tRect), "int", 0, "int", 0)
$ret = _AssembleIt("uint", "_ASM_DrawRectFilled", "ptr", DllStructGetPtr($tBitmapData), "ptr", DllStructGetPtr($tRect))
ConsoleWrite("Runtime: " & TimerDiff($fTimer)  & @CRLF)

DrawRectFilled_Manually($tBitmapData, 130, 100, 20, 30, $iWidth)

_GDIPlus_GraphicsDrawImage($hGFX, $hBitmap, 0, 0)

Do
Until GUIGetMsg() = -3

_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGFX)
_GDIPlus_Shutdown()

Func DrawRectFilled_Manually($tBitmapData, $iPosX, $iPosY, $iW, $iH, $iWidth, $iARGB = 0xFF000000)
    Local $iX, $iY
    For $iY = $iH - 1 to 0 Step - 1
        For $iX = $iW To 1 Step - 1
            $tBitmapData.Pixel(($iPosX + $iX  + ($iY + $iPosY) * $iWidth)) = $iARGB
        Next
    Next
EndFunc

Func _ASM_DrawRectFilled()
    _("use32")
;~  _("org " & FasmGetBasePtr($Fasm))
    _("mov esi, dword[esp + 4]")                ;start address of bitmap
    _("mov edi, dword[esp + 8]")                ;$tRECT struct

    _("push ebp")
    _("mov ebp, [edi+24]")

    _("xor eax, eax") ;set eax = 0
    ;save the values from $tRect
    _("mov eax, [edi]") ;iPosX
    _("mov [ebp+iPosX], eax")
    _("sub [ebp+iPosX], 1") ;iPosX -= 1
    _("mov eax, [edi + 4]") ;iPosY
    _("mov [ebp+iPosY], eax")
    _("sub [ebp+iPosY], 1") ;iPosY -= 1
    _("mov eax, [edi + 8]") ;iW
    _("mov [ebp+iW], eax")
    _("mov eax, [edi + 12]") ;iH
    _("mov [ebp+iH], eax")
    _("mov eax, [edi + 16]") ;ARGB color value
    _("mov [ebp+iARGB], eax")
    _("mov eax, [edi + 20]") ;iBase pointer
    _("mov [ebp+iWidth], eax")

    _("Call DrawRect")

    _("pop ebp")
    _("ret")

    _("DrawRect:")
        _("push eax")
        _("push ebx")
        _("push ecx")
        _("push edx")

        _("mov ebx, [ebp+iW]")
        _("mov ecx, [ebp+iARGB]")
        _("iY:")
            _("iX:")                    ;$tBitmapData.Pixel((($iPosX + $iX)  + ($iY + $iPosY) * $iWidth)) = $iARGB
            _("xor eax, eax")           ;ax = 0
            _("add eax, [ebp+iPosY]")       ;ax += iPosY
            _("add eax, [ebp+iH]")          ;ax += iH (iY)
            _("mul [ebp+iWidth]")           ;ax *= iWidth
            _("add eax, [ebp+iW]")          ;ax += iW
            _("add eax, [ebp+iPosX]")       ;ax += iPosX
            _("mov dword[esi + eax * 4], ecx")  ;write pixel to bitmap
            _("sub [ebp+iW], 1")            ;iW -= 1 (iX)
            _("ja iX")                  ;jump to iX if above 0
        _("mov [ebp+iW], ebx")              ;restore iW for inner loop
        _("sub [ebp+iH], 1")                ;iH -= 1 (iY)
        _("jnz iY")                     ;jump to iY if not 0

        _("pop  edx")
        _("pop  ecx")
        _("pop  ebx")
        _("pop  eax")
        _("ret")

    _("iPosX dd 0")
    _("iPosY dd 0")
    _("iW dd 0")
    _("iH dd 0")
    _("iARGB dd 0")
    _("iWidth dd 0")
EndFunc

 

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
UEZ

Replaces a char within a string:

_ASM_ImageInvert.au3

#include <GDIPlus.au3>
#include <AssembleIt.au3>
$sFile = FileOpenDialog("Open", @ScriptDir, "Images (*.bmp;*.png;*gif;*.jpg)", 1)
If @error Then Exit

_ASM_ImageInvert($sFile, @ScriptDir & "\Negative.jpg")

ShellExecute(@ScriptDir & "\Negative.jpg")

Func _asm()
    _("use32")
;~  _("org " & FasmGetBasePtr($Fasm)) ;für den debugger
    _("mov esi, [esp+4]") ;pointer to bitmap
    _("mov ecx, [esp+8]") ;number of pixel=loopcounter and adresscounter
    _("dec ecx") ;we count from 0 to NumberOfPixel-1
    _("schleife:") ;loop until ecx=0
        _("mov eax, [esi+ecx*4]");read pixel at address
    ;~  _asmdbg_()
        _("xor eax, 0x00FFFFFF") ;AARRGGBB, invert color channel
        _("mov [esi+ecx*4], eax");write pixel to address
        _("sub ecx,1") ;decrement counter
        _("jnz schleife") ;jump if counter is NotZero
    _("ret")
EndFunc   ;==>_asm

Func _ASM_ImageInvert($sInput, $sOutput)

    Local $bCode = "0x8B7424048B4C240883E9018B048E35FFFFFF0089048E83E90175F0C3"
    Local $iSize = BinaryLen($bCode)
    _GDIPlus_Startup()
    Local $hImage = _GDIPlus_ImageLoadFromFile($sInput)
    Local $iWidth = _GDIPlus_ImageGetWidth($hImage)
    Local $iHeight = _GDIPlus_ImageGetHeight($hImage)
    Local $tBitmapData = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iWidth, $iHeight, $GDIP_ILMWRITE, $GDIP_PXF32ARGB)
    Local $iStride = DllStructGetData($tBitmapData, "Stride")
    Local $iScan0 = DllStructGetData($tBitmapData, "Scan0")
    Local $tPixelData = DllStructCreate("dword Data[" & (Abs($iStride * $iHeight)) & "]", $iScan0)
    Local $tCodeBuffer = DllStructCreate("byte Code[" & BinaryLen($bCode) & "]")

;~  $_ASSEMBLEIT_FLAG=0  ;uncomment to generate CallWindowProc()-code
;~  $return = _assembleit("int", "_asm", "ptr", DllStructGetPtr($tPixelData), "int", $iWidth * $iHeight)
;~  Local $aRet = DllCall("user32.dll", "ptr","CallWindowProcW","ptr", DllStructGetPtr($tCodeBuffer), "ptr", DllStructGetPtr($tPixelData),"int", $iWidth * $iHeight)

    Local $pCodeBuffer = _MemVirtualAlloc(0, $iSize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
    Local $tCodeBuffer = DllStructCreate("byte Code[" & $iSize & "]", $pCodeBuffer)
    DllStructSetData($tCodeBuffer, "Code", $bCode)
    Local $aRet = DllCallAddress("int:cdecl", $pCodeBuffer, "ptr", DllStructGetPtr($tPixelData), "int", $iWidth * $iHeight)
    _MemVirtualFree($pCodeBuffer, $iSize, $MEM_DECOMMIT)


    _GDIPlus_BitmapUnlockBits($hImage, $tBitmapData)
    _GDIPlus_ImageSaveToFile($hImage, $sOutput)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
EndFunc   ;==>GetChannel

 

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
UEZ

Merges an image with an alpha blend image:

_ASM_BitmapCreateBitmapWithAlpha.au3

#include <AssembleIt.au3>
#include <GDIPlus.au3>

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromMemory(_imagepng())
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)
$hBitmap_AlphaMask = _GDIPlus_BitmapCreateFromMemory(_alphapng())

$tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iWidth, $iHeight, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB)
$pScan = $tBitmapData.Scan0
$iStride = $tBitmapData.Stride
$tPixelData = DllStructCreate("dword[" & (Abs($iStride * $iHeight)) & "]", $pScan)

$tBitmapAlphaMaskData = _GDIPlus_BitmapLockBits($hBitmap_AlphaMask, 0, 0, $iWidth, $iHeight, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$pScanAlpha = $tBitmapAlphaMaskData.Scan0
$iStrideAlpha = $tBitmapAlphaMaskData.Stride
$tPixelAlphaMaskData = DllStructCreate("dword[" & (Abs($iStrideAlpha * $iHeight)) & "]", $pScanAlpha)

;~ $_ASSEMBLEIT_FLAG = 0   ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

$t = TimerInit()

$ret = _AssembleIt("ptr", "_ASM_BitmapCreateBitmapWithAlpha", "ptr", DllStructGetPtr($tPixelData), "int", $iWidth * $iHeight, "ptr", DllStructGetPtr($tPixelAlphaMaskData))

ConsoleWrite(TimerDiff($t) & @CRLF)

_GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)
_GDIPlus_BitmapUnlockBits($hBitmap_AlphaMask, $tBitmapData)

_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Result.png")
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BitmapDispose($hBitmap_AlphaMask)
_GDIPlus_Shutdown()

ShellExecute(@ScriptDir & "\Result.png")

Func _ASM_BitmapCreateBitmapWithAlpha()
    _("use32") ;32Bit!

    _("mov  esi, dword[esp+4]")         ;start address of the bitmap
    _("mov  ecx, dword[esp+8]")         ;number of pixel -> $iWidth * $iHeight
    _("mov  edi, dword[esp+12]")        ;start address of the alpha mask bitmap

    _("_loop1:")
        _("mov  eax,    [esi]")         ;get the pixel from the bitmap
        _("and  eax,    0x00FFFFFF")    ;remove alpha channel
        _("mov  ebx,    [edi]")         ;get the pixel from alpha mask bitmap
        _("and  ebx,    0x00FF0000")    ;get red value only because r=g=b (greyscale). This will be our alpha channel
        _("shl  ebx,    8")             ;shift the value to the alpha channel place AArrggbb
        _("or   eax,    ebx")           ;add the alpha channel value to the bitmap pixel
        _("mov  [esi],  eax")           ;write the pixel to the bitmap -> should be a greyscaled color value
        _("add  esi,    4")             ;address next pixel: 3 Byte = 1 dword = 1 Pixel
        _("add  edi,    4")             ;address next pixel: 3 Byte = 1 dword = 1 Pixel
        _("sub  ecx, 1")                ;counter (next pixel)
    _("ja _loop1")

    _("ret ")                           ;return
EndFunc

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

Func _alphapng($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $alphapng
    $alphapng &= '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'
    $alphapng &= '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'
    $alphapng &= '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'
    $alphapng &= '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'
    $alphapng &= '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'
    $alphapng &= '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'
    $alphapng &= '2n+Z9bdBECaofeAIEIeZQYFgFIABHFhnu2jW+yndtIf4rN6jrzR/Cf+w/3K3f08gmaD0gSPwiQAGp4EBesEhGAVgAAfW+100632UbtpdPJ3Pzmfre++X7If70/GvlP7UBm6C6ANH4HHYMxAEowAM4MB6n4tmrad0007xvXqPPpcf7q/HvxL2n2gC74OKgJ3ANFAvEIIoAAM4sNa7aNZ7JZ3aJV7qT4Z6834j392/8scfBIoJfCcoCDQRaAO2gjMgBFEQh2DhqqXctVN8qGfny/vqfcn32Z+Of+X0exsUE4whoA3kA4cgCsAADqc7i3e76tOl3KRLe4iXeh7+UH46/kNXVP7ABC0CdgJtUBgQglMAhtMchZc/OTW0U3xVz8Pn4Gvlr9bxdyZQH1QE3As8DcigQiAGcBCJVHz2TkpP4qWenc+5X+WH+1fn+FsTsA8qAg7FYJAhGAVgIAeCaOpkV27STXsSH+o5+LJ8un+1jj+PgxYBh+KAgUFwCsBADoM6SdKl3cT36jn4evmHraL8MIFHQUIwYGAQKgVxODFgnFQ+8c9Cu4nv1Tfyj5T81dU/gsD3AkfgDAxCpQAMbw8UUf7shKTdxLv6Kv8tir61I38SgsKAPigQQAEYBKIrPj9e2kM8zz4f/tqT3yBQFjQMwggGARSIgRxG6jiXbtolnkffqE+9v2bkO4FAkGxABgWCUxCHQBHlz/jn0h7iqT4fvstfS/qJYF1G4AzogwKBFIDBQfTFPzlW2ot4nr2rT/LXrS35HQK3QTCoEEDBORQWRbUrp/YiPtT74a9d+SkL3AbBoEIABXFwEm3pD/jfHJPEh3o//MPWmvcnhEEwqBBAgRjEobII1aEc0qG9iA/1a7H1J3aCGDQQCoUA0Zf/mWvP4qV+DXt/1AYNA0AgBXGoKN6aZLtyaof4Tv2hB4T6agNn4BBIgRgCxEjpj49y7S6+qD9g5CcGCQIpCEOA6Mr/7EjXnsQfcOoLgwyBFIQhoTgqyw7p1J7EH4jqhxAcgzgckWmkJ4eH9INBfA9BFILDaPl/cejBIz5DcAwFxLD8z/UfH3IQ1rp1DYi+4o8POehr3Xitxv/K/wPf1UmnM4FQVwAAAABJRU5ErkJggg=='
    Local $bString = _WinAPI_Base64Decode($alphapng)
    If @error Then Return SetError(1, 0, 0)
    $bString = Binary($bString)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\alpha.png", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_alphapng

Func _imagepng($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $imagepng
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'NxNVnbOEkCrqXlviAW2X+mdRaLIJ5/+YQH7ON+iRuGTK+B4XUi12ZRDzaLEZTW9HhmW9LlnfupuBol1hKRaIrgTZTZAQk66vsV6C9MU4raOGTeIumrNteNARlMgYvxsHCMXCnDO9wBsQJ+0QJ2NP3d3MRKSUkmkzh7NWbSkqImC0Z5s93WM+TasbpKgj6lRBhnRNqmFG+lQS60ncmWFWduq1ikpJPjRBhotF6Az/p+JBKCaoLYDRzUnWrPFdIkkYhZl/JScfM7MgY7y1ip8JQAYC2lKSk42Ju0OOAUohmshoHnVhpxcONn5QRmJHNJ73zBJk48QmZwDCwoS986JEEDTJbLD7MTnp1mw64RCoS8pGAhRaEnkEwjALMOVOj5lEeY1VuKt8ZiqLtL6EOXTHLNHMgrvJo5P2nFUeKQgSyQnCzLaYR1WNtekz2zenOlJkzioRgJSStAktJdHVxsAVWDA8lIp+a6Fq2ot6WYSGa5S16YM1psEvjn1zyqhuo9bKKMvl0vYv8dKNw6tXx4PDsU4yGTFMQWGAUp0LeEIC4aaqiMo84mYJRSKiqBojAgpKS5XId2he83U3un9Rz6yeVXWQlHBQ0GVLG5mGpVpVLaWU7OIamSUo4FTowqhVAjQXaskTY2EuNgPYSpBRIpHtRqSSSEmiNiygDRPIiFAIahBiib1SPAl+mVOEieBCtLYM2xD0qB4qUFg15gFtWoI21cvytzVjwkgFemJEidi0nsm1dIkd5sfbkdc0p+szwxsBapnnkQ53qGRkdbOsrJKni2SD5c9LjMRTPpaFhFj2b5SMc5+SZbUedDf4jUTcPRRMTiKSleWec9Zs3LvS5YyMFE8NACiw7G3z1rVGJZJwMFMjWt2sbQwc0hg1KswmJLkhoo2Jh6gIiIYloACJBblCXyK2i7NjnDwoZ4+2x7dtfSzbNWMwbJ0jZVA3w0KtB0pdXO6u3FzceK679Kxcvn5+9YqNQ785LRZT9NAOQoeLwKKSEBYYBJJlQtNgKQKMGo9DQLSWRFTDIhylFI8wNLJWNG5dS2ya6sfMvUKJJkVyd4S1RFGamgHZMhtKUgnKN/51IiBa28lhzsWAgogGNDUxGgm4NJaiR0Bnjl40TXPO5ucOfeZXzmodNFmXS7adn0I5Z7yBrY5/DL60ABA7pmR4m7NhN67PqaHOaQNNtNw6s6yvMtA+pjO5eyMBznyjRhTLej07h11xm6do7kcxx+wknOy0iCB95uy08tFDSnlMmdzBiy0Hxo7UNI+nZwn/jp4Dbw9ZGK3tFEsWQYSqcubA5pPPClMakyW1e/G4EhNBwByhhBLVCoJSpv3Lh8O2f//tizs/8tNbdTqlr4sMLG4MCZVQKQTcw9yDUhAWVjHSo/P+UPduHDzzk/ba58bDZb1Y27BR1cqQIgqauYcXiEYWvJBZCJoItdbHEaSVRA0WaxLKmSQgMzYyJ9hZXJoTRHPPwnjX/LTBPOnm6MQj1KFd5wifTOXpr+V8hNqxuSd48taSNJl03yzkVGSefrb+svEbskZHZKHRUrc81kzNbeYsRmhyrUSp+dhwYVYnzb8Z2sg5Mw7dhszzCZ5lb60gZGkNbmILeSKbDq8hvAkMShsUCKWglAAbaT/dJfgpQnJrStpVcAAqmRmbDAYzQXIW1CclVoIzkxqWiTALudQNqHjmR803iphZhtkSKZvyLkkWSdxs/beQKIQSIlRAAI3sfUUgkkT8bBxnpq2o5kDAIzEy1QoHWfqjVbfS2+/Zn/2GffDbfv5uwanI0C07rhA0qRAR7Xq4uEs4k41MQRD9cqG9Is5x/uF07z18chcTljdfsKPDwS76gGnfTAtUCXQ59VcJnV1qpCFfKqpFmxJSNChURcKOBAIdtYg21ssso2/Eq3YCU8yU7inMoUFTm4tEO8zsoMGoDJKKZ78RlGiCUvMwEUXqM1RdAFH/1GkI0kVCRKSI76YyKfsBk2qZCE8bZSipCSilIEWkqCTW2mBN'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'mX/93/mnT44xbC6GYRhG3w7T2fHFiQ/P2viHf/tv/+nbf8zOf+/hJ7/xW79970fHf/knvznc6B98+GilcmIXqz3u7e89ePTo4a37P3r7g7c++PjKU5d/5Vf/wre+9uPPP/VEkS42VjfcDsmgDjMdxnHY1mk9HRwcHW/urt94++ClL8bVy9txA/dOiojnWEdCBOggNAhVhOLeUZili8DgIejAIiVy1BgRwlCGAZ5sTGEzp4SFJ/+8BEtayXgjEkBEqjMQOS9offC8qY6kV4LauG55fkUMYy4G3olQMUv2Zp1HFv8CjHN/nDmg5L6wJhaTTiQixmCpVlDIwkIqYlNqGc7L6XrvbCvDNMBlGjiNZtXMRLWtB9QDXLkUl/amfmXL/UlBUE1sCgfEpEwSrCG5nykavSjLydSbuCdQbxHGINGVYsrKsPCiUipmEHLeTv4pr6r0Aswpns6b63KGLLMnl3bCyT3ohV06vLpT2rxChTBY0Evm8aRyyM72trO2SEODphGI3hjhFl4oCk7ZFUX1LjZa7h2ff/Vm11eLikOcH5+NevUJl9i7VKmbew9OXnv5+X/hX/unGf365JFZ21tztj59tNlcOTx876M/+s6t71tXxqJHVw/3y1N/+ubbv/2/+3/8U//eP3vxtZv3/vi99Ydnd4+n++uTUeWZZ5585XNPPPn8tWefuSrmjx6OpyfTdmsdWLuRZdFt2U3j+OhCo6rYFLaQ5c1rL7z14W+efve/O/gr/+bQjd2wrh0VPAgdzGugSwRksbRw91Ep1T2KmlsfvlQNd7OIgoroKKocGIHogI7zYtZmNiRRawlZqrp48WYjnnLETPietM0d4LjDDQFvQwCrSP5cjhEwW4CEz+kgKyVm6ojGMfC2sc4tVJ10j9Ioy6Gl86BZVV2MHUN9n67jBicny5PT5emxnz+M7XqYRlqt00ga4TUmUszdJDrtAkvc2oMudXW4PLysBwdxdFQPL/tyNSrXAt1IH4y0qEPRsvCcf86S5dnYCjTfo0BzIWMUn23A0ORvlerIapCwOmsb2rqWRugXoXsBo+iYK2yVBhSfhyEehuY2nDCbmcuM6s5tSlQzzuUTRYqZEYMGPHpqVYZ7SfaYe5IhNVRcRxgWdv1of3nx6OZBOX90Z4pDxkLVNoNdPzx47il98tXPL5cHJ8frYbAkCp6enp6fb9fj+Ory6B99cOeN+6c3nrzpU639WGtcv7a6eu+N9f/hv6k//4Vbd84+ePP1J1957tXPvXjl6RvPv/DiszeeKGbr8/XZeqh1S5h2atNk5lrAHvV8ClSbhmW3pJSNu+ztFeL07d/b+/AXj559uY7DSKH7wtOqxATSFw1OFWZinXNLjLS9nIpEuHlqo0UE1cSjU3gbrdDD3RK6kLZcOTBaRc4BmtVaNmPpnNQKItkBmoA0VylRs9Y7Oh973wiFOZL05giHpqfxnQlwePPjFqqlRoQRFINEuKAWq0OHuuz2bVo8erQ6eTh88vH63p3NcAY79x7SFS/hdEQYatB7aVpBdlSBVLB4He74BeTBYpQ++sO9oyf3L12zm5dOrl+bVkdRYzFwDEyFXa1gQCmWvgyBRDabUiUV1qRHIQGONlF1tzY8FfHpTRARqiJo5K3shRLvatYhiWIlDRDU3NjutlClatqGNh/px14ZiadJg5JIwFU0qoGYBAz2YIWzKMFxmhTsS69ohrCoUI/V5viZ/dGq29G1zUV3fPvsqc9ckcLOpENXlqs6wWpUi2mqF2cXZ2ebYTB1bBZ+be/yU8vL5z4eecFUbm83f+Pa5S8flf/tW9/97hvff/bJ5//Jv/6rn/nSqw8+erSSvasHl+swnV9s06qgLT4CpohhOzjHPI1apO/K6OY1qo+y3F9dfeb8wcfrP/07l5/+Vy/6rowuqqOSRE8IlSo2DspYKjsnixZgAZ/CGPRCDcK8ybuZBlpRulJr80+fDRlCUj5kXt1VX/s5EIZwlWZyo50htOhjB+9A'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'JEg2pfO7VzenrFPKo458+jm/f/Vbv9h9rY69iW3AEYLCgdmJwSIhI0CoMRIJI6GFB235jQ3QjUQhpOFEjNB4RuJqHBBMFQwBzTw6IUQG2lbaExGBgI9uztJLagMuAnhAIIh05BZARvk1/eyN01+ePD6bIuts/r7Le9P05NHjLuD2nduPjh9M61pP/fjp/Z789o2DgzsHi8Pd288ffONbd3alf++dj/76p+9/8PC0y13OqYEg8MvoX0ADbRn0aZgNs/BILXZoJiI59xGt75oRSSS1XGur7ml/ElV1VyIUac0oRARt67XlxjJZOFFjxSpLcmDinHOPDiwiItHoGCi1TJJk8/R4TjO6fcenCINoTFh3BkIA9iBmBciBweRqWdEwQCAFROsXJ2LmGs7ptd8NgIZ99MBAciIQdmqhkG0Co3XSBSEhtSrw9h3aor/ap+YRiE5AgNwawRn5/mfjg4+MNkIQDgEebu3IaKQMJPYIN2ugsfYAMAsnCYjzs7PPP7m/Ol0PeYZqyJAOBhVEjfnQCUqttQ0k2hDwDTwcEUilaqk1p9R1nbuVUqs5ILqqmm1Wm42Wc9Oe2J8+2bW7u3q8MMqDnU/h/WxzePSgf+H+cogVZBCkSsHgaGoC25TmJVOn7UeAEMybg58CEjEhonoGwsQTRQ0PhAkcEdmBiYWIqpt54UCAzGLQ0qmBSBikpoqOSZofkZHVvbATMrq/eHr/+c/fO96MT/p8nPLPTvX+KKWafPbo5mJ48W+/fjyuTo9PxxN8+umT8y/u01SeubK8/cze/fvHf/Knb/27n3x6Wnw5pPbXu2zhvgSjNGkkp24+m7t7KQUvgtsBqFWjfSnBETGlVGutVS9f9k3wSUm23X4AzNuHj1lyzojIKfX9gARlLIL9ot+bdYu+yy+//MLVG9eePD3OKQuzpJ5pMZ/3w7I/2xyXz+5fObhZ9nbJokHdEcnDNTw5MKB1XMMMwwlLK8MpmpEDUVssyIyJmF/9HWbe0qJZArl9DC0kz4iMyMIaAeYoTEho0QoStwX3X0JUtz27aEEAwUDo43vvluNPKE2IrfsjiIK2iA1u+7cWQW6ODKLt+wORkAqwUkKv070PPnrv7c8fnYw+jX5eaN532dvGu1gdJ3cIYsBAZBYRczcL6jn1EkW9mFoULQaBBptxrFWjWNvXnT/5Yp4fHR4lNQ/gK0OkF/v/8NfHb711cv3Kbn84WzuyKmMHioMIYCgAMCFidYWmljNdSNwBgIHR1u9G6BDoIchWKyN1KZFDRxzul5oJBzJg+zQcHQTIUWy7XYEAcG8BCUcUQnfIyw7uvp9++dZib/5Fos+CP5/nNO/+9m9+a/H81fffem/2YHrhpRu7V4dd6QWwbk7PT9Zf3H3yw7fu/vFfffz23S+QaeiHlkuji3vdxdMP23FM8tAPbXjJObfjwcxKNeZ+Pl8QkQipWq21MaCboyEu6mIRo62YvHEyAYg5p66tafvcCXPuumdv3zmYz28cHX399TeuXzt681tf+7u//1989unda3vXn3/uhWdu3g6K5bK3Cbq81I7hySofHlHXh0cBVtMgaK3MBV3DUwC5E7GSBEZGMIjR9WLGIwLk9OrvgG89PI3WKwgYTtFo79uyuEsYrmNQYmA0CBDeQiKaZRrQGZ0AEVmoXaLw7gd4fE8SBEVIFkqEGNscWStFA49o/Z6XiPl2FpsZYIigm65WqycnZw8fPX7w4b3NeuT9gZFzjyRONblkCBdAyNIROaK6EXLf9xiwOltrBM86YVmfnK/W50VDJ1PwfujGk8fH09lmFJ5ifpW5w6eS/+RT+Iv3ZHr6ND7+bL7fzW4coXWbgpggkWuEMEJ1JRBiUKckCKBVgVk4RQQFjRSVMQMDEgQyMTsICagDAAhBgJlFFiLqDC9pMO6hTYsgEorMlMzD3RkxnEnQ3MH6xU6+99nR/Z/N9/tfrvWzAv2Vq889f+3GzkLn3e6dZ+rpMd37/AZ2o9nTsnlg'
    $imagepng &= '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'
    $imagepng &= '+zs7ezvLO8++sHflqgU1PDAFhVnuxd0RnGmqVT26joPQx0qnGje7/PqN3b94/8HTlQ4zrOF2cZHPzWtLaBgQragQAKC16oY3++ZrvwsRUK0VPRAREzYnbiQihIyoHGgqhEIAjI4eaABQECFxrhHuNXFFE4d2EQUCRmbmOWz43t3x9HGJjenkMUJomLo34syWxOFuRMiE4QbR4sSN+0sO0k5PQAOKAKZA9iCR6MLFHz/+4sO3P376yw3PF/mVPVkweyBgTok7YYe60dWmetHqMWr1MjnWYHr02SdnT58C9c9//fbuLD78/i889ePQF8VkgiAYIF3K874HHxlJkjx4fI2evv7iDtLwdANEhJ6BAKiRCtPEjgB9UJhVs2gxVNzKoykiwCevQU0qowoBQgKYFYhQI5gIwsmDPQgAWSYMQ3boMs+W42r1s+8+/uEfjtOnWajr5hp+NhnNF3c/ffDWzz559/OHZ6XsPn/z1ot3ZDOiOw+9CYVHkoQkAkQQAOpWL2l8X8FCBzavEookcfPWMltrbUBEYs85C3fMjAjYmN4ACC2qGyknVW2+t+aAYEZmCnAKgAhOwowEfnB45WD/6nIxiNfbt269+Z1v9rvzPHTF3auhA0KYB5EQgtfqHlWBKGmN1rMXE53W9bXlYoLhrz/6tEOgUEIkD6ZkgBWMEJMDI3u0xk6wiJbEd3JOr/62IMo2hEmX95g2AgVSEAkxAQpzu800zDk4cM5AwA4M6AQQkFFgC1aC5MhMy2ntdz+Zyon5ZKoeGu4IDlvbNxJtnVJf+ggAHUDbQEzcwKxuhhRI0CIHDRJDAcJOEit9ev+zux/95LPjh08EQK7Or9w6mi9lWGTKAiOwRgWYRq0bGqcxyDdnT598+sAC3/jOi89cWXz8Vz/TwM1imMLzFrvmKLSYzRICmuUuYeazulrAyX/9zRtfu0WxOX/f98fgpZ0HUuvtMfQgLARpW2feAFPOSARUayVp+SMk5GaL2kqPTBRA1khhtJXliIRxguTSXx26+PQnH//J/+Xsoz9xOOn6GUDukvYDPD3T9z55+uC08KxbHi0WpuPDx+3FC9jEVm7qJAIA+tDnqaxK3TSxoe2wmn7j4BHhjn3fp5TcIxxEuOty3/cAaOpEXGtJiRGwCaN937kby7bivAkYLczQTniiRvWj3GUHKFOhwNz1Wk1LvPryC6+9+cbBjTuzxY65CWO4RbhpIeGitZ0eAe4IVW2aJgcNjPWmRhIcN89fmX1yVt+9t1rOOzYDTnV76IBZi1FAIEaEmyMjs0CEQXD/+m8LQUL2r6CNiCkiKNAEg6kD2p5urbYxIm33CBgI4iBAzTabqMGLAAmDMBJ3uqIH98p47FEinDgAHONLq9OXXYuXa0LEQGwL55bIafcE357aX6LnAUCMAJCEdCjn49m9X97/4Ae/fPjJ06ePzs7OV4gCi76/0vE8VqRqYTXOz9bHJ8fH9z6JOj775u2bV+anP/xwdbqB3Z0JBExRKwEhQWRORAOLdMnBh03Zt/jV/+KVl17M/KO3Dh7ci5k+yjsbHyQ8GAIjKRCgQiQkJnJCBBAD8BCiik5MPWd0CHMMyCzR7DTSCjyohkPrmUSECA2y2e6VPsovv/vRn/2z/uSzLJSl6/PeVNdWK+b5uWs1J9bwimqYMWWJqajVWq3WWkqNgL4fmKVOY62rqiOiNRjHlr3X/AwQALFdabX/iZKbMyFvoaABCMzOTGZb1YgZu64rpVRVM7vg90jO+bJUFhEJ0NwpSU6JEZmkqK2O69/+jW99++98J7pDyRldu0yNcb1tykOMcGIghqq6GQtEIFsgMCYNMMWh592d4b1PHo6GWUgDLSCIohHvCFvCoq2u2wscEZMFL1//fYhAZAx2AkNIQEJESIytvMbRXYRVgAEGYoLAQEJGCEESJEIFDOQWUGi/bvcR7qYzvP/5ZvUY0RAjsEIAtsbwrY0EvnrytCebkITFwd2BkInYfdsjhnDBkcaG'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'miojJiSzVnQLYcHEQrLRihDCIIgYDYEaiAgJsEG5CBtNQMy2yqVHkGCDLhWMFmMeSEb3aiokIhkABcK3MU8LtbR/uHN0q6x+ae5waZG9IEI1b23TobdsemrO3PBo+h2bORFqgDATEktqM0NzDJhd2m7zRd8qXgbwiEiYAiAa3xuRsHpYIhpPpvfztYevfuPqh/fYN7u6OgEEEUfUMtS0fDwfVge7J8Pe5JHB5BlSgqKaKnQRmclx6qZ1Xq18PIPz0/XDu7Y89BAGCigSJIhBZG5K0GTjThkg1mHiSB4Z0RhWlOZd3rF08vZfPvrrf+7rz/vZLqV+KiNyImAWAnNhwtSHuyTIHa/Oz9al5m7wQAj0KGYVAcbakKuj6gYAJWWtYTZtb03uidCkbUNTkAW4uzFyEnHA7WaOMblDnTzlrf+dmAhR2MxqKRF+ER8AJuy7PG42n336ee6709VarRpqQGCiLnc5JY8wq0bR9YslyBt3bj5z5zbNFv3OrO/QLSKckZrXbhoLtFgFEZjnJG5aI4hgGDL3/vT0LDRT6kqZgKKTIjzbFBvHswXKZqS/+/KtH3/y4C/efnCtW0atJXIPBkEU4OrKSqAJRRAj3B2hLcfAI5DRnYm8HaxBiMCtTNQtnJgIEMPNA4TIzQZJFNscB0UIQhABUBBU9f7WFXrh2dO/+SW5EreydYcLgBheZMnxK64guDCdEwG1WR+83Z/djZkAEjNs9xq4pXkzsV20ErRodtd1zWwmkjywveqsFgzmLGk1PfrJ++cv/NrZ899KK81W3aPF/6p3iulsWktkX1uERuI6ObhXDEecHNG7gpxSJ7tHtJdTBscpisqJq9gqR+9UAarXVqbQNsHVghF7QA4sBOdgFrST0pGVJz/+d3d/+EekZ3l+wMhQx8ScUtfldHZ+HmF93282GzULkFrXiNIPWVJqNU+ByJITC5uqaa0VkSI8IIjBo+EdJCAMMYBbnJMQiBEcHVEhzLfuHXcXYURWi4iAlACg1rot2W8dzogAIUn6lFLK7l6rbk6nSZUZCcnJc05D7ltaZciznPvFzu63Xnr92o1ri6Mrz9x+IXddzqkWi4Y9jWgjU/hlJYRvS0YcU8oAZLXO+o4Jx3EippyzMBeFDtOmqIeua+Hz4996Ye+tz8ank+8LpkAC3loNAmtVEvQIAVBhqhQta5QAK4g7CLGiOQe4YWCz4zBCALAhkHNzTzCjRzZkyideOCwjVDMhiSA1YAgWSHnmPAN4yrhVNC/NJ3EBo7/8Rbu0AcLWQwt2sfYK1QLgEYIo3OjjLXvhziKX36L2p2pgpfbzqqoiuf0IsyRidmdbkjz+oH7wE3/5O7aKz7sumQkFcAaSMB26kKhkoMjniDlibhQSCgAZs50va9SgMWryOhVQIqAuSw1yciR3D8cIFg4itgCNSkBA5KEETFIRd3K/uz67/4M/fPTed7tywrIAFCYU5vZG2EyTmaXE0zS2caJWRcTZbDZZTSlZHQNh2NmfpW5ab1anj3NO7q6mZjVAA5wQETg8gkDRkfqU5h1SgNY6hjggWAC2ESmgtSdQaM9DUVAL99pQthBAxBBmpsTESM3aaWau5hAsQuAZCVMehplgb6rFNkf7V3/39//hS9948XBnt1vsMNNsNqRE7QxXtUtYZJvQoHHhAx0tcZpqrebgwQh7i0ErgElQAgBm8lKrBqJErDXy49PNa9f3f+vl+q//6hPYm7kDeLTiUWY2dVUDQt77+u8HoRCLY8ZEIIAozNJushAEyLxFxLAIEDbwMCEyMhMjkamRMDFBOIDHNkOzVeaJCE5X5eN3PY6bK+PLl/0FSxIvXSPt4tpwIb5dg7c+WABvTPtWFYUILBIRqgZIl95GZoqACGz1G1tUq4M3B1EEALKIh4MaBOJo+uKtGQ6mJISduopweIR1TJW4kCAAgjFAuMHWNBwQzpJHQgvriRhZqnOYZiCDhMm2DCwUFEKySZEJEouBIWxgJKFr/U15'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'SVhby0wNMIQ5IMylo93BCCXMOo4AkIjY3QM8S4euIjD7GZRGEghIQI455WE7RVmtrOip1trUA0K1OBgCOXRjFXajFhJ6uLkx8vG4AAYhppTOPLNWrTQWpixu6qx4mZEmYBlE8nbI04hAKaUACDc4F+HZTBHCAS0CI1zNKpytJNqQEUhaWzEsPNyi4w4RYVkKBqiahw9Dighroe6AHR937lYHUq22HFsj5/1AA81v7+0wy4ZRkbKsYUlk1VJLk5TFwaolJosGA85l/bN/8j87rJR23uaeYO1r3cAu1TtLYqIjSTt//RGCeLG5fP7ygxevPvnqqy9hwN/+2799OW5ot48hy5CFZLe7GoahLifh2Oz2u+2utVprmTab27dvjnd3zWyz2QrBWmsaxnEcCfh0WFBEEJeHIwVIklWLSEppEoyIOJ2OXXp3sb8YNtM6zwjQAN598Xo+zbtp4iED4uHhYT0u5mtA7yqCae0HJwcQJDObTyetbZvy8eF+7ZF9QCPkaZRxhMDSCgZgVUwcAU1VQsOcG9YxTlBEAwIEsxGacMnDrFBWUaMM4aEIjShpOJMgkEVggBBzUAT0qAwxck8JADFSgIUqQggBYXgAEzW1GiAifZTC9AgYf9ThhbuYKuVspuMwRCv1dGqtaDQmaVYcNNQQU3/Yd8x5b22YWU/3ajQE8HAg6cnGLKlZ86La1NwSjvlye/nqOePWXcaLLU8Yob0BH8yBXIq5G5JDACH1uV1tpRXNNJxHaUyAuKwrhmamVVU1SHrr6/wpRIpEnJLUYk21L0I6GKsWU4tWWm2FSMb9FgFP7w5zOY27zMwhvNZWtA4y+qoGEeuJHROGeTVrm5vtVz/92Z/95d+M45jCG6Xez8cwPH/YAanjjJRZzIw63zqIANXUJKXd/qTt+uX7lzcX2/31ftqpRK21Nk3TsMxLq20c0m4/AuD9/Z2pmtvrN2+W02kz5N1uKyy7ccu1lNZaVfWyvbioasvpftqMUQ2JxmkKCIgoy9Jh8bvdeH197QgPb9+Fubkfj0eIuNjtxmFM0/Du7dvTwyHTgGGcAQPVmurKJMxcl8JMEGClIvPRqrlllkRQanVKOSVdq2tlIfcgCKvNAdD7pgYXsqhtL+IoirQyKcsaNhc0ZXYSB6S+skWwSIBC3EFnaB0pqXj+EBMCGQBB5FaDEBN77QgOCgggswAU5IDeXETqTY3oc+oA8HBJJETUWmMgrWVdFmgFicJdXc0rgEYgdoE9wSMWiNw8wsPDEVJKu93ew+parLZApQxhSowkHOaIfP385f7yYpym7cUlSe6CGhBmEgCGCDcDoB4YQwoWblVDPdwU1M3cnVC0WX/k1FbRg5NwlpySe0BYrQug5qGnDEpPdvdfKgC4+fpQDstp3Ml0kbfX+f71w/L25GB2wQnFV1/m1QHXeQ0DGRnMW6mJpRTHHJvMf/MnP1miXY4ES+EhMec215STd3YwAzyqANwUAZknRQ1oAJxS3u1398f5Ml989snHnEBEHKIdFyTGVmuApJEYTkt9uH/bWXd5SCJEFO+99zIxM4u73z0c1W3abEjIQtdaT4fTbrM1tcatS8oiopSVwEVku91cXO7evn37zTevrZSRxcwS0rCZTOuxlnbwVuo4JAKqtYIHgIPVDAFunQ+yriWLJMTWKg2ZhJlxLrO3yATYvWgALYzcILACQlUGWNEakw1J0naF4a5GBSGgNjfGQbwKGVCn551Txe7BxGfEJEaXlQbi2Rn/yFxjQkYprh7GhAxdwunMrM2IKDGGR3fW9L8JEfQaBgISBu+2V2f7X6utHh0quBJEhGJEv4QidXEtEqI6mLlDIAKFBWAaBhQJDy8N1NI0DtuNraXGCoheY7rcffb97z+7uJp2w25/fXXx7MXNzcXlToYMQaFu2ohJWAgZwJEcws0gzCLCwBycBMGCAgjAIjjlgZNsBhE+pyw9WjMEGoZxLbW0Ym4aXloLgBatLGs7VJc2TRseqC3L'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'yADR+bVu3SqEj0WInjgL6XlLov59jwACx3AnIBE1UzdCYuZ+a+7HIhQ0U4Doiyr/NWLe+QzSC0fpzhMSsGhmxsQAwJAABMBRzD2QIpzQQ/rzGhA9CNnCiRhYwFyIyM5ac+RHD2mnI9K3fIzf1jP2QeQT7hgBhSUobZ/fvP/xJ9f7C6Y0bKbdbjuNE5GkKV2/2E/jABWbtcAws3CrtZViLMmtna0tnaxmFoQdAVRLWR+fmg4RrfXbyLDbAJGVZseVGWk/poE3TduprMspBtlt9019Xtcyl1IsjXJ5cxHejdQ4jBMgvnl9HwEiXGsVEjMLM8ig4dmprbWEUZLU8efogyREVPUxJ1M4tXu3Po5i4Qk9XGMaiPjMuHbwcRhSSuFGjFMeGcnNKSHT/5+tP/nVLUvPO7G3WWu3X3va20WfLZkUkymJIiVZIllWlSBLJYmSVUSpZKAmnnlgGDXx/2DAYxseeGQPbMAwbNiQYFiWUSqVGjKTmcwuIjOa29/Tft3u1nrf14O193dvUo5BIOLGuTfO2d/ee73N8/weNgEkcZnrm+iAAKkoch3CYb8p69rh/M3rK1MpyjmxEtNqsch88fL5KzWbLVeMThFBqdv2F4szFbrbN4UQNtu2HdAXs3mejOFZVqJZWRXOcYImg9pehl0csB92h/0gcd+F632zHYaDKJWLDz/4ta+v3lfso1oQ5xFIIyOqREAyA5lqG0QCFFNJ1R0DTTkglj41ESFiIkt2M1ACTEQw42QJV0s0aUAg0GOOy9vUTYupmlIFVXOOEUGiJt68mSbmM6ARcVr/45SZQulsIaQpSjS1spQMh6YupZmkGguRZIoegtGDMNb+SZg1aiKIU8OEzMgMKiKY1/X5xx/N5uvC+zzzeZ4naXTusvm6LNceVELTBwPiFNoeuq4LgwGNq1wzZYYwDDEGcDmQC20jMZpzRti2nQ6hrmdgaGS+LmPTk6iW5Lx3BQFR37EJ+7yGFcSo7f0QBkFipFDMS/FkffBCQ8EhdN3dHYSQl2U62qKIqQGQxp7JYqB9hN5T5Z0HFFQuijAMYjBb1RWF/fXQeg85FFnGnJH3CMBMRcF5njumYIzkvGMRHfo+Zb53IfRDTDBUCOAzH4YeARzzAEHjwCaZR4vD62cvguBsta6ysiiL+WKZE15fXc/m89liOaipCqrtD019cskKfd+UMxc24U3M+jDAoenjTlAFqFDEoAfp+hhU9NC2fZSua3fb3aGPfRgimkmrEbLZg8J79bfnF08qyRoYIocCIwEHG+teJk73TKr1U9oceTYzjZGQGZ2BxnQ1UzOJQoRGYFEdeSUTlZTfCGCKPMqtwVwSaiIGI0MwtXHbBHKMV1BJ6onkDFczYsemChgB1WJK2eLj5JTG6HIbpemABAQGaXrjRIATyIENVCSlCdmx4wWDd3sABMKoQkRAiKgE1AOQwXJxWtWV85SVxXyxWM0XPsuyzNfVrF7MvLpuM2gwds6Uk/q3H0SCqkV2HGP03keVQ9P6LKMQumanEYAZ2bQL0kleVt57g5jleTfEqMLs8txzxV5ccxg6HTQTLj2Evtns233M6lwgmgzOiqEJpAiKcuibZj90fWLYaoxgFsKQZ3k05U494b1KZDyp6jIv2kOTF5RlfhhC5n1VogNZFvOzYcCMMfOG4JiSFZiNRQRMPbmopiIGltWliJgqEeWZR4CuHYhdWdbWGlXKBtwCqDGzIesQY9dwVUnQzf5QzypDaYI8ePRkNp91zUHJHBekLJi5Mvdqbb9/+vl1sBhmqybIF198ut2/qmaFz1bx0O7vb5vDYRh6C8M+hkjkxSwKGBMzMQWIzG4OgKoCFdiscewpE1EUE1B2rGrMqMnYRUyjMMaOSFRmTkiAGIWJLE3VyQwEARyRMgRQTbsqHAGdnljUHBIjismEiAcAI4cECIppYsLE4EhMQNWhSwpfRiNTNUuSneRcQrDxZFBQiTBCdIyQAFNygCEzRnUA6JBFoySm'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'elq7uqzrWTWrsqwoi6wqPTvHzETz5aJY1WbgBBmRfaIBW57l7FiiDKrkXOi60AyhDVGi81zOqlldFZXLcy+DVHVFhH3bEyIQBpGhHwAwL3ME7HsJQ9zfthn7+rIQP7Sb4f56kzsPDpCIESNoDOFwtwOJ6AKz04gqgyMCc4RARJ79cpUzmUZkRIWAjhBd4h1O426EsczFYw4gE4yZFwYqAAZE0zkMhimoL6GZpxg8791YLVCiugKOZiUAU3LeUrcGSIDMhmmKwmzerU4qGLo3r65+8fzzr169fP/iUdaJtveHsHv46Mn2xfUXr95cPHo8K7JDaDLyDslMBdM8AwmQgYxQLC7Kc9hf7b/6KZhTAmdQqxUEM+JHRelZBywfPvimoYn0CDxqj2nMMaZJ40BIAGPK04RuwCSrVlMcX6nT6ADMEZHa+NvAUv2j6fRASsb4sZOOlvJX0jEyxpxj0hGhd97ScUMgIICkNg7w0QxHTL2mnjhFTROziBkYOlLQlG6IaaSZRBd4lLrRaKEhoqMeglgFCXi2urx8/MH7p+vzspyVi1mZ5/OiLPKCmJgcMRLzcrFcLZdEGSJ6b2WdkXMxGIADo67phxCJSIcBBkGywMHIirqsyrKsM5/B0EXvK0Tu+2Bg5FwIoe0a5yjPeeiH3a43E7AhK3x2QuHQDTe62zdBespTvIA1bQtGbdNI7MiJd6whytAzIRIZOdNQZn4+mzHF0WcK4BwDYRKlIhpNxyYxgyG8FSOm5ItEwCVESqA/sSGVu0iUpkM8lZGJVjLVhCMN1QxUzfGYBgvjEQGiws4RMZoFtsF8Vc+8x2e//KzbXH/05OHCabx/Yf327PRBpm37/M9u3lxtenh8cWEeAdLSH4553Tj+vxQQXVbtN1+9+vJn1gXnoCaq1BxjnlGOVnkHzMXiIp+VKeeYmW3KLkmn3nRvYEpcHoX+BinLYZypmDianph0/2oKBCJDELC0cvVIGI0tWcztqLYkZkUwEyJLse+ELvmAkVkVEqfEwAAZyaEEh+bG0VFyNCZRMyJSshQka1eytRCgSmQmBExnAU6z1OPQc3KOIYgIcXFy+fjs4YOT07PlbFWVZVmWdVmXPiPO2HnnKSOufLFcLvKsyND7zHPlned2t+86kaBNdxg0esex7du28z5ThChKRHmRO+Yy81FEFD3nwzDEENOiu+s69uSLTDT2fRAxduYyzyW24bB/3Q57FYo+Q2QDgbZpVSQMoWsbImGHiNT3AwCgIyRnwHlG61XNzGYBp2TJtNqk5FxFhAlaMPZXluQl6WzUJFhN9/FUAqT+LCWOj2QNStmpMEVophHH1A6aATKlCXqyYSCi9x7MCACjsPOlL5mzxfn6NOdlvF3k+bDbLKkpmSmUn1ziX/wIm6vbnz+7mZ+erS5P+75PWpWkvp6GGWmCCc755y8+f/nyq3VReFRv5hy5HIvSOee882CDXyzqsweJ2yeSLCh2fHpHFBoaEb4jE0v3a3o0wFQBjIkSHDIp2hK+PC0Ppi8EQ7MxqmisgRgJEEQlncBpB6Uqo0tXdMrkHGVsjiiVUUmiBkB8DCyd2vSjXi+hDdMBchTDjS2GpdI1vT5QFBNc0AEUs9n67OJ0fXK+mK3ms1ldVp7Ze5eVJZNzziEDS1EXs3KeFVUBihKjHaxJyE5RJi1neau4u2vDocmqvJfYHDpCKgpPwOTccBh6FfQcY2ugWe7MbLPZEFHlqmHfgxkquFxc7iz67mq32+170oAhHsJ8UZDC5u4+BkGEEKJnBoKoGmIwSO5WNkKNsljOkEKIHZMbHfjpZalGKORZNMlIgAhMBZKiPFWMKdt4WrtAEsyiETInSVZa86XP3hkjAigB6aQNHqcLZuRoiEOS6aNZNEREE7EY0TkBpCBMXR+4LGcnF4+r17XLLJ4vL92B8lL6r37jvcsni/lXfHe/vJyVFLqWCYw5Se6986KCIp5YLFpkn/OsXh2IK6hO0A1xAz4rSyIFFRva'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'cTZH7n2eZ74EVOcyaZthuAasfbVanc5zj2d1cdg0r3YH9pl3vumkG1DUOSxMeU/w6Mmjjx4+6ML+EDozvttsiBwCNofdcjX/2je/s++0xi9muD0oLlcPurtrcLPCu6xaumKpzY0bHN1JeP5Cb28oqifILz6uP/gGc5udXWQlmxN88iHNTIeNdF3sncY8mkIUxiLMS1x4r3W++fLw/kd2+uv9Ydd2W6/cxFhVxbe/+zvhow9kf2v3fdP1VuWqzqmpiypipjCZLZLUN1Wh6VWdLDWqkhLhRwyiCSTpIaYM26mpmE71yQ+QKNyjvj21DSNfiJ2qxhiTSTrdAvyH/+S/9D5TkRiGEIYk1w4hDkHU7HB3f+h6DXLYbrq+McTAKmJROuyHbN/XLGVRFWWdMVWWz2auXFNRF5q5n7+5/f5PXvzxz292OP/y9WZ+Ufzl3/ggNr0BHkX5MK5o47Hp9N6bGoC6UWcG0SRlSyWrTIKSwzFi6Ji6ZQr8VkLMOLpqcIr1+XOznSnjGib1/6/0welX0vV95xIDIBF7UwXD3M/qk+Czk3/34/4//OLm7kDXG7m7HUrKP3l4kRnpoLXP6rpggtp5A3t5cxUs9rFXQmQ8tPu+b8Mw+KyI0dBxWZc3t9ezeZ3ls+1mmPuiF9g1sYxlWc7bzGLfn1f1ermkjJvDdr/ZEbmiKMqiUDMG2NzeamWHod6/eXlxchdkFvVgfLi9b2f1wpcaNM/8KleVXaOwxIB83x9eXB1u76DbgwFXj0UGt1zC+WV56qvTws/RCmzaQe/3NjCSWRmwKLxgu3tFWVF+87e3Cta04pxlft/todu90AN97ZsEa/zqU9nc9+t5KJn7kF7Sx3V7uvLeezOLMWpKQeVk5jJ7q29P7oBR8vxOYBlMOq6Y+rTkiDrubY4UlrSef7tKUlU1/sd/9F+pagj90DdEQAQxqqiGQXb7XTi0zRC2t/dtuxOJrsgMNW5b7gc4HFaVnpxotVqdLfKilGEWX+92P/v8+qfPb/+/P/j5D374y1dv7qUqmfTu6fNv/8FvfXK5HDatIrxbgaQIiImqYEnWz5gyhcZuaTSAvLs+nOgAI9bcQBLG0ExVHSABmMjR7/Lu0/LnKvvjLyYNwrEZGC01R0qZJqaAC2IEWpYuFPijXzT/n+8/vbptZrwovZt59GaZo9XJ+nbfLU/PXOEGDfOy1C7MZjOPfH99nRN5wNi2y6K4XK87kUMXzQwcRlBPjjMZdBhad1a5wlNe1MoUohCxZfC1954UPn9x++p8vXh8+ajph0S07rq2zL1Dun99e+h3sctKul3MygBSrNZh0zSvtmfzUkiFbAhhUKOMwWMr7MtF6fLu/iBt13V7arsg1e7LV3Z7xdUZ+rlfnSw+fpLncWj37XZvTRy2g2+7aIvszdNuBfTkOz7kUng0dSomgwz2ns7c+cIeXM7uY3P9KtbOuwwYTRJEGtNaN737Ey3Pe3+0z7+zoU/lKxG5hKN8VxMxWSmMGBDNNBUUbyMIkjNMRxg9xCgprQcR+Q//i3+KYodt33RCDsWMnTvcdW9eX+3jzmdF93p3tb+VYcDooELbhOZ+b/FQZ3r54dyVdNM2n7784vs/f/qnn738t3/8k5/+7Onzl1dXb27LCvMKCbvt1XV9efHXf/ubtVof9DhxPy6DEDm5FzQlrMRRHDgiZicsFCHptA2IYIApok2BTMAQ0KXoMwNgMkD9FVoZ/Dl62fFJOH4AMk1F32l/EzwCjUwQyXsBRrCygF+8Gf7tz968+Ow+HoYHj+rzs4og02gffLAyok0HZ6cXFoZDs1UNRVlm3hFAXVYIkBfZfF7NZmVZFeWszJzPgjd2Za51TkoEg3X7Q5b7gBQspp1ynrnucMiL4vz8oq6L1zc3UYeqyvaH3ebmqiyKQQ1R16uZI78oF+vFan/7Yt1fudnaL1brvNh++qK/vS0KcH2/29yqYD0vYlDWHNEZEDqPyGIBfOY2A+223LVNE2Hx'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= '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'
    $imagepng &= 'iG+DrY3IrxQH88HbF4le6M2t5vE4v721cX3n6tDiXz788lf/9HK70/3jj/Z0nqvzLCm4jPTx6QxrYLgi0L5xfT1wvfEw2brSSvN4OF8M+8NFkrTabQcHy1i0e/WPbt1apsu17e6bZJKI3M5Jlqrd9TYzUCNGiaaU8VgLoCsucwGccq25ciiBgtsumKd5GqcQYQRRs+ZxgwoFgoo5OuvXK41myzvtz4b92BRJb3Nt98Gt08n4J788+PlJwaMWzWV/MPnTD7/7wz//i9TGahAPzfJpOvjqxeHx2fh4PBwtlhRbDg5utHqnZ5OI4htXulIh6FAGilwsvzo82amvYwUzEX/3xl0em1jzDJiT8awX+lu95uPBYeaD02yY53Aj6oyTEcEACW0IMBhgADUAQkqGMUK4JCCUOB180YIEMIJIQ6iUlhCBdzykK/nIGFMCjLUxEGNltEFAa4A/3atuNjSY0t0uer9L1pHz3jq8ZkOQaIhB5862TVzDoQQGI2SAUUJrACAGGgCLuaPj8+VwwBDWQjoEQ40UgKEyIk3ItU6DhUJBhTHSq5Ln8hReiFb6cm5bJdeMLu1Kl6mfSxj8RYYYaSUBIhpom2jHdh+9Hv/0OU9n6UZUIhsA9d1CQguQBrECn0GGYiFyXSAEGLQtSF3oVC12pRZdvbqxtt0JQ5+rIoVpIQulxHy2THgumBonSTaPJ2eHxCaOcrVS2w+6nz3++qvfPLp/59rdG9sW8QC2gKVOR/Hz56M682/f7QmVn77l9z/ceHJ89NNfPZm/Pe901v70B7c3ug3JuVuxnu4fjc6mFdstjIqT9MZWOzZiMp81KxF1WMJ5GmdpnELMapV6s1nFCLiu60Qwy9L9N8Pp+cgmLIoc28bVZhDYNlKKMWwhazhNseLVihUbjaUkBAilCNLcKBtDnguMYDUKgI0Oz07jPDsdjdNMskpYyIwpU3M9lzmZUsbC60Fjy6nXcXOg2CLNBif9T/7Dv/3+v/pef3gOoHq8//bh588gkD3btkD46MVBrx7dvboBqLW21nBdMJHZ2WI0LiavXr/MC56MFiTP71xdv7bVnohkmBTTyURmsUiWzZa1SIdUN97sj48PX2zUq9vdXgis8/FMYOMShLSS2qyqHQFQSimlpVbo0iFdjvarmVqVn/67lMvVv4JVyyC61H/KUhl8u3IlotNeLb3ZYQ1GO21Qd7Ko4C6CGBN9tesSXwmkCEQrHheFiBijhdHM90PLnRy8NkJQjC2EiMYSGdclYpaGoePsdEVGmEAFKGH/75YxrnZe5TLLaEPwHzDdL20O5e6sXBJrrQnGCGGAlKLst6/Th08GgTSIAQ6RA4nt2hIYy6a1hmf5JhdpHqcw5x52bFq7EnX21isbHa+7Xo96a9hjtgsNAFKbOFlO+tN4kGWLZZbNv/ztyxevhlXXa9jWItXSAkPRPx0Pfv2Lp1VKSZN0b/SavkeRjZZmMUqZbYc+zGihUtDtVApSPH54wEezO5trwrKAx4wpPN/uD6ePHr25ut7wK9aTsz6y6I2NiiNJPE+qtWpqVJzn+TwJg5AyL4uLVtvrdKLpNP/8988il1iWulrtqRQUWFmECgF811nmS84wlDrh8VoYzebp2Ig1i87m4/5iKSE9XqQyT31qCSNzmS3zBIoitCv94dyzzXF/ZCu/3agAG0pmc64DRDjhjb1W69p6PE7u7+xe370NmOVFJKjV5/Hy669ffLTekdn0zHDTsEWaB57TiNioULbnaAgOT4Znx0cHZ8cecFFBMXYbV9btbrUaRY9+97Tie//x4w8spYbD2dP+2WSJP7m91bYhnFuM4Iym2Iae8SUEqU6MEmZF/lxlxMumHa0NLJVQAPXqASBLks67kOPyz5VS5dd/6Zq+3Bb//wEAMNrJ3KQ1Li8AAAAASUVORK5CYII='
    Local $bString = _WinAPI_Base64Decode($imagepng)
    If @error Then Return SetError(1, 0, 0)
    $bString = Binary($bString)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\image.png", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_imagepng

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

 

  • Like 1

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

Selection of finest graphical examples at Codepen.io

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

Share this post


Link to post
Share on other sites
UEZ

Inverts (negative) an image:

_ASM_ImageCreateNegativeMMX.au3

#include <AssembleIt.au3>
#include <GDIPlus.au3>

$file = FileOpenDialog("Select 24 or 32 Bpp image!", @ScriptDir, "Image (*.jpg;*.bmp;*.png)", 1 + 2)
If @error Then Exit

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile($file)
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)

$tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iWidth, $iHeight, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB)
$pScan = $tBitmapData.Scan0
$iStride = $tBitmapData.Stride * 4

$tPixelData = _DllStructCreateAlign16("dword[" & (Abs($iStride * $iHeight)) & "]", $pScan)
$tPixelMask = _DllStructCreateAlign16("byte mask[16]")
$tPixelMask.mask = "0xFFFFFF00FFFFFF00FFFFFF00FFFFFF00" ;BBGGRRAA invert bitmask for 4 pixels (128 bit)

;~ $_ASSEMBLEIT_FLAG = 0   ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

$t = TimerInit()

$ret = _AssembleIt("ptr", "_ASM_ImageCreateNegativeMMX", "ptr", DllStructGetPtr($tPixelData), "int", $iWidth * $iHeight, "ptr", DllStructGetPtr($tPixelMask))

ConsoleWrite(TimerDiff($t) & @CRLF)

_GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Inverted.png")
_GDIPlus_Shutdown()

ShellExecute(@ScriptDir & "\Inverted.png")


Func _ASM_ImageCreateNegativeMMX()
    _("use32") ;32Bit!
;~     _("org " & FasmGetBasePtr($Fasm))  ;needed for assembleit debugger

    _("mov esi, dword[esp+4]") ;Startadress Bitmapdata (Pixel) -> scan0
    _("mov ecx, dword[esp+8]") ;number of Pixel -> $iWidth * $iHeight
    _("mov edi, dword[esp+12]") ;
;~  _ASMDBG_()

    _("movdqu   xmm0,   [edi]") ;copy invert bitmask to xmm0 register -> MOVe Double Quadword Unaligned (SSE2)

    _("align 16")
    _("_loop1:")

    _("movdqu   xmm1,   [esi]") ;load pixel -> MOVe Double Quadword Unaligned
;~  _("xorpd    xmm1,   xmm0") ;invert pixel without alpha channel SSE2
;~  _("xorps    xmm1,   xmm0") ;invert pixel without alpha channel SSE
    _("pxor     xmm1,   xmm0") ;invert pixel without alpha channel MMX
    _("movdqa   [esi],  xmm1") ;write pixel (SSE2) -> MOVe Double Quadword Aligned

    _("add esi, 16") ;address next 4 pixel: 16 Byte = 4 dword = 4 Pixel
    _("sub ecx, 4") ;counter (next 4 pixel)
    _("ja _loop1") ;until ecx=0

    _("ret ") ;return
EndFunc   ;==>_invert

Func _DllStructCreateAlign16($tStruct, $pPointer = "") ;align auf 16-byte adresse
    Local $tTemp = DllStructCreate($tStruct)
    Local Const $iAlign16 = Mod(DllStructGetSize($tTemp), 16)
    $tTemp = 0
    Switch $iAlign16
        Case 0
            If $pPointer <> "" Then Return DllStructCreate($tStruct, $pPointer)
            Return DllStructCreate($tStruct)
        Case Else
            If $pPointer <> "" Then DllStructCreate("align " & $iAlign16 & ";" & $tStruct, $pPointer)
            Return DllStructCreate("align " & $iAlign16 & ";" & $tStruct)
    EndSwitch
EndFunc   ;==>_DllStructCreateAlign16

 

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
UEZ

Draws a line using the GDIPlus lib:

_ASM_DrawLineUsingGDIPlus.au3

#include <AssembleIt.au3>
#include <GDIPlus.au3>


_GDIPlus_Startup()
Global $hModule_GDIp = _WinAPI_GetModuleHandle("gdiplus.dll")

Global Const $iWidth = 512, $iHeight = 512
Global $tPixels = DllStructCreate("uint [" & $iWidth * $iHeight & "]")
Global Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iHeight * 4, DllStructGetPtr($tPixels))
Global Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Global Const $hPen = _GDIPlus_PenCreate(0xFFF0F080, 4)
_GDIPlus_GraphicsSetSmoothingMode($hGfx, 4)

Global $tGDIP_Ptr_Handles = DllStructCreate("dword gfx;dword pen;dword GdipGraphicsClear;dword GdipDrawLine;")
$tGDIP_Ptr_Handles.gfx = $hGfx  ;0
$tGDIP_Ptr_Handles.pen = $hPen  ;4
$tGDIP_Ptr_Handles.GdipGraphicsClear = _WinAPI_GetProcAddress($hModule_GDIp, "GdipGraphicsClear") ;8
$tGDIP_Ptr_Handles.GdipDrawLine = _WinAPI_GetProcAddress($hModule_GDIp, "GdipDrawLine") ;12

;~ $_ASSEMBLEIT_FLAG = 0   ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

$t = TimerInit()

$ret = _AssembleIt("int", "_ASM_DrawLineUsingGDIPlus", "dword", DllStructGetPtr($tGDIP_Ptr_Handles))

ConsoleWrite(TimerDiff($t) & @CRLF)

If FileExists(@ScriptDir & "\Test_ASM.png") Then FileDelete(@ScriptDir & "\Test_ASM.png")
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Test_ASM.png")
_GDIPlus_GraphicsDispose($hGfx)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_PenDispose($hPen)
_GDIPlus_Shutdown()

ShellExecute(@ScriptDir & "\Test_ASM.png")

Func _ASM_DrawLineUsingGDIPlus()
    _("use32") ;32Bit!

;~  _("org " & FasmGetBasePtr($Fasm))  ;needed for assembleit debugger

    _("mov  esi, dword[esp + 4]")   ;get the address of the $tGDIP_Ptr_Handles struct

    ;push parameters which is needed to call the gdiplus functions
    _("pushd 0xFF808080")       ;$iARGB color format to use for clear graphics
    _("pushd [esi]")            ;$hGraphics handle
    _("call dword[esi + 8]")    ;call _GDIPlus_GraphicsClear

    _("push 200.0")             ;value for $fY2
    _("push 200.0")             ;value for $fX2
    _("push 0.0")               ;value for $fY1
    _("push 0.0")               ;value for $fX1
    _("pushd [esi + 4]")        ;$hPen handle
    _("pushd [esi]")            ;$hGraphics handle
    _("call dword[esi + 12]")   ;call _GDIPlus_GraphicsDrawLine

;~  _ASMDBG_()
    _("ret") ;return
EndFunc

 


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
UEZ

Replaces a unicode char within a string:

_ASM_StringReplaceWChar.au3

#include <AssembleIt.au3>
#include <Array.au3>

;~ $_ASSEMBLEIT_FLAG = 2   ;after uncomment this line, run the script, and replace the following line with the content of the clipboard, then delete #include <AssembleIt.au3>

Global $sString
For $i = 1 To 1
    $sString &= "I forgot that AutoIt uses UCS2 charset ● J'ai oublié qu'AutoIt utilise le jeu de caractères UCS2 ● 我忘了AutoIt的使用UCS2字符集 ● Ich habe vergessen, daß AutoIt verwendet UCS2 Zeichensatz ● Ξέχασα ότι AutoIt χρησιμοποιεί UCS2 σύνολο χαρακτήρων ● Я забув, що AutoIt використовує UCS2 набір символів " & $i & @CRLF
Next

Global $tASM_Parameter = DllStructCreate("word search;word replace")
$tASM_Parameter.search = AscW("●")
$tASM_Parameter.replace = AscW("*")

Local $sRet, $fEnd, $tCodeBuffer = DllStructCreate("byte ASM[39]") ;reserve memory for ASM opcodes
$tCodeBuffer.ASM = "0x8B7424048B7C240831DB31C9668B1F668B4F0266AD6683F800740B6639D875F366894EFEEBEDC3" ;write opcodes into memory (struct) / length: 39

;~ ConsoleWrite($sString & @CRLF)
$t = TimerInit()
$sRet = DllCall("user32.dll", "none", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "wstr", $sString, "ptr", DllStructGetPtr($tASM_Parameter), "int", 0, "int", 0)[2]
;~ _ArrayDisplay($sRet)
;~ $sRet = _AssembleIt("none", "_ASM_StringReplaceWChar", "wstr", $sString, "ptr", DllStructGetPtr($tASM_Parameter))
$fEnd = TimerDiff($t)

ConsoleWrite("Replaced in " & $fEnd & " milliseconds" & @CRLF & $sRet)

Func _ASM_StringReplaceWChar()
    _("use32") ;32Bit!
;~     _("org " & FasmGetBasePtr($Fasm))  ;needed for assembleit debugger
    _("mov esi, dword[esp+4]") ;get start address of the string
    _("mov edi, dword[esp+8]") ;pointer to the parameter struct
    _("xor ebx, ebx") ;ebx = 0
    _("xor ecx, ecx") ;ecx = 0
    _("mov bx, [edi]") ;copy search wstring to bx register
    _("mov cx, [edi + 2]");copy replace wstring to cx register
    _("_loop:")
        _("lodsw") ;load char as wide char (word) and increase the pointer to next wchar
        _("cmp ax, 0") ;end of string reached
        _("jz _end") ;if yes then jump to end mark
        _("cmp ax, bx") ;compare wchar from string with search wchar
        _("jne _loop") ;if not equal than get next wchar from string
;~      _ASMDBG_()
        _("mov word[esi - 2], cx") ;if equal replace wchar (esi - 2 is because lodsw increases pointer)
        _("jmp _loop") ;get next wchar from string
    _("_end:")
    _("ret") ;return
EndFunc

 


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
JLogan3o13

Awesome work, UEZ, as always :)


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
Chimp

Okay UEZ!
go ahead like this!  :)


small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites
UEZ

Compares two bitmap bitwise for difference and returns 0 or 1 accordingly.

 

_ASM_BitCompareBitmapsMMX.au3

#include <AssembleIt.au3>
;~ #include <GDIPlus.au3>
#include <ScreenCapture.au3>

_GDIPlus_Startup()
Global Const $hGDIBitmap1 = _ScreenCapture_Capture("", 0, 0, 199, 199)
Global Const $hGDIBitmap2 = _ScreenCapture_Capture("", 0, 0, 199, 199)
;~ Global Const $hGDIBitmap2 = _ScreenCapture_Capture("", 0, 10, 199, 209) ;just to get a diffent image

Global Const $hBitmap1 = _GDIPlus_BitmapCreateFromHBITMAP($hGDIBitmap1)
Global Const $hBitmap2 = _GDIPlus_BitmapCreateFromHBITMAP($hGDIBitmap2)

_WinAPI_DeleteObject($hGDIBitmap1)
_WinAPI_DeleteObject($hGDIBitmap2)

Local $fTimer = TimerInit()
Global $iResult = _ASM_BitCompareBitmapsMMX($hBitmap1, $hBitmap2)
ConsoleWrite("Runtime overall: " & TimerDiff($fTimer) & " ms." & @CRLF)
ConsoleWrite("Equal: " & $iResult & @CRLF)
ConsoleWrite("Image dimension: " & _GDIPlus_ImageGetWidth($hBitmap1)  & "x" & _GDIPlus_ImageGetHeight($hBitmap1) & " px" & @CRLF)

_GDIPlus_ImageDispose($hBitmap1)
_GDIPlus_ImageDispose($hBitmap2)
_GDIPlus_Shutdown()


Func _ASM_BitCompareBitmapsMMX($hBitmap1, $hBitmap2)
    Local $aDim1 = _GDIPlus_ImageGetDimension($hBitmap1), $aDim2 = _GDIPlus_ImageGetDimension($hBitmap2)
    If BitOR($aDim1[0] <> $aDim2[0], $aDim1[1] <> $aDim2[1]) Then Return False

    Local $tBitmapData1 = _GDIPlus_BitmapLockBits($hBitmap1, 0, 0, $aDim1[0], $aDim1[1], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    Local $pScan1 = $tBitmapData1.Scan0
    Local $iStride1 = $tBitmapData1.Stride * 4
    Local $tPixelData1 = DllStructCreate("dword[" & Abs($iStride1 * $aDim1[1]) & "]", $pScan1)

    Local $tBitmapData2 = _GDIPlus_BitmapLockBits($hBitmap2, 0, 0, $aDim2[0], $aDim2[1], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    Local $pScan2 = $tBitmapData2.Scan0
    Local $tPixelData2 = DllStructCreate("dword[" & Abs($iStride1 * $aDim1[1])  & "]", $pScan2)

    Local $tCodeBuffer = DllStructCreate("byte ASM[55]") ;reserve memory for ASM opcodes
    $tCodeBuffer.ASM = "0x8B7424048B7C24088B4C240CB801000000F30F6F0EF30F6F17660FEFCA660F3817C9750D83C61083C71083E90477E2EB05B800000000C3"
    Local $fTimer = TimerInit()
;~  Local $iRet = _AssembleIt("uint", "_BitCompareMMX", "ptr", DllStructGetPtr($tPixelData1), "ptr", DllStructGetPtr($tPixelData2), "int", $aDim1[0] * $aDim1[1])

    Local $aRet = DllCall("user32.dll", "uint", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), _
                          "ptr", DllStructGetPtr($tPixelData1), _
                          "ptr", DllStructGetPtr($tPixelData2), _
                          "uint", $aDim1[0] * $aDim1[1], _
                          "int", Null)

    Local $fTimer_End = TimerDiff($fTimer)
    ConsoleWrite("Runtime ASM only: " & $fTimer_End & " ms" & @CRLF)

    _GDIPlus_BitmapUnlockBits($hBitmap1, $tBitmapData1)
    _GDIPlus_BitmapUnlockBits($hBitmap2, $tBitmapData2)

;~  Return $iRet
    Return $aRet[0]
EndFunc

Func _BitCompareMMX()
    _("use32") ;32Bit!
;~  _("org " & FasmGetBasePtr($Fasm))  ;needed for assembleit debugger
    _("mov esi, dword[esp+4]") ;points to beginning of the bitmap1 in the memory (scan0)
    _("mov edi, dword[esp+8]") ;points to beginning of the bitmap2 in the memory (scan0)
    _("mov ecx, dword[esp+12]") ;amount of pixels to read (width * height)
    _("mov eax, 1") ;eax it the return value -> 1 = equal, 0 = not equal
    _("_loop1:")
        _("movdqu   xmm1,   [esi]") ;copy 4 byte to xmm1 register (128 bit) from bitmap1
        _("movdqu   xmm2,   [edi]") ;copy 4 byte to xmm1 register (128 bit) from bitmap2
        _("pxor     xmm1,   xmm2")  ;xmm1 xor xmm2 ->  0xor0 and 1xor1 = 0, otherwise 1
        _("ptest    xmm1,   xmm1") ;PTEST set the ZF flag if all bits in the result are 0 of the bitwise AND of the first source operand (first operand) and the second source operand (second operand).
        _("jnz      _NotEqual") ;xmm1 <> xmm2 because zero flag not set
        _("add esi, 16") ;get next 4 pixels from bitmap1
        _("add edi, 16") ;get next 4 pixels from bitmap2
        _("sub ecx, 4")  ;decrease pixel count by 4 -> 4 pixel will be read at once
        _("ja _loop1")  ;exit loop when all pixels were read
    _("jmp  _End")

    _("_NotEqual:")
    _("mov eax, 0") ;set return value to 0

    _("_End:")
    _("ret") ;return eax
EndFunc

 

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
UEZ

Gets the average color of a bitmap.

 

_ASM_BitmapGetAverageColorValue.au3

#include <AssembleIt.au3>
#include <GDIPlus.au3>

Global Const $sFile = FileOpenDialog("Select an image", "", "Images (*.jpg;*.bmp;*.png;*.gif;*.tif)")
If @error Then Exit MsgBox(0, "Information", "Nothing selected")

_GDIPlus_Startup()
Global Const $hBitmap = _GDIPlus_BitmapCreateFromFile($sFile)

Local $fTimer = TimerInit()
Global $iResult = _ASM_BitmapGetAverageColorValue($hBitmap)
ConsoleWrite("Runtime overall: " & TimerDiff($fTimer) & " ms." & @CRLF)
MsgBox(0, "Test", "Average color value: 0x" & Hex($iResult, 8) & @CRLF)

_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_Shutdown()


Func _ASM_BitmapGetAverageColorValue($hBitmap) ;coded by UEZ build 2016-02-08
    Local $aDim = _GDIPlus_ImageGetDimension($hBitmap)
    If @error Then Return SetError(0, 0, 0)
    Local Const $iPixels = $aDim[0] * $aDim[1]
    Local $tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aDim[0], $aDim[1], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    Local $pScan = $tBitmapData.Scan0
    Local $iStride = $tBitmapData.Stride * 4
    Local $tPixelData = DllStructCreate("dword[" & Abs($iStride * $aDim[1]) & "]", $pScan)
    Local $tStruct_ARGB = DllStructCreate("uint Alpha;uint Red;uint Green;uint Blue")

    Local $tCodeBuffer = DllStructCreate("byte ASM[75]")
    $tCodeBuffer.ASM = "0x8B7424048B7C24088B4C240C8B0689C381E3FF000000015F0C89C381E300FF0000C1EB08015F0889C381E30000FF00C1EB10015F0489C381E3000000FFC1EB18011F83C60483E90177C2C3"
    Local $fTimer = TimerInit()
;~  Local $iRet = _AssembleIt("ptr", "_ASM_BitmapCountARGBColors", _
;~                          "ptr", DllStructGetPtr($tPixelData), _
;~                          "ptr", DllStructGetPtr($tStruct_ARGB), _
;~                          "uint", $iPixels)


    Local $aRet = DllCall("user32.dll", "none", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), _
                          "ptr", DllStructGetPtr($tPixelData), _
                          "ptr", DllStructGetPtr($tStruct_ARGB), _
                          "uint", $iPixels, _
                          "int", Null)
    ConsoleWrite("Runtime ASM only: " & TimerDiff($fTimer) & " ms." & @CRLF)

    _GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)
    Local $iResult = 0x1000000 * Int($tStruct_ARGB.Alpha / $iPixels) + 0x10000 * Int($tStruct_ARGB.Red / $iPixels) + 0x100 * Int($tStruct_ARGB.Green / $iPixels) + Int($tStruct_ARGB.Blue / $iPixels)
    Return $iResult
EndFunc

Func _ASM_BitmapCountARGBColors()
    _("use32") ;32Bit!
    _("mov esi, dword[esp+4]") ;points to beginning of the bitmap in the memory (scan0)
    _("mov edi, dword[esp+8]") ;points to the beginning of the struct in the memory
    _("mov ecx, dword[esp+12]") ;amount of pixels to read (width * height)
    _("_loop1:")
        _("mov dword eax, [esi]") ;copy the current AARRGGBB value to eax

        _("mov ebx, eax")   ;make a copy of eax for "faster" access
        _("and ebx, 0x000000FF") ;mask the blue channel
        _("add dword[edi + 12], ebx") ;add blue value which is saved in the struct -> each struct value is 4 bytes long and blue starts at memory + 12

        _("mov dword ebx, eax")
        _("and ebx, 0x0000FF00")    ;now the same with green channel
        _("shr ebx, 8")             ;shift the green value to the right -> 0000GG00 - > 000000GG
        _("add dword[edi + 8], ebx") ;add green value

        _("mov dword ebx, eax")
        _("and ebx, 0x00FF0000") ;and red channel
        _("shr ebx, 16")        ;-> 00RR0000 - > 000000RR
        _("add dword[edi + 4], ebx") ;add red value

        _("mov dword ebx, eax")
        _("and ebx, 0xFF000000")    ;and finally with alpha channel
        _("shr ebx, 24")            ;-> AA000000 - > 000000AA
        _("add dword[edi], ebx") ;add alpha value

        _("add esi, 4") ;get next color word from bitmap
        _("sub ecx, 1") ;decrease pixel count
        _("ja _loop1")  ;if pixel count = zero then exit loop
    _("ret") ;finished
EndFunc

 

_ASM64_BitmapGetAverageColorValue.au3

#AutoIt3Wrapper_UseX64=y
#include <GDIPlus.au3>
#include <Memory.au3>

Global $sFile = FileOpenDialog("Select a bitmap", "", "Image (*.jpg;*.png;*.bmp;*.gif;*.tif)")
If @error Then Exit

_GDIPlus_Startup()
Global Const $hBitmap = _GDIPlus_BitmapCreateFromFile($sFile)

Global $fTimer = TimerInit()
Global $iResult = ASM64_BitmapGetAverageColor($hBitmap)
ConsoleWrite("Runtime overall: " & TimerDiff($fTimer) & " ms" & @CRLF)
ConsoleWrite("Image dimension: " & _GDIPlus_ImageGetWidth($hBitmap) & "x" & _GDIPlus_ImageGetHeight($hBitmap) & " px" & @CRLF)

MsgBox(0, "Test", "Average color value: 0x" & Hex($iResult, 8) & @CRLF & @CRLF)

_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_Shutdown()


Func ASM64_BitmapGetAverageColor($hBitmap)
    Local $aDim = _GDIPlus_ImageGetDimension($hBitmap)
    If @error Then Return SetError(0, 0, 0)
    Local Const $iPixels = $aDim[0] * $aDim[1]
    Local $tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aDim[0], $aDim[1], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    Local $pScan = $tBitmapData.Scan0
    Local $iStride = $tBitmapData.Stride * 4
    Local $tPixelData = DllStructCreate("dword[" & Abs($iStride * $aDim[1]) & "]", $pScan)
    Local $tStruct_ARGB = DllStructCreate("uint64 Alpha;uint64 Red;uint64 Green;uint64 Blue")

    Local $tCodeBuffer = _DllStructCreate64("byte ASM[158]")
    $tCodeBuffer.ASM = "0x575653554889CE4889D74C89C3488B06504825FF000000480147185848C1E8204825FF00000048014718488B065048C1E8084825FF000000480147105848C1E8284825FF00000048014710488B065048C1E8104825FF000000480147085848C1E8304825FF00000048014708488B065048C1E8184825FF0000004801075848C1E8384825FF0000004801074883C6084883EB020F8774FFFFFF5D5B5E5FC3"

    Local $fTimer = TimerInit()
    DllCallAddress("uint:cdecl", DllStructGetPtr($tCodeBuffer), "ptr", DllStructGetPtr($tPixelData), "ptr", DllStructGetPtr($tStruct_ARGB), "int", $iPixels)
    Local $fTimer_End = TimerDiff($fTimer)
    ConsoleWrite("Runtime ASM only: " & $fTimer_End & " ms" & @CRLF)

    _GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData)
    Local $iResult = 0x1000000 * Int(Round($tStruct_ARGB.Alpha / $iPixels, 0)) + 0x10000 * Int(Round($tStruct_ARGB.Red / $iPixels, 0)) + 0x100 * Int(Round($tStruct_ARGB.Green / $iPixels, 0)) + Int(Round($tStruct_ARGB.Blue / $iPixels, 0))
    Return $iResult
EndFunc   ;==>ASM64_BitmapGetAverageColor

Func _DllStructCreate64($struct) ;align auf 16-byte adresse
    Local $temp = DllStructCreate($struct)
    Local $tempsize = DllStructGetSize($temp) + 64
    Local $ptr = DllStructGetPtr($struct)
    Local $a1 = Mod(Number($ptr), 64)
    Local $temp = 0
    Local $mem = _MemVirtualAlloc($ptr + $a1, $tempsize, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
    Local $a2 = Mod(Number($mem), 64) ;rest div 16 adresse = offset
    Local $sstruct = DllStructCreate($struct, (Number($mem) - $a2 + 64))
    Return $sstruct ;auf 16 alingned pointer
EndFunc   ;==>_DllStructCreate64_2

#cs _ASM64_BitmapCountARGBColors
    use64           ;64Bit! -> ;first 4 parameters will be saved in rcx,rdx,r8,r9

    push rdi
    push rsi
    push rbx
    push rbp

    mov rsi, rcx    ;pointer to first pixel in memory from the bmp
    mov rdi, rdx    ;pointer to memory from struct
    mov rbx, r8     ;amount of pixels

    loop1:

    mov rax, [rsi]          ;read 2 pixels to 64 bit register
    push rax                ;save 64 bit register
    and rax, 0xFF           ;mask blue color value from lower 32 bit register
    add [rdi + 24], rax     ;add blue color value to struct
    pop rax                 ;restore saved register to add blue from higher 32 bit register
    shr rax, 32             ;shift color value
    and rax, 0xFF           ;mask color value
    add [rdi + 24], rax     ;add blue color value to struct

    mov rax, [rsi]          ;read 2 pixels to 64 bit register
    push rax                ;save 64 bit register
    shr rax, 8              ;shift green color value
    and rax, 0xFF           ;mask green color value from lower 32 bit register
    add [rdi + 16], rax     ;add green color value to struct
    pop rax                 ;restore saved register to add green from higher 32 bit register
    shr rax, 40             ;shift color value
    and rax, 0xFF           ;mask color value
    add [rdi + 16], rax     ;add green color value to struct

    mov rax, [rsi]          ;read 2 pixels to 64 bit register
    push rax                ;save 64 bit register
    shr rax, 16             ;shift red color value
    and rax, 0xFF           ;mask red color value from lower 32 bit register
    add [rdi + 8], rax      ;add red color value to struct
    pop rax                 ;restore saved register to add red from higher 32 bit register
    shr rax, 48             ;shift color value
    and rax, 0xFF           ;mask color value
    add [rdi + 8], rax      ;add red color value to struct

    mov rax, [rsi]          ;read 2 pixels to 64 bit register
    push rax                ;save 64 bit register
    shr rax, 24             ;shift alpha color value
    and rax, 0xFF           ;mask alpha color value from lower 32 bit register
    add [rdi], rax          ;add alpha color value to struct
    pop rax                 ;restore saved register to add alpha from higher 32 bit register
    shr rax, 56             ;shift color value
    and rax, 0xFF           ;mask color value
    add [rdi], rax          ;add alpha color value to struct

    add rsi, 8  ;get next 2 pixels
    sub rbx, 2
    ja loop1

    pop rbp
    pop rbx
    pop rsi
    pop rdi

    ret
#ce

 

AndyG's x86 version using MMX/SSE from here

_ASM_BitmapGetAverageColorValue_MMX.au3

#include <assembleit2_64.au3>
#include <WinAPI.au3>

#AutoIt3Wrapper_UseX64=n


#cs _averagepixel                        ;Pixel ((A+B+C+D)/4)
    Use32                                ;32Bit!

    mov edi,dword[esp+4]                 ;pointer bitmap
    mov ecx,dword[esp+8]                 ;width bitmap
    mov ebx,dword[esp+12]                ;height bitmap


    mov eax,ebx                          ;h
    mul ecx                              ;w*h
    mov ecx,eax                          ;w*h=number of pixel
    movd xmm3,ecx                        ;0,0,0,w*h
    pshufd xmm3,xmm3,0                   ;w*h,w*h,w*h,w*h

    sub ecx,1                            ;from 0 to (w*h)-1
    shl ecx,2                            ;w*h*4 bytes

    mov edx,0
    movd xmm1,edx                        ;xmm1 ARGB every pixel
    movd xmm2,edx                        ;xmm2 sumn all A,R,G,B

    _asmdbg_()

    @pixel_count:                        ;all pixel

    movd xmm0,[edi+ecx]                  ;pixel ARGB into xmm
    PUNPCKLBW xmm0,xmm1                  ;000000000A0R0G0B
    PUNPCKLBW xmm0,xmm1                  ;000A000R000G000B
    PADDD xmm2,xmm0                      ;add all A,R,G,B

    sub ecx,4
    jnz @pixel_count                     ;loop all pixel

    _asmdbg_()

    movdqa xmm6,xmm2                     ;save xmm2

    PSRLDQ xmm2,8                        ;shift right 8 bytes = 0,0,A,R
    CVTDQ2PD xmm4,xmm2                   ;convert to double
    CVTDQ2PD xmm5,xmm3                   ;convert to double
    DIVPD xmm4,xmm5                      ;divide sum_all_pixel / number_all_pixel
    CVTPD2DQ xmm7,xmm4                   ;convert double to integer
    PSLLDQ xmm7,8                        ;shift left 8 bytes = 000A000R00000000

   _asmdbg_()

    MOVDQA xmm2,xmm6                     ;restore xmm2 A,R,G,B
    CVTDQ2PD xmm4,xmm2                   ;convert to double 0,0,G,B
    CVTDQ2PD xmm5,xmm3                   ;convert to double
    DIVPD xmm4,xmm5                      ;divide sum_all_pixel / number_all_pixel
    CVTPD2DQ xmm6,xmm4                   ;convert double to integer = 00000000000G000B
    ORPS xmm7,xmm6                       ;xmm7=000A000R000G000B =average color all pixel

    PACKUSWB xmm7,xmm7                   ;
    PACKUSWB xmm7,xmm7                   ;ARGBARGBARGBARGB
    movd eax,xmm7                        ;return average ARGB

    ret

#ce



Global $hDLL_User32 = DllOpen("user32.dll")
$DesktopWidth = DllCall($hDLL_User32, "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
$DesktopWidth = $DesktopWidth[0]
$DesktopHeight = DllCall($hDLL_User32, "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight
$DesktopHeight = $DesktopHeight[0]

Global $ptr_bitmap, $hbmp                ;byref _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp)

$hdc_bitmap = _CreateNewBmp32($DesktopWidth, $DesktopHeight, $ptr_bitmap, $hbmp) ;hdc empty bitmap
$hdc_desktop = _WinAPI_GetDC(0)          ;hdc desktop

_WinAPI_BitBlt($hdc_bitmap, 0, 0, $DesktopWidth, $DesktopHeight, $hdc_desktop, 0, 0, $SRCCOPY);bitblt desktop into bitmap

;#############################################################################################
;if you need the assembled code, uncomment the following lines and use DllCallAddress()
;~ $binarycode = _AssembleIt2("retbinary", "_averagepixel") ;gibt nur den assemblierten code zurück
;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $binarycode = ' & $binarycode & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $binarycode = ' & StringLen($binarycode) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;nur für dllcalladdress() benötigt, den binarycode braucht man nur ein mal erstellen
;~ $tCodeBuffer = _dllstructcreate64("byte[" & StringLen($binarycode) / 2 - 1 & "]") ;reserve Memory for opcodes
;~ DllStructSetData($tCodeBuffer, 1, $binarycode)
;~     $ret = DllCallAddress("uint:cdecl", DllStructGetPtr($tCodeBuffer), "ptr", $ptr_bitmap, "int_ptr", $DesktopWidth, "int_ptr", $DesktopHeight)
;~     ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret[0] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;~     $ret = $ret[0]
;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;#############################################################################################


$ret = _AssembleIt2("uint", "_averagepixel", "ptr", $ptr_bitmap, "int_ptr", $DesktopWidth, "int_ptr", $DesktopHeight)
$ret=hex($ret,8)
MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$ret' & @CRLF & @CRLF & 'Return:' & @CRLF & $ret) ;### Debug MSGBOX


_DeleteBitmap32($hdc_bitmap, $ptr_bitmap, $hbmp) ;Ressourcen freigeben





Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten
    $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
    DllStructSetData($tBMI, 1, DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
    DllStructSetData($tBMI, 2, $iwidth)
    DllStructSetData($tBMI, 3, -$iheight) ;minus =standard = bottomup
    DllStructSetData($tBMI, 4, 1)
    DllStructSetData($tBMI, 5, 32)       ;32 Bit = 4 Bytes => AABBGGRR
    $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
    $hbmp = $adib[0]                     ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
    $ptr = $adib[4]                      ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
    _WinAPI_SelectObject($hcdc, $hbmp)   ;objekt hbitmap in DC
    Return $hcdc                         ;DC der Bitmap zurückgeben
EndFunc                                  ;==>_CreateNewBmp32

Func _DeleteBitmap32($DC, $ptr, $hbmp)
    _WinAPI_DeleteDC($DC)
    _WinAPI_DeleteObject($hbmp)
    $ptr = 0
EndFunc                                  ;==>_DeleteBitmap

 

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
gil900

Great job
Maybe you're the one who can make it work better.
If this method possible to done in Assembler then perhaps my bad solution that takes 30 seconds can take  much less time in Assembler

Share this post


Link to post
Share on other sites
wakillon

Does _ASM64_BitmapCountARGBColors.au3  sensed to return colors count ?


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

Share this post


Link to post
Share on other sites
UEZ

Sorry, it was a typo in the file name -> corrected now.


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

Selection of finest graphical examples at Codepen.io

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

Share this post


Link to post
Share on other sites
wakillon

Ok but what's difference between  _ASM64_BitmapGetAverageColorValue.au3 and  _ASM64_BitmapGetAverageColor.au3 ?

 


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

Share this post


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

_ASM64_BitmapGetAverageColor.au3

Where did you get this name?

 

Further, I would say it is the same.


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

Selection of finest graphical examples at Codepen.io

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

Share this post


Link to post
Share on other sites
wakillon

Sorry for the typo error, it's about function names.

Post #12 :  Functions _ASM64_BitmapGetAverageColorValue and  _ASM64_BitmapGetAverageColor


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
kcvinu

OMG !.. I can't believe this... Assembly code inside autoit ?. Is it really possible?

Oh, i have tried to learn HLA once and stopped because lack of time. That is all my assembly knowledge. Anyhow, i am interested in it. So, now i think i can use asm code in autoit. Want to learn more. 


My Contributions

UDF Link Viewer   --- A tool to visit the links of some most important UDFs 

 Includer_2  ----- A tool to type the #include statement automatically 

 Digits To Date  ----- date from 3 integer values

PrintList ----- prints arrays into console for testing.

 Alert  ------ An alternative for MsgBox 

 MousePosition ------- A simple tooltip display of mouse position

GRM Helper -------- A littile tool to help writing code with GUIRegisterMsg function

Access_UDF  -------- An UDF for working with access database files. (.*accdb only)

 

Share this post


Link to post
Share on other sites
mLipok

@UEZ do you have an example how to Reverse Byte Order ? I'm not talking about reversing bits in byte, but reversing entire buferes ?

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library
 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-10-15

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Bilgus
      By Bilgus
      User asked about checking for cpuid features that weren't supported by _WinAPI_IsProcessorFeaturePresent()
      I researched it a bit and found that 'Andreik' executed some asm on the fly to get vendorID which quite frankly is amazing
      So I ran with it and created a function that is more general purpose and good for x86 and x64
       
      #include <String.au3> #include <Memory.au3> Test(); Func Test() Local $sFeat1D = "" Local $aFeat1D[32] = ["FPU","VME","DE","PSE","TSC","MSR","PAE","MCE", _ "CX8","APIC","?","SEP","MTRR","PGE","MCA","CMOV", _ "PAT","PSE36","PSN","CLFSH","?","DS","ACPI","MMX", _ "FXSR","SSE","SSE2","SS","HTT","TM","IA64","PBE"] Local $iEdx = CpuID(0x00000001)[3] For $i = 0 to 31 if Get_BitGroup_Dword($iEdx, $i, $i) = 1 Then $sFeat1D &= $aFeat1D[$i] & " " Next Local $sFeat1C = "" Local $aFeat1C[32] = ["SSE3","PCLMULQDQ","DTES64","MONITOR","DS-CPL","VMX","SMX","EST", _ "TM2","SSSE3","CNTX-ID","SDBG","FMA","CX16","XTPR","PDCM", _ "?","PCID","DCA","SSE4.1","SSE4.2","X2APIC","MOVBE","POPCNT", _ "TSC-DEADLINE","AES","XSAVE","OSXSAVE","AVX","F16C","RDRND","HYPERVISOR"] Local $iEcx = CpuID(0x00000001)[2] For $i = 0 to 31 if Get_BitGroup_Dword($iEcx, $i, $i) = 1 Then $sFeat1C &= $aFeat1C[$i] & " " Next MsgBox(0, "CpuId", CpuId_Vendor() & @CRLF & CpuId_Processor_Brand() & @cRLF & $sFeat1D & @cRLF & $sFeat1C) EndFunc ;---------------------------------------------------------------------------- Func Get_BitGroup_Dword($iDword, $iLsb, $iMsb) Local $iVal1 = BitShift($iDword, $iLsb) ;>> Local Const $iMask = 0xFFFFFFFF Local $iVal2 = BitNOT(BitShift($iMask, ($iLsb-$iMsb-1))) ;~<< Return BitAND($iVal1, $iVal2) EndFunc Func RevBinStr($val) Local $rev For $n = BinaryLen($val) To 1 Step -1 $rev &= Hex(BinaryMid($val, $n, 1)) Next Return BinaryToString("0x" & $rev) EndFunc Func CpuId($iLeaf, $iSubLeaf = 0) Local $aE[4] = [0, 0, 0, 0] Local $aCPUID = __Cpuid_Get_Leaf(BitAND($iLeaf, 0xFFFF0000)) ;need to get max first If @error or $aCPUID[0] < $iLeaf Then Return SetError(1, @error, $aE) Return __Cpuid_Get_Leaf($iLeaf, $iSubLeaf) EndFunc Func CpuId_Vendor() Local $aCPUID = __Cpuid_Get_Leaf(0x0) Return RevBinStr($aCPUID[1]) & RevBinStr($aCPUID[3]) & RevBinStr($aCPUID[2]) EndFunc Func CpuId_Processor_Brand() Local $sPBS = "NOT SUPPORT" Local $aCPUID = __Cpuid_Get_Leaf(0x80000000) ;need to get max extended value first If $aCPUID[0] < 0x80000004 Then Return SetError(1, 0, $sPBS) $aCPUID = __Cpuid_Get_Leaf(0x80000002) $sPBS = RevBinStr($aCPUID[0]) & RevBinStr($aCPUID[1]) & RevBinStr($aCPUID[2]) & RevBinStr($aCPUID[3]) $aCPUID = __Cpuid_Get_Leaf(0x80000003) $sPBS &= RevBinStr($aCPUID[0]) & RevBinStr($aCPUID[1]) & RevBinStr($aCPUID[2]) & RevBinStr($aCPUID[3]) $aCPUID = __Cpuid_Get_Leaf(0x80000004) $sPBS &= RevBinStr($aCPUID[0]) & RevBinStr($aCPUID[1]) & RevBinStr($aCPUID[2]) & RevBinStr($aCPUID[3]) Return StringStripWS($sPBS, 7) EndFunc Func CpuId_Signature_Info() Local $aRet[6] = [0, 0, 0, 0, 0 ,0] Local Enum $eStep = 0, $eModel, $eFamily, $eType, $eExtModel, $eExtFamily Local $aCPUID = __Cpuid_Get_Leaf(0x00000000) ;need to get max id value first If $aCPUID[0] < 0x00000001 Then Return SetError(1, 0, $aRet) $aCPUID = __Cpuid_Get_Leaf(0x00000001) Local $iEax = $aCPUID[0] $aRet[$eStep] = Get_BitGroup_Dword($iEax, 0, 3) $aRet[$eModel] = Get_BitGroup_Dword($iEax, 4, 7) $aRet[$eFamily] = Get_BitGroup_Dword($iEax, 8, 11) $aRet[$eType] = Get_BitGroup_Dword($iEax, 12, 13) $aRet[$eExtModel] = Get_BitGroup_Dword($iEax, 16, 19) $aRet[$eExtFamily] = Get_BitGroup_Dword($iEax, 20, 27) Return $aRet EndFunc Func __Cpuid_Get_Leaf($iLeaf, $iSubLeaf = 0) Local Const $sCode32 = "0x" & _ ; use32 "55" & _ ; push ebp "89E5" & _ ; mov ebp, esp "53" & _ ; push ebx "8B4508" & _ ; mov eax, [ebp + 08] ;$iLeaf "8B4D0C" & _ ; mov ecx, [epb + 12] ;$iSubLeaf "31DB" & _ ; xor ebx, ebx ; set ebx = 0 "31D2" & _ ; xor edx, edx ; set edx = 0 "0FA2" & _ ; cpuid "8B6D10" & _ ; mov ebp, [ebp + 16] ;ptr int[4] "894500" & _ ; mov [ebp + 00], eax "895D04" & _ ; mov [edi + 04], ebx "894D08" & _ ; mov [edi + 08], ecx "89550C" & _ ; mov [edi + 12], edx "5B" & _ ; pop ebx "5D" & _ ; pop ebp "C3" ; ret Local Const $sCode64 = "0x" & _ ; use 64 "53" & _ ; push rbx "89C8" & _ ; mov eax, ecx ;$ileaf "89D1" & _ ; mov ecx, edx ;$iSubleaf "31DB" & _ ; xor ebx, ebx "31D2" & _ ; xor edx, edx "0FA2" & _ ; cpuid "67418900" & _ ; mov [r8d], eax ;ptr int[4] "6741895804" & _ ; mov [r8d + 04], ebx "6741894808" & _ ; mov [r8d + 08], ecx "674189500C" & _ ; mov [r8d + 12], edx "5B" & _ ; pop rbx "C3" ; ret Local Const $sCode = @AutoItX64 ? $sCode64 : $sCode32 Local Const $iSize = BinaryLen($sCode) Local $aE_X[4] = [0, 0, 0, 0] Local $iErr Do $iErr = 1 Local $pBuffer = _MemVirtualAlloc(0, $iSize, BitOR($MEM_COMMIT, $MEM_RESERVE), $PAGE_EXECUTE_READWRITE) If $pBuffer = 0 Then ExitLoop $iErr = 2 DllStructSetData(DllStructCreate("BYTE[" & $iSize & "]", $pBuffer), 1, $sCode) If @error Then ExitLoop $iErr = 3 Local $tRet = DllStructCreate("int EAX;int EBX;int ECX;int EDX;") If @error Then ExitLoop $iErr = 4 Local $aRet = DllCallAddress("uint:cdecl", $pBuffer, "int", Int($iLeaf), "int", Int($iSubLeaf), "ptr", DllStructGetPtr($tRet)) If @error Then ExitLoop $iErr = 0;Success? Until(True) _MemVirtualFree($pBuffer, $iSize, $MEM_DECOMMIT) ConsoleWrite($iErr <> 0 ? "Error " & $iErr & @CRLF : Hex($aRet[0], 8) & " Leaf: 0x" & Hex($iLeaf, 8) & " SubLeaf: 0x" & Hex($iSubLeaf, 8) & @CRLF) For $i = 0 To $iErr <> 0 ? -1 : UBound($aE_X) - 1 $aE_X[$i] = "0x" & Hex(DllStructGetData($tRet, $i + 1)) ConsoleWrite("E" & Chr(65 + $i) & "X: " & $aE_X[$i] & @CRLF) Next Return SetError($iErr, @error, $aE_X) EndFunc  
      Most of the processor features can be checked with CPUID(0xXXXXXXXX) and using GET_BitGroup_Dword($iE_X, $iBitpos, $iBitpos) as shown in the example
      I broke the weirder ones out into their own specialized functions
    • UEZ
      By UEZ
      Simple snowfall using GDI+ & ASM.
      Thanks to Eukalyptus for the ASM codes. 
       
      If the script runs too slow reduce the amount of flakes in line 48.
       
      For more information please visit the forum thread.
       
      Happy snowing.
    • UEZ
      By UEZ
      Simple snowfall using GDI+ & ASM.
      Thanks to Eukalyptus for the ASM codes.
       
      If the script runs too slow reduce the amount of flakes in line 115.
       
      You can switch now between local MP3 stream and internet stream. Further you can also set the scrolling text.
      Command line options:
      -local "<path to local MP3 file>"
      -url "<URL to a MP3 file>"
      -text "<your individual text>"
      Max. text length are 500 chars.
      Don't forget the double quotes after the parameters!
       
      Download: click me
       

       
      Happy snowing and romantic moments...
    • UEZ
      By UEZ
      Here a little Outro for all the animation lovers which I created when I played around with spheres.
      Download:    Sphere Outro.7z     --=> 7-Zip archive
       

       
      Credits:
      Eukalyptus (GDIPlusEx.au3 -> don't search for it because it is not released for the public )
      wakillon & TitchySID.dll creator
       
      If it is too slow reduce the stars in line 77 (-=> $iStars)
      If you cannot see the fade in/out text change in line 152 the font name from "Plantagenet Cherokee" to "Times New Roman"!
       

    • UEZ
      By UEZ
      I was asked by mesale0077 whether I could write a code to transfer an image to pixel coordinates to have the perforated GUI effect which was introduced by GreenCan.
       
      Here the result:

       
      Download:  Perforator v1.25 build 2015-06-30 beta.7z (previous downloads: 501)
       
      Requires AutoIt v3.3.11.5 or higher!
      Thanks to GreenCan for the original perforated GUI code, eukalyptus for the optimized pixel array code, mesale0077 for additional help and suggestions, AndyG for the ASM codes, Ward for MemoryDLL.au3, Yashied for the _WinAPIEx.au3 lib, http://www.cooltext.com for the Logo, AZIO for this GUI design, skuter for XM tune (.in your arms.) and un4seen for BassMod.dll.
       
       
      Example 1
      #include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $aPixelArray = _PixelCoordinate() $aSize = StringSplit($aPixelArray[0], ",", 2) $iW = $aSize[0] $iH = $aSize[1] Const $sTitle = "Perforator " Const $sVersion = "v0.8.0 build 2013-03-15 beta" $hGUI_About = GUICreate("About", 340, 220, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_POPUP)) GUISetBkColor(0xE1E3E7) GUICtrlCreateLabel($sTitle & " ", 0, 0, 340, 53, $SS_CENTER) GUICtrlSetFont(-1, 32, 800, -1, "Arial", 4) GUICtrlSetColor(-1, 0x3a6a7e) GUICtrlSetBkColor(-1, 0xF1F1EF) GUICtrlCreateLabel("-", 2, 54, 338, 1, $SS_ETCHEDHORZ) GUISetFont(9, 600, -1, "Arial") GUICtrlCreateLabel("Version: " & @TAB & $sVersion, 15, 70, -1, 17) GUISetFont(9, 400, -1, "Arial") GUICtrlCreateLabel("Credits:" & @TAB & @TAB & "GreenCan for the idea and initial code" & @CRLF & _ @TAB & @TAB & @TAB & "eukalyptus for code gen optimization" & @CRLF & _ @TAB & @TAB & @TAB & "mesale0077 for additional help" & @CRLF & _ @TAB & @TAB & @TAB & "AndyG for ASM routines" & @CRLF & _ @TAB & @TAB & @TAB & "Yashied for WinAPIEx.au3" & @CRLF & _ @TAB & @TAB & @TAB & "http://www.cooltext.com for the Logo" & @CRLF & _ @TAB & @TAB & @TAB & "AZIO for this GUI design", 15, 100, 300, -1) GUICtrlSetFont(-1, 8, 400, -1, "Arial", 4) $iBtnX = GUICtrlCreateButton("X", 310, 190, 24, 24) $fScale = 0.5 $hRegion = _WinAPI_GuiImageHole(HWnd($hGUI_About), $aPixelArray, 250, 30, $iW * $fScale, $iH * $fScale, $fScale) GUISetState(@SW_SHOW, $hGUI_About) Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iBtnX ExitLoop EndSwitch Until False _WinAPI_DeleteObject($hRegion) GUIDelete($hGUI_About) Exit Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True) Local $size = WinGetPos(HWnd($hWnd)) Local $iHwndWidth = $size[2] Local $iHwndHeight = $size[3] If $bCorrection Then $iX += _WinAPI_GetSystemMetrics($SM_CXDLGFRAME) $iY += _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 EndIf Local $aRegion, $aRegionMask, $hDll = DllOpen("gdi32.dll") $aRegion = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", 0, "int", 0) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iX, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iHwndWidth, "int", $iY) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $iWidth * $fScale, "int", 0, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", $iY + $iHeight * $fScale, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) Local $i, $aBlock, $aRet For $i = 1 To UBound($aPixelArray) - 1 $aBlock = StringSplit($aPixelArray[$i], ",", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $aBlock[0] * $fScale, "int", $iY + $aBlock[1] * $fScale, "int", $iX + $aBlock[2] * $fScale, "int", $iY + $aBlock[3] * $fScale) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) _WinAPI_DeleteObject($aRegionMask[0]) Next DllClose($hDLL) DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $hWnd, "handle", $aRegion[0], "bool", 1) Return $aRegion[0] EndFunc ;==>_WinAPI_GuiImageHole Func _PixelCoordinate() #region pixel coordinates Local $aPixelArray[151] = [ _ "120,35","50,0,63,3","7,0,44,12","0,0,7,2","44,0,50,2","90,0,93,9","63,0,90,2","93,0,120,1","93,1,96,3","96,1,98,2","108,1,115,2","112,4,121,17","117,1,121,4","1,2,3,4","3,2,4,3","44,2,46,3","66,2,73,5","73,2,77,3","88,2,90,3","114,3,117,4","116,2,117,3","44,3,45,4","50,5,61,17","50,3,60,5","60,3,61,4","73,3,74,4","93,3,94,4","74,5,85,10","77,4,80,5","95,4,101,12","35,13,46,35","44,6,46,13","44,5,45,6","66,5,70,8","70,5,71,6","85,6,90,10","89,5,90,6","93,6,95,9","94,5,95,6","101,5,104,9","107,9,112,19","110,6,112,9","111,5,112,6","0,18,4,35","1,10,4,18","1,7,3,10","1,6,2,7","61,6,62,19","72,8,74,10","73,6,74,8","104,6,106,7","104,7,105,8","108,8,110,9","109,7,110,8","66,18,70,35","66,8,68,18","68,8,69,9","90,9,91,10","101,9,103,10","74,12,97,17","93,10,95,12","101,10,102,11","104,12,107,18","105,11,107,12","106,10,107,11","92,11,93,12","7,12,9,13","17,12,19,14","16,12,17,13","19,12,20,13","25,12,30,14","24,12,25,13","30,12,31,13","37,12,44,13","73,12,74,16","72,12,73,14","97,12,100,14","7,13,8,14","102,14,104,18","103,13,104,14","13,21,24,35","17,15,21,21","17,14,18,15","26,14,28,15","27,18,35,35","31,14,35,18","97,14,99,15","8,15,13,19","7,15,8,18","29,15,31,18","97,15,98,16","21,17,23,21","21,16,22,17","28,16,29,18","100,17,102,18","101,16,102,17","13,17,14,18","55,17,60,20","52,17,55,19","51,17,52,18","60,17,61,19","68,17,69,18","78,17,87,20","75,17,78,18","89,17,94,20","87,17,89,19","94,17,96,18","112,17,116,19","116,17,118,18","114,21,120,35","117,19,120,21","119,17,120,19","15,19,17,21","16,18,17,19","77,18,78,19","94,18,95,19","9,19,13,20","23,19,24,21","46,23,62,35","46,19,47,23","70,22,76,35","70,19,71,22","111,19,113,20","14,20,15,21","60,21,62,23","61,20,62,21","71,20,72,22","85,22,103,35","88,20,91,22","91,20,92,21","116,20,117,21","4,23,13,35","4,21,5,23","47,21,49,23","62,24,66,35","64,22,66,24","65,21,66,22", _ "72,21,74,22","86,21,88,22","95,21,99,22","5,22,6,23","11,22,13,23","49,22,50,23","58,22,60,23","103,23,114,35","112,22,114,23","63,23,64,24","76,23,85,35","25,33,27,35","26,32,27,33","24,34,25,35"] #endregion Return $aPixelArray EndFunc ;==>_PixelCoordinate()  
      Example 2
      #include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Global Const $iW = 300, $iH = 280 Global Const $iFrameCount = 23 ;real frame count is +1 because 0 based calculation Global $aAnim[$iFrameCount + 1], $i, $j, $aTmp, $iDelay, $iMin = 0xFFFF For $i = 0 To $iFrameCount $aAnim[$i] = Call("_PixelCoordinates" & $i) ;create an array with arrays as values $aTmp = $aAnim[$i] $j = Int(StringRegExpReplace($aTmp[0], "(\d+),.*", "$1")) If $j < $iMin Then $iMin = $j ;minimum frame delay value Next $iDelay = Max($iMin - 40, 30) Global $aFrame0 = $aAnim[0] ;content of $aFrame0[0] is <anim delay>,<anim witdh>x<anim height> Global Const $iAnimWidth = StringRegExpReplace($aFrame0[0], "\d+,(\d+)x\d+", "$1") ;extract width Global Const $iAnimHeight = StringRegExpReplace($aFrame0[0], "\d+,\d+x(\d+)", "$1") ;extract height Global $hGUI = GUICreate("Test", $iW, $iH) GUISetBkColor(0x003388) Global $iLabel = GUICtrlCreateLabel("Perforator Demo", 0, 0, $iW, 50, $SS_CENTER) GUICtrlSetFont(-1, 24, 400, 0, "Comic Sans MS", 5) GUICtrlSetColor(-1, 0xF0F0F0) Global $iLabel2 = GUICtrlCreateLabel("-", 2, 54, $iW - 4, 1, $SS_ETCHEDHORZ) Global $iEdit = GUICtrlCreateEdit("Demo coded by UEZ 2013", 120, 70, 165, 145) ControlFocus($hGUI, "", $iLabel2) Global $iBtnX = GUICtrlCreateButton("Exit", $iW - 40, $iH - 40, 30, 30) GUISetState() Global Const $iDeltaX = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME) Global Const $iDeltaY = _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 Global Const $size = WinGetPos(HWnd($hGUI)) Global Const $iHwndWidth = $size[2], $iHwndHeight = $size[3] Global $hDLL_GDI32 = DllOpen("gdi32.dll") Global $hDLL_User32 = DllOpen("user32.dll") GUIRegisterMsg($WM_TIMER, "PlayAnim") ;$WM_TIMER = 0x0113 DllCall("User32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iDelay, "int", 0) Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iBtnX GUIRegisterMsg($WM_TIMER, "") GUIDelete() DllClose($hDLL_GDI32) DllClose($hDLL_User32) Exit EndSwitch Until False Func Max($a, $b) If $a > $b Then Return $a Return $b EndFunc Func PlayAnim() Local Static $f = 0 Local $aDelay = $aAnim[$f] Local $iDelay = StringRegExpReplace($aDelay[0], "(\d+),.*", "$1") Local Static $iTimer = TimerInit() DllCall($hDLL_GDI32, "bool", "DeleteObject", "handle", _WinAPI_GuiImageHole($hGUI, $aDelay, 0, 70, $iAnimWidth, $iAnimHeight)) ;position anim at x = 0 and y = 70 If TimerDiff($iTimer) > $iDelay Then $f += 1 $iTimer = TimerInit() EndIf If $f > $iFrameCount Then $f = 0 EndFunc Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True) If $bCorrection Then $iX += $iDeltaX $iY += $iDeltaY EndIf Local $aRegion, $aRegionMask $aRegion = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", 0, "int", 0, "int", 0, "int", 0) $aRegionMask = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iX, "int", $iHwndHeight) DllCall($hDLL_GDI32, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iHwndWidth, "int", $iY) DllCall($hDLL_GDI32, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", $iX + $iWidth * $fScale, "int", 0, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDLL_GDI32, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", 0, "int", $iY + $iHeight * $fScale, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDLL_GDI32, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) Local $i, $aBlock, $aRet For $i = 1 To UBound($aPixelArray) - 1 $aBlock = StringSplit($aPixelArray[$i], ",", 2) $aRegionMask = DllCall($hDLL_GDI32, "int", "CreateRectRgn", "int", $iX + $aBlock[0] * $fScale, "int", $iY + $aBlock[1] * $fScale, "int", $iX + $aBlock[2] * $fScale, "int", $iY + $aBlock[3] * $fScale) DllCall($hDLL_GDI32, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $aRegionMask[0]) Next DllCall($hDLL_User32, "int", "SetWindowRgn", "hwnd", $hWnd, "handle", $aRegion[0], "bool", 1) Return $aRegion[0] EndFunc ;==>_WinAPI_GuiImageHole #region Func _PixelCoordinates0() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,13,70,24;0,0,66,13;68,33,128,107;76,0,128,33;70,0,76,13;66,0,70,3;66,3,67,4;69,3,70,5;66,9,68,11;66,7,67,9;68,9,70,10;69,7,70,9;69,10,70,11;66,11,67,13;67,12,68,13;69,12,70,13;70,13,71,14;73,13,76,18;71,14,73,16;72,13,73,14;70,20,73,29;70,15,71,20;71,16,72,17;71,18,72,20;75,18,76,22;74,18,75,19;73,22,74,33;0,24,35,106;35,24,48,51;48,24,53,37;53,24,56,25;62,24,69,32;61,24,62,26;60,24,61,25;69,24,70,31;74,24,75,26;53,25,54,27;74,28,76,33;75,27,76,28;70,29,71,30;70,31,73,33;72,29,73,31;53,32,55,36;53,30,54,32;60,32,66,34;61,30,62,32;66,32,67,33;69,32,70,33;58,34,62,35;59,33,60,34;58,35,60,36;66,36,68,44;67,35,68,36;53,36,54,37;60,37,62,38;61,36,62,37;65,36,66,39;48,37,50,40;59,38,60,39;48,40,49,45;51,40,52,44;48,53,53,59;49,46,52,53;49,43,51,46;61,43,62,44;57,44,58,45;62,44,63,45;66,46,68,49;67,44,68,46;61,45,62,47;57,47,59,48;63,48,64,49;48,49,49,50;61,54,68,58;62,50,64,53;61,49,63,50;64,49,65,52;67,49,68,52;61,50,62,51;35,51,47,71;47,52,49,53;54,53,60,58;55,52,57,53;58,52,59,53;47,53,48,54;62,53,63,54;65,53,66,54;53,54,54,58;60,57,61,58;58,58,59,59;61,58,65,59;66,62,68,68;67,58,68,62;66,58,67,59;48,59,52,66;47,60,48,62;62,62,64,64;52,63,53,66;58,63,59,65;57,63,58,64;59,64,62,67;61,63,62,64;53,64,54,66;62,64,63,65;65,64,66,68;39,77,62,91;47,65,48,77;48,66,51,68;51,69,64,77;54,67,56,69;48,68,50,69;52,68,54,69;56,68,57,69;59,68,60,69;67,68,68,69;48,69,49,70;48,71,51,77;49,70,51,71;35,71,42,75;42,71,45,73;45,71,46,72;64,71,65,82;66,78,68,89;66,73,68,77;67,71,68,73;42,73,43,74;45,74,47,77;46,73,47,74;65,74,66,76;35,75,40,77;40,75,41,76;43,75,45,77;42,76,43,77;35,77,39,78;62,77,64,88;67,77,68,78;35,78,36,79;35,90,38,97;35,83,37,90;35,81,36,83;37,88,38,89;62,88,63,90;67,89,68,98;42,106,55,128;48,91,62,102;40,91,48,97;58,104,66,113;62,94,64,104;62,92,63,94;38,94,39,95;66,94,67,98;35,99,38,107;35,97,36,99;45,97,48,99;42,97,45,98;41,99,43,100;64,99,65,104;41,100,42,101;67,100,68,107;46,102,49,106;47,101,48,102;43,102,45,106;41,102,43,104;55,102,58,108;" $sPixelRect &= "51,102,55,104;58,102,62,104;38,103,39,106;45,103,46,106;49,103,50,106;50,104,53,106;54,104,55,106;66,105,67,111;0,106,31,128;33,107,36,109;33,106,35,107;36,107,37,108;37,113,42,128;39,108,42,113;40,107,42,108;70,107,128,128;67,109,70,111;69,107,70,109;31,115,37,128;31,108,33,115;57,108,58,110;56,108,57,109;33,109,35,110;37,110,39,112;38,109,39,110;33,110,34,111;36,111,37,112;55,113,65,128;55,111,58,113;69,111,70,113;34,112,36,113;35,114,37,115;65,117,70,128;65,114,66,117;66,115,67,117;67,116,68,117" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates0() Func _PixelCoordinates1() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,80,24;71,33,128,128;89,0,128,33;80,0,89,4;80,4,83,10;83,4,85,5;83,5,84,7;82,13,89,33;86,8,89,13;88,5,89,8;87,7,88,8;83,10,86,13;84,9,86,10;80,10,82,11;80,11,81,16;81,13,82,18;80,19,81,22;0,24,35,106;35,24,48,51;48,24,55,37;55,24,57,25;63,24,74,31;62,24,63,25;75,24,78,33;74,24,75,30;78,24,80,27;55,25,56,26;79,28,82,33;80,27,82,28;81,26,82,27;78,27,79,28;78,29,79,33;66,31,69,34;62,31,66,33;69,31,73,32;60,33,63,35;61,32,62,33;69,32,71,33;73,32,75,33;63,33,65,34;55,34,56,36;59,34,60,36;67,72,71,106;68,36,71,72;69,35,71,36;70,34,71,35;60,35,62,36;66,40,68,41;66,37,68,39;67,36,68,37;48,37,50,40;62,37,63,38;60,38,62,39;50,39,51,40;60,39,61,40;67,39,68,40;48,40,49,48;49,46,53,60;50,42,53,44;51,40,52,42;52,41,53,42;61,41,62,42;67,41,68,44;58,43,59,45;62,43,64,44;50,44,52,46;59,44,60,45;49,45,50,46;62,45,63,47;55,46,56,48;67,46,68,49;62,49,64,51;64,50,66,52;66,50,67,51;35,56,48,70;35,51,47,56;55,51,56,58;47,52,49,54;56,54,68,58;58,52,60,54;64,52,65,53;62,53,64,54;67,53,68,54;53,55,55,58;53,54,54,55;48,56,49,58;53,58,54,59;59,58,60,59;62,58,65,59;67,58,68,59;46,73,62,99;48,61,52,67;49,60,52,61;63,60,64,65;52,61,53,66;66,63,68,68;67,61,68,63;58,62,59,65;53,63,54,66;59,63,60,66;60,64,63,67;62,63,63,64;54,64,55,65;53,68,59,73;55,67,57,68;56,66,57,67;65,66,66,67;49,67,51,73;48,67,49,70;62,67,63,68;67,68,68,69;51,69,53,73;62,69,65,84;59,69,62,73;35,70,43,74;43,70,46,72;46,70,47,71;47,72,49,73;48,71,49,72;65,71,66,72;43,72,44,73;65,73,67,78;35,74,40,76;40,74,42,75;40,76,46,96;44,74,46,76;43,75,44,76;35,76,38,77;39,76,40,90;35,77,36,78;65,78,66,79;35,86,38,97;35,82,37,86;35,80,36,82;66,83,67,88;62,84,64,88;62,88,63,90;58,104,66,112;62,94,64,104;62,91,63,94;38,93,39,96;66,94,67,99;43,96,44,100;42,96,43,98;41,96,42,97;44,96,46,98;35,97,37,98;35,99,38,106;35,98,36,99;38,100,40,104;38,99,39,100;46,99,47,100;54,99,58,107;49,99,54,102;58,99,62,104;64,99,65,104;40,107,55,128;43,103,51,107;48,100,49,103;44,102,47,103;49,102,51,103;52,102,54,104;38,104,39,105;51,104,53,107;" $sPixelRect &= "40,106,43,107;42,105,43,106;53,105,54,107;0,106,30,128;33,106,36,108;36,106,37,107;68,109,71,111;68,106,71,108;30,111,35,128;30,108,34,111;30,107,32,108;38,108,40,111;39,107,40,108;56,107,58,109;34,108,35,109;66,108,67,111;69,108,71,109;36,110,38,112;37,109,38,110;57,109,58,110;35,111,36,113;55,112,65,128;55,111,58,112;65,117,71,128;70,111,71,117;69,111,70,114;35,114,40,128;38,112,40,114;36,113,38,114;65,114,66,117;66,116,67,117;68,116,70,117" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates1() Func _PixelCoordinates2() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,69,19;67,34,128,107;85,0,128,34;69,0,85,13;78,13,85,17;75,13,78,15;73,13,75,14;64,19,79,29;69,14,70,19;77,15,78,16;70,16,71,19;71,17,76,19;80,17,85,23;79,17,80,20;76,18,77,19;0,19,44,96;44,19,56,31;56,19,60,20;61,19,64,20;56,20,57,21;63,20,64,21;79,23,82,34;79,21,80,23;84,23,85,25;82,25,83,28;62,28,64,32;63,26,64,28;82,29,85,34;84,27,85,29;56,29,57,30;60,29,62,31;68,29,73,31;64,29,68,30;73,29,75,30;77,30,79,34;78,29,79,30;64,30,66,31;44,31,48,45;48,31,50,35;52,31,56,32;69,31,70,32;74,31,77,34;57,32,58,34;71,32,74,34;50,33,51,34;69,33,71,34;61,34,62,36;60,34,61,35;62,34,63,35;48,35,49,38;48,42,52,54;50,36,52,42;51,35,52,36;52,36,53,38;61,37,62,39;60,37,61,38;66,37,67,40;49,38,50,42;60,40,62,43;62,41,63,42;44,45,46,50;46,45,47,46;65,46,67,48;66,45,67,46;52,47,54,48;55,49,59,54;56,48,59,49;57,47,58,48;44,55,50,69;47,48,48,55;46,48,47,49;52,48,53,49;59,50,64,54;60,48,62,50;62,49,63,50;66,49,67,66;44,51,46,55;44,50,45,51;52,51,55,54;54,50,55,51;64,51,66,55;46,52,47,54;48,54,51,55;56,54,58,55;59,54,63,55;50,55,51,56;60,55,61,57;56,58,57,62;55,58,56,60;60,58,62,61;50,60,52,64;50,59,51,60;64,60,66,65;65,59,66,60;49,74,63,103;53,65,59,74;57,61,59,65;57,60,58,61;59,60,60,63;52,61,53,63;60,61,61,63;54,63,55,65;63,63,64,64;55,64,56,65;59,67,64,74;60,65,63,67;51,68,53,74;52,66,53,68;59,66,60,67;50,67,51,68;63,74,67,77;64,70,67,74;66,67,67,70;44,69,48,76;48,69,49,73;49,71,51,73;50,70,51,71;50,73,51,74;44,76,46,82;46,76,47,79;63,77,65,78;66,77,67,85;47,88,49,98;47,81,49,84;48,78,49,81;63,78,64,85;44,82,45,85;48,84,49,88;44,88,45,91;58,104,66,111;63,90,64,104;66,91,67,97;46,92,47,98;0,96,33,128;33,99,39,112;33,96,37,99;42,96,43,97;64,97,65,104;40,98,42,99;46,99,49,101;48,98,49,99;45,99,46,100;65,100,66,101;39,101,40,105;44,112,65,128;44,103,52,111;45,101,48,103;44,102,45,103;48,102,49,103;40,103,42,106;53,103,63,104;52,104,58,106;43,105,44,108;40,106,41,107;52,108,55,112;52,106,54,108;56,106,58,108;55,106,56,107;71,107,128,128;68,107,71,110;39,108,40,111;" $sPixelRect &= "66,108,68,109;55,109,58,112;66,109,67,110;70,110,71,114;69,110,70,112;45,111,52,112;58,111,65,112;33,112,37,113;33,113,35,114;36,115,44,128;42,113,44,115;33,114,34,115;40,114,42,115;65,116,71,128;65,114,66,116;66,115,67,116;70,115,71,116;33,116,36,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates2() Func _PixelCoordinates3() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,82,23;76,35,128,128;89,0,128,35;82,0,89,11;86,11,89,15;85,11,86,13;66,23,85,33;82,17,86,23;82,15,83,17;87,20,89,29;87,15,89,18;83,16,84,17;86,17,87,18;88,18,89,20;0,23,39,106;39,23,57,35;57,23,59,25;59,23,60,24;65,23,66,25;64,23,65,24;85,23,87,24;57,25,58,27;85,25,87,26;85,26,86,33;57,28,58,35;64,31,66,34;65,29,66,31;58,31,59,35;87,32,89,35;88,31,89,32;62,33,64,35;63,32,64,33;66,33,68,34;70,33,78,34;82,33,85,35;59,34,60,37;71,34,73,35;81,34,82,35;85,34,87,35;39,35,48,48;48,35,51,40;51,35,52,37;55,35,56,36;52,36,53,38;63,36,65,38;68,71,76,87;69,37,76,71;70,36,76,37;49,44,54,58;52,39,55,43;53,38,54,39;62,39,64,40;63,38,64,39;48,40,50,42;68,40,69,42;51,41,52,44;55,41,56,42;48,42,49,44;63,42,64,43;50,43,51,44;52,43,54,44;64,43,65,44;57,45,59,47;56,45,57,46;63,45,65,47;39,58,53,61;47,50,49,58;48,47,49,50;39,48,45,58;45,48,46,51;54,48,55,52;68,48,69,50;57,49,58,50;63,50,68,51;65,49,66,50;46,50,47,51;55,51,56,52;57,53,68,57;59,51,61,53;63,51,65,53;66,51,67,52;58,52,59,53;65,52,66,53;45,53,47,58;54,54,57,57;54,53,55,54;68,54,69,58;62,57,66,58;63,58,64,59;67,63,69,67;68,60,69,63;39,61,46,75;47,61,52,68;52,62,55,65;52,61,54,62;58,61,59,63;63,61,65,64;46,62,47,66;59,62,60,64;60,63,63,66;62,62,63,63;63,64,64,65;52,65,53,66;46,76,64,98;53,68,66,76;56,65,57,68;66,65,67,67;57,66,58,68;58,67,61,68;60,66,61,67;46,68,50,72;46,67,47,68;54,67,56,68;63,67,64,68;50,68,51,69;50,71,53,76;51,70,53,71;52,69,53,70;66,70,67,71;46,72,48,73;48,74,50,76;49,72,50,74;66,72,68,75;46,73,47,74;39,75,43,79;43,75,45,76;47,75,48,76;64,76,67,81;66,75,67,76;43,76,44,77;43,79,46,96;44,78,46,79;45,77,46,78;39,79,41,80;39,80,40,81;64,81,66,87;39,85,41,96;39,83,40,85;42,86,43,89;64,87,65,89;69,87,76,112;42,90,43,96;60,103,67,111;64,90,65,103;65,92,66,94;67,93,69,94;68,92,69,93;67,94,68,95;45,96,46,99;44,96,45,97;67,98,69,107;68,96,69,98;44,98,45,100;43,98,44,99;47,98,48,100;46,98,47,99;56,98,60,107;41,109,57,128;44,103,54,109;52,98,56,102;51,98,52,101;50,98,51,99;60,98,64,103;65,98,66,103;" $sPixelRect &= "39,99,40,107;48,100,51,103;48,99,49,100;42,102,48,103;53,102,56,103;42,103,44,105;55,103,56,104;54,105,56,109;54,104,55,105;40,105,41,107;43,105,44,106;0,106,34,128;37,106,39,108;36,106,37,107;58,107,60,109;57,107,58,108;68,107,69,108;34,108,37,110;37,108,38,109;42,108,44,109;68,109,69,111;67,109,68,110;34,110,36,112;34,115,41,128;40,110,41,115;57,111,65,128;57,110,60,111;39,111,40,112;34,112,35,113;65,117,76,128;72,112,76,117;70,112,72,114;38,113,40,115;65,114,67,117;65,113,66,114;34,114,35,115;37,114,38,115;71,114,72,115;67,115,68,117;68,116,69,117;70,116,72,117" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates3() Func _PixelCoordinates4() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,128,21;0,21,41,96;41,21,58,33;58,21,62,22;70,36,128,113;67,21,100,31;65,21,67,23;64,21,65,22;107,21,128,36;100,21,107,24;58,22,60,23;58,23,59,24;66,23,67,25;100,24,103,28;103,24,104,26;104,28,107,36;106,25,107,28;65,29,67,33;66,26,67,29;105,27,106,28;100,28,102,29;58,30,60,36;58,29,59,30;101,30,104,36;102,29,104,30;62,31,65,33;64,30,65,31;76,31,88,35;70,31,76,33;67,31,70,32;88,31,94,32;96,31,101,36;61,32,62,33;67,32,68,33;88,32,90,34;90,32,91,33;93,32,96,36;92,32,93,33;41,52,48,72;41,33,49,44;49,33,52,36;54,33,57,34;62,33,63,34;73,33,74,35;71,33,73,34;74,33,76,34;91,34,93,36;52,35,53,36;70,35,71,36;82,35,85,36;87,35,88,36;90,35,91,36;49,36,51,37;68,60,70,66;68,48,70,49;69,36,70,48;49,37,50,41;50,42,54,56;52,38,55,40;52,37,54,38;63,37,65,38;68,37,69,41;63,38,64,39;51,39,52,42;52,40,54,42;62,40,65,42;56,43,59,45;62,44,65,45;63,43,64,44;41,44,47,52;47,44,48,47;49,44,50,64;54,48,55,50;62,51,66,56;63,48,65,51;65,48,66,49;48,49,49,54;47,49,48,50;57,50,61,55;59,49,60,50;62,49,63,51;67,49,68,50;66,52,70,56;69,49,70,52;54,52,57,55;61,52,62,53;61,54,62,56;48,55,49,70;58,55,60,56;50,56,53,64;69,56,70,60;53,61,55,63;53,60,54,61;48,73,65,98;53,66,66,73;59,62,61,66;58,60,60,62;62,60,64,63;64,60,65,61;61,61,62,64;66,62,68,65;67,61,68,62;53,63,54,64;56,63,57,66;62,63,63,64;51,64,52,65;54,65,56,66;57,65,58,66;64,65,65,66;66,71,70,77;69,66,70,71;51,68,53,73;52,67,53,68;49,68,50,69;66,68,67,71;68,69,69,71;50,70,51,73;41,72,46,75;46,72,47,73;49,72,50,73;65,77,67,85;65,73,66,77;41,75,45,77;45,77,48,90;47,75,48,77;41,77,43,79;43,77,44,78;67,77,68,78;69,77,70,85;41,79,42,80;41,84,43,96;41,83,42,84;65,85,66,86;69,87,70,89;52,98,66,107;65,88,66,98;43,89,44,96;46,90,48,97;67,98,70,106;68,94,70,96;69,90,70,94;68,91,69,92;0,96,35,128;35,107,41,128;35,98,41,106;35,96,39,98;68,97,70,98;69,96,70,97;47,97,48,98;50,98,52,100;45,108,57,128;49,101,51,108;48,99,50,101;41,100,42,101;66,100,67,107;41,102,45,105;42,101,45,102;48,101,49,103;45,102,46,104;51,102,52,108;41,105,44,107;" $sPixelRect &= "47,106,49,108;48,105,49,106;37,106,41,107;60,108,70,110;68,106,70,108;41,107,43,108;46,107,47,108;52,107,57,108;59,107,66,108;41,108,42,109;57,110,65,128;57,109,60,110;65,110,66,111;69,110,70,112;41,113,45,128;43,112,45,113;65,116,128,128;65,113,66,116;71,113,128,116;66,115,67,116;70,115,71,116" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates4() Func _PixelCoordinates5() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,128,18;0,49,48,95;0,18,46,49;46,18,57,29;57,18,59,20;59,18,60,19;65,18,128,21;63,18,65,19;57,20,58,21;68,39,128,110;75,21,88,35;66,21,75,30;88,21,93,32;93,21,95,29;95,21,96,23;98,21,128,39;97,21,98,23;64,26,66,30;65,23,66,26;57,26,59,29;57,25,58,26;95,30,98,39;97,25,98,30;59,27,60,30;62,27,64,30;61,28,62,32;96,28,97,30;46,29,50,35;50,29,52,32;55,29,57,30;58,29,59,30;93,29,94,30;62,30,63,33;65,30,67,31;71,30,75,33;70,30,71,31;91,32,95,39;93,31,95,32;89,33,91,39;88,32,90,33;67,35,74,39;68,33,69,35;73,33,75,34;88,33,89,34;51,34,53,38;69,34,71,35;46,35,48,43;48,35,49,38;62,35,63,36;79,35,85,38;77,35,79,36;85,35,87,36;57,36,58,37;74,36,77,39;48,43,52,47;49,38,52,43;50,37,51,38;77,37,79,39;87,37,89,39;79,38,83,39;84,38,85,39;86,38,87,39;55,39,58,41;61,39,64,41;67,39,68,40;58,40,59,41;62,41,64,42;65,58,68,63;66,49,68,54;66,45,68,48;67,41,68,45;46,43,47,44;64,43,65,45;52,44,54,46;55,47,63,50;57,44,58,47;61,44,62,45;46,45,48,46;60,45,61,47;46,46,47,49;56,46,57,47;61,46,62,47;65,46,66,47;48,47,51,55;51,48,55,52;67,48,68,49;63,49,65,52;55,50,58,53;59,50,63,53;65,50,66,53;58,51,59,52;51,52,52,53;67,54,68,58;48,55,50,60;59,58,62,59;60,56,61,58;50,57,52,61;55,57,57,59;61,57,62,58;66,57,67,58;52,64,64,105;57,59,60,64;57,58,58,59;52,59,53,62;56,59,57,60;60,59,61,61;64,59,65,62;48,66,50,75;48,60,49,66;53,60,54,61;51,61,52,62;54,62,55,64;60,63,64,64;62,62,63,63;55,63,57,64;67,63,68,82;64,68,67,70;66,65,67,68;64,67,65,68;51,68,52,83;50,68,51,70;64,70,65,83;65,71,67,72;66,70,67,71;50,71,51,73;48,75,49,81;65,77,66,78;50,80,51,82;65,80,66,82;50,97,52,100;51,86,52,97;64,87,65,112;48,88,49,98;67,88,68,94;0,95,37,128;37,95,39,96;44,95,46,99;43,95,44,98;42,95,43,96;46,95,48,97;67,95,68,102;37,96,38,97;39,98,42,99;40,97,41,98;37,106,42,128;37,100,39,106;37,98,38,100;44,100,48,107;46,99,48,100;50,102,52,107;51,100,52,102;65,100,66,109;39,102,41,106;39,101,40,102;41,101,44,104;48,101,49,103;43,104,44,106;42,104,43,105;66,104,68,105;47,112,64,128;52,105,55,112;59,105,64,112;" $sPixelRect &= "56,105,59,106;45,107,49,108;48,106,49,107;58,106,59,107;42,108,45,111;42,107,44,108;51,107,52,108;55,108,59,112;55,107,57,108;67,107,68,109;66,107,67,108;45,108,46,109;50,110,52,112;51,109,52,110;71,110,128,128;70,110,71,112;69,110,70,111;42,111,43,112;49,111,50,112;65,111,66,112;42,114,47,128;45,113,47,114;64,116,71,128;64,113,65,116;65,114,67,116;69,115,71,116;70,114,71,115;67,115,68,116" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates5() Func _PixelCoordinates6() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;59,0,128,20;0,50,42,98;0,0,44,44;44,0,59,18;44,18,51,30;51,18,53,20;53,18,54,19;57,18,59,19;51,20,52,21;68,20,128,118;60,20,68,31;51,24,52,31;58,27,60,31;59,26,60,27;52,28,55,30;52,27,53,28;57,28,58,33;55,29,56,30;44,30,46,33;49,30,51,31;52,30,53,31;48,31,49,32;58,31,59,33;61,31,63,32;63,47,68,54;67,31,68,47;65,33,67,34;66,31,67,33;46,32,47,33;53,32,54,33;44,33,45,38;52,34,54,36;66,34,67,35;46,37,48,40;47,35,48,37;54,35,55,36;64,36,65,47;52,37,54,39;63,37,64,41;44,44,47,55;45,40,47,44;53,40,54,43;52,40,53,41;52,43,53,44;58,43,61,44;0,44,41,50;41,44,43,48;63,44,64,47;49,45,50,47;47,46,48,48;65,46,66,47;52,47,54,48;59,47,60,48;41,48,42,49;50,50,54,56;51,49,54,50;52,48,53,49;55,50,59,56;55,49,58,50;56,48,57,49;61,48,62,50;60,48,61,49;62,49,63,50;42,51,44,52;43,50,44,51;47,52,50,56;48,51,50,52;59,52,63,55;60,51,61,52;42,69,47,99;42,58,45,69;42,54,43,58;54,54,55,55;64,54,65,58;63,54,64,56;65,54,66,55;63,60,68,63;67,54,68,60;45,55,47,56;59,55,62,56;43,56,44,58;51,56,54,57;57,56,58,57;51,59,52,60;64,59,65,60;66,59,67,60;45,61,47,67;45,60,46,61;56,61,59,64;57,60,59,61;52,62,55,64;52,61,54,62;59,61,60,62;47,62,48,63;61,64,68,65;62,62,63,64;53,72,63,106;55,64,57,72;55,63,56,64;63,63,65,64;67,63,68,64;47,64,49,66;49,64,50,65;54,64,55,66;53,64,54,65;57,64,58,65;62,65,68,66;47,66,48,67;57,68,62,72;59,67,62,68;60,66,61,67;67,66,68,71;66,66,67,67;45,67,46,69;54,68,55,69;49,71,53,78;49,69,51,71;62,69,63,72;51,70,52,71;54,71,55,72;63,72,66,73;64,71,65,72;45,99,52,103;47,83,49,87;47,72,48,83;63,77,65,87;63,73,64,77;65,77,68,79;65,74,68,76;65,73,67,74;66,76,68,77;48,78,49,79;51,78,53,87;50,78,51,80;66,79,68,84;49,84,50,85;67,84,68,87;47,92,50,99;47,87,48,92;63,87,64,89;58,106,65,114;63,96,65,106;63,91,64,96;50,92,51,95;50,96,51,99;67,97,68,112;0,98,31,128;31,108,38,128;31,102,34,108;32,98,33,102;31,98,32,100;33,98,34,100;38,99,42,101;39,98,42,99;51,98,52,99;44,99,45,100;35,100,36,103;36,101,39,102;37,100,38,101;42,100,44,102;33,101,34,102;41,101,42,103;40,101,41,102;" $sPixelRect &= "36,102,38,103;42,102,43,103;34,104,36,108;34,103,35,104;36,103,37,104;47,103,52,105;46,103,47,104;41,106,49,112;41,104,45,106;36,105,38,106;40,105,41,111;39,105,40,108;45,105,46,106;47,105,50,106;36,106,37,108;55,106,58,112;54,106,55,107;49,110,52,113;49,107,51,110;38,115,50,128;38,110,40,115;38,109,39,110;65,111,66,114;44,112,49,115;43,112,44,114;42,112,43,113;56,112,58,113;49,113,51,115;40,114,41,115;55,115,64,128;59,114,65,115;64,115,66,117;66,116,68,117;50,119,55,128;53,118,55,119;54,117,55,118;64,117,65,118;50,118,51,119;72,118,128,128;70,118,72,121;69,118,70,119;64,122,67,128;64,121,66,122;71,121,72,122;67,124,69,128;67,123,68,124;69,125,72,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates6() Func _PixelCoordinates7() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;59,0,128,24;0,0,42,87;42,0,59,21;42,21,51,32;51,21,54,22;57,21,59,22;51,22,52,23;69,24,128,120;60,24,69,34;58,30,60,34;59,28,60,30;51,30,53,34;51,29,52,30;53,31,55,33;57,31,58,34;42,32,45,38;45,32,46,34;48,32,51,33;53,33,54,34;56,33,57,37;52,34,53,35;60,34,63,35;65,34,69,57;49,36,52,37;50,35,51,36;64,36,65,38;51,37,53,38;42,38,44,46;61,50,65,54;62,40,64,50;61,39,63,40;60,41,62,42;61,40,62,41;64,41,65,42;61,42,62,43;50,43,51,47;48,44,50,45;51,45,52,47;42,46,43,51;58,46,59,47;61,46,62,50;45,47,46,48;46,50,47,51;48,50,50,52;50,51,51,52;53,53,57,59;53,51,55,53;59,51,60,53;58,51,59,52;56,52,57,53;42,53,44,69;49,54,52,57;49,53,51,54;47,54,49,56;46,54,47,55;57,55,63,58;57,54,59,55;61,54,63,55;44,56,45,59;47,56,48,57;52,56,53,57;63,56,65,57;45,57,46,59;48,57,50,59;61,63,65,68;62,59,65,63;61,58,64,59;63,57,64,58;67,57,69,72;66,57,67,64;57,58,59,59;50,59,51,60;54,59,56,60;48,61,49,63;44,64,46,68;44,63,45,64;49,64,52,66;54,64,56,67;56,64,57,65;60,64,61,67;46,65,47,68;47,79,64,105;46,71,60,79;52,67,55,71;50,66,54,67;53,65,54,66;63,68,67,76;65,65,66,68;51,67,52,68;42,71,44,79;42,69,43,71;57,69,59,71;47,70,50,71;55,70,57,71;66,77,69,85;68,72,69,77;45,73,46,86;60,74,62,79;60,73,61,74;62,75,63,79;65,76,66,81;64,76,65,78;66,76,67,77;42,79,43,85;46,79,47,88;64,86,66,89;64,84,65,86;68,85,69,88;67,85,68,86;0,87,31,128;31,87,41,98;64,89,65,91;41,91,43,100;41,90,42,91;46,90,47,102;43,91,44,95;64,93,65,115;67,106,69,112;68,95,69,106;43,96,45,100;31,98,34,100;34,98,35,99;38,100,41,101;39,98,41,100;38,98,39,99;45,98,46,100;34,100,36,103;33,100,34,101;44,100,45,101;36,101,37,103;40,101,42,103;39,101,40,102;37,102,38,103;42,102,43,103;67,102,68,103;31,103,34,105;34,103,35,104;41,103,42,104;31,116,41,128;36,108,42,113;38,105,44,108;38,104,40,105;42,104,44,105;31,106,35,116;31,105,33,106;50,105,64,112;48,105,50,107;35,106,36,107;37,107,38,108;45,113,55,128;47,108,50,113;47,107,49,108;42,108,43,111;65,109,66,114;35,110,36,112;46,112,47,113;50,112,55,113;55,117,64,128;59,112,64,116;" $sPixelRect &= "57,112,59,114;56,112,57,113;67,115,69,118;68,112,69,115;38,113,42,115;37,113,38,114;39,115,41,116;55,115,57,117;41,119,45,128;43,117,45,119;44,116,45,117;57,116,59,117;60,116,67,117;64,117,66,118;68,118,69,119;72,120,128,128;71,120,72,122;70,120,71,121;64,122,66,128;64,121,65,122;66,124,69,128;66,123,67,124;69,125,72,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates7() Func _PixelCoordinates8() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;56,48,128,66;53,0,128,35;0,0,33,65;33,0,53,16;33,16,43,25;43,16,46,17;50,16,53,18;49,16,50,17;43,17,44,19;50,25,53,31;52,18,53,25;51,18,52,19;51,23,52,25;41,25,45,27;43,24,44,25;33,25,38,32;38,25,39,26;38,27,42,28;40,26,41,27;47,27,50,30;49,26,50,27;43,27,45,28;38,28,39,30;40,30,41,32;48,30,50,31;48,31,49,32;51,31,53,33;33,36,36,38;33,32,35,36;35,32,36,34;37,32,39,33;38,34,41,35;40,33,41,34;52,33,53,34;37,35,40,36;58,35,128,48;56,35,58,38;55,35,56,36;40,36,41,37;50,41,55,54;51,37,54,41;51,36,53,37;45,38,48,39;47,37,48,38;33,38,35,43;36,40,40,43;37,39,39,40;38,38,39,39;54,38,55,41;57,38,58,41;46,39,47,40;55,40,56,47;33,43,34,46;37,43,40,45;56,43,57,46;45,44,46,47;33,48,40,53;35,45,36,48;46,45,47,48;36,46,38,48;40,50,46,52;42,47,45,50;42,46,43,47;34,47,35,48;38,47,40,48;47,47,48,48;57,47,58,48;49,48,50,53;40,49,41,50;45,49,46,50;53,54,56,62;55,49,56,54;42,52,49,53;46,51,47,52;48,51,49,52;36,53,41,54;40,52,41,53;33,53,35,54;42,53,46,54;38,54,40,55;51,54,53,56;52,56,53,57;33,59,35,64;33,57,34,59;38,59,41,61;38,58,40,59;43,59,46,61;43,58,45,59;49,60,53,63;50,59,53,60;35,78,54,102;36,66,49,78;42,61,44,66;42,60,43,61;35,61,36,64;39,61,42,63;44,61,45,62;48,62,49,63;55,62,56,65;46,64,48,66;47,63,48,64;52,64,55,71;50,63,54,64;0,65,24,98;24,65,31,79;31,65,32,74;37,65,39,66;41,65,42,66;44,65,46,66;48,65,49,66;69,66,128,121;60,66,69,97;55,73,60,78;58,66,60,73;57,66,58,67;33,71,36,78;34,68,36,71;35,67,36,68;49,70,52,78;49,67,50,70;50,69,51,70;53,71,56,73;55,70,56,71;56,72,57,73;52,73,53,78;54,73,55,75;31,83,35,88;32,74,33,83;33,78,35,83;57,78,60,84;56,78,57,81;24,79,29,87;29,79,30,83;54,81,55,86;55,84,56,85;59,84,60,89;58,84,59,85;24,87,27,90;27,87,28,88;30,92,35,98;32,88,35,92;50,102,60,113;54,93,57,102;54,88,55,93;24,90,26,95;31,91,32,92;55,91,56,93;26,93,27,95;28,95,30,98;29,94,30,95;24,96,26,97;25,95,26,96;57,96,58,102;24,97,25,100;63,97,69,109;62,97,63,106;61,97,62,101;0,98,16,128;16,98,22,106;22,98,23,103;27,98,28,101;33,98,35,100;28,99,29,100;58,99,59,102;" $sPixelRect &= "23,100,24,103;30,100,32,102;34,100,35,101;25,102,29,104;26,101,27,102;32,101,33,103;27,111,46,128;40,102,50,110;29,105,39,111;37,102,40,105;36,102,37,103;31,104,35,105;34,103,35,104;22,106,25,111;22,104,23,106;24,104,26,106;39,105,40,106;51,113,63,119;60,108,62,113;60,105,61,108;16,106,19,113;19,106,21,107;25,106,26,107;27,107,29,111;28,106,29,107;19,107,20,108;39,107,40,111;25,108,27,111;19,109,20,111;66,109,69,117;65,109,66,113;64,109,65,110;40,110,45,111;48,110,50,112;46,110,48,111;62,110,63,113;23,111,24,113;22,111,23,112;26,111,27,112;16,113,18,114;20,118,27,128;21,114,27,118;22,113,23,114;26,113,27,114;46,114,51,128;46,113,49,114;16,114,17,116;65,114,66,116;68,117,69,119;67,117,68,118;16,121,20,128;18,120,20,121;19,119,20,120;51,119,61,128;63,119,64,120;16,120,17,121;61,122,64,128;61,120,62,122;62,121,63,122;71,121,128,128;70,121,71,122;64,124,68,128;64,123,66,124;68,125,71,128;70,124,71,125" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates8() Func _PixelCoordinates9() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;49,41,128,74;51,0,128,33;0,0,31,29;31,0,51,19;31,19,35,21;35,19,37,20;43,19,51,31;41,19,43,21;40,19,41,20;31,21,34,28;42,21,43,23;41,28,43,31;42,26,43,28;33,28,36,29;34,27,35,28;0,29,24,88;24,29,30,36;34,29,36,30;40,29,41,31;50,31,51,32;33,32,34,33;41,34,49,57;39,32,46,34;30,33,33,35;38,33,39,34;46,33,48,34;54,33,128,41;53,33,54,38;52,33,53,35;49,35,51,41;49,34,50,35;29,36,32,38;30,35,31,36;24,36,27,45;51,38,53,40;51,37,52,38;30,38,32,39;28,40,29,41;35,40,36,41;51,40,52,41;36,41,37,42;28,42,30,45;30,42,31,43;29,45,31,46;30,44,31,45;24,45,26,47;30,46,31,47;24,50,26,68;24,47,25,50;26,49,30,56;26,48,29,49;27,47,28,48;37,49,39,51;30,50,31,57;33,50,35,57;36,53,41,56;39,50,41,52;35,51,36,53;40,52,41,53;31,53,32,57;35,54,36,56;29,56,30,57;43,57,49,63;42,57,43,59;29,59,30,60;26,61,27,67;30,61,31,64;29,61,30,62;34,61,36,64;41,62,43,66;42,61,43,62;31,63,34,66;31,62,32,63;33,62,34,63;40,63,41,65;43,63,44,64;45,63,49,66;27,64,28,67;34,64,35,65;44,65,45,69;43,65,44,67;30,67,32,68;31,66,32,67;31,80,53,105;28,69,43,80;37,66,39,69;45,66,46,67;48,66,49,68;47,66,48,67;32,68,37,69;36,67,37,68;39,67,41,69;29,68,31,69;41,68,42,69;24,70,25,74;26,80,31,92;26,73,28,80;27,70,28,73;43,72,46,80;43,70,44,72;44,71,45,72;46,75,48,80;46,73,47,75;70,74,128,128;58,74,70,93;53,74,58,79;50,74,53,76;25,76,26,82;48,77,50,80;48,76,49,77;52,76,53,78;51,76,52,77;50,78,51,80;51,79,52,80;56,79,58,81;54,79,56,80;57,81,58,83;57,85,58,89;48,105,60,118;53,90,56,105;53,87,55,90;53,86,54,87;0,88,18,114;18,88,22,94;22,88,23,91;25,89,26,91;28,92,31,101;26,94,28,98;27,92,28,94;56,97,58,105;56,93,57,97;62,93,70,106;60,93,62,100;59,93,60,96;18,94,20,100;20,94,21,95;20,97,23,98;21,95,22,97;25,95,26,98;22,96,23,97;20,98,22,99;58,99,59,105;18,100,19,102;61,100,62,103;22,107,43,128;25,101,26,107;24,101,25,104;30,101,31,103;29,101,30,102;20,102,21,104;59,102,60,105;18,104,19,109;23,104,24,107;26,104,28,107;24,105,25,107;28,105,33,107;34,105,48,107;60,107,62,110;60,105,61,107;33,106,34,107;64,106,70,113;" $sPixelRect &= "63,106,64,109;44,107,48,111;43,107,44,110;19,108,20,109;20,109,22,111;21,108,22,109;60,110,61,112;63,110,64,112;21,111,22,112;43,113,48,128;43,111,44,113;47,111,48,112;18,112,19,113;44,112,46,113;66,113,70,116;65,113,66,115;0,114,15,128;15,114,17,117;60,115,62,120;60,114,61,115;19,119,22,128;20,116,22,119;21,115,22,116;62,117,64,121;62,116,63,117;68,116,70,119;67,116,68,117;15,117,16,118;48,118,57,128;64,119,66,122;64,118,65,119;57,121,61,128;57,119,58,121;69,119,70,120;15,121,19,128;18,120,19,121;58,120,59,121;61,124,70,128;65,122,70,123;66,120,67,122;67,121,68,122;69,121,70,122;61,122,63,124;63,123,65,124;66,123,70,124" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates9() Func _PixelCoordinates10() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;48,0,128,79;0,0,48,20;0,20,16,69;16,20,23,30;23,20,25,21;30,20,46,22;29,20,30,21;46,20,48,21;23,21,24,23;32,22,39,23;34,24,48,64;41,22,45,24;40,22,41,23;34,23,35,24;45,23,46,24;31,28,34,35;32,27,34,28;33,26,34,27;23,27,24,30;16,30,20,36;20,30,21,31;25,30,27,32;29,31,31,33;30,30,31,31;27,31,28,32;20,32,21,33;23,33,25,34;24,32,25,33;30,33,31,34;24,34,26,35;21,35,23,36;16,36,18,46;18,36,19,38;20,36,21,37;23,36,24,37;33,37,34,38;21,39,23,41;20,39,21,40;23,39,24,40;20,41,21,42;22,41,24,42;32,46,34,58;33,41,34,46;18,43,20,44;19,42,20,43;19,45,22,49;20,44,21,45;18,45,19,47;16,46,17,47;24,47,25,48;20,49,23,50;16,51,21,57;17,50,19,51;24,52,28,57;25,50,28,52;28,54,32,56;31,51,32,54;21,53,23,58;21,52,22,53;30,56,32,57;19,57,21,58;24,57,27,58;33,58,34,60;19,60,21,61;16,63,18,68;16,61,17,63;21,63,23,66;21,62,22,63;25,62,27,65;32,63,34,64;33,62,34,63;20,63,21,64;23,64,25,67;24,63,25,64;27,63,28,64;31,64,33,66;38,64,48,72;35,64,38,68;18,65,19,67;22,77,44,100;23,69,33,77;25,65,26,69;22,66,23,67;34,66,35,67;21,67,22,68;28,67,30,69;24,68,25,69;27,68,28,69;30,68,32,69;37,68,38,70;36,68,37,69;0,69,12,128;12,71,16,92;12,69,15,71;18,71,22,91;20,69,22,71;19,70,20,71;22,70,23,77;33,71,35,77;33,70,34,71;43,72,48,75;41,72,43,74;40,72,41,73;35,74,36,77;37,74,40,77;17,75,18,82;36,75,37,77;40,75,41,77;44,78,47,81;45,75,48,77;44,75,45,76;41,76,42,77;46,77,48,78;55,79,128,128;48,89,55,110;50,82,55,89;51,79,55,82;50,79,51,80;44,81,46,105;46,83,47,93;49,84,50,89;48,87,49,88;16,88,17,90;19,95,22,97;20,91,22,95;19,91,20,92;12,92,15,100;15,93,16,94;15,96,17,98;20,97,22,99;46,101,48,104;47,98,48,101;12,100,13,101;20,107,38,128;30,100,44,107;25,100,30,104;24,100,25,103;23,100,24,101;12,102,16,104;14,101,15,102;20,101,21,102;14,104,15,105;20,104,21,107;24,104,26,107;27,104,30,106;47,104,48,109;12,109,14,128;12,105,13,109;16,106,19,110;17,105,18,106;21,105,24,107;26,105,27,107;44,105,45,108;27,106,29,107;14,107,16,111;19,107,20,113;41,107,43,113;38,107,41,109;43,107,44,109;46,107,47,109;" $sPixelRect &= "39,109,41,110;15,111,17,113;16,110,17,111;51,110,55,113;50,110,51,112;49,110,50,111;38,114,42,128;38,111,40,114;42,117,45,128;43,112,47,116;43,111,45,112;17,112,19,113;17,113,18,114;40,113,41,114;42,113,43,114;47,114,50,118;47,113,49,114;53,113,55,115;52,113,53,114;14,115,16,118;50,116,53,119;50,115,51,116;54,115,55,116;44,116,47,117;51,119,55,128;53,117,55,119;14,120,20,128;14,118,15,120;18,119,20,120;19,118,20,119;45,120,51,128;45,119,50,120;49,118,50,119" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates10() Func _PixelCoordinates11() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;41,26,128,106;46,0,128,26;0,0,46,12;0,12,16,64;16,12,21,24;21,12,24,15;35,12,46,16;31,12,35,14;27,12,31,13;33,14,35,15;21,15,23,16;30,16,33,19;29,15,31,16;21,16,22,18;29,16,30,17;37,16,46,18;31,19,40,29;33,17,34,19;34,18,38,19;42,18,46,21;41,18,42,19;40,21,42,26;45,21,46,24;44,21,45,22;29,24,31,28;30,22,31,24;42,23,43,26;16,24,19,31;23,24,24,26;22,24,23,25;25,25,26,27;24,25,25,26;28,25,29,28;34,35,41,60;35,29,41,35;40,26,41,29;21,27,24,29;30,28,31,29;20,29,21,30;24,29,25,31;23,29,24,30;34,29,35,30;16,31,18,34;22,31,23,32;33,32,35,33;34,31,35,32;20,34,23,35;22,33,23,34;16,34,17,40;20,35,22,36;22,36,24,37;32,42,34,52;33,37,34,42;17,38,18,41;18,39,19,42;19,41,22,44;19,40,20,41;21,40,23,41;21,44,22,45;25,47,29,52;26,44,28,47;16,47,23,52;17,46,22,47;18,45,19,46;28,45,29,47;29,47,30,48;23,48,25,52;29,49,32,51;31,51,32,52;16,52,17,53;20,52,24,53;25,52,27,53;33,52,34,54;21,57,23,61;21,56,22,57;16,59,18,63;16,57,17,59;20,57,21,58;25,57,28,59;32,58,34,60;21,78,37,99;19,65,32,78;24,59,26,65;23,59,24,62;26,59,27,60;31,59,32,62;18,60,19,62;32,60,33,63;37,60,41,76;33,61,37,63;35,60,37,61;22,61,23,62;28,62,30,65;16,63,17,64;26,63,27,65;36,63,37,65;0,64,12,128;12,72,17,86;12,66,16,72;12,64,15,66;20,64,22,65;23,64,24,65;27,64,28,65;30,64,31,65;18,66,19,79;33,66,35,67;32,68,34,78;36,70,37,74;35,70,36,71;17,73,18,76;34,73,35,78;35,75,36,78;39,76,41,81;38,76,39,78;19,78,21,86;37,79,38,84;38,81,39,83;40,81,41,82;17,82,18,85;12,86,16,97;20,86,21,87;16,88,17,89;35,102,40,111;37,91,39,102;37,88,38,91;40,88,41,92;20,90,21,98;16,93,18,95;17,92,18,93;17,95,18,97;12,97,15,98;40,97,41,99;12,98,13,99;20,111,33,128;28,99,35,109;20,105,27,111;24,99,28,104;23,99,24,102;35,99,37,102;12,101,16,103;14,100,15,101;12,103,13,105;20,103,21,105;14,105,19,109;17,104,18,105;21,104,24,105;25,104,28,105;12,112,15,128;12,107,14,112;12,106,13,107;19,106,20,112;27,106,28,111;50,106,128,128;42,106,50,113;41,107,42,109;14,109,18,110;28,109,31,111;34,109,35,110;18,110,19,112;31,110,32,111;41,110,42,112;" $sPixelRect &= "33,117,39,128;33,114,38,117;36,111,39,113;35,111,36,112;15,112,16,117;33,112,34,114;16,113,17,114;34,113,36,114;37,113,39,114;45,113,50,115;44,113,45,114;40,115,42,117;39,115,40,116;47,115,50,116;42,116,44,118;49,116,50,117;15,120,20,128;18,118,20,120;19,117,20,118;39,120,50,128;44,117,45,120;39,118,42,120;45,118,46,120;15,119,16,120;17,119,18,120;42,119,44,120;48,119,50,120" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates11() Func _PixelCoordinates12() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;46,0,128,113;23,0,46,4;0,0,16,13;16,0,21,8;21,0,23,1;32,4,46,56;24,4,32,25;19,10,24,21;22,8,24,10;23,6,24,8;16,8,19,10;21,9,22,10;16,10,18,11;16,11,17,12;16,14,19,21;17,13,19,14;18,12,19,13;0,28,12,98;0,13,9,28;9,13,14,16;14,13,15,14;13,17,16,25;14,16,16,17;15,15,16,16;9,16,12,18;12,16,13,17;9,18,11,20;9,20,10,21;11,20,13,26;16,21,18,22;21,21,24,22;16,22,17,23;23,22,24,23;9,25,10,28;13,27,16,31;13,25,15,27;25,25,32,34;10,26,11,28;12,26,13,29;14,31,19,32;16,29,17,31;23,30,25,33;24,29,25,30;17,30,18,31;16,32,20,33;20,33,22,34;24,33,25,35;12,34,13,48;27,34,32,35;13,35,14,41;17,35,19,37;23,35,24,37;28,35,29,36;19,36,21,38;31,36,32,38;17,39,18,40;29,43,31,52;27,41,31,42;29,39,30,41;30,40,31,41;17,41,18,42;27,42,28,43;29,42,30,43;18,43,20,44;16,44,19,45;18,45,20,47;26,45,27,48;25,45,26,46;16,48,18,49;17,47,18,48;13,48,14,49;31,48,32,55;15,50,17,52;14,50,15,51;25,50,26,51;12,54,20,58;17,51,18,54;21,53,26,58;21,51,22,53;27,51,28,53;26,51,27,52;18,52,19,54;22,52,23,53;24,52,25,53;14,53,15,54;16,53,17,54;19,53,20,54;30,58,32,67;28,54,31,58;29,53,31,54;26,55,28,58;26,54,27,55;36,56,46,69;33,56,36,63;12,58,13,59;16,58,20,59;21,58,24,59;29,58,30,59;16,61,17,63;32,65,34,71;32,61,33,65;22,63,25,65;23,62,24,63;12,64,14,70;12,63,13,64;18,63,20,66;28,64,30,67;29,63,30,64;34,63,36,67;17,64,18,65;15,72,33,91;20,65,23,72;21,64,22,65;14,66,16,68;14,65,15,66;23,65,24,67;19,66,20,68;31,67,32,69;35,67,36,68;14,68,15,69;24,69,29,72;25,68,28,69;16,70,20,72;17,69,18,70;38,69,46,76;37,69,38,74;23,70,24,72;29,70,30,72;33,71,35,72;34,70,35,71;15,71,16,72;30,71,31,72;12,72,13,92;22,91,41,109;33,77,38,91;33,74,35,77;33,73,34,74;14,75,15,82;35,75,36,77;36,76,37,77;40,76,46,78;39,76,40,77;38,80,42,91;38,78,39,80;43,78,46,80;42,78,43,79;39,79,40,80;45,80,46,82;43,97,46,110;44,87,46,97;45,84,46,87;13,87,14,91;42,87,43,88;17,91,22,98;16,91,17,92;41,91,42,107;12,93,13,98;13,96,14,97;0,107,11,128;0,98,8,107;8,98,10,100;10,98,11,99;20,98,22,101;18,98,20,99;11,100,14,103;19,100,20,102;" $sPixelRect &= "8,102,11,103;10,101,11,102;21,101,22,103;8,103,10,107;13,105,18,112;14,104,16,105;17,104,18,105;20,105,22,112;11,107,13,111;12,106,13,107;42,108,43,109;22,111,36,128;22,109,35,111;36,109,39,110;18,110,19,113;36,117,41,128;36,113,43,114;38,110,39,113;45,110,46,112;44,110,45,111;19,111,20,112;39,111,40,113;14,112,17,116;17,112,18,114;36,112,37,113;40,112,42,113;11,116,15,128;11,113,12,116;51,113,128,128;48,113,51,115;47,113,48,114;12,114,14,116;18,118,22,128;20,116,22,118;21,114,22,116;36,114,39,117;40,114,44,116;44,115,46,118;50,115,51,117;49,115,50,116;15,116,16,117;43,116,44,117;41,119,51,128;46,116,47,119;19,117,20,118;47,117,48,119;41,118,44,119;48,118,51,119;15,119,18,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates12() Func _PixelCoordinates13() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;0,0,8,14;8,0,11,7;47,0,128,116;23,0,47,27;12,7,23,23;14,0,23,7;13,0,14,3;12,0,13,1;13,4,14,7;11,5,12,6;8,7,10,9;8,9,9,11;7,17,12,27;10,10,12,17;11,9,12,10;8,15,10,17;9,13,10,15;0,35,12,98;0,14,4,35;4,14,6,18;6,14,7,16;4,18,5,22;5,22,7,24;6,21,7,22;10,27,14,31;12,23,14,27;14,23,15,25;22,23,23,24;6,24,7,25;4,27,7,35;4,25,5,27;8,27,10,29;32,27,47,57;24,27,32,35;7,30,9,35;7,28,8,30;9,29,10,30;12,31,16,33;14,29,15,31;15,30,16,31;23,30,24,38;11,31,12,32;22,31,23,33;9,32,10,35;16,32,18,34;10,33,11,35;15,33,16,34;18,33,21,35;17,34,18,35;24,35,25,36;27,35,30,36;12,36,13,44;17,37,19,39;18,36,19,37;22,36,23,37;16,37,17,38;31,37,32,39;18,39,20,40;19,38,20,39;13,40,14,42;29,42,31,53;28,40,30,42;28,42,29,43;15,44,16,45;18,44,20,45;16,45,18,47;18,46,20,48;24,46,26,48;17,47,18,48;12,49,13,51;31,49,32,56;14,52,17,53;21,53,24,59;21,52,22,53;27,52,28,54;26,52,27,53;16,54,20,59;17,53,19,54;24,56,31,59;28,53,29,56;24,54,25,56;29,54,31,56;12,55,16,59;25,55,27,56;20,56,21,57;36,57,47,72;33,57,36,69;17,59,20,60;22,59,24,60;29,63,32,68;30,59,32,63;29,59,30,61;16,62,17,63;22,64,25,66;22,63,24,64;12,65,14,70;12,64,13,65;17,64,20,66;28,64,29,68;32,64,33,71;14,74,35,91;20,66,22,74;21,65,22,66;14,66,15,69;19,66,20,68;18,66,19,67;22,66,24,67;15,67,16,68;22,67,23,69;24,70,30,74;25,69,29,70;26,68,27,69;31,68,32,70;33,69,34,70;35,69,36,70;16,71,20,74;16,70,18,71;22,71,24,74;22,70,23,71;15,72,16,74;30,72,33,74;40,72,47,77;37,72,40,74;12,73,13,76;33,73,34,74;39,74,40,76;38,74,39,75;22,91,41,106;35,78,40,91;35,75,36,78;36,76,37,78;12,79,14,82;12,77,13,79;37,77,39,78;42,77,47,79;41,77,42,78;40,84,43,88;40,79,42,84;46,79,47,81;45,79,46,80;12,82,13,84;43,93,47,111;44,87,47,93;45,84,47,87;46,83,47,84;12,86,13,90;41,88,42,95;40,88,41,91;13,89,14,90;17,91,22,99;16,91,17,93;15,91,16,92;16,95,17,96;12,96,13,99;13,97,14,98;0,102,10,128;0,98,6,102;7,98,9,100;6,98,7,99;9,98,10,99;19,99,22,102;6,100,8,102;11,101,14,103;10,101,11,102;42,101,43,110;20,102,22,103;41,102,42,103;12,105,18,112;" $sPixelRect &= "14,104,18,105;20,106,39,109;20,105,22,106;39,106,40,107;10,107,12,110;41,107,42,109;18,110,20,112;18,109,19,110;22,111,36,128;21,109,35,111;35,109,38,110;10,110,11,112;20,110,21,111;21,111,22,112;38,112,41,115;37,111,39,112;45,111,47,114;44,111,45,112;14,112,18,114;18,112,19,113;37,112,38,113;10,114,15,128;10,113,11,114;36,113,37,116;39,115,44,117;41,113,42,115;15,114,17,115;18,118,22,128;20,116,22,118;21,114,22,116;37,114,38,115;42,114,43,115;46,114,47,115;15,115,16,117;43,117,46,119;44,116,45,117;48,116,128,128;19,117,20,118;36,119,42,128;36,117,38,119;41,117,43,118;38,118,40,119;42,120,48,128;46,118,48,120;15,119,18,128;45,119,46,120" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates13() Func _PixelCoordinates14() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;36,0,128,99;15,5,36,15;16,0,36,5;0,0,11,4;11,0,16,3;15,3,16,4;0,4,7,5;0,5,3,8;3,6,5,8;4,5,5,6;3,11,14,21;5,7,15,11;7,6,8,7;13,6,15,7;0,8,1,9;2,8,4,9;1,9,3,10;4,9,5,11;0,10,2,11;0,11,1,12;14,11,15,18;0,14,3,18;1,12,3,14;15,15,16,16;24,15,36,28;22,15,24,17;20,15,22,16;23,17,24,18;2,18,3,20;1,18,2,19;0,31,14,98;0,22,4,31;0,20,2,22;2,21,3,22;9,21,15,25;6,21,9,23;5,21,6,22;4,24,7,31;4,23,5,24;7,23,9,24;11,25,18,27;15,23,16,25;23,23,24,27;16,24,17,25;22,24,23,25;7,26,9,31;7,25,8,26;10,25,11,26;18,26,21,27;20,25,21,26;9,28,11,31;9,27,10,28;16,27,19,28;23,28,25,30;33,28,36,49;11,29,13,31;19,29,21,31;31,30,33,31;32,29,33,30;18,30,19,31;24,30,25,31;20,32,21,33;29,35,32,36;30,33,31,35;14,34,15,36;31,34,32,35;20,35,21,37;19,35,20,36;30,39,32,46;31,36,32,39;30,36,31,37;18,38,21,40;17,39,18,40;26,39,27,41;25,39,26,40;16,43,17,44;17,47,22,52;19,45,21,47;20,43,21,45;24,43,26,44;32,43,33,46;15,44,16,46;14,44,15,45;27,44,29,46;16,45,17,46;23,47,27,51;23,45,25,47;29,45,30,46;18,46,19,47;25,46,26,47;31,47,33,48;14,49,17,52;15,48,17,49;27,48,32,52;22,49,23,51;35,49,36,83;33,52,35,63;34,49,35,52;24,51,27,53;32,51,33,53;14,52,15,54;19,52,24,53;30,58,33,63;31,57,33,58;32,56,33,57;20,57,22,60;24,57,28,59;14,60,17,63;14,58,16,60;19,69,32,98;23,59,25,69;22,59,23,63;25,59,27,60;21,60,22,61;25,60,26,61;29,60,30,62;17,61,18,62;14,63,16,64;17,65,23,69;19,63,20,65;25,64,30,69;27,63,29,64;34,63,35,64;20,64,23,65;14,66,15,86;30,68,31,69;17,69,19,86;16,69,17,77;32,69,33,70;34,70,35,82;15,71,16,72;33,71,34,74;15,75,16,76;32,81,34,84;32,80,33,81;16,83,17,85;14,88,15,89;18,89,19,92;30,106,36,111;25,98,34,106;32,90,33,98;14,92,16,98;14,91,15,92;16,93,17,97;33,94,34,98;0,104,12,128;0,98,7,104;7,98,9,99;15,98,16,99;21,98,25,103;20,98,21,99;14,99,15,100;16,99,18,100;46,99,128,128;38,99,46,112;37,99,38,107;7,101,11,104;7,100,9,101;11,100,14,102;14,101,15,103;34,101,35,106;14,104,18,110;16,103,18,104;23,103,25,104;20,105,25,109;20,104,23,105;13,105,14,109;25,106,30,108;21,113,31,128;" $sPixelRect &= "22,109,27,113;25,108,27,109;29,108,30,110;28,108,29,109;18,109,20,110;21,109,22,110;16,110,18,112;15,110,16,111;18,110,19,111;31,111,37,112;36,110,37,111;27,111,28,113;12,112,16,115;21,112,22,113;28,112,30,113;32,112,36,115;31,112,32,113;41,112,46,117;38,113,41,115;39,112,41,113;17,118,21,128;19,116,21,118;20,114,21,116;31,116,35,128;31,114,32,116;12,119,17,128;12,115,14,119;14,115,15,117;32,115,33,116;34,115,36,116;40,115,41,116;18,117,19,118;44,117,46,119;42,117,44,118;14,118,15,119;35,120,39,128;35,119,36,120;45,119,46,120;39,122,46,128;39,121,43,122" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates14() Func _PixelCoordinates15() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;41,0,128,115;0,0,41,19;4,19,13,27;0,19,4,25;13,19,15,20;23,19,41,31;22,19,23,22;21,19,22,20;13,20,14,22;8,27,16,30;13,24,14,27;2,25,4,26;0,49,13,98;0,30,7,49;0,27,3,30;0,26,1,27;14,26,15,27;22,26,23,34;5,27,8,28;21,27,22,29;3,28,4,30;7,28,8,29;16,28,17,31;4,29,6,30;17,29,20,31;14,30,16,31;7,35,13,47;7,32,10,35;7,31,9,32;20,31,21,33;19,31,20,32;23,31,24,34;26,31,28,32;33,31,41,71;32,31,33,47;30,33,32,34;31,32,32,33;10,33,12,35;18,33,19,34;18,36,19,37;29,41,32,48;29,37,31,41;29,36,30,37;13,37,14,38;17,39,20,42;23,39,24,41;24,40,25,41;15,41,17,43;17,42,19,44;23,42,26,44;16,43,17,44;19,43,20,44;26,43,27,44;14,45,16,46;14,46,15,47;7,47,12,49;17,49,20,56;18,47,20,49;23,47,25,48;26,47,28,48;22,49,25,56;22,48,24,49;29,49,32,55;28,48,31,49;28,49,29,50;32,49,33,50;13,52,17,56;15,51,17,52;16,50,17,51;20,51,21,56;25,52,29,55;25,51,27,52;21,54,22,55;25,55,26,56;31,56,33,61;30,55,32,56;13,56,14,57;17,59,18,60;23,61,26,63;24,59,25,61;19,61,21,63;20,60,21,61;25,60,26,61;29,61,31,65;30,60,31,61;13,62,15,67;13,61,14,62;31,62,33,65;32,61,33,62;18,74,34,97;18,67,30,74;21,63,24,67;21,62,23,63;15,64,17,66;15,63,16,64;20,63,21,64;24,63,25,64;28,63,29,64;17,64,18,65;26,66,29,67;27,65,28,66;32,65,33,67;15,66,16,67;18,66,20,67;16,69,18,88;17,68,18,69;13,76,16,79;13,69,14,76;30,69,31,74;14,70,15,72;36,71,41,77;35,71,36,75;34,71,35,73;31,72,33,74;34,88,37,112;34,78,36,88;34,76,35,78;38,77,41,81;37,77,38,79;13,79,14,88;36,81,38,83;40,81,41,83;39,81,40,82;36,83,37,84;15,84,16,88;14,84,15,85;39,99,41,113;39,92,41,97;40,87,41,92;17,88,18,89;37,90,38,91;13,91,14,92;13,94,15,98;13,93,14,94;15,95,16,100;23,105,30,128;21,97,34,103;19,97,21,99;40,97,41,99;0,104,12,128;0,98,8,104;8,98,9,99;14,98,15,100;8,101,10,104;8,100,9,101;11,100,14,103;10,101,11,102;20,102,21,103;37,102,38,104;13,105,18,111;15,103,16,105;16,104,18,105;17,103,18,104;22,103,24,105;25,103,34,105;19,106,23,109;20,104,22,106;22,105,23,106;30,105,34,109;37,105,38,110;12,106,13,109;18,107,19,114;38,107,39,109;21,109,23,112;" $sPixelRect &= "31,109,34,110;33,110,34,111;12,113,18,114;16,111,18,113;14,111,16,112;19,111,21,112;30,115,35,128;30,112,32,115;30,111,31,112;19,112,20,113;22,112,23,113;34,112,36,114;32,113,33,115;40,113,41,114;12,120,23,128;12,114,15,120;15,114,17,116;33,114,34,115;21,116,23,120;22,115,23,116;35,115,37,117;46,115,128,128;43,115,46,117;42,115,43,116;15,116,16,117;37,116,39,118;19,118,21,120;20,117,21,118;39,117,40,119;45,117,46,119;40,118,41,119;17,119,19,120;35,120,40,128;35,119,38,120;40,121,45,128;45,122,46,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates15() Func _PixelCoordinates16() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;41,0,128,115;0,0,41,18;3,18,13,29;0,18,3,28;13,18,16,19;23,18,41,29;21,18,23,20;20,18,21,19;13,19,14,21;22,20,23,21;13,27,15,30;13,26,14,27;22,26,23,30;21,27,22,28;15,28,16,31;16,29,20,30;19,28,20,29;0,33,13,97;0,29,3,33;8,29,12,31;6,29,8,30;12,29,13,30;23,29,29,30;35,47,41,71;34,29,41,41;33,29,34,38;31,31,33,33;32,29,33,31;3,30,5,33;14,30,15,31;16,30,18,31;20,30,21,33;23,30,24,31;5,31,7,33;16,31,17,32;7,32,10,33;19,32,20,33;24,32,25,33;26,33,27,34;13,50,16,79;13,35,15,50;13,34,14,35;24,35,26,36;25,34,26,35;30,36,32,39;15,37,17,38;24,37,26,39;26,37,27,38;31,43,34,48;32,39,33,43;31,39,32,40;25,40,26,44;24,40,25,42;26,40,27,41;27,41,28,42;36,41,41,47;35,41,36,45;17,42,20,44;31,42,32,43;34,44,35,45;27,45,28,47;15,47,16,48;25,49,28,55;25,47,27,49;30,47,31,48;32,48,35,49;34,47,35,48;16,48,17,49;19,49,23,55;20,48,23,49;23,50,25,52;24,48,25,50;29,48,30,49;32,49,34,52;16,51,19,55;18,50,19,51;28,51,30,54;28,50,29,51;30,51,32,53;31,50,32,51;23,52,24,55;31,53,33,54;32,52,33,53;33,54,35,64;34,52,35,54;28,54,29,55;32,54,33,55;16,55,17,56;22,55,23,56;26,55,27,56;26,59,29,62;27,56,28,59;32,59,33,64;16,61,18,66;16,60,17,61;22,60,24,62;18,72,35,95;24,61,26,72;18,62,19,65;23,62,24,63;26,62,28,63;31,62,32,63;19,63,20,64;20,66,24,72;21,64,22,66;34,64,35,65;22,65,23,66;26,66,30,72;34,66,35,69;16,68,17,72;18,70,20,72;19,68,20,70;30,69,34,72;31,68,33,69;37,71,41,76;36,71,37,74;17,73,18,87;35,88,37,110;35,79,37,83;35,75,36,79;38,76,41,80;13,79,15,86;37,80,38,82;40,80,41,83;39,80,40,81;35,83,36,88;16,84,17,87;13,86,14,88;38,99,41,102;40,88,41,99;13,92,15,98;13,89,14,92;39,91,40,92;15,93,16,101;39,94,40,99;23,106,30,128;24,95,35,104;20,95,24,99;19,95,20,98;0,101,12,128;0,97,9,101;9,97,12,98;16,97,17,100;14,98,15,101;21,101,24,103;22,99,24,101;21,99,22,100;9,100,11,101;12,100,14,101;12,101,13,110;39,102,41,112;13,103,14,104;21,104,23,109;20,103,22,104;14,106,19,111;15,104,18,106;23,104,25,106;30,104,35,109;27,104,30,106;26,104,27,105;37,104,38,108;18,105,19,106;25,105,26,106;" $sPixelRect &= "13,106,14,110;22,109,23,112;32,109,35,111;31,109,32,110;19,110,21,112;34,111,36,112;35,110,36,111;12,113,19,114;17,111,19,113;16,111,17,112;21,111,22,112;38,111,39,112;12,112,15,113;19,112,20,113;30,114,35,128;30,112,31,114;33,113,35,114;34,112,35,113;40,112,41,113;31,113,32,114;12,114,17,116;17,114,18,115;35,114,36,117;19,118,23,128;21,116,23,118;22,115,23,116;36,115,38,117;45,115,128,128;43,115,45,117;42,115,43,116;12,119,19,128;12,116,15,119;15,116,16,117;37,117,40,118;38,116,39,117;20,117,21,118;44,117,45,118;35,120,40,128;35,118,36,120;40,118,41,120;39,118,40,119;36,119,37,120;40,121,45,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates16() Func _PixelCoordinates17() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;40,0,128,114;1,0,40,15;0,0,1,7;0,15,13,28;0,8,1,15;13,15,17,16;24,15,40,25;22,15,24,18;20,15,22,16;13,16,14,17;23,18,24,20;22,23,24,26;23,22,24,23;13,24,15,28;13,23,14,24;21,24,22,25;15,25,16,28;19,25,21,27;26,25,28,27;24,25,26,26;34,25,40,32;32,25,34,28;16,27,19,28;18,26,19,27;23,26,25,27;20,27,21,28;6,28,13,29;16,28,18,29;21,28,22,30;26,28,28,30;25,28,26,29;33,28,34,29;0,33,17,97;0,29,6,33;11,29,13,30;6,30,9,33;25,30,27,31;9,31,14,33;25,31,26,32;14,32,16,33;32,32,33,35;36,32,40,36;35,32,36,34;26,33,27,34;33,35,35,41;33,33,34,35;17,35,19,36;26,36,27,38;28,46,40,50;34,41,37,46;35,36,36,41;38,36,40,40;37,36,38,38;27,37,29,39;19,39,21,40;20,38,21,39;36,38,37,41;37,39,38,41;19,40,20,41;28,40,32,41;39,40,40,41;28,41,30,43;32,41,33,43;17,57,20,75;17,45,19,57;17,42,18,45;37,43,40,46;37,42,38,43;39,42,40,43;20,43,22,45;27,43,29,44;30,43,32,44;21,46,27,52;23,45,26,46;24,44,25,45;28,45,30,46;29,44,30,45;27,46,28,48;19,48,21,52;28,50,31,52;31,50,32,51;34,50,36,60;36,50,37,55;37,54,40,83;38,50,40,54;19,52,20,54;30,55,32,58;31,54,32,55;26,57,28,59;28,58,30,61;29,57,30,58;36,57,37,59;20,59,22,63;20,58,21,59;30,58,31,59;22,60,23,62;22,65,33,103;29,62,33,65;30,61,32,62;24,62,26,65;26,63,29,65;23,64,24,65;33,66,35,83;33,64,34,66;20,65,21,68;35,70,37,74;35,67,37,69;36,66,37,67;21,68,22,85;36,69,37,70;36,74,37,75;17,75,19,81;19,81,21,83;20,79,21,81;17,81,18,83;20,83,21,84;33,83,34,84;38,83,40,107;37,85,38,87;21,87,22,99;31,104,37,110;33,89,35,104;33,87,34,89;17,90,19,101;17,89,18,90;37,90,38,93;35,95,36,96;0,102,15,128;0,97,9,102;14,97,17,100;35,97,36,104;9,99,11,102;13,99,14,102;11,100,12,102;16,100,17,102;15,100,16,101;12,101,13,102;17,101,18,102;21,103,24,108;21,102,22,103;15,103,16,108;28,103,31,108;23,111,30,128;24,106,28,111;25,103,28,105;31,103,33,104;37,103,38,105;16,105,19,109;17,104,20,105;24,104,25,106;19,105,20,106;25,105,27,106;39,107,40,110;18,109,24,111;19,108,20,109;22,108,24,109;28,108,29,109;30,108,31,109;15,111,17,115;15,110,16,111;30,118,37,128;" $sPixelRect &= "32,110,36,118;36,110,38,113;19,111,20,112;17,112,18,114;30,112,32,118;39,112,40,113;19,117,23,128;22,113,23,117;36,113,37,114;21,114,22,115;45,114,128,128;42,114,45,117;41,114,42,115;15,115,16,116;20,116,22,117;44,117,45,119;43,117,44,118;15,119,19,128;18,118,19,119;37,120,41,128;37,119,39,120;41,121,45,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates17() Func _PixelCoordinates18() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;50,0,128,96;0,0,50,26;4,26,16,36;0,40,15,98;1,26,4,35;0,26,1,33;16,26,18,27;33,26,50,38;26,26,33,35;25,26,26,28;24,26,25,27;16,27,17,28;13,36,19,38;16,33,17,36;24,34,26,36;25,33,26,34;17,34,18,36;0,36,4,40;1,35,3,36;20,36,23,37;21,35,22,36;26,35,30,36;7,36,13,37;25,36,28,37;32,36,33,37;4,37,9,40;19,37,22,38;9,38,10,40;15,38,17,39;19,38,20,39;28,38,30,40;38,38,50,44;36,38,38,40;34,38,36,39;10,39,14,40;27,39,28,40;30,39,31,40;15,56,24,75;15,42,20,56;15,40,17,42;37,40,38,41;17,41,19,42;29,41,31,43;34,42,38,44;35,41,36,42;31,43,32,44;32,44,33,45;36,54,46,58;37,45,42,51;35,44,41,45;45,44,50,47;43,44,45,46;36,45,37,49;31,46,32,47;42,47,45,54;42,46,44,47;25,47,28,48;47,57,50,67;48,47,50,57;45,49,48,51;47,47,48,49;20,50,22,56;20,48,21,50;32,50,34,54;32,49,33,50;35,49,36,50;31,50,32,52;34,50,35,53;38,51,42,54;45,51,46,54;35,52,36,53;32,54,33,55;22,55,23,56;25,55,31,60;31,56,36,60;34,55,36,56;24,56,25,62;38,58,45,67;37,58,38,59;25,60,26,61;35,60,36,63;45,61,47,63;45,60,46,61;37,62,38,64;45,63,46,64;24,65,26,70;24,64,25,65;30,64,31,65;34,64,36,65;32,65,35,67;31,65,32,66;45,65,47,67;26,66,27,69;27,67,28,69;23,77,41,100;27,71,40,77;34,68,36,71;33,67,35,68;42,69,47,76;41,67,46,69;49,67,50,69;29,69,31,71;36,70,39,71;37,69,38,70;40,71,42,72;41,69,42,71;31,70,32,71;45,76,50,83;47,72,49,76;47,71,48,72;24,72,25,73;25,74,27,77;26,72,27,74;41,72,42,73;40,73,41,77;49,73,50,76;15,75,21,80;21,75,23,77;24,75,25,77;43,76,45,80;21,77,22,78;15,80,19,84;19,80,20,82;20,84,23,96;21,82,23,84;22,80,23,82;44,80,45,81;46,85,50,88;47,83,50,85;46,83,47,84;15,84,18,86;18,86,20,88;19,85,20,86;15,86,17,87;37,100,51,113;41,89,45,100;41,86,43,89;45,86,46,87;15,87,16,89;19,88,20,89;43,88,44,89;47,88,50,90;47,90,48,91;48,91,50,93;49,90,50,91;15,92,17,98;15,91,16,92;45,93,47,100;45,91,46,93;17,93,18,99;49,93,50,94;47,96,49,100;47,95,48,96;18,96,19,99;21,96,23,99;56,96,128,128;51,96,56,98;0,100,14,128;0,98,11,100;49,98,51,100;53,100,56,102;54,98,56,100;53,98,54,99;11,99,12,100;22,99,23,100;" $sPixelRect &= "14,102,17,108;14,100,15,102;18,102,20,113;17,101,19,102;18,100,19,101;25,108,33,128;30,100,37,106;26,100,28,108;24,100,26,101;28,100,30,104;15,101,16,102;17,102,18,107;55,102,56,109;54,102,55,104;23,104,25,109;25,104,26,108;22,105,23,107;28,105,30,108;20,106,21,113;30,106,31,108;33,106,37,109;32,106,33,107;31,107,32,108;51,107,52,116;14,108,16,109;14,112,18,116;17,108,18,112;14,109,15,110;21,109,22,112;24,109,25,112;35,109,37,111;34,109,35,110;22,110,23,111;52,112,56,128;54,111,56,112;55,110,56,111;14,111,15,112;33,111,34,112;36,111,37,112;52,111,53,112;18,113,19,115;33,113,47,128;50,113,51,115;49,113,50,114;20,117,25,128;23,115,25,117;24,114,25,115;47,117,51,128;47,114,48,117;14,119,20,128;14,116,17,119;21,116,23,117;48,116,49,117;18,118,20,119;51,118,52,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates18() Func _PixelCoordinates19() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;44,0,128,75;0,0,44,26;0,26,19,42;19,26,21,28;21,26,22,27;30,26,44,36;28,26,30,28;26,26,28,27;19,28,20,30;29,28,30,30;19,34,21,41;19,32,20,34;28,34,30,38;29,32,30,34;27,35,28,38;26,35,27,36;21,37,25,39;21,36,22,37;23,36,25,37;30,36,31,37;37,36,44,44;34,36,37,39;25,37,26,38;30,39,32,40;31,38,32,39;21,39,22,40;36,39,37,41;35,39,36,40;32,40,33,43;0,45,14,128;0,42,1,45;8,42,14,44;2,42,8,43;14,42,17,43;14,54,27,74;14,45,24,54;21,42,23,45;17,43,21,45;23,43,24,44;33,43,34,44;1,44,6,45;13,44,17,45;38,55,44,57;40,44,44,51;39,44,40,49;38,44,39,46;34,45,35,47;36,48,37,49;28,49,31,50;24,50,25,54;28,50,29,51;35,51,39,53;37,50,38,51;32,51,33,52;41,51,44,55;25,52,26,54;35,53,37,55;37,53,38,54;29,56,34,60;29,55,31,56;36,57,38,60;37,56,38,57;27,57,29,62;34,57,35,60;38,57,39,58;41,57,44,67;35,58,36,60;29,60,30,61;27,65,29,69;27,62,28,65;40,64,41,65;34,65,35,66;29,66,30,69;36,66,37,68;35,66,36,67;30,67,31,69;26,77,44,101;30,71,42,75;37,68,38,71;27,69,28,73;32,69,34,71;38,69,39,71;40,70,41,71;28,74,30,77;29,72,30,74;42,72,43,77;14,74,23,81;23,74,25,78;25,74,26,76;26,76,28,77;27,75,28,76;30,75,36,77;37,75,42,77;43,75,44,77;68,75,128,128;51,75,68,90;47,75,51,83;46,75,47,81;45,75,46,77;23,78,24,79;22,84,26,99;24,81,26,84;25,79,26,81;14,81,20,86;20,81,22,83;20,83,21,84;23,83,24,84;44,83,45,87;48,83,51,85;21,85,22,88;50,85,51,87;14,90,18,98;14,86,17,90;17,86,19,87;17,87,18,88;39,101,61,112;44,90,49,101;44,88,45,90;50,88,51,89;45,89,47,90;58,90,68,96;54,90,58,92;52,90,54,91;18,93,20,98;18,91,19,93;49,93,53,101;49,91,50,93;50,92,51,93;56,92,58,94;55,92,56,93;53,95,55,101;53,94,54,95;57,94,58,95;55,97,58,101;55,96,57,97;63,96,68,100;59,96,63,97;62,97,63,98;58,98,59,101;14,111,18,116;14,101,18,109;14,99,15,101;24,99,26,100;59,99,60,101;15,100,17,101;18,101,21,108;19,100,20,101;60,100,61,101;65,100,68,103;64,100,65,101;32,101,39,105;29,101,32,104;61,106,64,114;61,103,62,106;67,103,68,105;66,103,67,104;24,114,59,128;24,105,33,111;24,104,29,105;62,104,63,106;23,105,24,108;" $sPixelRect &= "35,105,39,109;34,105,35,106;33,107,35,114;33,106,34,107;19,108,22,112;21,107,22,108;59,116,68,128;64,109,68,116;64,107,65,109;65,108,66,109;67,108,68,109;14,109,16,111;22,109,23,112;35,109,36,114;38,109,39,111;37,109,38,110;23,110,24,111;25,111,33,114;36,111,37,114;18,112,20,114;20,112,21,113;41,112,56,114;58,112,61,113;37,113,38,114;40,113,41,114;56,113,58,114;60,113,61,114;18,114,19,115;63,114,64,116;62,114,63,115;14,118,24,128;22,116,24,118;23,115,24,116;59,115,61,116;14,116,17,118;20,117,22,118" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates19() Func _PixelCoordinates20() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;52,0,128,64;0,0,32,35;32,0,52,19;32,19,34,21;34,19,35,20;43,19,52,29;40,19,43,21;38,19,40,20;32,21,33,23;41,21,43,28;32,27,34,34;32,24,33,27;39,28,42,29;40,27,41,28;34,30,36,33;34,29,35,30;39,29,40,31;38,29,39,30;40,29,41,30;47,29,52,35;44,29,47,32;36,30,37,32;46,32,47,34;45,32,46,33;35,33,36,34;42,34,46,35;43,33,44,34;32,34,33,35;0,46,27,94;0,35,20,46;20,35,27,37;27,35,30,36;27,39,34,61;29,36,34,39;33,35,34,36;45,35,46,38;44,35,45,36;49,35,52,43;48,35,49,39;46,36,47,37;20,37,25,39;25,37,26,38;44,37,45,39;27,38,28,39;20,39,23,41;23,39,24,40;24,41,27,46;25,40,27,41;26,39,27,40;37,39,38,40;20,41,22,42;45,44,48,46;46,41,48,44;45,41,46,42;20,42,21,43;22,44,24,46;23,42,24,44;34,45,36,51;34,42,35,45;48,42,49,43;50,43,52,47;40,44,41,45;20,45,21,46;45,46,47,47;39,47,40,48;42,47,44,48;46,49,52,54;48,47,50,49;51,47,52,48;47,48,48,49;39,51,44,54;41,49,43,51;36,50,37,51;40,50,41,51;45,50,46,55;34,51,35,53;36,52,39,54;36,54,38,55;42,54,44,55;46,54,49,55;51,54,52,64;35,55,37,56;33,61,38,64;34,57,36,61;35,56,36,57;46,59,49,60;47,56,48,59;36,59,37,61;42,59,44,61;37,60,38,61;44,61,47,64;45,60,48,61;50,60,51,64;27,66,33,75;27,61,32,66;38,61,39,63;47,61,48,62;32,62,33,65;33,64,36,68;36,81,56,103;37,67,51,81;40,64,42,67;47,64,48,67;46,64,47,65;73,64,128,128;59,64,73,85;54,64,59,74;38,66,40,67;39,65,40,66;42,65,43,67;43,66,47,67;44,65,45,66;48,65,49,67;49,66,50,67;33,68,35,71;51,70,54,81;51,68,52,70;34,74,37,81;35,71,37,74;36,69,37,71;52,69,53,70;33,71,34,72;54,74,55,81;57,74,59,81;56,74,57,77;27,75,31,80;31,75,32,77;31,87,36,99;31,80,34,84;33,76,34,80;27,80,30,82;34,81,36,87;58,81,59,84;27,82,29,83;27,83,28,86;32,84,34,87;63,85,73,96;60,85,63,88;29,92,31,99;30,88,31,92;61,90,63,92;62,88,63,90;61,88,62,89;27,89,28,90;51,103,66,128;56,93,60,103;56,90,58,93;56,89,57,90;60,90,61,91;58,91,59,93;62,92,63,93;0,94,18,128;18,94,25,97;25,94,26,96;60,96,62,103;60,94,61,96;28,95,29,98;67,96,73,104;64,97,67,99;65,96,67,97;18,98,23,110;18,97,22,98;62,99,64,103;62,98,63,99;23,101,25,103;" $sPixelRect &= "23,99,24,101;33,99,36,101;66,99,67,101;30,100,31,101;25,112,51,128;26,104,51,108;27,101,29,104;64,101,65,103;26,102,27,104;30,103,37,104;35,102,36,103;23,103,24,105;39,103,51,104;25,104,26,107;66,107,68,109;66,104,67,107;70,104,73,109;69,104,70,105;69,107,70,108;23,108,24,109;27,108,47,112;48,108,51,109;26,109,27,112;47,109,49,112;66,109,67,113;71,109,73,112;18,110,21,113;21,110,22,111;49,110,51,112;67,111,68,113;24,112,25,114;72,112,73,114;18,113,20,114;18,114,19,115;20,117,25,128;23,115,25,117;66,117,73,128;66,115,67,117;72,115,73,117;22,116,23,117;67,116,68,117;18,118,20,128" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates20() Func _PixelCoordinates21() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;57,0,128,57;0,0,40,29;40,0,57,21;40,21,42,22;48,21,57,30;47,21,48,23;46,21,47,22;40,22,41,23;0,34,27,96;0,29,24,34;24,29,30,31;30,29,33,30;35,29,41,31;46,30,49,31;47,29,48,30;52,30,57,35;51,30,52,33;50,30,51,31;25,31,28,32;27,44,42,65;27,33,40,44;29,32,43,33;32,31,33,32;35,31,37,32;45,31,48,32;24,32,25,34;40,33,43,35;51,34,52,35;49,35,51,36;55,35,57,42;54,35,55,37;53,35,54,36;49,36,50,37;40,37,41,44;51,38,53,40;51,37,52,38;44,40,45,41;51,40,52,41;53,44,57,45;56,42,57,44;52,43,54,44;52,45,54,49;54,45,55,46;56,45,57,46;42,51,44,57;42,48,43,51;49,49,50,51;52,51,57,56;54,50,57,51;55,49,56,50;46,52,48,53;47,51,48,52;49,53,52,55;49,52,51,53;44,53,46,55;46,53,47,54;48,54,49,56;44,55,45,56;49,55,51,56;53,56,54,58;52,56,53,57;54,56,55,57;42,57,43,58;72,57,128,115;61,57,72,78;57,58,61,66;58,57,61,58;53,59,55,62;42,61,44,65;42,60,43,61;49,61,50,63;48,61,49,62;37,74,60,100;48,67,53,74;50,62,53,65;52,61,53,62;44,62,45,64;53,62,54,63;56,62,57,65;27,65,37,72;37,65,41,68;45,66,48,68;46,65,47,66;52,65,53,67;53,66,54,67;59,68,61,74;60,66,61,68;42,68,46,74;43,67,45,68;53,68,57,74;54,67,56,68;37,68,39,70;39,68,40,69;39,70,42,74;40,69,42,70;37,70,38,71;57,71,59,74;57,70,58,71;38,71,39,74;27,72,33,77;33,72,35,74;35,72,36,73;46,72,47,74;37,73,38,74;33,74,34,75;32,78,37,98;35,75,37,78;36,74,37,75;60,74,61,75;33,77,35,78;34,76,35,77;27,77,30,79;30,77,31,78;31,78,32,80;66,78,72,99;63,78,66,86;62,78,63,84;27,79,28,81;60,82,61,87;27,83,28,90;30,85,32,97;31,83,32,85;65,86,66,91;64,86,65,88;29,90,30,97;55,103,67,128;60,93,63,103;60,90,61,93;61,92,62,93;64,92,66,94;0,96,21,128;21,96,25,107;25,96,26,101;63,96,64,103;36,98,37,99;27,100,31,103;28,99,29,100;31,99,32,100;64,99,65,103;68,99,72,106;67,99,68,103;34,100,36,101;27,111,55,128;43,100,55,108;30,104,43,111;40,100,43,103;39,100,40,101;55,100,60,103;31,101,33,104;33,101,34,102;65,102,66,103;25,103,26,106;29,103,30,105;28,103,29,104;30,103,31,104;33,103,42,104;26,104,27,105;28,107,30,111;29,106,30,107;67,106,68,113;70,106,72,111;" $sPixelRect &= "21,107,23,111;23,107,24,108;26,109,28,111;27,108,28,109;43,108,51,111;53,108,55,110;52,108,53,109;51,110,52,111;21,111,22,112;25,111,27,113;71,111,72,112;21,116,27,128;24,115,27,116;26,114,27,115;67,118,128,128;67,115,68,118;73,115,128,118;68,116,69,118;69,117,70,118;72,117,73,118" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates21() Func _PixelCoordinates22() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;61,0,128,47;0,37,45,69;0,0,33,37;35,0,61,20;33,0,35,18;40,20,61,21;33,23,44,37;33,21,40,23;46,21,48,23;45,21,46,22;48,21,50,22;55,21,61,31;53,21,55,23;52,21,53,22;40,22,42,23;44,24,47,35;44,23,46,24;54,23,55,24;47,31,49,35;47,29,48,31;53,31,55,32;54,30,55,31;58,31,61,36;52,32,54,33;49,33,50,34;54,34,56,35;44,35,46,36;53,35,55,36;56,35,57,37;57,36,58,37;60,36,61,42;55,37,56,39;45,38,46,39;56,39,57,40;58,40,59,41;45,49,48,57;45,44,47,49;45,41,46,44;56,41,57,43;51,44,53,45;57,46,59,50;56,45,58,46;59,45,61,46;56,46,57,47;59,46,60,48;71,47,128,113;63,47,71,79;62,47,63,67;56,48,57,51;48,50,49,51;51,50,53,56;56,52,62,57;59,51,62,52;60,50,61,51;50,51,51,54;48,53,49,56;53,54,55,57;53,53,54,54;52,56,53,57;55,56,56,57;45,57,47,58;56,57,59,58;45,60,47,65;45,58,46,60;57,59,58,64;60,62,62,67;61,60,62,62;47,61,48,65;52,61,53,63;53,62,54,65;42,73,61,101;56,62,57,73;48,63,49,64;54,63,56,66;45,65,46,66;46,68,56,73;49,66,51,68;47,67,49,68;53,67,55,68;57,69,60,73;57,68,59,69;0,69,32,107;32,69,40,74;40,69,43,71;43,69,44,70;44,70,46,73;45,69,46,70;61,72,63,79;62,70,63,72;40,71,42,72;43,71,44,73;60,71,61,73;40,72,41,73;32,74,37,78;37,74,39,75;36,79,42,91;40,75,42,79;41,74,42,75;37,75,38,76;39,76,40,79;32,78,35,80;35,78,36,79;38,78,39,79;61,79,62,89;66,79,71,92;64,79,66,86;32,80,33,82;32,85,34,97;32,84,33,85;62,86,63,88;65,86,66,88;34,89,35,97;37,91,42,98;57,103,67,128;61,94,64,103;61,91,62,94;67,92,71,103;62,93,63,94;66,93,67,97;65,94,66,95;40,98,42,99;64,98,65,103;32,100,36,107;32,99,34,100;38,100,39,101;37,111,55,128;50,101,57,109;44,101,50,103;43,101,44,102;57,101,61,103;65,101,66,103;40,104,49,111;39,103,45,104;47,103,50,104;68,103,71,107;36,104,38,105;39,104,40,105;49,104,50,105;36,105,37,106;49,106,50,111;67,106,68,113;0,107,28,128;31,107,34,110;30,107,31,108;34,107,35,109;38,108,40,111;39,107,40,108;70,107,71,108;28,116,37,128;28,109,31,116;36,110,38,111;37,109,38,110;50,109,53,111;56,109,57,111;55,109,56,110;68,109,69,111;69,110,71,111;70,109,71,110;31,110,33,111;" $sPixelRect &= "53,110,54,111;31,111,32,113;36,111,37,112;70,111,71,112;55,112,57,128;35,114,37,116;36,113,37,114;73,113,128,128;72,113,73,116;32,115,35,116;67,118,73,128;67,115,68,118;68,116,69,118;69,117,70,118;72,117,73,118" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates22() Func _PixelCoordinates23() #region pixel coordinates Local $sPixelRect $sPixelRect &= "90,128x128;61,0,128,65;0,23,42,77;0,0,39,19;39,0,61,17;39,17,45,18;57,17,61,27;56,17,57,19;55,17,56,18;0,19,35,23;35,19,36,20;42,19,48,32;38,20,42,23;40,19,42,20;48,19,51,20;48,20,49,21;56,20,57,21;37,22,38,23;55,27,57,29;56,26,57,27;48,28,50,32;48,27,49,28;59,31,61,33;60,27,61,31;59,27,60,29;53,29,56,30;54,28,55,29;50,30,51,31;54,30,55,31;54,32,57,33;56,31,57,32;42,41,46,56;42,32,44,41;44,32,45,36;53,33,55,34;57,33,58,34;60,33,61,37;55,35,57,36;44,37,45,41;55,37,56,39;55,40,56,41;59,41,60,42;60,42,61,44;56,43,58,44;58,44,60,46;56,45,58,48;46,46,47,47;51,46,53,47;58,46,59,47;48,50,53,54;50,47,52,50;55,47,56,48;48,49,50,50;49,48,50,49;46,49,47,50;55,49,61,55;54,50,55,51;53,51,54,54;54,53,55,55;46,54,47,55;51,54,53,55;56,55,57,62;42,56,45,69;59,61,61,64;60,58,61,61;45,60,47,64;45,59,46,60;51,59,53,61;44,71,61,101;55,59,56,71;57,59,58,60;47,61,48,63;53,61,55,64;52,61,53,62;49,65,54,71;49,64,51,65;52,64,53,65;60,64,61,65;56,66,59,71;56,65,58,66;73,65,128,128;65,65,73,89;62,65,65,74;47,66,49,68;54,66,55,71;46,68,48,71;46,67,47,68;59,67,60,71;42,69,44,72;45,70,46,71;48,70,49,71;61,70,62,73;60,70,61,71;42,72,43,74;63,74,65,80;61,75,63,76;61,76,62,86;0,77,32,128;32,77,38,96;38,77,41,80;42,100,44,109;42,79,44,99;43,77,44,79;38,80,40,82;64,80,65,85;41,81,42,83;38,82,39,84;38,89,40,94;38,87,39,89;67,89,73,102;65,92,67,94;66,89,67,92;56,102,67,128;61,94,64,102;61,91,63,94;61,90,62,91;37,96,40,97;38,94,39,96;66,94,67,97;37,97,39,98;32,99,34,107;32,98,33,99;37,98,38,100;64,98,65,102;43,99,44,100;34,101,36,106;34,100,35,101;46,101,56,107;45,101,46,102;56,101,61,102;65,101,66,102;68,102,73,107;36,104,40,109;36,103,39,104;41,103,42,106;41,112,56,128;44,104,46,112;44,103,45,104;67,105,68,113;35,106,36,108;32,109,35,113;32,107,33,109;46,107,52,112;54,107,56,109;53,107,54,108;70,109,73,111;71,107,73,109;70,107,71,108;33,108,34,109;40,108,42,109;35,109,36,112;37,109,40,110;43,109,44,112;52,109,53,112;68,109,70,110;36,110,38,111;53,110,56,112;36,111,37,112;72,111,73,115;71,111,72,113;" $sPixelRect &= "32,113,34,114;32,114,33,115;32,116,41,128;38,114,41,116;36,115,38,116;67,117,73,128;67,115,68,117;72,116,73,117" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates23() #endregion  
      Example 3
      #include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Global Const $iFrames = 8 Global $aAnim[$iFrames + 1], $i, $j, $aTmp, $iDelay, $iMin = 0xFFFF For $i = 0 To $iFrames $aAnim[$i] = Call("_PixelCoordinates" & $i) ;create an array with arrays as values $aTmp = $aAnim[$i] $j = Int(StringRegExpReplace($aTmp[0], "(\d+),.*", "$1")) If $j < $iMin Then $iMin = $j ;minimum frame delay value Next $iDelay = Max($iMin - 40, 30) Global $aFrame0 = $aAnim[0] ;content of $aFrame0[0] is <anim delay>,<anim witdh>x<anim height> Global Const $iAnimWidth = StringRegExpReplace($aFrame0[0], "\d+,(\d+)x\d+", "$1") ;extract width Global Const $iAnimHeight = StringRegExpReplace($aFrame0[0], "\d+,\d+x(\d+)", "$1") ;extract height Global $hGUI = GUICreate("GIF Anim with different delays", $iAnimWidth, $iAnimHeight) GUISetBkColor(0x003388) GUISetState() Global Const $iDeltaX = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME) Global Const $iDeltaY = _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 Global Const $size = WinGetPos(HWnd($hGUI)) Global Const $iHwndWidth = $size[2], $iHwndHeight = $size[3] Global Const $hDll = DllOpen("gdi32.dll") Global Const $hDll2 = DllOpen("user32.dll") GUIRegisterMsg($WM_TIMER, "PlayAnim") ;$WM_TIMER = 0x0113 DllCall("User32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iDelay, "int", 0) Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIRegisterMsg($WM_TIMER, "") GUIDelete() DllClose($hDLL) DllClose($hDLL2) Exit EndSwitch Until False Func Max($a, $b) If $a > $b Then Return $a Return $b EndFunc Func PlayAnim() Local Static $f = 0 Local $aDelay = $aAnim[$f] Local $iDelay = StringRegExpReplace($aDelay[0], "(\d+),.*", "$1") Local Static $iTimer = TimerInit() DllCall($hDll, "bool", "DeleteObject", "handle", _WinAPI_GuiImageHole($hGUI, $aDelay, 0, 0, $iAnimWidth, $iAnimHeight)) If TimerDiff($iTimer) > $iDelay Then $f += 1 $iTimer = TimerInit() EndIf If $f > $iFrames Then $f = 0 EndFunc Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True) If $bCorrection Then $iX += $iDeltaX $iY += $iDeltaY EndIf Local $aRegion, $aRegionMask $aRegion = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", 0, "int", 0) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iX, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iHwndWidth, "int", $iY) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $iWidth * $fScale, "int", 0, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", $iY + $iHeight * $fScale, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) Local $i, $aBlock, $aRet For $i = 1 To UBound($aPixelArray) - 1 $aBlock = StringSplit($aPixelArray[$i], ",", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $aBlock[0] * $fScale, "int", $iY + $aBlock[1] * $fScale, "int", $iX + $aBlock[2] * $fScale, "int", $iY + $aBlock[3] * $fScale) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $aRegionMask[0]) Next DllCall($hDll2, "int", "SetWindowRgn", "hwnd", $hWnd, "handle", $aRegion[0], "bool", 1) Return $aRegion[0] EndFunc ;==>_WinAPI_GuiImageHole ;Code below was generated by Perforator v0.9.8 build 2013-04-04 beta #region Func _PixelCoordinates0() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x201;0,0,124,20;136,0,200,129;124,0,136,15;124,15,125,16;129,15,136,16;127,59,136,96;134,16,136,59;133,16,134,17;0,94,68,157;0,20,87,82;87,20,97,38;97,20,103,24;103,20,104,22;110,20,125,29;105,20,110,26;125,22,131,28;126,20,128,22;125,21,126,22;128,21,130,22;103,24,105,25;104,23,105,24;97,24,100,26;100,24,101,25;131,25,132,26;97,26,99,27;108,26,110,28;106,26,108,27;97,27,98,29;125,28,129,30;129,28,130,29;116,29,125,32;114,29,116,31;112,29,114,30;96,40,100,55;97,32,100,40;97,30,98,32;125,30,127,34;127,30,128,31;98,31,99,32;120,32,125,33;127,32,128,34;133,32,134,36;100,35,104,43;100,33,101,35;101,34,103,35;104,38,109,47;104,36,106,38;106,37,108,38;87,38,95,45;95,38,96,43;109,41,115,53;109,39,111,41;111,40,113,41;115,42,120,51;115,41,116,42;128,44,134,56;130,43,134,44;133,42,134,43;100,43,101,44;100,46,104,48;103,43,104,46;102,43,103,44;120,43,128,51;128,43,129,44;87,49,93,64;87,45,91,49;93,45,94,46;95,45,96,54;104,47,106,48;107,47,109,48;91,48,92,49;100,50,103,56;100,48,102,50;103,48,105,49;103,53,112,57;108,50,109,53;103,51,104,53;115,51,116,52;104,52,108,53;119,52,120,54;127,52,128,58;112,53,113,56;119,55,123,61;120,53,122,55;113,54,114,56;123,54,124,58;122,54,123,55;124,54,125,55;97,55,98,56;99,55,100,56;113,58,119,61;114,55,115,58;102,56,103,58;101,56,102,57;115,56,119,58;128,56,129,57;130,56,134,59;93,57,94,64;103,57,104,62;106,57,112,59;129,57,130,59;105,60,108,65;104,59,106,60;109,59,111,60;101,60,103,61;104,60,105,62;119,66,127,85;123,62,127,66;124,60,127,62;108,61,114,62;115,61,116,62;117,61,121,62;108,62,110,66;110,62,111,64;99,63,105,65;111,63,112,64;121,64,123,66;122,63,123,64;87,67,91,71;87,64,91,66;97,64,99,66;94,66,98,67;96,65,97,66;99,65,101,66;107,65,108,66;110,65,112,67;120,65,121,66;87,66,90,67;112,66,113,67;94,67,97,68;99,67,107,73;113,67,114,68;117,68,119,75;118,67,119,68;93,68,95,69;98,68,99,72;107,68,109,72;109,68,110,70;93,69,94,70;110,69,111,70;116,69,117,70;92,70,93,71;88,71,90,72;94,71,95,72;109,71,110,72;87,72,89,89;107,72,108,73;" $sPixelRect &= "93,74,96,76;93,73,95,74;99,73,105,74;110,74,114,78;112,73,114,74;101,74,102,75;96,75,100,85;109,75,110,76;95,76,96,80;94,76,95,78;100,76,102,77;116,80,119,89;117,76,119,80;103,77,104,78;111,78,113,81;92,79,93,80;93,80,94,83;0,82,61,94;61,82,62,85;70,82,78,91;65,82,70,87;64,82,65,86;63,82,64,84;78,82,84,86;84,82,87,84;89,87,93,99;89,82,90,87;94,82,95,84;114,85,116,91;115,82,116,85;84,84,85,85;86,85,87,89;90,85,91,87;97,85,100,86;119,87,122,89;119,85,121,87;123,85,127,88;122,85,123,87;78,86,80,88;80,86,81,87;91,86,92,87;99,86,100,87;111,87,114,97;113,86,114,87;67,87,70,89;66,87,67,88;108,87,109,88;61,90,63,94;61,88,62,90;78,88,79,89;93,89,95,94;93,88,94,89;125,88,127,92;124,88,125,90;69,89,70,90;88,89,89,90;95,89,96,92;117,89,121,90;120,90,121,91;63,91,64,94;73,91,77,93;71,91,73,92;87,91,89,94;85,91,87,92;114,91,115,95;64,92,65,94;126,92,127,94;65,93,67,94;75,93,76,95;74,93,75,94;100,93,102,96;88,94,89,99;93,94,94,96;102,94,103,96;68,97,74,134;68,95,70,97;87,95,88,96;110,95,111,96;70,96,72,97;125,99,136,113;128,96,136,99;111,97,113,100;74,98,77,109;91,99,96,101;93,98,94,99;98,99,102,101;99,98,101,99;127,98,128,99;77,99,78,103;76,127,99,168;78,108,85,127;80,99,83,108;90,99,91,100;83,100,84,101;96,100,98,103;111,100,112,116;121,101,125,111;123,100,125,101;93,101,96,102;98,101,101,102;119,102,121,106;120,101,121,102;88,102,91,105;118,102,119,103;91,104,95,107;91,103,93,104;98,104,101,106;79,105,80,108;89,105,91,106;95,105,98,108;98,106,100,107;120,106,121,109;83,107,84,108;86,107,89,109;94,107,95,108;113,118,117,135;112,112,114,113;113,107,114,112;88,109,93,111;89,108,91,109;85,115,100,127;99,108,100,115;74,109,76,114;87,109,88,110;93,110,99,111;98,109,99,110;85,111,87,115;85,110,86,111;112,110,113,111;90,111,98,112;114,111,115,112;123,111,125,115;122,111,123,113;87,112,88,115;88,113,89,115;95,114,99,115;98,113,99,114;113,113,115,118;125,113,131,116;131,113,133,115;134,113,136,117;74,114,75,121;77,114,78,127;89,114,90,115;112,114,113,115;115,115,116,118;124,115,125,117;" $sPixelRect &= "112,116,113,119;125,116,129,117;125,117,126,118;135,117,136,120;112,120,113,121;117,120,118,121;119,120,120,121;133,129,137,134;130,123,136,129;134,122,136,123;135,121,136,122;112,122,113,127;115,135,122,148;117,124,119,135;117,122,118,124;119,122,120,123;124,123,126,125;76,124,77,126;120,124,121,125;129,124,130,128;124,125,125,126;120,126,121,127;99,127,100,139;119,128,120,135;121,128,122,129;130,129,133,131;140,129,200,200;135,149,140,173;138,129,140,149;120,130,121,131;122,130,123,131;132,131,133,132;120,132,121,135;122,132,123,133;72,146,76,168;74,138,76,146;75,133,76,138;137,133,138,134;68,134,72,142;72,134,73,138;122,134,123,135;134,134,137,139;114,135,115,142;123,136,124,138;122,138,123,139;128,138,129,140;123,139,124,140;129,139,130,142;134,139,136,142;117,148,125,160;122,142,124,148;122,140,123,142;124,140,125,141;131,141,133,148;131,140,132,141;73,141,74,142;125,141,126,142;68,142,71,147;99,144,101,181;99,142,100,144;73,143,74,146;125,143,126,144;134,143,136,147;137,143,138,149;124,144,125,145;136,144,137,145;126,145,127,146;130,145,131,147;132,148,135,149;133,145,134,148;101,146,102,151;124,146,126,147;68,147,70,150;124,147,125,148;134,147,135,148;136,147,137,149;116,148,117,155;125,152,127,165;125,150,127,151;126,148,127,150;125,148,126,149;132,149,134,152;131,149,132,150;68,150,69,153;134,150,135,151;69,157,72,168;70,154,72,157;71,151,72,154;126,151,127,152;128,151,129,152;133,153,135,157;134,152,135,153;128,153,129,154;127,154,128,155;128,155,129,159;127,156,128,157;0,157,64,200;64,157,67,161;134,157,135,160;127,160,129,162;127,158,128,160;129,158,130,161;67,163,69,167;68,159,69,163;119,160,125,166;118,160,119,165;64,161,66,164;127,162,128,165;129,162,130,164;134,163,135,172;64,164,65,167;133,164,134,167;101,173,107,190;101,165,102,173;125,165,126,166;66,166,67,167;120,166,123,167;68,167,69,168;64,168,66,173;97,173,99,178;97,168,99,172;132,170,134,171;133,169,134,170;133,171,134,172;98,172,99,173;102,172,103,173;64,177,69,200;64,173,65,177;" $sPixelRect &= "107,173,108,175;137,173,140,176;136,173,137,175;95,174,97,176;94,175,95,176;96,176,97,177;139,176,140,181;138,176,139,177;69,177,70,181;98,178,99,179;100,181,101,183;102,190,140,200;107,182,111,190;107,181,108,182;111,185,114,190;111,183,112,185;69,188,73,200;69,186,70,188;114,187,118,190;114,186,116,187;70,187,72,188;138,187,140,190;118,188,121,190;131,188,138,190;121,189,131,190;73,192,78,200;73,190,74,192;74,191,76,192;95,193,102,200;101,192,102,193;78,194,95,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates0() Func _PixelCoordinates1() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x200;0,0,111,18;134,45,200,121;135,0,200,40;115,0,130,26;111,0,115,9;130,0,135,16;111,9,113,10;111,10,112,11;111,13,115,26;114,12,115,13;130,16,131,18;133,16,135,18;132,16,133,17;0,86,73,134;0,18,65,65;78,18,96,30;65,18,77,30;77,18,78,29;96,18,103,23;103,18,105,20;106,18,111,24;134,18,135,20;103,20,104,21;104,21,106,23;105,20,106,21;133,29,135,40;134,21,135,29;96,23,99,25;99,23,101,24;108,24,111,25;96,25,98,27;121,26,128,29;118,26,121,28;115,26,118,27;128,26,129,27;91,31,101,37;83,30,99,31;96,29,97,30;124,29,127,30;65,30,71,33;71,30,74,31;71,31,72,32;72,35,88,49;75,32,84,35;78,31,80,32;88,31,90,45;86,31,88,33;85,31,86,32;90,31,91,34;99,40,105,43;101,33,107,39;101,32,104,33;132,32,133,35;65,33,68,41;68,33,70,35;73,34,75,35;74,33,75,34;84,33,85,35;87,33,88,34;85,34,87,35;107,35,116,40;107,34,111,35;68,35,69,37;90,35,91,36;114,40,122,46;116,36,120,40;70,40,72,52;71,37,72,40;92,37,94,50;90,37,92,38;96,37,101,40;122,37,123,43;120,37,122,40;123,37,124,40;68,38,69,39;90,38,91,39;124,38,128,40;102,39,107,40;128,39,133,40;107,40,109,46;105,40,107,42;113,40,114,42;141,40,200,45;138,40,141,41;65,49,68,64;65,44,69,47;65,41,67,44;90,41,91,42;140,41,141,42;67,42,68,43;94,44,96,49;94,42,95,44;98,42,99,43;106,42,107,43;109,42,110,46;98,44,104,51;99,43,104,44;110,43,111,44;116,67,134,89;126,50,134,67;128,45,134,50;129,43,131,45;131,44,133,45;140,44,141,45;88,45,89,47;91,45,92,49;96,45,98,50;104,48,116,53;111,45,112,48;68,47,70,50;69,46,70,47;116,46,118,51;112,46,116,48;118,46,121,48;65,47,67,49;104,47,105,48;109,47,111,48;121,49,125,53;122,48,125,49;123,47,124,48;118,48,120,49;127,48,128,50;72,49,84,53;84,49,86,51;93,50,95,51;94,49,95,50;118,49,119,50;125,49,126,50;69,50,70,51;97,50,98,51;84,51,85,52;82,56,91,63;87,52,90,56;88,51,89,52;96,51,97,53;95,51,96,52;102,52,104,54;103,51,104,52;116,51,117,52;68,54,71,62;68,52,69,54;71,52,72,53;97,52,98,53;69,53,70,54;73,53,81,54;85,54,87,56;86,53,87,54;94,53,95,54;98,53,102,54;107,53,111,56;104,53,107,55;111,53,113,55;" $sPixelRect &= "113,53,114,54;121,53,123,55;120,53,121,54;123,53,124,54;96,54,98,56;95,54,96,55;102,54,103,55;123,58,126,67;124,56,126,58;125,54,126,56;71,56,73,59;71,55,72,56;73,55,74,56;84,55,85,56;90,55,91,56;98,55,101,56;74,56,76,57;100,56,104,57;79,66,86,85;77,58,82,64;78,57,82,58;74,58,75,61;92,60,104,65;93,58,97,60;71,59,72,61;91,59,92,64;97,59,101,60;72,63,74,67;73,60,74,63;121,62,123,67;122,60,123,62;68,62,70,66;104,62,105,65;76,63,77,64;82,63,90,66;67,64,68,66;66,64,67,65;70,64,72,67;77,64,79,65;80,64,82,66;119,65,121,67;120,64,121,65;0,65,61,86;61,65,64,69;74,65,77,67;96,65,100,67;94,65,96,66;100,65,101,66;102,65,103,66;69,66,70,67;87,66,90,68;118,66,119,67;78,67,79,69;78,105,95,160;83,85,91,105;86,70,90,85;86,67,87,70;89,68,92,70;90,67,91,68;112,69,116,77;113,68,116,69;115,67,116,68;64,68,68,71;88,68,89,69;61,69,63,70;71,69,73,70;87,69,88,70;92,70,94,73;92,69,93,70;61,70,62,72;68,70,72,73;110,77,113,95;109,72,112,76;110,71,112,72;111,70,112,71;66,71,68,72;72,71,76,73;90,71,91,72;91,91,97,105;91,79,98,89;94,72,99,79;94,71,96,72;99,71,106,76;98,71,99,72;76,72,77,73;106,72,108,75;93,73,94,75;90,74,91,85;64,75,67,77;63,75,64,76;67,76,71,79;69,75,71,76;76,78,79,84;78,75,79,78;91,76,93,79;91,75,92,76;103,76,107,77;106,75,107,76;110,76,112,77;65,77,67,78;71,77,73,79;77,77,78,78;113,77,115,78;61,80,63,86;61,78,62,80;113,78,114,79;115,78,116,86;71,79,72,80;74,79,76,83;63,82,65,86;63,81,64,82;73,82,74,83;113,82,114,93;65,83,67,86;75,83,76,84;67,84,69,86;77,84,79,85;109,84,110,122;69,85,71,86;73,88,77,106;73,87,75,88;77,89,80,94;82,89,83,91;92,89,98,91;117,89,123,93;116,89,117,91;125,102,134,117;127,89,134,97;125,89,127,93;124,89,125,91;80,90,81,91;120,93,124,95;123,91,124,93;81,96,83,105;82,92,83,96;97,92,98,93;119,93,120,94;126,93,127,95;77,94,79,98;97,94,98,95;124,94,125,95;110,95,112,97;120,95,123,96;122,96,125,97;110,97,111,100;121,97,122,98;129,97,134,102;128,97,129,100;77,98,78,102;79,101,81,102;80,98,81,101;79,103,81,105;80,102,81,103;109,123,123,134;110,110,115,123;" $sPixelRect &= "111,105,113,110;112,102,113,105;110,103,111,105;121,103,125,113;120,104,121,110;119,104,120,107;95,105,97,118;113,105,114,106;73,106,75,116;75,106,76,111;110,106,111,110;113,107,114,110;114,108,115,109;116,108,117,109;73,134,78,166;75,117,78,134;76,112,78,117;77,109,78,112;115,109,116,110;115,114,121,123;117,110,119,112;118,109,119,110;116,110,117,111;115,111,116,114;118,112,120,114;119,111,120,112;116,112,117,113;117,113,118,114;120,113,121,114;123,113,125,118;122,113,123,115;121,115,122,123;73,116,74,123;125,117,131,119;131,117,133,118;95,118,96,119;124,118,125,120;122,119,123,120;125,119,128,120;95,120,96,135;122,121,123,123;140,121,200,200;134,126,140,135;135,121,140,126;123,125,124,126;123,127,124,128;129,127,134,134;74,128,75,134;128,128,129,129;112,144,127,160;111,134,125,144;123,129,124,134;124,132,125,134;0,134,63,200;63,134,70,145;70,134,72,138;110,134,111,142;131,134,134,136;130,134,131,135;134,135,137,142;135,153,140,173;138,135,140,153;133,136,134,140;132,136,133,137;96,145,102,165;98,140,100,145;98,137,99,140;70,138,71,141;125,138,126,144;70,147,73,166;71,143,73,147;72,139,73,143;133,142,136,145;133,141,134,142;97,142,98,145;126,142,127,143;100,143,101,145;111,144,112,152;63,145,68,153;68,145,69,149;131,148,134,156;130,145,132,147;134,145,136,146;95,146,96,157;134,148,138,150;137,146,138,148;102,147,103,151;127,147,128,148;131,147,132,148;127,152,129,166;127,149,128,152;134,150,136,151;136,151,138,153;137,150,138,151;134,151,135,153;68,156,70,166;69,152,70,156;63,153,66,160;66,153,67,156;130,154,131,156;133,158,135,159;134,155,135,158;129,156,130,165;131,156,133,157;134,159,135,162;63,160,65,163;66,162,68,166;67,160,68,162;78,160,93,166;93,160,94,165;113,160,126,167;126,160,127,166;130,161,131,162;63,163,64,166;130,164,131,165;134,164,135,172;98,165,102,179;97,165,98,172;133,165,134,167;63,167,66,175;66,167,67,169;114,167,119,169;119,167,123,168;132,169,134,171;101,181,108,190;102,173,107,181;102,172,103,173;96,174,98,177;97,173,98,174;107,173,108,175;" $sPixelRect &= "137,173,140,176;136,173,137,174;95,174,96,176;94,174,95,175;63,177,69,200;63,175,65,177;65,176,66,177;139,176,140,181;138,176,139,177;69,177,70,181;97,177,98,178;100,179,101,183;99,179,100,181;101,179,102,181;102,190,140,200;108,183,112,190;108,182,111,183;112,185,114,190;112,184,113,185;69,189,74,200;69,186,70,189;114,187,119,190;114,186,116,187;70,187,72,189;137,187,140,190;72,188,73,189;119,188,123,190;129,188,137,190;123,189,129,190;74,192,78,200;74,190,75,192;75,191,76,192;93,193,102,200;100,192,102,193;78,194,93,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates1() Func _PixelCoordinates2() #region pixel coordinates Local $sPixelRect $sPixelRect &= "1500,200x200;82,0,130,22;0,77,65,160;0,0,52,50;52,0,82,14;135,47,200,137;140,0,200,47;134,0,140,21;130,0,134,18;52,14,65,24;65,14,70,16;70,14,73,15;73,18,81,24;78,14,82,18;74,14,78,15;77,15,78,16;65,16,69,17;65,17,67,19;75,17,76,18;81,18,82,19;130,18,131,20;133,18,134,19;65,19,66,20;67,24,77,31;70,20,73,24;71,19,73,20;68,22,70,24;69,21,70,22;130,21,131,22;134,23,140,37;135,21,140,23;89,22,97,35;83,69,90,164;75,36,89,48;81,25,89,33;82,22,89,25;97,22,101,24;101,22,103,23;115,22,129,26;107,22,115,24;104,22,107,23;129,22,130,25;67,23,68,24;52,24,60,44;60,24,63,31;64,24,65,25;77,24,79,28;79,24,80,26;97,24,99,26;99,24,100,25;111,24,115,25;63,25,64,28;64,29,67,36;65,27,67,29;66,25,67,27;97,26,98,28;121,26,127,28;118,26,121,27;127,26,129,27;77,28,78,30;79,30,81,36;80,28,81,30;123,28,127,29;133,28,134,37;126,29,127,30;97,31,105,35;97,30,98,31;60,32,63,34;60,31,62,32;67,31,74,34;74,31,76,32;74,32,75,33;77,33,79,36;78,32,79,33;107,33,116,37;105,32,111,33;81,33,88,36;105,33,107,35;132,33,133,35;61,34,62,36;60,34,61,35;62,35,64,36;63,34,64,35;67,34,71,36;71,34,72,35;88,34,89,36;116,34,120,36;76,35,77,36;89,35,93,42;93,35,94,37;98,35,100,36;106,35,107,36;120,35,127,36;60,38,62,41;60,36,61,38;63,36,64,37;65,36,68,37;96,37,99,49;98,36,99,37;109,37,118,42;116,36,118,37;130,36,131,37;72,48,88,61;71,39,75,48;73,38,75,39;74,37,75,38;95,37,96,42;94,37,95,38;99,37,100,39;108,37,109,41;137,37,140,39;135,37,137,38;102,38,104,43;101,38,102,40;100,38,101,39;104,40,106,43;104,39,105,40;139,39,140,41;138,39,139,40;68,48,72,55;66,41,71,47;69,40,71,41;99,40,100,41;60,41,61,42;63,41,64,42;61,43,63,44;62,42,63,43;89,42,92,46;103,44,110,50;105,43,117,44;106,42,107,43;109,42,117,43;64,45,66,48;65,43,66,45;92,43,93,47;94,44,96,48;95,43,96,44;54,44,59,47;53,44,54,46;52,44,53,45;60,44,62,46;99,45,103,51;99,44,101,45;110,44,115,47;115,44,116,46;93,45,94,48;116,46,121,49;117,45,121,46;120,64,135,97;127,50,135,64;129,45,132,50;59,46,61,49;91,46,92,47;132,46,135,50;135,46,136,47;139,46,140,47;" $sPixelRect &= "57,47,59,48;61,47,62,49;68,47,71,48;110,47,112,49;112,47,113,48;114,47,115,48;113,48,114,49;115,49,117,52;115,48,116,49;128,48,129,50;92,49,93,50;98,49,99,50;112,49,113,50;114,49,115,50;117,49,120,51;0,50,48,77;48,50,50,51;52,50,55,53;51,50,52,52;55,51,59,54;57,50,59,51;67,50,68,54;88,54,90,61;88,50,89,54;93,50,94,51;97,50,98,52;103,50,107,52;107,50,109,51;110,50,111,51;48,53,50,57;48,51,49,53;102,51,103,52;112,51,114,52;118,51,119,52;63,52,65,53;93,52,94,54;92,52,93,53;103,52,105,53;106,52,107,53;114,52,115,53;59,53,61,55;94,53,99,54;124,57,127,64;125,55,127,57;126,53,127,55;57,54,59,55;61,54,62,55;98,54,99,55;50,55,51,58;70,55,72,58;69,55,70,56;51,56,53,59;53,57,56,60;54,56,56,57;62,56,63,57;49,57,50,58;61,57,62,61;63,57,64,58;92,57,99,64;90,57,92,63;62,58,63,59;64,58,65,60;71,58,72,59;99,60,102,65;99,58,101,60;122,61,124,64;123,59,124,61;48,65,54,77;48,60,49,65;60,60,61,62;63,60,64,61;74,61,83,81;73,61,74,64;83,61,88,67;89,61,90,62;102,62,103,63;121,62,122,64;49,63,50,65;50,64,51,65;93,64,99,65;54,67,59,77;55,65,58,67;54,66,55,67;115,67,120,71;119,66,120,67;83,67,87,69;90,75,92,88;90,67,91,75;89,67,90,69;92,69,94,73;91,68,93,69;110,71,118,76;112,69,115,71;114,68,115,69;59,72,61,77;59,69,60,72;91,69,92,70;98,70,104,75;100,69,102,70;71,73,74,79;72,71,74,73;73,70,74,71;92,77,97,91;94,70,97,77;111,70,112,71;104,72,108,76;104,71,107,72;119,71,120,74;97,72,98,79;93,73,94,74;109,73,110,74;115,78,120,86;118,73,119,78;61,74,62,77;69,74,71,77;62,75,63,77;68,75,69,76;101,75,104,76;109,75,110,77;63,76,64,77;92,76,93,77;105,76,108,77;110,76,113,80;113,76,115,77;116,76,118,78;119,76,120,78;70,77,71,78;113,77,114,78;65,84,73,130;65,79,67,84;65,78,66,79;72,79,74,80;108,85,113,92;109,80,112,85;109,79,110,80;67,81,69,84;67,80,68,81;78,81,83,84;76,81,78,83;75,81,76,82;113,81,114,89;112,81,113,85;69,82,70,84;70,83,71,84;82,84,83,88;73,87,77,105;73,85,74,87;74,86,75,87;116,86,120,92;77,89,80,94;77,88,79,89;90,89,92,92;91,88,92,89;80,89,81,92;82,89,83,90;90,93,96,109;92,91,96,93;" $sPixelRect &= "74,121,83,164;79,101,83,121;81,95,83,101;82,92,83,95;90,92,91,93;108,92,112,95;117,92,120,94;77,94,79,98;119,94,120,99;108,95,110,100;110,95,111,96;108,112,123,145;108,103,113,112;111,100,113,103;112,97,113,100;121,104,135,112;120,97,126,103;126,98,128,102;126,97,127,98;129,97,135,102;128,97,129,100;77,98,78,101;80,98,81,101;108,100,109,103;109,101,110,103;130,102,135,104;121,103,122,104;123,103,130,104;76,111,79,121;78,104,79,111;113,104,115,105;73,105,75,114;75,105,76,109;107,105,108,106;113,106,115,112;113,105,114,106;116,105,117,106;120,105,121,111;119,105,120,108;115,106,116,108;107,107,108,123;116,108,119,112;116,107,118,108;77,108,78,111;90,119,94,131;90,109,95,117;115,109,116,112;119,111,120,112;123,112,133,120;133,112,135,119;73,114,74,120;75,114,76,121;90,117,93,119;93,117,94,118;134,119,135,123;123,120,127,122;127,120,130,121;107,124,108,134;110,145,127,167;123,132,125,145;123,127,124,132;132,137,137,140;130,129,135,137;134,128,135,129;70,144,74,165;72,135,74,144;73,129,74,135;65,130,70,143;70,130,72,135;129,130,130,137;128,130,129,133;90,131,93,147;70,135,71,139;96,144,102,166;98,137,100,144;98,136,99,137;125,137,126,138;131,137,132,138;140,137,200,200;135,155,140,173;138,137,140,155;71,139,72,144;125,139,126,145;133,140,136,148;136,140,138,141;97,141,98,144;136,141,137,144;100,142,101,144;126,142,127,143;137,142,138,143;65,143,69,147;126,144,127,145;137,144,138,145;109,145,110,157;102,146,103,151;133,150,138,153;137,146,138,150;65,147,67,154;67,147,68,150;90,147,92,162;95,147,96,157;127,152,133,159;130,147,132,150;134,148,135,149;68,153,70,165;69,149,70,153;94,149,95,151;127,149,128,152;130,151,133,152;131,150,132,151;133,153,135,155;135,153,136,154;136,154,138,155;137,153,138,154;65,154,66,158;133,155,134,158;67,156,68,157;67,158,68,165;134,158,135,162;127,160,130,166;127,159,129,160;131,159,132,160;0,160,62,200;62,160,64,163;66,160,67,161;130,161,131,162;66,162,67,165;90,162,91,164;62,163,63,165;74,164,81,165;82,164,83,165;84,164,85,165;" $sPixelRect &= "86,164,89,165;130,164,131,165;134,164,135,172;133,165,134,168;98,171,103,179;97,166,103,170;62,177,69,200;62,167,66,177;66,167,67,171;111,167,119,169;119,167,124,168;112,169,115,170;133,169,134,171;132,169,133,170;97,170,102,171;97,171,98,172;96,174,98,177;97,173,98,174;101,182,111,190;103,173,107,182;107,173,108,175;138,173,140,177;137,173,138,175;136,173,137,174;95,174,96,176;94,174,95,175;69,177,70,180;97,177,98,178;139,177,140,180;100,179,103,182;99,179,100,181;107,181,108,182;100,182,101,183;102,190,140,200;111,184,113,190;111,183,112,184;113,186,116,190;113,185,114,186;69,189,74,200;69,186,70,189;70,187,72,189;116,187,119,190;136,187,140,190;72,188,73,189;119,188,125,190;127,188,136,190;125,189,127,190;74,192,79,200;74,190,75,192;75,191,77,192;91,193,102,200;99,192,102,193;79,194,91,200;79,193,82,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates2() Func _PixelCoordinates3() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x200;0,0,105,19;133,44,200,119;136,0,200,38;110,0,126,18;105,0,110,9;129,0,136,37;126,0,129,15;105,9,107,11;107,9,108,10;105,11,106,12;105,13,110,23;107,11,109,13;106,12,107,13;109,12,110,13;128,15,129,19;127,15,128,16;111,18,125,25;110,18,111,24;0,87,72,137;0,19,72,68;72,19,95,26;95,19,99,23;99,19,100,21;101,19,105,23;125,19,126,25;100,21,101,23;128,21,129,26;95,23,98,24;106,23,110,24;95,24,96,25;118,25,124,27;115,25,118,26;124,25,125,26;72,26,81,30;81,26,87,27;91,26,95,27;81,27,84,28;94,27,97,28;122,27,125,28;81,28,82,29;82,31,92,47;84,29,93,31;90,28,91,29;97,28,98,30;96,28,97,29;128,28,129,33;98,29,99,32;72,30,77,43;77,30,79,33;79,30,80,31;83,30,84,31;92,31,97,36;93,30,96,31;99,31,101,37;99,30,100,31;101,31,102,34;78,37,82,47;80,33,82,37;81,32,82,33;97,34,99,37;97,32,98,34;103,32,109,38;102,32,103,37;77,33,78,36;109,33,115,38;114,38,121,44;115,34,120,38;79,35,80,37;120,35,124,37;92,36,93,38;96,36,97,39;124,36,129,37;97,37,98,39;98,38,101,40;100,37,101,38;120,37,121,38;95,38,96,39;102,39,108,41;102,38,104,39;113,38,114,42;138,38,200,44;137,38,138,39;92,42,96,48;92,40,95,42;99,40,100,43;107,41,110,44;108,40,110,41;136,42,138,44;137,40,138,42;102,41,104,43;77,42,78,46;96,42,99,43;100,45,105,49;101,42,102,45;72,49,79,59;72,43,76,49;97,44,99,45;98,43,99,44;102,43,103,45;105,46,115,52;110,44,120,46;111,43,112,44;135,43,136,44;103,44,104,45;118,63,133,93;124,51,133,63;125,45,133,51;125,44,129,45;131,44,133,45;96,45,98,46;109,45,110,46;120,48,124,51;121,45,123,48;76,46,77,49;96,46,97,47;98,48,100,50;99,46,100,48;115,46,118,49;118,46,119,47;123,46,125,48;81,47,88,49;79,47,81,48;89,47,92,50;77,48,78,49;92,48,95,49;124,48,125,49;84,49,89,50;100,49,102,50;102,50,105,53;103,49,105,50;115,49,117,50;79,51,82,60;79,50,80,51;115,50,116,51;84,53,86,57;85,51,87,53;83,51,85,52;87,51,88,52;95,51,97,52;120,51,123,53;82,52,83,56;98,52,102,53;105,52,112,54;112,52,113,53;83,53,84,54;94,53,97,54;98,54,104,56;103,53,104,54;87,56,90,60;87,54,89,56;96,54,98,55;104,55,106,56;" $sPixelRect &= "105,54,106,55;108,54,110,55;121,57,124,63;122,55,124,57;123,54,124,55;107,55,108,56;104,56,105,57;82,58,85,61;83,57,85,58;92,59,105,64;94,57,96,59;90,58,91,59;93,58,94,59;96,58,106,59;72,59,75,64;75,59,76,60;77,59,79,60;85,59,87,61;80,60,82,61;87,60,89,61;105,60,106,63;120,60,121,63;86,61,87,62;90,61,92,63;106,62,107,63;119,62,120,63;75,64,83,66;76,63,77,64;78,63,79,64;82,63,84,64;89,63,91,65;72,64,73,65;87,64,89,67;95,64,101,66;93,64,95,65;101,64,103,65;83,65,85,67;89,66,91,69;89,65,90,66;115,66,118,86;117,65,118,66;78,66,83,67;85,66,87,68;98,66,100,67;111,69,115,76;113,67,115,69;114,66,115,67;90,69,94,70;91,67,92,69;0,68,60,87;60,68,63,71;63,68,65,69;67,68,71,71;71,68,72,69;92,68,93,69;112,68,113,69;66,69,67,70;77,70,82,73;81,69,82,70;75,70,77,72;74,70,75,71;78,105,94,162;83,79,97,105;86,71,90,79;87,70,90,71;92,70,95,74;91,70,92,71;95,71,106,75;98,70,99,71;101,70,103,71;109,81,114,92;109,71,111,77;110,70,111,71;60,71,62,72;69,71,70,72;82,71,85,74;60,72,61,74;85,72,86,74;106,72,107,76;70,73,71,74;108,73,109,76;94,75,98,79;93,74,95,75;90,75,92,79;98,75,99,76;101,75,106,76;85,76,86,79;110,77,113,81;111,76,114,77;92,77,93,79;84,78,85,79;93,78,94,79;114,78,115,82;74,80,83,84;76,79,81,80;82,79,83,80;97,79,98,93;60,82,62,87;60,80,61,82;72,81,74,83;70,82,72,83;62,84,65,87;62,83,64,84;77,84,83,85;65,85,67,87;81,85,82,86;67,86,70,87;116,86,118,91;72,89,77,106;72,88,76,89;81,96,83,105;82,88,83,96;77,90,80,95;77,89,79,90;80,91,81,92;117,91,118,93;109,92,112,96;112,92,113,94;126,93,133,96;110,128,124,150;121,102,132,119;119,93,125,102;125,93,126,94;77,95,79,98;125,97,127,100;125,95,126,97;109,96,111,103;128,96,133,101;127,96,128,99;80,97,81,98;77,98,78,102;79,102,81,105;80,99,81,102;113,99,114,100;118,99,119,101;125,100,126,101;112,101,114,102;129,101,133,102;109,112,116,120;111,104,113,112;112,102,113,104;119,102,121,107;132,102,133,118;109,103,110,112;113,103,114,104;110,104,111,105;94,105,97,113;113,105,114,106;72,106,75,115;75,106,76,110;114,106,115,107;110,107,111,112;" $sPixelRect &= "113,108,115,112;113,107,114,108;120,107,121,110;115,108,116,109;116,114,121,128;116,111,120,113;116,109,118,110;117,108,118,109;73,132,78,165;75,116,78,132;76,112,78,116;77,109,78,112;115,110,116,111;117,110,120,111;117,113,121,114;120,112,121,113;94,113,96,118;108,114,109,122;72,115,74,122;95,118,96,119;94,119,95,139;121,119,125,121;125,119,128,120;140,119,200,200;136,147,140,174;128,128,140,134;135,119,140,128;134,119,135,124;95,120,96,123;109,121,116,128;110,120,116,121;121,121,123,128;72,122,73,132;108,124,109,131;74,125,75,132;133,127,135,128;134,126,135,127;109,128,110,141;127,129,128,130;124,130,125,131;124,143,127,166;124,136,126,140;124,132,125,136;131,134,136,138;129,134,131,136;137,134,140,147;96,145,102,166;98,139,100,145;98,136,99,139;0,137,63,200;63,137,69,148;69,137,71,140;70,147,73,166;71,142,73,147;72,137,73,142;133,138,136,144;132,138,133,140;69,140,70,145;124,140,125,143;125,141,127,142;126,140,127,141;97,142,98,145;125,142,126,143;100,143,101,145;127,144,128,145;132,144,135,146;102,146,103,151;127,146,128,147;127,151,134,154;130,146,131,151;129,146,130,148;133,146,135,147;94,148,96,155;95,147,96,148;63,148,67,156;67,148,68,152;127,148,128,151;131,148,132,151;129,149,130,151;134,149,135,153;132,150,134,151;133,149,134,150;135,149,136,150;68,155,70,166;69,150,70,155;112,150,124,167;111,150,112,160;135,152,136,173;127,159,130,166;127,155,133,157;127,154,129,155;130,154,133,155;133,156,135,159;134,154,135,156;95,155,96,157;63,156,65,162;65,156,66,158;127,157,129,159;130,157,132,158;67,158,68,159;134,159,135,162;66,161,68,165;67,160,68,161;130,161,131,162;63,162,64,165;78,162,93,165;130,163,131,165;134,164,135,172;67,165,68,166;73,165,77,166;133,165,134,168;98,166,102,179;97,166,98,172;124,166,126,167;63,177,69,200;63,167,66,177;66,167,67,170;113,167,119,169;119,167,123,168;132,169,134,171;101,179,107,190;102,173,107,179;102,171,103,173;96,174,98,177;97,173,98,174;107,173,108,175;95,174,96,176;94,174,95,175;137,174,140,176;139,176,140,181;" $sPixelRect &= "138,176,139,177;69,177,70,181;97,177,98,178;100,179,101,183;99,179,100,181;102,190,140,200;107,182,111,190;107,181,108,182;111,184,113,190;111,183,112,184;113,186,116,190;113,185,114,186;69,189,74,200;69,186,70,189;70,187,72,189;116,187,119,190;136,187,140,190;72,188,73,189;119,188,123,190;128,188,136,190;123,189,128,190;74,192,78,200;74,190,75,192;75,191,76,192;93,193,102,200;99,192,102,193;78,194,93,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates3() Func _PixelCoordinates4() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x200;96,0,113,23;0,0,71,144;71,0,91,24;91,0,96,12;133,0,200,133;119,0,133,21;113,0,119,9;116,9,119,11;115,9,116,10;118,11,119,18;117,11,118,12;91,12,94,17;94,12,95,13;94,16,96,23;95,14,96,16;113,17,117,25;113,16,116,17;114,15,115,16;91,17,93,19;93,18,94,23;91,19,92,20;117,20,118,21;124,21,133,37;121,21,124,28;120,21,121,23;117,22,118,23;97,23,113,24;71,24,88,28;88,24,90,25;109,24,113,25;88,25,89,27;116,25,117,26;71,37,86,67;71,28,78,37;84,28,88,30;82,28,84,29;123,28,124,33;122,28,123,30;89,30,95,32;87,30,89,31;93,32,101,37;95,31,101,32;78,32,79,37;92,32,93,33;102,32,107,37;101,32,102,36;108,44,112,46;108,34,117,39;107,33,112,34;79,34,80,37;107,34,108,38;80,35,82,37;92,37,98,44;92,35,93,37;117,35,124,40;82,36,84,37;86,40,90,45;86,37,88,40;98,37,100,39;105,37,107,38;124,39,133,43;124,37,128,39;128,37,129,38;130,37,133,39;129,38,130,39;98,39,99,40;102,40,106,42;103,39,106,40;109,39,117,40;90,40,91,44;108,40,111,43;106,40,108,41;111,40,113,41;116,40,120,42;122,40,124,42;96,45,102,52;98,42,101,45;100,41,101,42;111,41,112,42;114,41,116,43;120,41,122,42;102,42,105,44;101,42,102,43;112,42,114,44;123,42,124,43;107,43,110,44;111,43,112,44;126,65,133,116;129,43,133,65;126,43,129,46;125,43,126,44;94,44,96,49;93,44,94,48;96,44,98,45;112,44,113,45;87,45,90,47;102,46,108,49;107,45,108,46;109,46,111,58;111,46,112,48;128,46,129,52;127,46,128,47;88,47,90,48;116,48,119,49;118,47,119,48;121,54,126,59;123,49,125,54;123,47,124,49;122,47,123,48;86,56,88,69;86,48,87,56;108,48,109,49;95,49,96,51;102,49,106,53;106,49,107,51;115,49,118,52;119,49,120,50;112,50,113,51;114,50,115,54;118,50,119,53;119,51,120,52;97,52,102,53;115,52,116,54;117,52,118,55;122,52,123,54;101,53,102,54;103,53,107,54;111,54,114,55;113,53,114,54;125,53,126,54;127,53,128,62;102,55,106,56;102,56,103,57;105,56,107,57;118,59,124,65;120,56,121,59;101,57,102,58;100,59,106,65;102,58,103,59;110,58,111,59;119,58,120,59;128,58,129,65;98,61,100,62;99,59,100,61;124,59,125,62;88,63,91,66;88,60,89,63;106,63,109,68;" $sPixelRect &= "106,60,108,63;125,62,127,64;126,60,127,62;116,62,118,65;117,61,118,62;89,62,90,63;98,63,100,64;99,62,100,63;124,63,125,65;127,63,128,65;91,64,92,66;109,64,110,67;115,64,116,65;125,64,126,65;103,65,106,68;102,65,103,67;110,65,111,68;117,65,120,66;122,65,124,66;88,67,92,70;88,66,89,67;121,69,126,75;124,67,126,69;125,66,126,67;74,68,84,82;71,67,82,68;84,67,86,69;83,67,84,68;71,68,74,77;111,71,116,80;113,68,115,71;122,68,124,69;87,69,88,70;91,70,94,72;92,69,93,70;93,72,99,80;95,69,98,72;112,69,113,71;115,69,116,71;84,75,90,86;84,70,87,75;99,71,103,75;98,70,100,71;87,71,88,74;94,71,95,72;98,71,99,72;107,72,111,78;110,71,111,72;118,74,120,80;118,71,119,74;92,72,93,74;103,72,105,76;106,72,107,76;105,73,106,74;90,76,93,86;92,75,93,76;99,75,100,79;102,75,103,76;123,75,126,78;71,77,73,78;116,77,118,80;120,77,123,80;71,78,72,81;110,78,111,79;123,78,125,79;73,79,74,80;123,79,124,80;93,80,98,86;103,80,104,81;110,80,111,81;112,80,115,85;123,81,126,84;125,80,126,81;102,81,103,83;109,81,110,82;111,81,112,82;76,82,84,85;75,82,76,84;103,82,104,83;107,82,108,83;110,82,111,83;115,83,123,86;115,82,117,83;118,82,120,83;122,82,123,83;109,83,110,84;111,83,112,84;107,84,108,85;110,84,111,85;123,84,125,85;83,85,84,86;109,85,110,86;111,85,112,86;114,85,115,87;113,85,114,86;123,85,124,86;71,89,75,119;71,86,72,89;112,86,113,88;123,87,126,90;125,86,126,87;72,87,73,89;110,87,111,88;111,88,112,89;112,89,123,91;113,88,114,89;118,88,120,89;83,91,100,99;98,89,100,91;75,91,78,104;75,90,77,91;83,90,90,91;97,90,98,91;123,90,124,91;78,91,80,95;114,91,115,92;116,91,123,92;76,116,97,165;80,101,99,116;82,92,83,101;124,93,126,95;125,92,126,93;111,94,113,102;78,95,79,100;120,100,126,109;121,96,124,100;123,95,124,96;125,95,126,97;81,97,82,101;118,97,120,102;120,97,121,100;124,97,125,98;83,99,99,101;99,100,100,101;114,101,115,102;99,102,100,103;111,102,112,114;119,102,120,105;110,103,111,104;75,104,77,109;79,104,80,105;111,121,118,135;112,111,114,113;113,104,114,111;78,108,80,116;79,106,80,108;110,107,111,108;" $sPixelRect &= "75,109,76,114;121,109,126,117;77,112,78,116;114,112,115,113;112,114,115,121;113,113,114,114;119,114,120,115;110,115,111,121;118,115,119,116;120,115,121,116;97,116,99,117;116,116,117,117;119,116,120,117;126,116,128,117;132,116,133,120;97,117,98,133;115,117,116,121;118,117,119,118;120,117,125,118;116,118,117,119;120,118,122,121;119,118,120,119;71,119,74,131;118,119,119,120;116,120,118,121;119,120,120,124;118,121,119,122;120,122,122,125;121,121,122,122;113,140,124,151;118,129,121,140;118,123,119,129;72,142,76,167;74,133,76,142;75,124,76,133;110,124,111,125;130,133,135,136;128,126,133,133;130,125,133,126;132,124,133,125;119,127,121,128;120,125,121,127;119,125,120,126;122,125,123,130;121,126,122,127;123,126,124,127;126,129,128,130;126,126,128,128;120,128,122,129;123,128,124,133;127,128,128,129;121,130,122,131;127,130,128,132;71,131,73,136;122,131,123,135;121,132,122,133;123,134,125,136;124,132,125,134;128,133,130,134;140,133,200,200;134,150,140,161;136,133,140,150;121,136,123,140;121,134,122,136;112,135,118,140;71,136,72,140;97,143,101,172;97,137,99,143;97,136,98,137;125,136,126,144;123,137,125,138;124,136,125,137;131,136,134,144;134,136,136,137;73,137,74,142;134,137,135,140;123,138,124,139;124,139,125,140;135,139,136,141;112,140,113,143;126,140,127,141;99,141,100,143;124,141,125,142;131,146,136,148;135,142,136,146;115,151,127,165;124,145,126,151;124,143,125,145;126,143,127,146;129,143,130,149;128,143,129,146;0,144,64,200;64,144,69,151;69,144,70,148;132,144,133,145;101,145,102,154;69,155,72,167;70,150,72,151;71,146,72,150;127,146,128,147;102,147,103,149;126,147,127,149;127,148,129,149;130,148,134,150;135,148,136,150;127,149,128,153;126,150,127,151;129,150,132,154;132,150,133,151;64,151,67,159;67,151,68,155;70,152,72,155;71,151,72,152;114,151,115,160;132,153,134,155;133,151,134,153;69,153,70,154;128,153,129,155;130,154,131,156;129,154,130,155;133,155,134,158;127,158,130,163;127,156,128,158;128,157,129,158;67,162,69,167;68,158,69,162;64,159,66,161;130,160,131,161;" $sPixelRect &= "64,161,65,165;98,173,107,180;101,161,102,173;134,163,140,172;135,161,140,163;130,162,131,163;127,163,129,165;66,164,67,166;129,164,131,165;133,164,134,167;76,165,95,167;95,165,96,166;116,165,125,167;125,165,128,166;64,177,69,200;64,167,66,177;66,167,67,169;117,167,122,168;132,169,134,171;133,171,134,172;98,172,101,173;102,172,103,173;137,172,140,176;136,172,137,174;135,172,136,173;96,174,98,177;97,173,98,174;107,173,108,175;95,174,96,176;139,176,140,181;138,176,139,177;69,177,70,181;97,177,98,178;102,182,111,200;100,180,107,182;99,180,100,181;107,181,108,182;101,182,102,190;100,182,101,183;111,186,116,200;111,183,112,186;112,184,113,186;113,185,114,186;69,189,74,200;69,186,70,189;70,187,72,189;116,188,122,200;116,187,118,188;130,188,140,200;137,187,140,188;72,188,73,189;122,189,130,200;74,192,78,200;74,190,75,192;75,191,76,192;94,193,102,200;100,192,102,193;78,194,94,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates4() Func _PixelCoordinates5() #region pixel coordinates Local $sPixelRect $sPixelRect &= "1000,200x200;90,0,112,24;0,0,74,133;74,0,87,20;87,0,90,12;137,82,200,176;138,0,200,74;118,0,138,28;113,0,118,17;112,0,113,10;87,12,89,13;87,13,88,16;89,13,90,14;112,18,114,25;112,15,113,18;89,16,90,21;115,17,118,21;114,17,115,19;74,20,84,29;84,20,86,26;117,21,118,27;116,21,117,24;114,22,115,25;89,24,90,25;107,24,112,25;84,26,85,27;127,28,131,44;121,54,126,83;121,28,125,52;120,28,121,41;119,28,120,30;125,28,127,40;131,28,138,37;74,29,77,30;86,29,89,30;74,30,75,32;89,30,93,31;95,36,103,46;96,31,101,36;93,31,96,32;103,32,106,39;101,32,103,36;106,33,112,37;106,32,107,33;113,41,115,52;113,34,117,39;112,34,113,38;74,36,78,85;74,35,75,36;117,35,120,40;78,47,85,77;78,37,84,47;78,36,81,37;110,37,112,38;131,37,133,39;136,37,138,39;135,37,136,38;103,39,105,40;114,39,115,41;116,39,117,40;131,39,132,41;137,39,138,42;103,40,104,41;107,41,111,43;108,40,111,41;90,41,94,46;111,41,113,42;116,41,118,45;118,41,119,43;125,41,127,48;130,45,134,53;131,42,133,45;132,41,133,42;89,42,90,44;94,42,95,49;105,42,107,44;115,42,116,43;120,42,121,50;101,46,108,52;103,43,105,46;108,43,110,45;107,43,108,44;133,43,134,45;105,44,106,46;108,47,113,51;112,44,113,47;115,44,116,45;127,44,130,50;106,45,107,46;116,45,117,46;90,46,92,47;93,46,94,50;95,46,96,48;98,48,101,49;99,46,101,48;97,46,99,47;115,46,116,52;96,47,98,48;119,47,120,48;96,48,97,49;125,48,126,54;95,49,96,50;97,49,98,50;99,49,101,50;118,49,119,50;94,50,95,51;96,50,97,51;99,50,100,51;116,50,118,52;127,50,129,52;135,61,138,75;137,50,138,61;135,51,137,52;136,50,137,51;97,51,98,52;100,51,101,52;109,51,110,52;111,51,113,52;119,51,120,52;98,52,99,53;102,52,106,53;110,52,111,53;114,52,115,53;122,52,125,54;128,52,129,53;102,53,103,54;130,53,133,58;111,54,113,55;108,56,111,57;109,55,110,56;136,56,137,57;85,61,87,70;85,57,86,61;113,57,115,58;117,60,121,81;119,58,121,60;120,57,121,58;131,58,132,60;130,58,131,59;136,58,137,61;118,59,119,60;104,61,114,67;106,60,110,61;126,72,131,77;126,64,129,68;126,60,127,64;87,63,89,66;87,62,88,63;102,63,104,65;" $sPixelRect &= "103,62,104,63;114,63,117,66;114,62,115,63;116,62,117,63;127,62,128,64;133,64,135,76;134,62,135,64;101,63,102,64;89,64,90,66;103,65,104,66;114,66,115,67;87,67,91,70;109,67,110,69;106,67,109,68;110,67,112,68;91,68,92,73;113,74,117,80;115,70,117,74;116,68,117,70;126,68,128,70;92,71,103,84;92,70,100,71;101,70,102,71;126,70,127,72;83,77,92,81;85,71,86,77;103,72,109,83;104,71,105,72;113,71,115,72;130,71,131,72;111,72,114,73;131,73,133,76;131,72,132,73;109,73,110,74;139,74,200,82;86,75,88,77;88,76,92,77;89,75,90,76;112,75,113,80;109,76,110,83;134,77,139,80;138,76,139,77;78,77,80,79;80,77,81,78;82,77,83,79;126,77,130,82;130,78,134,81;78,79,79,81;110,79,111,82;114,80,115,81;116,80,117,82;134,80,135,81;138,80,139,82;87,81,92,86;84,81,87,83;119,81,121,83;118,81,119,82;130,81,131,82;125,83,128,86;126,82,128,83;86,83,87,85;85,83,86,84;103,83,106,84;111,84,115,94;113,83,114,84;120,83,121,84;123,83,125,85;122,83,123,84;134,83,137,86;92,84,102,85;121,84,122,85;128,84,133,87;133,84,134,86;74,89,78,106;74,85,77,89;92,85,97,86;123,85,124,86;88,86,89,87;90,86,91,87;92,86,93,87;110,86,111,88;115,86,117,88;124,86,125,87;126,86,128,87;127,124,137,132;125,91,137,114;134,88,137,91;136,86,137,88;117,88,122,96;117,87,119,88;115,88,116,90;122,88,125,93;83,92,101,110;98,89,101,92;125,89,126,91;132,90,134,91;133,89,134,90;88,91,98,92;93,90,94,91;95,90,98,91;126,90,128,91;78,91,79,101;79,92,80,96;124,93,125,97;122,94,124,95;123,93,124,94;76,119,99,167;80,104,83,119;81,98,83,104;82,94,83,98;112,94,113,111;111,94,112,100;113,94,114,101;120,99,125,110;118,96,123,99;122,95,123,96;119,99,120,105;118,99,119,102;80,102,81,103;74,106,76,116;76,106,77,111;78,111,80,119;79,106,80,111;111,107,112,108;114,108,115,109;83,110,100,119;114,110,115,112;121,110,125,116;100,111,101,112;111,111,112,113;120,111,121,112;113,112,114,114;112,126,119,133;113,117,116,126;113,115,115,117;114,113,115,115;111,114,112,115;125,114,130,115;132,114,137,121;131,114,132,118;77,115,78,119;125,115,126,116;74,116,75,121;" $sPixelRect &= "121,116,123,117;111,117,112,118;120,118,121,119;111,119,112,120;119,119,120,120;116,120,118,121;112,121,113,126;116,122,118,126;116,121,117,122;119,121,121,122;133,121,137,124;131,123,133,124;132,122,133,123;119,123,120,124;121,123,122,125;118,124,119,125;119,125,120,126;122,125,123,126;126,125,127,130;120,126,121,127;119,127,120,129;122,127,123,128;121,128,122,129;120,129,121,130;123,129,124,132;72,144,76,167;74,135,76,144;75,130,76,135;115,138,123,154;113,133,120,138;119,130,120,133;121,130,122,131;120,131,121,134;121,132,123,133;131,132,134,140;130,132,131,136;129,132,130,134;133,149,137,158;135,132,137,149;0,133,64,200;64,133,71,145;71,133,73,137;124,133,125,134;121,134,124,135;120,135,122,138;124,135,125,136;122,136,124,137;71,137,72,141;125,137,126,139;114,138,115,147;113,138,114,140;123,138,124,139;123,140,125,141;124,139,125,140;130,139,131,141;73,140,74,144;126,140,127,141;131,140,133,143;99,143,101,181;99,141,100,143;124,141,125,142;123,142,124,144;125,142,126,143;128,142,130,143;124,143,125,146;126,143,127,144;128,143,129,146;125,144,126,145;129,146,132,151;129,144,130,146;134,144,135,149;64,145,69,153;69,145,70,149;101,145,102,152;117,154,127,165;123,145,124,154;125,146,127,147;126,145,127,146;132,145,133,149;131,145,132,146;133,145,134,146;125,147,126,150;124,147,125,148;69,155,72,167;71,148,72,155;126,148,128,149;124,149,125,154;125,151,127,154;126,149,127,151;127,152,131,153;128,150,129,152;132,150,133,155;129,151,131,152;70,152,71,153;64,153,68,157;128,153,130,154;70,154,71,155;116,154,117,161;127,156,129,163;127,155,128,156;129,156,130,157;64,157,66,163;66,157,67,160;129,158,130,159;133,164,137,167;135,158,137,164;134,158,135,160;130,159,131,160;67,162,69,167;68,160,69,162;129,160,130,161;130,161,131,162;129,162,130,163;64,163,65,166;101,173,107,190;101,163,102,173;127,163,128,165;130,163,131,164;134,163,135,164;128,164,129,165;66,165,67,167;118,165,124,167;124,165,126,166;97,173,99,178;97,167,99,172;134,167,137,172;64,168,66,175;132,170,134,171;" $sPixelRect &= "133,169,134,170;98,172,99,173;102,172,103,173;136,172,137,175;135,172,136,173;107,173,108,175;95,174,97,176;64,177,69,200;64,175,65,177;94,175,95,176;65,176,66,177;96,176,97,177;140,176,200,200;139,176,140,181;138,176,139,178;69,177,70,181;98,178,99,180;100,181,101,183;102,190,140,200;107,182,111,190;107,181,108,182;111,185,114,190;111,183,112,185;69,188,73,200;69,186,70,188;114,187,118,190;114,186,116,187;70,187,72,188;138,187,140,190;118,188,121,190;131,188,138,190;121,189,131,190;73,192,78,200;73,190,75,192;75,191,76,192;95,193,102,200;101,192,102,193;78,194,95,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates5() Func _PixelCoordinates6() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x200;95,0,116,24;0,0,74,134;74,0,91,21;91,0,95,11;141,71,200,200;143,0,200,49;125,0,143,43;118,0,125,13;116,0,118,9;91,11,93,16;121,13,125,28;119,13,121,19;93,18,95,19;93,16,95,17;94,14,95,16;91,16,92,18;116,16,117,27;94,17,95,18;94,19,95,22;120,19,121,21;74,21,87,28;87,21,90,25;117,21,118,27;93,23,95,24;108,24,116,26;100,24,108,25;87,25,89,26;87,26,88,27;115,26,116,27;74,33,82,78;74,28,77,33;77,28,79,29;83,28,87,29;123,28,125,31;122,28,123,29;77,29,78,30;86,29,89,30;88,30,92,31;77,31,78,33;93,31,96,33;91,31,93,32;124,31,125,34;96,37,104,46;97,32,102,37;95,33,97,34;96,32,97,33;82,33,87,68;87,33,88,41;104,34,110,39;102,33,106,34;102,34,104,37;110,36,120,40;110,35,114,36;119,61,129,91;122,46,139,51;120,37,125,44;122,36,125,37;124,35,125,36;104,39,106,41;108,39,110,40;113,45,116,54;115,40,120,43;113,40,115,42;111,40,113,41;90,42,95,46;91,41,94,42;104,41,105,42;108,42,111,46;111,42,112,44;104,44,108,45;107,43,108,44;114,43,116,45;112,43,114,44;117,43,119,48;119,43,120,45;125,43,127,46;128,43,143,46;120,44,121,45;123,44,125,46;127,44,128,46;101,46,107,54;104,45,106,46;107,45,108,46;90,46,92,47;93,46,95,48;98,46,101,49;97,46,98,47;109,46,111,47;139,46,143,48;96,47,97,48;121,47,122,48;94,48,95,49;107,49,113,53;107,48,108,49;112,48,113,49;139,48,141,49;100,49,101,52;99,49,100,50;116,49,117,55;139,49,140,50;146,49,200,71;145,49,146,51;119,51,121,52;124,51,135,57;123,51,124,53;135,51,137,54;137,51,138,52;136,55,142,61;138,52,142,55;139,51,141,52;117,52,118,55;119,52,120,53;121,52,122,53;108,53,109,54;110,53,113,54;120,53,121,54;137,53,138,55;102,54,103,55;104,54,105,55;114,54,116,55;135,54,136,56;110,55,111,56;122,58,130,61;123,55,124,58;111,56,114,57;108,57,110,59;124,57,131,58;132,57,134,61;134,57,135,58;87,62,90,65;87,58,88,62;110,58,113,59;116,58,117,59;130,58,132,59;134,61,139,69;135,58,136,61;113,59,115,60;120,60,122,61;121,59,122,60;130,59,131,60;131,60,132,61;134,60,135,61;88,61,89,62;129,61,130,67;132,61,133,62;139,61,141,65;106,63,115,69;105,62,111,63;" $sPixelRect &= "116,64,119,80;117,63,119,64;118,62,119,63;144,65,146,71;145,62,146,65;90,63,91,65;103,63,106,67;132,63,133,64;84,68,92,70;87,65,88,68;102,65,103,66;115,65,116,68;139,65,140,67;88,67,89,68;104,67,106,68;83,68,84,69;129,72,131,80;129,68,130,72;143,68,144,71;82,71,87,82;82,69,83,71;107,69,109,70;110,69,111,70;134,69,137,71;137,69,138,70;83,70,85,71;86,70,93,71;95,71,101,89;95,70,100,71;142,70,143,71;92,71,95,74;91,71,92,72;101,72,104,76;101,71,102,72;135,71,136,72;114,72,116,73;105,73,107,75;112,73,115,74;137,75,141,86;138,74,141,75;140,73,141,74;93,74,95,76;107,74,113,76;111,76,116,80;114,74,116,76;131,74,132,78;87,77,93,88;87,75,88,77;106,75,107,76;132,75,133,76;88,76,91,77;94,76,95,77;108,76,109,77;136,77,137,87;74,78,78,84;78,78,80,79;81,78,82,79;93,78,95,89;78,79,79,81;101,79,108,89;108,80,109,81;111,80,114,81;114,82,119,87;118,80,119,82;117,80,118,81;115,81,116,82;84,82,87,87;83,82,84,85;129,82,131,92;131,83,134,87;74,90,78,105;74,84,77,90;134,84,136,87;113,85,114,87;137,86,140,87;86,87,87,88;114,87,115,88;117,87,119,89;116,87,117,88;136,98,141,174;139,89,141,98;140,87,141,89;89,88,93,89;115,88,116,89;117,89,118,90;131,90,135,93;131,89,133,90;136,89,139,92;135,90,136,92;112,91,113,118;111,91,112,98;118,91,119,92;123,91,126,94;120,91,123,92;126,91,129,93;78,92,80,95;113,92,115,95;122,92,123,93;129,92,130,93;77,116,99,168;82,94,101,116;83,93,95,94;97,93,101,94;121,93,122,94;122,94,123,95;125,94,128,97;124,94,125,96;137,95,139,98;138,94,139,95;78,95,79,100;113,95,114,100;128,95,133,98;135,95,137,96;118,96,119,98;133,96,135,98;119,97,120,98;80,102,82,116;81,98,82,102;121,101,129,112;119,99,125,101;132,101,136,118;133,100,136,101;135,99,136,100;118,100,119,102;125,100,126,101;119,101,121,105;129,102,132,114;74,105,76,116;76,105,77,110;120,105,121,108;78,111,80,116;79,108,80,111;114,109,115,110;114,111,115,112;122,112,128,115;128,112,129,114;113,122,118,135;114,113,115,122;122,115,126,116;74,116,75,122;99,116,101,117;99,117,100,137;115,117,116,122;113,118,114,119;" $sPixelRect &= "129,123,136,130;133,118,136,123;112,119,113,121;113,120,114,122;116,120,117,122;112,122,113,127;118,122,119,123;120,122,121,123;132,122,133,123;76,124,77,126;118,124,119,125;120,124,121,125;127,124,129,130;126,124,127,125;115,141,123,148;118,128,120,141;118,126,119,128;120,126,121,127;73,142,77,168;75,132,77,142;76,127,77,132;121,128,122,129;120,130,121,131;122,130,123,131;130,130,135,133;129,130,130,132;128,130,129,131;120,132,121,141;122,132,123,133;132,133,135,138;131,133,132,135;0,134,64,200;64,134,71,146;71,134,73,138;121,134,122,135;123,134,124,135;114,135,118,141;122,135,123,137;121,138,123,140;121,137,122,138;124,137,125,138;131,138,134,141;131,137,132,138;71,138,72,142;74,138,75,142;99,138,100,139;124,139,125,140;121,140,122,141;123,140,124,143;125,141,126,142;129,141,130,144;132,141,134,142;134,148,136,160;132,144,136,145;135,141,136,144;99,144,101,181;99,142,100,144;124,143,125,144;117,148,126,161;123,145,125,147;123,144,124,145;125,144,126,145;130,144,131,145;130,146,133,149;131,145,134,146;133,146,136,147;135,145,136,146;64,146,69,154;69,146,70,150;70,154,73,168;71,150,73,154;72,146,73,150;101,146,102,152;125,146,126,148;123,147,124,148;127,147,128,148;135,147,136,148;116,148,117,155;129,149,132,152;129,148,130,149;127,149,128,150;132,151,134,154;133,149,134,151;126,150,127,151;126,152,128,153;127,151,128,152;130,152,131,154;129,152,130,153;127,153,128,154;64,154,67,161;67,154,68,157;126,155,128,165;126,154,127,155;128,154,129,155;133,154,134,157;128,156,129,157;68,160,70,168;69,157,70,160;129,157,130,161;128,158,129,159;128,160,129,162;134,163,136,172;135,160,136,163;64,161,66,164;119,161,126,166;118,161,119,165;129,162,130,164;133,163,134,167;64,164,65,167;67,164,68,167;101,173,107,190;101,164,102,173;132,164,133,165;66,166,67,167;120,166,124,167;64,168,66,175;97,173,99,178;97,168,99,172;132,169,134,171;133,171,134,172;98,172,99,173;102,172,103,173;135,172,136,173;107,173,108,175;95,174,97,176;139,174,141,181;137,174,139,176;64,177,69,200;" $sPixelRect &= "64,175,65,177;94,175,95,176;65,176,66,177;96,176,97,177;138,176,139,177;69,177,70,181;98,178,99,179;100,181,101,183;102,190,141,200;107,182,111,190;107,181,108,182;140,181,141,190;111,185,114,190;111,183,112,185;69,188,73,200;69,186,70,188;114,187,118,190;114,186,116,187;70,187,72,188;138,187,140,190;118,188,121,190;131,188,138,190;121,189,131,190;73,192,78,200;73,190,74,192;74,191,76,192;95,193,102,200;101,192,102,193;78,194,95,200;78,193,81,194" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates6() Func _PixelCoordinates7() #region pixel coordinates Local $sPixelRect $sPixelRect &= "170,200x200;0,0,104,12;138,87,200,177;132,0,200,71;106,0,124,22;104,0,106,11;124,0,132,13;0,12,71,147;71,28,91,65;71,12,95,27;95,12,101,18;101,12,103,15;102,16,106,26;104,14,106,16;105,12,106,14;124,13,125,14;129,13,132,24;128,13,129,14;101,15,102,17;103,15,104,16;95,18,99,23;99,18,100,20;101,18,102,21;111,22,123,30;106,22,111,28;95,23,97,25;97,23,98,24;123,23,124,24;100,25,102,26;101,24,102,25;130,24,132,34;95,25,96,26;123,25,124,26;103,26,106,27;71,27,85,28;86,27,95,28;105,27,106,28;91,28,94,40;108,28,111,29;94,31,96,36;94,30,95,31;117,30,123,32;114,30,117,31;129,30,130,32;96,33,99,37;96,32,97,33;120,32,123,33;98,42,104,51;99,35,103,42;99,34,101,35;131,34,132,37;94,36,95,37;103,38,110,42;103,36,105,38;98,37,99,39;97,37,98,38;105,37,107,38;109,42,121,49;110,39,112,42;127,53,132,73;126,42,132,52;131,39,132,42;91,42,96,45;91,40,93,42;112,40,115,42;115,41,117,42;130,41,131,42;104,42,109,45;96,43,97,46;121,43,126,52;92,45,96,47;104,45,106,46;108,45,109,46;104,46,105,47;92,47,93,48;95,47,96,48;106,48,109,50;108,47,109,48;100,51,107,57;104,48,105,51;105,49,106,51;109,49,111,51;111,49,112,50;113,49,114,50;115,49,121,51;106,50,107,51;108,50,109,51;111,54,117,59;114,51,117,54;114,50,115,51;99,51,100,55;109,51,110,52;119,51,121,52;107,53,109,57;107,52,108,53;118,52,120,53;128,52,132,53;113,53,114,54;109,54,111,57;117,54,118,55;123,55,124,56;117,56,118,60;121,56,123,57;124,56,125,57;101,57,107,58;108,57,109,58;110,57,111,58;121,57,122,58;123,57,124,58;123,64,127,76;126,57,127,64;122,58,123,59;124,58,125,59;91,61,93,65;91,59,92,61;113,59,117,60;121,59,122,60;114,60,115,61;116,60,117,61;110,61,113,64;107,62,110,63;113,62,116,64;124,63,126,64;125,62,126,63;113,64,115,65;116,64,117,65;71,65,85,83;87,77,91,97;85,68,90,73;85,65,89,68;118,68,123,78;120,66,123,68;122,65,123,66;104,67,112,72;103,66,109,67;102,69,104,70;103,67,104,69;102,67,103,68;119,67,120,68;112,68,115,73;90,70,93,73;90,69,91,70;116,70,118,74;117,69,118,70;103,70,104,71;97,73,101,91;97,71,99,73;115,71,116,72;" $sPixelRect &= "132,71,136,72;142,71,200,87;140,71,142,73;138,71,140,72;94,74,97,78;96,72,97,74;99,72,100,73;108,72,112,74;106,72,107,74;105,72,106,73;107,72,108,73;132,72,133,73;85,73,87,81;87,73,88,77;90,73,92,74;93,73,95,74;112,73,113,74;112,79,118,85;115,75,118,79;115,73,116,75;127,73,131,74;129,75,137,83;131,74,137,75;134,73,135,74;141,73,142,75;93,74,94,76;101,74,102,77;127,74,129,75;102,75,103,77;127,75,128,76;137,75,138,80;88,76,89,77;103,76,104,77;123,76,126,78;125,79,129,91;127,77,129,79;128,76,129,77;112,77,114,79;91,83,96,98;91,79,93,83;91,78,92,79;96,78,97,81;95,78,96,79;111,78,112,81;118,78,121,80;122,78,124,80;124,78,125,79;126,78,127,79;121,79,122,81;93,80,94,83;118,80,120,81;140,83,142,87;141,80,142,83;94,81,95,83;118,81,119,82;122,84,125,88;123,82,125,84;124,81,125,82;74,83,84,91;71,83,73,85;73,83,74,84;111,85,116,91;111,83,112,85;129,83,134,87;134,83,136,84;84,85,87,96;84,84,85,85;96,84,97,95;134,84,135,86;71,85,72,88;116,85,117,87;139,85,140,87;73,87,74,88;129,87,132,89;132,87,133,88;124,88,125,91;123,88,124,89;137,88,138,176;129,89,131,90;129,90,130,91;133,93,137,115;135,91,137,93;136,90,137,91;78,91,84,94;77,91,78,93;76,91,77,92;97,91,98,93;100,91,101,93;99,91,100,92;109,96,116,105;112,91,115,96;115,91,116,93;125,91,128,92;71,96,75,123;71,92,72,96;111,92,112,96;134,92,135,93;126,96,133,112;130,94,133,96;132,93,133,94;72,94,73,96;81,94,84,95;73,95,74,96;83,95,84,96;103,95,106,101;109,95,111,96;128,95,130,96;85,96,87,97;101,97,103,99;102,96,103,97;106,99,108,105;106,96,109,98;116,96,119,98;75,98,78,104;75,97,77,98;88,97,91,98;125,97,126,106;90,98,95,99;107,98,109,99;116,98,118,99;124,98,125,100;93,99,95,100;101,99,102,100;77,124,101,168;79,107,101,124;80,101,86,107;81,100,83,101;108,100,109,106;116,102,118,107;116,100,117,102;102,101,103,102;104,101,106,103;86,102,89,107;123,102,125,107;89,103,92,107;95,103,99,107;103,103,104,104;105,103,106,104;118,104,121,107;118,103,119,104;75,104,77,110;92,104,95,107;99,104,101,107;104,104,105,105;121,105,123,108;" $sPixelRect &= "122,104,123,105;79,105,80,106;106,105,107,108;105,105,106,106;109,105,112,107;113,105,116,106;107,106,108,107;112,106,114,111;108,107,110,108;110,108,112,109;111,107,112,108;120,107,121,108;123,107,124,108;107,108,108,109;114,109,118,112;114,108,116,109;101,109,102,110;108,109,109,110;110,109,111,110;123,110,126,115;124,109,126,110;75,110,76,116;107,110,108,111;118,110,122,112;101,111,102,112;77,118,79,123;78,112,79,118;109,112,111,114;108,112,109,113;119,112,120,113;121,112,122,113;126,112,132,114;111,113,114,116;110,114,111,115;114,114,116,117;126,114,130,115;101,115,102,120;116,115,120,116;124,115,128,116;130,122,137,130;135,115,137,122;134,115,135,118;116,116,118,117;124,116,125,117;114,125,119,133;113,121,118,125;114,120,117,121;133,121,135,122;124,122,125,124;128,123,130,126;129,122,130,123;71,123,74,134;78,123,79,124;113,125,114,126;129,126,130,129;117,140,123,151;115,133,121,139;119,129,120,133;133,130,136,140;132,130,133,132;131,130,132,131;73,144,77,168;75,136,77,144;76,131,77,136;136,131,137,132;120,132,121,133;71,134,73,139;122,135,123,136;121,136,122,140;128,137,129,139;122,138,123,139;71,139,72,143;116,139,121,140;130,143,135,146;130,139,132,143;74,140,75,144;116,140,117,145;124,141,125,142;133,142,136,143;119,151,126,162;123,146,125,151;123,143,124,146;135,147,137,173;136,143,137,147;135,143,136,145;124,144,125,145;101,146,102,150;131,146,134,149;0,147,65,200;65,147,69,155;69,147,70,151;126,147,127,148;70,156,73,168;71,151,73,156;72,148,73,151;125,149,126,151;132,149,133,151;133,150,135,157;134,149,135,150;118,151,119,157;127,151,128,152;126,152,127,153;132,152,133,154;126,154,128,155;65,155,68,159;126,156,128,164;126,155,127,156;128,155,129,156;134,157,135,160;68,161,70,168;69,158,70,161;128,158,129,159;65,159,67,162;129,159,130,160;128,160,129,163;65,162,66,165;121,162,125,166;120,162,121,165;125,162,126,165;134,163,135,172;133,163,134,167;67,164,68,168;126,164,127,165;99,173,107,181;98,168,102,173;101,167,102,168;65,168,66,173;97,169,98,172;" $sPixelRect &= "132,170,134,171;133,169,134,170;133,171,134,172;97,173,99,178;107,173,108,175;136,173,137,175;95,174,97,176;94,175,95,176;96,176,97,177;65,186,70,200;65,177,69,186;69,177,70,181;140,177,200,200;139,177,140,181;98,178,99,180;102,183,112,200;100,181,108,183;108,182,111,183;101,183,102,190;112,187,118,200;112,185,114,187;114,186,116,187;70,190,74,200;70,187,72,190;131,188,140,200;138,187,140,188;72,188,73,190;118,189,131,200;118,188,121,189;74,192,78,200;74,191,76,192;95,193,102,200;101,192,102,193;78,194,85,200;78,193,81,194;86,194,95,200;85,195,86,200" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates7() Func _PixelCoordinates8() #region pixel coordinates Local $sPixelRect $sPixelRect &= "2000,200x200;0,0,108,20;136,0,200,128;111,0,127,30;108,0,111,13;127,0,136,17;108,13,110,14;108,14,109,16;110,14,111,15;106,20,111,29;108,17,111,20;109,16,111,17;127,17,132,18;134,17,136,20;133,17,134,18;127,18,129,19;127,19,128,22;0,20,67,163;67,20,92,65;92,20,101,26;101,20,104,24;104,20,105,21;127,62,136,88;135,20,136,62;105,21,106,22;134,22,135,28;105,23,106,24;101,24,103,25;105,25,106,26;92,26,98,39;98,26,100,27;103,26,104,27;98,27,99,28;105,27,106,29;104,27,105,28;108,29,111,31;107,29,108,30;114,30,126,34;111,30,114,32;110,31,111,32;98,34,100,40;98,32,99,34;112,32,114,33;134,32,135,37;119,34,125,36;117,34,119,35;100,36,103,42;100,35,101,36;121,36,125,37;100,43,105,59;103,38,105,43;103,37,104,38;92,39,96,45;96,39,97,41;105,41,110,48;105,39,107,41;99,40,100,41;107,40,108,41;101,42,103,43;110,44,116,53;110,42,112,44;96,44,99,46;96,43,98,44;112,43,114,44;130,47,135,62;134,44,135,47;92,45,93,49;94,45,96,48;116,47,130,56;116,45,118,47;96,46,98,48;99,46,100,56;118,46,120,47;132,46,134,47;93,47,94,48;105,48,106,49;108,48,110,50;107,48,108,49;108,51,110,54;109,50,110,51;92,51,93,65;105,51,107,60;107,51,108,53;109,54,111,55;110,53,111,54;113,56,117,64;115,53,116,56;114,53,115,54;107,56,109,60;107,55,108,56;114,55,115,56;120,56,130,57;109,57,113,59;117,57,118,58;128,59,130,62;129,58,130,59;93,59,94,65;101,59,105,60;109,59,111,60;111,60,113,63;112,59,113,60;123,60,125,61;124,59,125,60;102,60,103,61;121,60,122,61;110,61,111,62;122,61,123,62;125,61,126,62;117,62,118,64;123,62,124,63;94,63,95,64;122,63,123,64;109,64,112,67;67,65,83,87;83,65,89,83;89,69,91,75;89,65,90,69;106,65,109,66;112,65,114,68;119,70,127,86;125,66,127,70;126,65,127,66;114,66,115,68;111,67,112,68;115,67,117,68;123,68,125,70;124,67,125,68;103,69,108,74;102,69,103,72;121,69,123,70;108,71,114,76;108,70,111,71;91,71,94,75;117,72,119,75;118,71,119,72;88,86,101,94;96,76,101,82;97,73,99,76;115,79,119,87;115,73,117,77;99,74,100,76;104,74,108,76;91,75,92,76;94,75,96,79;96,75,97,76;109,76,110,77;111,76,113,77;" $sPixelRect &= "117,76,119,79;89,78,92,86;89,77,90,78;101,77,102,78;113,78,115,79;114,77,115,78;116,77,117,79;95,79,96,80;112,83,115,92;112,79,114,83;92,81,94,86;92,80,93,81;101,81,102,82;110,81,111,82;94,82,95,86;97,82,101,86;83,83,88,84;83,84,85,85;95,84,96,86;83,85,84,86;88,85,89,86;117,87,123,90;119,86,121,87;123,86,127,89;122,86,123,87;72,87,81,96;67,87,72,88;81,87,82,88;111,87,112,88;115,87,116,89;67,88,69,89;70,88,72,95;81,94,92,99;86,90,88,94;87,88,88,90;127,88,130,89;133,88,136,90;132,88,133,89;67,89,68,93;69,89,70,92;111,89,112,90;115,90,119,92;116,89,117,90;81,91,84,94;81,90,82,91;119,90,120,91;127,90,129,94;126,90,127,92;132,100,136,108;135,90,136,100;134,90,135,91;123,91,124,92;128,94,131,96;129,91,130,94;84,92,86,94;113,92,116,94;116,92,117,93;122,92,123,93;130,92,131,94;131,93,132,94;92,94,95,98;97,94,101,103;96,94,97,99;112,94,113,95;67,103,74,134;67,98,69,103;67,96,68,98;76,96,81,100;73,96,76,98;128,96,130,98;134,96,135,100;74,98,76,99;94,98,96,101;126,98,128,100;128,98,129,99;81,99,88,103;88,99,90,101;90,99,91,100;124,99,126,102;133,99,134,100;69,100,70,103;78,100,81,102;77,100,78,101;95,101,97,102;96,100,97,101;112,100,113,104;121,101,124,104;122,100,124,101;126,100,127,101;70,101,72,103;88,101,89,102;72,102,73,103;80,102,81,104;79,102,80,103;124,102,125,103;131,102,132,105;83,103,86,106;82,103,83,105;81,103,82,104;86,103,87,104;100,103,101,105;99,103,100,104;74,105,76,115;74,104,75,105;94,105,99,107;95,104,98,105;121,104,122,105;126,107,132,115;128,105,131,107;130,104,131,105;76,105,77,109;84,106,85,107;93,106,94,108;100,107,106,114;99,106,104,107;127,106,128,107;94,109,96,110;95,107,97,109;94,107,95,108;99,107,100,111;98,107,99,108;106,108,109,111;106,107,108,108;97,108,98,109;109,108,110,110;124,109,126,112;125,108,126,109;134,108,136,115;133,108,134,111;76,134,101,169;78,114,92,134;79,109,82,114;123,109,124,110;82,111,90,114;82,110,83,111;87,110,88,111;96,110,97,113;95,110,96,111;97,110,98,111;132,110,133,112;78,111,79,113;94,111,95,112;98,111,99,114;" $sPixelRect &= "90,112,92,114;95,112,96,115;99,112,100,113;106,112,107,114;114,112,115,113;125,112,126,114;97,113,98,115;132,113,133,114;99,114,100,115;102,114,106,118;100,115,102,116;101,114,102,115;74,115,75,123;96,115,97,116;98,115,99,116;106,116,108,120;106,115,107,116;115,115,116,116;127,115,130,116;135,115,136,118;97,116,98,117;99,116,100,117;112,116,115,119;96,117,97,118;98,117,99,118;100,117,101,119;108,118,112,121;108,117,109,118;105,118,106,120;104,118,105,119;116,118,117,119;77,119,78,120;92,124,95,134;92,119,93,124;99,119,100,120;101,120,104,123;101,119,102,120;112,119,114,120;123,119,124,122;133,128,137,132;130,121,136,128;134,120,136,121;135,119,136,120;112,120,113,121;115,125,119,135;115,121,118,125;115,120,117,121;124,121,126,124;124,120,125,121;104,122,108,124;104,121,106,122;111,121,112,122;129,121,130,126;93,122,94,124;114,122,115,129;77,123,78,124;97,123,99,125;103,123,104,124;108,123,110,125;99,125,103,127;99,124,101,125;105,124,108,125;110,124,111,125;124,124,125,126;95,126,97,134;95,125,96,126;98,125,99,126;125,125,126,130;77,126,78,134;103,126,105,129;100,127,103,128;105,127,107,128;97,129,99,134;97,128,98,129;132,128,133,130;131,128,132,129;140,128,200,200;134,149,140,159;138,128,140,149;117,140,123,146;119,129,120,140;99,131,102,134;99,130,101,131;137,130,138,131;120,132,121,133;134,132,137,136;67,134,72,143;72,134,73,139;101,134,102,142;120,136,122,140;120,134,121,136;116,135,119,140;129,136,130,142;128,136,129,138;134,136,136,139;122,138,123,139;130,142,135,146;131,138,133,142;72,150,76,168;74,143,76,150;75,139,76,143;137,139,138,149;135,141,136,145;134,141,135,142;136,141,137,142;123,142,124,143;67,143,70,152;70,143,71,147;120,150,126,162;118,146,125,150;123,144,124,146;135,146,137,149;136,145,137,146;73,146,74,150;101,146,102,150;131,146,134,149;134,146,135,147;125,148,126,149;132,149,133,150;119,150,120,158;118,150,119,152;126,150,127,151;133,151,134,156;132,151,133,153;67,152,69,156;69,159,72,168;70,155,72,159;71,152,72,155;126,152,127,153;" $sPixelRect &= "127,153,128,154;126,155,128,164;126,154,127,155;67,156,68,159;128,158,129,164;134,162,140,172;135,159,140,162;68,162,69,163;122,162,126,165;121,162,122,164;0,163,65,200;65,163,66,166;133,163,134,166;67,165,69,168;68,164,69,165;126,164,127,165;123,165,125,166;65,168,66,173;99,173,107,181;98,169,102,173;101,168,102,169;97,169,98,172;132,170,134,171;136,172,140,175;135,172,136,173;97,173,99,178;107,173,108,175;95,174,97,176;94,175,95,176;138,175,140,178;137,175,138,176;96,176,97,177;65,186,70,200;65,177,69,186;69,177,70,181;98,178,99,180;139,178,140,181;102,183,111,200;100,181,108,183;108,182,110,183;101,183,102,190;111,187,118,200;111,184,112,187;112,185,114,187;114,186,116,187;70,190,74,200;70,187,72,190;131,188,140,200;138,187,140,188;72,188,73,190;118,189,131,200;118,188,121,189;74,192,78,200;74,191,76,192;95,193,102,200;101,192,102,193;78,194,85,200;78,193,81,194;86,194,95,200;85,195,86,200" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates8() #endregion  
      Example 4
      #include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> Global Const $iFrames = 18 Global $aAnim[$iFrames + 1], $i, $j, $aTmp, $iDelay, $iMin = 0xFFFF For $i = 0 To $iFrames $aAnim[$i] = Call("_PixelCoordinates" & $i) ;create an array with arrays as values $aTmp = $aAnim[$i] $j = Int(StringRegExpReplace($aTmp[0], "(\d+),.*", "$1")) If $j < $iMin Then $iMin = $j ;minimum frame delay value Next $iDelay = Max($iMin - 30, $iMin * 3) Global $aFrame0 = $aAnim[0] ;content of $aFrame0[0] is <anim delay>,<anim witdh>x<anim height> Global Const $iAnimWidth = StringRegExpReplace($aFrame0[0], "\d+,(\d+)x\d+", "$1") ;extract width Global Const $iAnimHeight = StringRegExpReplace($aFrame0[0], "\d+,\d+x(\d+)", "$1") ;extract height Global $hGUI = GUICreate("Cool GIF Animation", $iAnimWidth + 60, $iAnimHeight) GUISetBkColor(0x003388) Global $iBtnExit = GUICtrlCreateButton("Exit", $iAnimWidth + 8, $iAnimHeight - 44, 40, 40) GUISetState() Global Const $iDeltaX = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME) Global Const $iDeltaY = _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 Global Const $size = WinGetPos(HWnd($hGUI)) Global Const $iHwndWidth = $size[2], $iHwndHeight = $size[3] Global Const $hDll = DllOpen("gdi32.dll") Global Const $hDll2 = DllOpen("user32.dll") GUIRegisterMsg($WM_TIMER, "PlayAnim") ;$WM_TIMER = 0x0113 DllCall("User32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iDelay, "int", 0) Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iBtnExit _Exit() EndSwitch Until False Func _Exit() If WinActive($hGUI) Then GUIRegisterMsg($WM_TIMER, "") GUIDelete() DllClose($hDLL) DllClose($hDLL2) Exit EndIf EndFunc Func Max($a, $b) If $a > $b Then Return $a Return $b EndFunc Func PlayAnim() Local Static $f = 0 Local $aDelay = $aAnim[$f] Local $iDelay = StringRegExpReplace($aDelay[0], "(\d+),.*", "$1") Local Static $iTimer = TimerInit() DllCall($hDll, "bool", "DeleteObject", "handle", _WinAPI_GuiImageHole($hGUI, $aDelay, 0, 0, $iAnimWidth, $iAnimHeight)) If TimerDiff($iTimer) > $iDelay Then $f += 1 $iTimer = TimerInit() EndIf If $f > $iFrames Then $f = 0 EndFunc Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True) If $bCorrection Then $iX += $iDeltaX $iY += $iDeltaY EndIf Local $aRegion, $aRegionMask $aRegion = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", 0, "int", 0) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iX, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", 0, "int", $iHwndWidth, "int", $iY) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $iWidth * $fScale, "int", 0, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", 0, "int", $iY + $iHeight * $fScale, "int", $iHwndWidth, "int", $iHwndHeight) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) Local $i, $aBlock, $aRet For $i = 1 To UBound($aPixelArray) - 1 $aBlock = StringSplit($aPixelArray[$i], ",", 2) $aRegionMask = DllCall($hDll, "int", "CreateRectRgn", "int", $iX + $aBlock[0] * $fScale, "int", $iY + $aBlock[1] * $fScale, "int", $iX + $aBlock[2] * $fScale, "int", $iY + $aBlock[3] * $fScale) DllCall($hDll, "int", "CombineRgn", "handle", $aRegion[0], "handle", $aRegionMask[0], "handle", $aRegion[0], "int", 2) DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $aRegionMask[0]) Next DllCall($hDll2, "int", "SetWindowRgn", "hwnd", $hWnd, "handle", $aRegion[0], "bool", 1) Return $aRegion[0] EndFunc ;==>_WinAPI_GuiImageHole #region ;Code below was generated by Perforator v1.0 build 2013-04-07 beta Func _PixelCoordinates0() #region pixel coordinates Local $sPixelRect $sPixelRect &= "40,250x206;0,0,163,43;177,0,250,118;163,0,177,35;163,35,166,38;166,35,167,36;171,35,177,67;169,35,171,43;167,37,168,38;163,38,165,40;168,39,169,42;163,40,164,41;165,41,166,42;61,43,132,52;0,43,39,53;48,43,53,50;39,43,46,50;46,43,48,48;54,43,61,50;53,43,54,49;146,43,161,49;138,43,146,47;135,43,138,45;133,43,135,44;161,43,163,44;170,43,171,48;161,44,162,45;132,47,134,51;132,46,133,47;136,46,138,48;135,46,136,47;168,46,169,47;143,47,146,48;162,60,168,64;162,50,166,60;163,48,167,50;165,47,166,48;46,48,47,49;134,49,137,51;134,48,135,49;139,48,141,50;137,48,139,49;141,49,146,51;152,49,160,57;150,49,152,51;149,49,150,50;166,50,169,51;167,49,168,50;33,73,57,116;34,54,51,73;42,50,43,54;39,50,42,52;43,50,45,51;47,50,48,51;51,51,57,61;50,50,53,51;58,50,61,51;137,50,138,51;140,50,141,51;145,51,149,52;146,50,147,51;148,50,149,51;133,51,135,52;138,51,140,52;151,51,152,54;166,51,167,52;43,52,51,54;57,53,63,61;57,52,61,53;91,96,125,176;89,52,116,83;75,52,89,59;68,52,75,55;65,52,68,53;116,55,131,72;116,52,129,55;129,52,131,53;131,53,134,54;132,52,133,53;135,52,139,53;140,52,145,56;148,53,151,63;146,52,150,53;169,52,170,53;0,53,25,59;25,53,31,56;31,53,34,54;40,53,42,54;129,53,130,54;137,54,140,57;138,53,140,54;147,53,148,56;166,53,167,56;167,54,169,55;168,53,169,54;169,56,171,62;170,53,171,56;31,54,32,55;63,55,69,63;63,54,67,55;135,54,136,58;133,54,135,55;136,54,137,55;145,54,146,57;17,67,33,102;29,58,34,67;31,56,34,58;32,55,33,56;73,55,75,57;71,55,73,56;131,57,135,72;131,56,134,57;133,55,134,56;167,55,168,56;25,56,27,57;28,56,30,57;69,58,73,64;69,56,71,58;141,56,142,58;140,56,141,57;143,56,145,57;151,56,152,60;25,57,26,58;28,57,29,58;30,57,31,58;71,57,72,58;74,57,75,58;136,57,138,59;138,57,139,58;154,57,160,61;153,57,154,60;168,57,169,59;26,58,27,59;139,58,140,59;142,58,144,63;166,58,167,60;0,59,12,75;12,59,18,62;21,59,23,61;19,59,21,60;23,59,24,60;24,60,29,67;27,59,29,60;73,61,75,65;73,59,74,61;80,59,89,68;77,59,80,62;76,59,77,60;135,59,136,61;135,66,150,74;138,61,142,66;" $sPixelRect &= "138,59,139,61;18,60,20,61;141,60,142,61;144,60,145,62;20,61,21,63;22,62,24,67;23,61,24,62;51,61,53,63;54,61,57,62;60,61,63,63;58,61,60,62;76,61,77,62;145,61,146,62;151,62,155,66;152,61,153,62;156,61,161,62;12,62,14,72;14,62,15,65;16,62,18,63;53,62,54,63;75,63,77,66;75,62,76,63;78,62,80,64;135,64,138,65;136,62,137,64;159,62,161,63;170,62,171,64;15,63,17,64;52,63,53,64;63,63,66,64;68,63,69,65;67,63,68,64;137,63,138,64;142,63,143,66;144,63,147,66;150,63,151,65;149,63,150,64;150,73,161,89;155,66,159,69;155,63,156,66;15,64,16,67;17,64,18,65;20,65,22,67;21,64,22,65;65,64,66,65;69,64,70,65;72,64,73,65;76,66,79,67;77,64,78,66;79,64,80,65;143,64,144,66;147,64,148,66;163,68,168,75;165,64,167,68;164,64,165,66;163,64,164,65;18,65,19,67;73,65,74,66;78,65,79,66;135,65,137,66;148,65,149,66;156,65,157,66;158,65,160,66;51,67,55,73;51,66,52,67;53,66,54,67;152,66,155,67;14,67,15,70;33,67,34,73;77,67,80,68;150,68,154,73;150,67,152,68;154,67,155,68;160,67,163,72;157,69,160,70;159,67,160,69;163,67,164,68;167,67,169,68;173,67,177,72;172,67,173,69;16,68,17,75;79,68,80,70;83,68,89,73;81,68,83,71;55,69,56,72;154,70,158,73;154,69,156,70;56,70,57,71;80,70,81,71;159,70,160,71;166,77,172,100;168,72,170,77;168,70,169,72;82,71,83,72;158,71,159,73;12,72,13,73;15,72,16,74;14,72,15,73;56,72,57,73;116,72,122,74;122,72,124,73;128,72,129,73;131,72,132,74;133,72,135,73;159,72,160,73;161,72,163,73;175,72,177,77;174,72,175,74;57,77,61,84;57,74,59,77;58,73,59,74;85,73,89,74;124,73,128,74;86,74,87,75;87,75,89,77;88,74,89,75;116,74,120,76;122,74,125,76;125,74,126,75;133,74,134,75;142,74,150,78;138,74,142,76;137,74,138,75;161,76,164,87;161,74,162,76;170,74,171,77;0,99,13,145;0,84,10,99;0,75,10,83;10,75,11,81;64,76,69,79;64,75,66,76;69,75,71,78;67,75,69,76;119,76,123,78;121,75,122,76;162,75,163,76;165,75,168,77;164,75,165,76;13,78,17,100;15,76,17,78;61,76,62,78;60,76,61,77;63,76,64,77;72,76,75,79;71,76,72,78;85,77,87,80;86,76,87,77;116,76,118,78;123,76,124,77;128,76,130,77;132,76,133,78;141,76,142,77;" $sPixelRect &= "14,77,15,78;62,77,63,78;75,77,76,80;87,78,89,79;88,77,89,78;127,77,129,78;133,77,134,79;135,77,136,78;137,77,138,78;139,77,140,82;165,77,166,78;176,77,177,83;11,84,13,91;12,78,13,84;61,79,65,80;63,78,64,79;76,78,77,80;116,78,117,81;117,81,129,91;118,78,121,81;121,78,122,79;127,78,128,81;130,78,132,79;136,78,137,79;138,78,139,79;140,79,142,81;141,78,142,79;145,78,150,81;144,78,145,80;143,78,144,79;172,78,173,85;84,79,85,82;87,79,88,81;130,79,131,81;165,79,166,80;61,80,63,81;85,80,86,81;117,80,118,81;123,80,127,81;142,80,144,83;61,81,62,83;141,81,142,82;144,81,145,82;147,81,150,83;146,81,147,82;165,81,166,86;11,82,12,83;125,99,134,141;129,85,135,97;129,82,130,85;0,83,7,84;92,83,115,96;90,83,92,93;115,83,117,85;130,83,131,85;131,84,133,85;132,83,133,84;144,83,146,84;149,83,150,89;148,83,149,84;57,85,61,87;58,84,61,85;89,84,90,89;144,84,145,85;64,87,69,89;65,86,68,87;66,85,67,86;70,85,73,88;69,85,70,87;76,88,79,92;77,85,78,88;115,85,116,90;73,86,74,87;78,86,79,88;85,86,88,89;84,86,85,87;135,88,141,97;135,86,136,88;141,90,145,96;141,87,147,89;142,86,143,87;144,86,148,87;172,86,174,87;57,87,59,94;59,87,60,89;136,87,139,88;140,87,141,88;147,87,148,88;161,87,162,88;161,92,166,106;164,89,166,92;165,87,166,89;172,87,173,88;72,88,74,89;79,88,80,91;83,88,85,89;148,88,149,89;172,89,175,90;174,88,175,89;65,89,67,91;64,89,65,90;80,89,81,90;142,89,147,90;153,89,156,93;151,89,153,92;150,89,151,90;156,89,158,91;158,89,159,90;75,90,76,94;89,90,90,93;145,90,147,91;172,90,174,93;10,91,11,92;12,91,13,95;59,91,61,92;115,92,118,96;115,91,117,92;121,91,129,95;119,91,121,93;118,91,119,92;145,91,146,92;156,91,157,92;162,91,164,92;59,92,60,93;76,92,78,95;10,93,11,99;60,93,61,94;63,93,64,94;80,93,81,94;118,93,119,96;120,93,121,94;154,93,155,94;157,99,161,107;160,93,161,99;172,93,173,95;168,104,177,133;175,97,177,104;176,93,177,97;11,94,12,95;80,95,83,97;81,94,82,95;90,94,92,96;119,94,120,96;57,96,59,103;57,95,58,96;61,95,62,96;120,95,122,96;124,95,129,96;11,96,12,99;83,96,84,97;90,96,91,109;" $sPixelRect &= "127,96,129,99;141,96,144,97;172,96,173,97;60,97,61,98;78,98,81,103;79,97,81,98;125,97,127,99;129,97,130,99;132,97,136,98;138,97,140,100;140,97,141,98;130,98,133,99;134,99,138,108;136,98,137,99;158,98,160,99;59,99,60,101;172,100,175,104;174,99,175,100;14,100,17,104;61,100,62,101;138,100,139,102;151,103,156,112;154,100,157,103;166,100,170,102;170,100,171,101;83,101,85,103;170,102,172,104;171,101,172,102;18,107,30,115;17,102,26,107;27,104,33,107;27,102,31,104;32,102,33,104;31,102,32,103;82,102,83,104;84,103,86,104;85,102,86,103;152,102,154,103;166,102,168,104;57,103,58,105;79,103,81,104;156,103,157,106;169,103,170,104;13,117,19,142;13,108,16,117;13,104,14,108;16,104,17,109;15,104,16,106;147,106,151,114;149,104,151,106;166,104,167,105;80,105,81,106;83,105,87,109;148,105,149,106;14,106,15,108;80,107,83,113;81,106,83,107;141,107,147,114;142,106,143,107;161,106,164,109;164,106,165,107;158,114,168,139;165,108,168,114;166,107,168,108;167,106,168,107;17,107,18,112;30,107,31,109;57,107,58,108;87,107,88,109;89,107,90,108;156,107,157,109;158,108,161,111;159,107,161,108;32,108,33,110;79,108,80,110;88,108,89,109;134,108,137,112;83,109,85,110;86,109,87,110;161,109,162,110;162,110,165,114;164,109,165,110;16,110,17,111;25,119,57,131;30,111,33,119;30,110,32,111;57,110,58,113;85,110,86,111;140,110,141,112;156,111,159,113;156,110,158,111;78,111,80,116;159,111,160,112;16,112,17,117;87,112,89,115;134,112,136,115;151,112,153,114;154,112,156,113;160,113,162,114;161,112,162,113;77,113,78,114;80,113,81,116;82,113,83,114;83,114,87,118;84,113,87,114;138,117,148,129;139,115,142,117;140,113,141,115;157,113,158,114;75,114,76,115;83,143,91,181;87,121,91,143;89,117,91,121;90,114,91,117;143,114,144,117;142,114,143,115;145,114,148,117;22,115,25,129;20,115,22,120;19,115,20,117;25,115,30,119;42,116,58,117;57,115,58,116;77,115,78,116;79,119,85,127;81,116,83,119;82,115,83,116;87,115,88,117;134,115,135,120;144,115,145,117;17,116,18,117;33,116,39,118;39,116,41,117;78,116,79,119;142,116,143,117;" $sPixelRect &= "148,116,149,118;156,117,158,129;157,116,158,117;41,117,57,119;75,117,76,118;80,117,81,119;33,118,37,119;40,118,41,119;57,118,58,122;77,118,78,120;83,118,86,119;148,119,151,131;149,118,151,119;177,118,203,120;203,118,228,119;232,118,238,119;242,118,250,119;59,119,60,120;85,119,86,120;88,119,89,121;248,119,250,121;247,119,248,120;19,129,22,141;19,120,20,129;21,120,22,123;58,120,59,124;136,157,151,179;135,134,145,147;136,124,138,129;136,120,138,123;177,120,192,124;192,120,198,122;198,120,199,121;78,121,79,125;223,122,226,124;224,121,225,122;236,122,240,124;237,121,240,122;222,140,250,206;227,128,250,140;248,124,250,128;249,121,250,124;50,133,62,145;58,125,62,130;59,122,60,125;61,122,62,123;135,122,136,125;151,122,152,127;192,122,193,123;222,122,223,123;228,122,229,124;227,122,228,123;231,122,236,123;240,122,241,123;20,123,21,124;57,123,58,126;137,123,138,124;220,123,221,125;21,124,22,126;85,124,86,129;177,124,186,127;186,124,190,125;221,124,222,125;238,124,240,125;241,124,242,125;65,125,67,126;186,125,187,126;229,125,230,126;20,126,21,129;64,126,65,128;63,126,64,127;65,126,66,127;239,126,247,128;57,127,58,128;66,127,67,128;77,129,80,134;78,127,80,129;81,127,82,128;83,127,85,130;135,127,136,131;177,127,182,130;182,127,184,128;197,131,208,141;203,128,206,131;204,127,206,128;228,127,239,128;62,136,72,146;62,131,64,135;63,128,64,131;62,128,63,129;76,128,77,133;182,128,183,129;197,128,200,131;200,129,203,131;201,128,202,129;225,128,227,130;224,128,225,129;23,129,25,130;66,129,67,130;80,129,81,130;137,129,140,134;141,129,148,134;151,129,152,130;157,129,158,138;189,131,197,139;194,129,197,131;57,130,58,131;59,130,62,133;64,130,65,132;70,130,71,131;81,130,84,131;85,133,87,143;86,130,87,133;156,130,157,131;177,130,181,131;191,130,194,131;206,130,207,131;22,132,26,138;22,131,25,132;37,131,49,146;29,133,37,143;30,131,37,133;49,131,57,133;64,133,67,136;65,131,66,133;67,131,68,132;80,131,81,135;140,131,141,134;149,131,151,135;177,131,178,132;208,131,209,133;26,132,28,136;" $sPixelRect &= "28,132,29,134;57,132,58,133;67,134,69,136;68,132,69,134;70,132,71,133;82,132,83,133;182,139,195,147;184,133,189,139;188,132,189,133;226,132,227,133;49,133,50,141;69,133,70,134;75,133,76,134;81,133,82,135;136,133,137,134;168,133,175,135;175,133,176,134;69,135,72,136;70,134,71,135;78,134,80,135;145,134,148,137;148,134,149,135;181,135,184,139;182,134,184,135;208,134,209,136;63,135,64,136;148,136,151,137;150,135,151,136;168,135,171,137;171,135,173,136;26,136,27,137;26,138,29,143;27,137,29,138;28,136,29,137;82,136,83,137;166,143,182,146;178,137,181,141;179,136,181,137;72,137,73,146;76,137,77,138;80,137,81,138;84,137,85,143;145,137,146,138;147,137,148,138;168,137,169,138;22,138,24,140;24,138,25,139;146,138,147,139;174,139,178,140;177,138,178,139;216,138,217,140;215,138,216,139;24,140,26,144;25,139,26,140;137,147,146,157;145,139,146,147;147,139,148,140;149,139,150,140;158,139,165,141;165,139,167,140;180,141,182,143;181,139,182,141;195,139,196,144;146,140,147,141;171,140,177,143;196,155,222,206;216,144,222,155;218,141,222,144;218,140,220,141;18,143,21,146;19,141,20,143;21,142,24,145;22,141,24,142;73,141,76,144;125,141,133,157;148,141,150,144;147,141,148,142;150,141,151,142;159,141,162,143;158,141,159,142;162,141,163,142;166,141,167,143;168,141,171,143;177,141,179,142;201,141,207,144;198,141,201,143;13,142,18,143;20,142,21,143;133,142,134,152;146,142,147,143;164,146,176,159;163,143,165,146;164,142,165,143;167,142,168,143;196,142,197,143;217,142,218,144;13,143,15,144;26,143,27,144;28,143,34,144;36,143,37,145;49,143,50,147;147,143,148,144;150,143,151,144;160,143,162,144;215,143,216,144;13,144,14,145;17,144,18,146;16,144,17,145;24,144,25,145;73,144,75,146;79,144,80,145;71,148,83,179;81,145,83,148;82,144,83,145;146,144,147,146;149,144,150,145;158,144,159,146;165,144,166,146;196,144,197,145;204,144,207,146;203,144,204,145;0,145,8,148;8,145,12,146;50,145,51,146;52,145,62,146;75,145,77,146;159,145,160,146;161,146,164,152;162,145,163,146;213,148,216,155;214,145,216,148;" $sPixelRect &= "8,146,9,147;18,146,20,147;37,146,46,149;47,146,48,148;46,146,47,147;51,146,53,147;59,146,65,148;66,146,67,148;65,146,66,147;67,146,68,147;78,146,81,148;176,150,181,154;176,146,181,149;203,147,205,153;204,146,205,147;206,146,207,147;48,147,49,150;50,147,51,149;70,147,71,151;72,147,78,148;135,148,137,153;135,147,136,148;159,147,161,148;181,147,182,149;189,147,193,151;187,147,189,149;185,147,187,148;193,147,194,148;199,147,200,148;201,147,202,148;0,148,3,150;3,148,4,149;46,150,48,153;45,149,47,150;46,148,47,149;63,148,64,149;146,150,148,154;146,148,147,150;159,148,160,149;39,149,42,150;49,149,50,151;51,149,52,150;157,154,164,159;159,150,161,154;160,149,161,150;176,149,179,150;180,149,181,150;190,151,203,153;193,149,194,151;195,149,202,151;0,150,1,151;44,150,45,151;148,150,150,151;194,150,195,151;211,151,213,155;212,150,213,151;148,151,149,152;158,151,159,152;44,152,46,153;50,152,51,153;149,152,151,153;161,152,162,154;208,152,211,155;46,153,47,154;134,153,136,154;146,155,150,157;148,153,149,155;158,153,159,154;162,153,164,154;193,153,194,154;203,153,204,154;206,153,208,155;47,154,48,155;134,154,135,156;146,154,147,155;150,154,151,156;149,154,150,155;151,154,152,155;176,154,179,156;179,154,180,155;177,165,196,206;185,156,196,165;186,155,195,156;192,154,193,155;201,154,202,155;205,154,206,155;45,155,46,157;135,155,137,156;152,155,153,156;66,163,71,179;69,158,71,163;70,156,71,158;135,156,136,157;154,161,159,166;155,158,157,160;156,156,157,158;176,156,178,157;125,157,130,167;130,157,132,159;129,171,136,199;133,163,136,171;134,157,135,163;133,157,134,159;151,157,152,158;176,157,177,158;182,159,185,165;183,158,185,159;184,157,185,158;135,158,136,159;130,159,131,165;151,159,152,160;159,159,163,163;157,159,159,161;163,160,167,163;164,159,165,160;169,161,173,162;170,159,174,161;167,159,169,161;166,159,167,160;169,159,170,160;68,160,69,163;156,160,157,161;180,161,182,165;181,160,182,161;133,161,134,162;135,161,136,163;151,163,154,172;152,161,153,163;151,161,152,162;" $sPixelRect &= "67,162,68,163;132,162,133,163;167,162,170,164;170,162,171,163;159,163,160,165;160,164,165,165;163,163,164,164;178,164,180,165;179,163,180,164;0,172,14,201;0,164,2,172;131,165,133,166;132,164,133,165;167,164,169,165;160,165,162,167;165,165,168,166;130,167,133,171;131,166,132,167;154,166,157,170;158,166,160,167;125,167,129,171;157,167,159,168;162,167,163,168;167,178,177,206;173,170,177,178;175,168,177,170;176,167,177,168;2,168,3,169;159,168,162,169;158,169,160,172;157,169,158,170;161,169,163,170;174,169,175,170;2,170,4,172;6,170,8,172;154,170,156,171;160,170,162,171;4,171,6,172;8,171,10,172;125,171,128,174;159,172,161,173;160,171,161,172;14,177,28,197;14,173,17,177;15,172,17,173;151,172,153,174;170,174,173,178;171,173,173,174;172,172,173,173;17,174,19,177;19,175,21,177;24,175,25,177;23,175,24,176;29,175,30,178;120,181,129,206;127,177,129,181;128,175,129,177;151,176,154,179;151,175,152,176;168,176,170,178;169,175,170,176;21,176,22,177;93,176,111,186;91,176,93,184;111,176,120,180;120,176,122,178;123,176,124,177;28,177,29,178;30,178,32,179;31,177,32,178;122,177,123,178;120,178,121,179;125,178,127,181;28,183,39,200;28,179,31,183;81,179,82,181;79,179,81,180;82,179,83,180;136,179,149,181;160,187,167,206;164,181,167,187;165,180,167,181;166,179,167,180;31,180,34,183;111,180,116,182;116,180,118,181;123,180,125,181;149,180,152,181;34,182,38,183;35,181,36,182;88,181,91,183;85,181,88,182;117,182,120,183;119,181,120,182;136,182,144,191;136,181,142,182;144,182,147,188;143,181,146,182;147,182,150,185;148,181,149,182;111,182,115,183;150,182,151,183;89,183,91,184;111,183,113,184;110,188,120,206;114,184,120,188;116,183,118,184;162,184,164,187;163,183,164,184;39,187,49,206;39,184,41,187;92,184,93,185;111,184,112,185;151,184,152,185;42,185,43,186;111,186,114,188;113,185,114,186;147,185,149,186;161,185,162,187;41,186,42,187;43,186,44,187;45,186,46,187;98,186,105,189;95,186,98,187;107,186,108,188;105,186,107,187;108,186,109,187;147,186,148,187;149,186,150,187;97,187,98,188;105,187,106,188;" $sPixelRect &= "49,191,55,206;49,188,51,191;71,188,72,189;103,192,110,206;106,190,110,192;108,188,109,190;144,188,146,189;155,192,160,206;158,189,160,192;159,188,160,189;51,189,52,191;70,189,71,190;70,191,83,206;73,190,81,191;77,189,78,190;80,189,81,190;100,189,103,190;109,189,110,190;144,189,145,190;52,190,53,191;69,190,70,191;71,190,72,191;156,191,158,192;157,190,158,191;105,191,106,192;136,191,141,194;141,191,143,192;55,194,66,206;56,192,58,194;66,196,70,206;67,193,70,196;68,192,70,193;83,194,103,206;83,192,86,194;55,193,56,194;58,193,59,194;66,193,67,195;65,193,66,194;86,193,88,194;101,193,103,194;136,194,139,196;151,197,155,206;153,195,155,197;154,194,155,195;136,196,138,197;152,196,153,197;14,197,17,201;18,197,19,202;17,197,18,198;22,197,28,199;20,197,22,198;136,197,137,199;138,197,139,198;137,198,138,199;148,200,151,206;149,199,151,200;150,198,151,199;26,199,28,200;129,199,134,202;134,199,135,200;17,200,18,202;21,201,32,206;22,200,27,201;33,200,39,204;29,200,33,201;0,201,13,202;14,201,16,202;32,201,33,202;147,201,148,206;0,202,6,203;11,202,14,203;19,204,21,206;20,202,21,204;129,202,131,206;131,202,132,204;1,203,2,204;4,203,5,204;7,203,8,204;32,203,33,206;0,204,1,206;1,205,19,206;6,204,7,205;37,204,39,206;33,205,37,206;131,205,147,206" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates0() Func _PixelCoordinates1() #region pixel coordinates Local $sPixelRect $sPixelRect &= "40,250x206;0,0,165,37;177,0,250,126;165,0,177,30;165,30,168,34;168,30,169,32;172,50,177,66;172,30,177,46;169,33,170,34;170,35,172,39;171,33,172,35;165,34,167,35;165,35,166,36;167,36,168,37;61,37,128,48;16,61,43,111;20,44,38,56;0,37,32,41;36,37,61,40;32,37,35,39;35,37,36,38;128,40,131,46;128,37,130,40;144,37,161,44;136,37,144,42;131,37,136,39;161,37,165,39;166,37,167,38;169,37,170,38;32,39,34,40;135,39,136,40;161,39,163,41;35,40,36,41;38,40,42,41;50,40,61,43;47,40,50,42;46,40,47,41;1,57,16,96;14,46,20,57;0,41,17,46;23,41,26,44;17,41,21,43;21,41,23,42;26,41,31,42;30,42,47,44;33,41,34,42;38,41,39,42;133,41,136,43;161,41,162,43;131,43,133,46;131,42,132,43;139,42,144,43;171,42,172,43;17,43,20,44;22,43,23,44;27,43,30,44;38,45,55,53;47,43,50,45;56,43,61,45;53,43,56,44;136,43,138,45;134,43,136,44;19,44,20,45;38,44,47,45;50,44,52,45;133,45,135,47;133,44,134,45;137,48,144,53;138,44,142,47;151,44,160,55;148,44,151,46;146,44,148,45;160,44,161,49;164,71,170,77;162,56,167,63;163,46,166,56;164,44,167,46;18,45,19,46;59,45,61,47;135,45,136,46;142,45,145,47;166,46,169,49;167,45,168,46;3,46,8,50;0,46,2,53;2,46,3,48;8,46,12,47;13,46,14,48;55,48,60,56;55,46,57,48;128,46,130,47;135,47,138,48;137,46,138,47;145,47,148,51;145,46,146,47;147,46,148,47;150,46,151,50;149,46,150,47;173,46,177,50;8,47,10,48;57,47,59,48;130,47,134,48;140,47,142,48;143,47,145,48;170,47,171,49;169,47,170,48;8,48,9,49;10,48,12,49;80,97,123,167;80,48,109,90;68,48,80,58;63,48,68,51;109,51,128,69;109,48,125,51;125,48,127,49;130,48,132,49;134,48,136,49;147,52,151,57;148,49,150,52;148,48,149,49;9,50,14,57;12,49,14,50;60,51,64,57;60,49,62,51;125,49,126,50;126,50,129,51;127,49,128,50;128,53,132,70;129,51,131,53;130,49,131,51;129,49,130,50;132,49,133,54;134,50,137,54;136,49,137,50;171,49,172,50;2,50,4,51;5,50,8,51;62,50,63,51;131,50,132,51;166,50,168,54;169,50,171,52;4,51,6,52;7,52,9,57;8,51,9,52;67,51,68,55;66,51,67,52;133,51,134,52;146,51,148,52;162,51,163,56;4,52,5,53;128,52,129,53;144,52,145,53;146,52,147,53;" $sPixelRect &= "168,52,170,53;170,53,172,60;171,52,172,53;0,53,1,54;38,53,41,55;42,53,45,54;47,53,55,55;46,53,47,54;64,55,67,59;64,53,65,55;133,53,134,56;137,53,138,55;142,53,144,54;1,54,2,55;5,54,7,57;41,54,42,55;134,54,135,55;138,54,139,55;134,64,149,74;139,57,142,64;140,55,142,57;141,54,142,55;2,55,3,57;53,55,55,57;51,55,53,56;132,55,133,57;136,55,137,56;154,55,160,59;152,55,154,57;169,55,170,58;3,56,5,57;20,56,37,61;38,56,39,57;57,56,60,58;67,56,68,61;135,58,139,63;134,57,136,58;135,56,136,57;142,56,143,59;16,57,20,61;37,58,40,61;37,57,38,58;54,57,55,58;56,57,57,58;62,57,64,59;61,57,62,58;147,57,150,61;153,57,154,58;165,63,168,71;167,57,168,63;0,58,1,113;68,58,69,62;72,58,80,67;71,58,72,65;70,58,71,61;142,60,145,64;143,58,144,60;156,59,162,60;161,58,162,59;40,59,42,61;65,59,67,60;132,61,134,72;133,59,134,61;146,59,147,60;150,60,154,65;151,59,153,60;69,60,70,64;134,60,135,64;158,60,161,61;171,60,172,64;145,61,146,64;149,61,150,64;148,61,149,62;154,62,157,67;154,61,156,62;160,61,161,62;43,62,44,65;146,62,147,64;44,63,45,64;70,63,71,65;147,63,148,64;157,65,159,69;158,63,159,65;164,63,165,65;163,63,164,64;43,70,48,81;43,66,45,70;44,65,45,66;145,74,163,83;149,66,152,74;149,65,150,66;152,68,155,74;153,65,154,68;152,65,153,66;159,66,164,71;161,65,162,66;168,66,169,67;174,66,177,73;173,66,174,70;45,67,46,70;77,67,78,71;75,67,77,69;78,71,80,72;79,67,80,71;78,67,79,69;152,67,153,68;155,69,157,74;156,67,157,69;155,67,156,68;164,67,165,71;46,68,47,70;53,70,63,73;52,69,54,70;56,69,59,70;111,79,124,90;114,73,117,76;109,69,116,72;116,69,122,70;123,69,128,70;158,69,159,70;169,69,170,70;48,70,50,72;51,70,53,71;116,70,117,71;120,70,122,71;127,70,128,72;126,70,127,71;129,70,132,71;157,71,159,74;157,70,158,71;168,70,169,71;50,71,51,72;63,72,66,74;63,71,65,72;76,72,78,76;76,71,77,72;117,71,120,74;120,71,121,72;131,71,132,72;161,71,164,73;160,71,161,72;48,73,50,77;48,72,49,73;50,73,55,74;52,72,53,73;79,72,80,76;109,72,113,74;113,72,114,73;115,72,117,73;129,72,130,73;133,72,134,73;159,72,160,74;" $sPixelRect &= "170,72,171,73;61,73,63,74;160,73,161,74;163,73,164,76;162,73,163,74;176,73,177,83;175,73,176,76;50,74,53,75;64,74,66,75;74,75,76,77;75,74,76,75;109,74,111,76;111,74,112,75;112,75,114,79;113,74,114,75;117,74,118,75;123,74,125,75;127,74,128,75;139,74,145,77;136,74,139,75;165,77,172,97;170,74,171,77;78,75,79,77;123,75,124,76;129,75,130,77;128,75,129,76;131,75,132,77;132,76,134,78;133,75,134,76;138,75,139,76;109,76,110,81;114,76,116,79;122,76,123,79;126,76,128,77;135,76,136,80;48,77,49,79;111,77,112,79;125,78,127,79;126,77,127,78;134,77,135,78;137,77,139,80;140,77,145,79;117,78,122,79;172,78,173,84;136,79,137,81;138,80,141,82;139,79,140,80;143,79,145,81;142,79,143,80;173,79,174,80;54,80,55,81;57,81,62,84;58,80,60,81;65,84,69,87;66,81,68,84;66,80,67,81;110,80,111,89;124,83,129,92;124,80,125,83;141,80,142,81;164,80,165,81;43,81,46,88;46,81,47,84;52,84,55,85;53,81,54,84;55,81,57,82;79,81,80,83;125,81,126,83;144,81,145,82;173,81,174,82;47,82,48,83;54,82,56,84;62,82,63,83;75,82,78,85;74,82,75,84;127,82,128,83;140,82,143,84;164,82,165,83;51,83,52,84;56,83,57,84;78,83,79,84;109,83,110,84;148,83,157,91;146,83,148,90;157,83,162,88;162,83,163,87;61,84,63,85;123,99,133,106;129,87,137,98;129,84,130,87;51,85,54,86;69,85,70,87;71,85,72,86;73,85,74,86;76,85,77,86;79,85,80,86;139,85,140,86;172,85,173,86;53,86,54,87;63,88,68,89;64,86,65,88;130,86,132,87;138,87,144,91;140,86,145,87;160,93,165,108;164,86,165,93;44,88,47,89;46,87,47,88;65,87,68,88;79,87,80,91;109,87,110,88;137,87,138,89;144,87,145,88;172,87,173,90;61,88,62,90;145,88,146,89;157,88,161,89;43,92,45,99;43,89,44,92;47,89,48,90;50,89,52,90;64,89,67,91;157,89,159,90;82,90,111,97;116,90,124,95;114,90,116,94;113,90,114,93;112,90,113,91;137,90,138,98;163,90,164,93;173,90,175,92;48,91,49,92;65,91,66,92;69,92,72,94;70,91,71,92;80,92,82,97;80,91,81,92;139,91,141,95;138,91,139,93;141,91,143,92;150,91,154,94;149,91,150,93;148,91,149,92;154,91,156,92;172,92,174,94;172,91,173,92;45,92,46,93;111,93,113,97;111,92,112,93;124,93,129,97;" $sPixelRect &= "124,92,125,93;126,92,129,93;154,92,155,93;161,92,163,93;176,92,177,93;72,93,73,94;67,95,70,99;68,94,70,95;113,94,115,97;138,94,139,98;151,94,153,95;155,100,160,110;158,95,160,100;159,94,160,95;172,94,173,96;167,106,177,138;175,96,177,106;176,94,177,96;45,95,46,98;115,95,117,97;121,95,124,97;118,95,121,96;139,96,142,97;140,95,141,96;1,98,13,116;1,96,9,98;13,96,14,104;10,96,13,98;15,96,16,102;14,96,15,98;117,96,119,97;47,97,48,98;66,97,67,99;126,97,129,98;139,97,140,98;142,97,143,98;165,97,171,103;123,98,127,99;128,98,131,99;133,98,135,101;135,98,136,100;157,98,158,100;172,98,173,99;43,99,44,102;45,99,46,100;67,99,69,102;71,99,74,101;171,99,172,100;14,100,15,102;69,100,70,101;73,101,75,102;74,100,75,101;173,102,175,106;174,100,175,102;71,101,72,102;134,101,135,102;151,102,155,109;154,101,155,102;44,102,45,103;68,102,69,103;73,102,74,103;133,102,134,103;70,104,74,109;72,103,73,104;79,103,80,108;165,103,168,105;168,103,169,104;171,103,173,106;67,104,70,105;75,105,77,109;74,104,76,105;140,109,152,116;148,105,151,109;149,104,151,105;168,105,171,106;170,104,171,105;13,105,14,106;6,116,41,129;13,107,16,116;15,105,16,107;74,105,75,106;165,105,167,106;43,106,44,108;67,109,71,112;67,106,70,108;123,106,130,118;130,106,132,110;145,106,148,109;165,106,166,107;74,107,75,108;77,107,78,108;143,108,145,109;144,107,145,108;68,108,70,109;160,108,163,111;163,108,164,109;156,117,167,144;164,110,167,117;165,109,167,110;166,108,167,109;43,109,44,110;71,109,72,110;73,109,74,110;135,111,140,116;136,109,139,111;153,109,155,110;64,112,69,115;65,111,67,112;66,110,67,111;72,110,73,111;130,110,131,116;139,110,140,111;152,110,154,117;156,110,160,113;25,111,42,116;16,111,22,115;22,111,25,113;71,111,72,112;71,113,77,115;75,111,76,113;154,113,157,115;155,111,156,113;160,111,161,112;161,112,164,117;163,111,164,112;77,112,78,114;76,112,77,113;22,113,24,114;42,113,43,115;70,144,80,189;75,121,80,144;78,115,80,121;79,113,80,115;157,113,159,114;159,114,161,117;160,113,161,114;67,118,73,127;69,115,75,118;" $sPixelRect &= "70,114,71,115;16,115,20,116;24,115,25,116;64,115,68,116;75,115,76,117;154,115,156,116;157,116,159,117;158,115,159,116;2,116,6,125;41,118,44,123;41,116,43,118;62,116,63,117;129,148,140,162;135,119,142,143;134,116,138,118;142,116,145,118;140,116,141,119;139,116,140,117;141,116,142,117;145,116,149,117;151,116,152,117;154,116,155,117;0,117,1,118;44,117,45,119;65,117,67,118;68,117,69,118;76,119,78,121;77,117,78,119;146,117,147,118;64,118,65,120;73,118,74,121;123,118,127,141;127,118,129,121;134,118,137,119;138,118,140,119;142,118,143,120;141,118,142,119;145,118,146,119;152,121,156,142;154,119,156,121;155,118,156,119;0,127,3,139;0,119,1,127;65,121,67,125;66,119,67,121;131,122,135,133;133,119,135,122;143,119,144,122;44,120,45,122;132,120,133,122;153,120,154,121;47,121,48,122;127,121,128,124;142,123,146,136;142,121,143,123;144,122,146,123;1,123,2,127;41,126,47,127;41,123,43,125;129,124,131,125;130,123,131,124;146,123,147,131;43,124,47,126;48,124,49,125;51,124,52,125;151,124,152,133;3,125,6,127;42,125,43,126;66,125,67,128;130,125,131,126;49,126,52,127;64,126,65,128;177,126,193,130;193,126,200,128;200,126,204,127;223,126,225,127;227,126,250,127;4,127,6,128;35,136,55,147;44,127,47,136;42,127,44,129;47,127,48,129;48,128,50,132;49,127,50,128;68,127,69,129;67,127,68,128;70,129,73,131;71,127,73,129;70,127,71,128;129,137,135,148;129,128,131,133;130,127,131,128;246,127,250,128;3,129,5,138;3,128,4,129;62,130,67,133;62,129,64,130;63,128,64,129;65,128,66,130;193,128,197,129;5,130,9,134;5,129,7,130;19,129,31,145;10,132,19,142;11,129,19,132;31,129,42,136;51,129,53,130;67,129,68,131;66,129,67,130;9,130,10,133;43,130,44,132;42,130,43,131;50,130,51,131;56,130,57,131;72,135,75,144;74,130,75,135;177,130,187,133;187,130,191,131;226,131,229,133;228,130,229,131;230,130,231,132;241,131,246,133;242,130,243,131;47,132,49,136;47,131,48,132;52,131,53,133;51,131,52,132;70,131,71,133;68,131,70,132;71,131,72,132;187,131,189,132;222,131,223,132;225,131,226,132;232,131,233,133;235,131,240,132;" $sPixelRect &= "42,132,43,135;49,133,52,136;50,132,51,133;54,132,55,134;53,132,54,133;64,133,68,136;67,132,68,133;128,132,129,135;146,132,147,133;223,132,224,134;240,132,241,133;43,133,44,136;55,133,56,136;61,133,62,135;63,133,64,135;68,134,70,135;69,133,70,134;73,133,74,135;130,133,134,137;177,133,182,135;182,133,184,134;224,133,225,134;228,133,229,134;243,133,245,135;242,133,243,134;246,133,247,134;5,134,7,136;7,134,8,135;6,137,10,143;8,135,10,137;9,134,10,135;129,134,130,136;151,134,152,135;52,135,53,136;54,135,55,136;55,137,58,141;57,135,58,137;56,135,57,136;68,135,69,136;134,135,135,137;177,135,180,137;180,135,181,136;205,135,207,136;5,136,6,137;7,136,8,137;31,136,35,142;66,136,68,137;142,137,146,140;143,136,145,137;189,138,207,147;193,137,207,138;195,136,196,137;197,136,198,137;199,136,203,137;204,136,206,137;220,151,250,206;230,137,250,151;242,136,244,137;245,136,248,137;71,137,72,144;177,137,179,138;228,137,230,139;227,137,228,138;1,140,6,143;3,138,4,140;4,139,6,140;5,138,6,139;68,138,70,139;128,138,129,153;167,138,174,141;174,138,176,139;221,138,222,139;0,139,1,140;62,139,63,140;67,139,69,140;174,139,175,140;183,147,194,157;180,141,189,147;186,140,189,141;188,139,189,140;207,144,209,150;207,140,210,142;207,139,208,140;229,139,230,140;55,142,60,148;58,140,59,142;145,140,146,141;0,141,1,145;55,141,57,142;123,141,126,156;144,141,145,142;167,141,170,143;170,141,172,142;12,142,15,144;10,142,12,143;15,142,18,143;31,143,35,146;33,142,35,143;142,142,144,143;153,144,158,149;153,142,156,144;177,147,183,152;177,143,180,147;178,142,180,143;207,142,208,144;229,142,230,144;1,143,5,144;9,143,10,144;18,145,28,149;18,143,19,145;17,143,18,144;60,143,61,146;135,143,139,147;140,143,142,144;152,143,153,144;209,143,210,144;1,144,2,145;61,144,62,146;139,144,141,147;158,144,163,147;163,144,165,145;175,144,177,150;29,146,31,149;28,145,30,146;141,145,142,146;143,145,144,146;163,145,164,146;28,146,29,147;31,146,32,147;62,147,65,148;64,146,65,147;55,150,70,185;66,148,70,150;69,146,70,148;" $sPixelRect &= "127,146,128,148;126,146,127,147;141,147,144,148;142,146,143,147;172,146,175,148;34,147,36,148;40,147,41,148;43,147,51,150;42,147,43,149;51,147,55,148;60,147,61,148;67,147,68,148;135,147,138,148;152,147,153,148;158,147,161,148;161,151,176,165;167,147,172,151;194,147,195,151;197,147,207,152;196,147,197,150;31,148,34,150;51,148,53,149;141,148,142,151;140,148,141,149;142,149,145,150;143,148,144,149;161,149,167,151;164,148,165,149;166,148,167,149;172,148,174,149;217,148,218,150;21,149,23,151;19,149,21,150;23,149,26,150;27,152,30,154;27,149,29,151;30,149,31,151;57,149,58,150;61,149,66,150;155,149,157,151;154,149,155,150;172,149,173,151;174,149,175,150;227,150,230,151;229,149,230,150;26,150,27,152;31,150,32,153;33,150,34,151;43,150,44,151;47,150,48,151;54,150,55,151;127,150,128,152;140,150,141,151;143,150,145,151;152,150,153,151;158,152,161,160;159,150,161,152;173,150,174,151;195,150,196,152;207,150,208,151;219,150,220,151;28,151,29,152;32,151,33,153;153,151,154,153;176,152,178,158;176,151,177,152;154,152,155,153;180,152,183,156;178,153,180,155;179,152,180,153;194,152,195,153;201,152,207,154;200,152,201,153;204,165,220,206;214,156,220,165;218,154,220,156;219,152,220,154;26,153,27,154;127,154,129,160;127,153,128,154;156,153,158,154;195,153,196,154;216,153,217,155;28,154,29,156;27,154,28,155;32,154,33,155;142,154,144,155;155,154,157,155;204,154,207,156;203,154,204,155;154,155,156,156;153,157,158,161;156,156,158,157;157,155,158,156;178,155,179,158;217,155,218,156;123,156,125,160;153,156,155,157;203,157,205,158;204,156,205,157;206,156,207,157;140,157,142,159;142,157,143,158;187,157,192,161;184,157,186,159;186,157,187,158;198,157,199,158;201,157,202,158;27,158,28,159;126,158,127,161;176,159,178,163;177,158,178,159;201,160,204,164;203,158,204,160;29,159,30,160;49,167,55,184;53,161,55,167;54,159,55,161;140,159,141,162;143,159,144,160;188,161,201,163;192,159,193,161;194,159,198,161;200,159,202,160;204,159,205,160;213,159,214,165;123,160,124,164;126,170,146,184;128,163,144,170;" $sPixelRect &= "141,160,143,163;149,166,159,173;151,162,161,166;152,160,153,162;160,160,161,161;193,160,194,161;198,160,201,161;125,161,126,164;126,162,139,163;128,161,129,162;143,161,144,163;146,161,147,162;153,161,157,162;158,161,160,162;212,161,213,162;144,162,146,163;204,162,205,164;208,163,213,165;211,162,212,163;51,165,53,167;52,163,53,165;126,163,127,164;144,163,145,164;176,163,177,164;190,163,192,164;193,163,194,164;124,164,125,165;127,164,128,165;206,164,208,165;125,165,127,168;144,165,145,168;150,165,151,166;164,165,170,170;159,166,164,169;161,165,164,166;170,165,174,167;174,165,175,166;173,174,204,206;180,167,204,174;183,165,185,167;186,165,192,167;198,165,202,167;50,166,51,167;124,166,125,168;127,166,128,167;182,166,183,167;185,166,186,167;192,166,198,167;202,166,204,167;80,167,111,187;111,167,119,179;119,167,122,171;170,167,172,169;172,167,173,168;125,168,126,170;126,169,128,170;127,168,128,169;178,170,180,174;179,168,180,170;159,171,166,173;160,169,162,171;159,169,160,170;117,184,135,201;121,173,126,184;124,170,125,173;146,173,152,178;147,170,149,173;166,170,167,172;163,170,166,171;167,170,169,171;119,171,121,173;122,171,123,173;125,171,126,173;176,171,178,174;123,172,124,173;146,172,147,173;119,173,120,176;152,173,154,174;154,174,160,175;155,173,156,174;160,173,161,174;162,173,164,175;175,173,176,174;152,174,153,176;10,175,11,176;154,175,155,177;153,175,154,176;158,175,163,176;120,176,121,184;156,176,157,178;155,176,156,177;165,184,173,206;170,179,173,184;172,176,173,179;151,179,156,181;152,177,153,179;157,177,158,178;1,179,4,180;3,178,4,179;8,178,9,179;146,178,151,180;153,178,155,179;171,178,172,179;7,179,8,180;111,179,117,183;117,179,118,181;0,183,11,204;0,180,3,183;3,181,6,183;4,180,5,181;6,180,7,181;9,180,10,183;146,180,148,181;168,181,170,184;169,180,170,181;119,181,120,184;146,181,147,182;152,181,155,183;7,182,9,183;48,182,49,183;147,182,148,183;166,183,168,184;167,182,168,183;111,183,114,185;118,183,119,184;11,188,20,206;11,185,16,188;11,184,12,185;" $sPixelRect &= "54,184,55,185;138,184,141,192;135,184,138,191;141,185,144,189;141,184,142,185;143,184,144,185;65,185,70,187;61,185,65,186;111,185,112,186;149,185,150,186;16,186,17,188;108,192,117,206;114,187,117,192;116,186,117,187;144,186,146,189;159,191,165,206;163,186,165,191;17,187,18,188;67,187,70,188;80,187,99,194;99,187,106,190;106,187,109,188;20,188,21,189;69,188,70,189;106,188,107,189;161,189,163,191;162,188,163,189;74,189,80,191;71,189,74,190;112,189,114,191;143,189,144,190;20,192,27,206;20,190,22,192;22,190,23,191;99,190,102,192;103,190,104,191;106,190,112,192;141,190,142,192;160,190,161,191;23,191,24,192;25,191,26,192;77,191,80,193;75,191,77,192;100,194,108,206;104,192,108,193;105,191,106,192;112,191,113,192;142,191,144,192;99,192,100,193;135,193,139,199;135,192,137,193;138,192,139,193;139,193,142,196;140,192,141,193;27,196,34,206;27,193,31,196;79,193,80,194;102,193,103,194;104,193,106,194;155,195,159,206;157,193,159,195;31,194,32,196;85,194,92,198;82,194,85,196;81,194,82,195;94,194,96,196;92,194,94,195;96,194,97,195;156,194,157,195;92,195,93,197;95,198,100,206;98,195,100,198;142,195,144,196;60,196,61,197;83,196,85,197;96,196,97,197;139,196,140,197;141,196,142,197;34,199,39,206;34,197,35,199;49,197,50,198;51,197,52,198;50,199,67,206;55,197,60,199;62,197,64,199;64,197,65,198;95,197,96,198;97,197,98,198;152,199,155,206;153,198,155,199;154,197,155,198;37,198,38,199;52,198,54,199;60,198,62,199;65,198,66,199;85,198,86,199;87,198,88,199;139,198,140,199;91,200,95,206;92,199,95,200;135,199,137,200;39,201,50,206;39,200,40,201;43,200,44,201;47,200,50,201;67,201,72,206;67,200,70,201;135,200,136,201;149,202,152,206;150,201,152,202;151,200,152,201;88,202,91,206;89,201,91,202;117,201,130,206;130,201,133,203;134,201,135,202;72,202,75,206;75,203,88,206;85,202,86,203;133,202,134,203;130,203,131,204;147,204,149,206;148,203,149,204;2,204,11,206;0,205,2,206;130,205,147,206" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates1() Func _PixelCoordinates2() #region pixel coordinates Local $sPixelRect $sPixelRect &= "40,250x206;37,0,170,32;0,0,37,27;178,0,250,134;170,0,178,27;0,27,19,31;19,27,23,29;23,27,25,28;26,27,37,29;170,27,172,28;174,50,178,69;175,27,178,45;24,29,26,30;25,28,26,29;170,28,171,30;19,29,22,30;28,29,31,31;35,29,37,31;33,29,35,30;172,29,173,31;0,50,30,99;9,32,30,46;23,30,24,32;30,32,37,44;30,31,33,32;31,30,32,31;0,31,6,33;6,31,9,32;13,31,14,32;19,31,21,32;24,31,26,32;173,32,175,36;174,31,175,32;8,32,9,33;70,94,109,185;72,32,103,87;53,32,72,40;43,32,53,34;40,32,43,33;103,32,123,67;123,32,129,42;145,32,163,41;135,32,145,37;130,32,135,34;163,32,167,36;167,32,169,33;0,33,3,35;3,33,4,34;5,33,8,34;37,34,43,46;37,33,40,34;167,33,168,34;0,37,9,50;4,34,6,37;7,34,9,37;47,34,53,36;46,34,47,35;133,34,135,35;169,34,170,35;171,35,173,36;172,34,173,35;0,35,2,36;2,36,4,37;3,35,4,36;6,35,7,37;43,37,48,47;43,35,44,37;0,36,1,37;44,36,47,37;50,36,53,38;129,37,131,42;129,36,130,37;132,36,135,38;163,36,165,38;165,36,166,37;174,36,175,37;136,37,145,38;48,41,54,49;48,38,50,41;52,38,53,39;134,38,136,40;133,38,134,39;143,38,145,40;141,38,143,39;163,38,164,39;50,39,51,41;132,40,134,43;131,39,133,40;136,39,138,41;51,40,52,41;61,40,72,51;57,40,61,44;55,40,57,42;131,40,132,42;135,40,136,41;138,40,142,43;174,40,175,41;134,41,135,42;142,41,145,44;151,41,161,53;148,41,151,43;147,41,148,42;161,41,163,44;54,44,56,50;54,42,55,44;56,42,57,43;123,42,126,44;126,42,127,43;129,42,130,43;135,45,144,50;134,43,138,44;137,42,138,43;145,43,148,49;145,42,146,43;165,44,168,53;166,42,169,44;123,49,130,67;128,43,129,49;127,43,128,44;130,43,133,44;150,43,151,46;149,43,150,44;168,44,171,47;169,43,171,44;174,43,175,44;32,44,37,45;59,44,61,48;123,44,124,45;126,44,127,45;129,44,130,45;132,44,135,45;137,44,142,45;144,44,145,45;161,44,162,47;30,45,31,46;148,45,150,52;172,45,173,47;171,45,172,46;175,46,178,50;176,45,178,46;9,46,26,50;26,46,27,47;39,46,43,47;56,47,58,53;56,46,57,47;58,46,59,47;124,46,126,49;126,46,127,47;132,49,135,51;133,46,135,49;131,46,133,47;43,47,45,49;42,47,43,48;47,47,48,49;46,47,47,48;" $sPixelRect &= "123,47,124,49;126,48,128,49;127,47,128,48;130,47,132,49;163,54,167,62;163,50,165,53;164,47,165,50;60,48,61,50;168,49,170,52;168,48,169,49;172,48,174,49;26,49,28,50;44,49,45,50;46,49,47,50;48,49,50,50;51,49,54,50;58,50,60,54;58,49,59,50;146,52,149,59;146,49,148,52;150,49,151,54;170,49,171,50;171,50,173,51;172,49,173,50;30,62,36,72;30,53,32,61;30,50,31,53;53,50,54,51;55,50,56,51;135,50,136,52;140,50,142,51;54,51,55,52;60,51,61,56;64,51,72,61;63,51,64,59;62,51,63,55;130,51,134,52;136,51,138,52;139,53,142,57;139,51,141,53;170,51,172,52;172,52,174,62;173,51,174,52;130,52,132,53;134,52,135,53;168,52,169,53;130,53,131,54;133,53,134,54;142,53,143,55;149,53,150,63;153,53,161,57;152,53,153,55;164,53,165,54;166,53,167,54;32,54,33,57;59,54,60,55;61,54,62,58;133,55,139,60;138,54,139,55;171,54,172,59;167,57,170,61;167,55,169,57;131,56,132,59;136,63,149,76;141,58,144,63;142,56,143,58;162,56,163,61;32,58,34,62;33,57,34,58;132,57,133,60;139,57,141,58;150,58,154,62;151,57,152,58;157,57,161,59;155,57,157,58;139,58,140,59;130,61,134,71;130,59,131,61;139,60,141,63;140,59,141,60;144,60,146,63;144,59,145,60;148,59,149,62;147,59,148,60;153,62,157,66;154,59,155,62;159,59,161,60;34,60,35,62;131,60,132,61;133,60,138,61;155,60,156,62;30,61,31,62;35,61,36,62;67,61,72,64;66,61,67,63;65,61,66,62;137,61,139,63;156,61,157,62;164,80,172,92;162,67,169,75;165,62,169,65;167,61,168,62;169,61,170,62;41,65,49,67;41,62,43,64;134,62,136,74;136,62,137,63;146,62,148,63;150,62,152,64;164,62,165,64;173,62,174,66;36,64,38,71;36,63,37,64;38,63,39,65;39,64,41,65;40,63,41,64;43,63,50,65;151,64,153,65;152,63,153,64;157,65,161,69;157,64,159,65;158,63,159,64;169,63,170,64;42,64,43,65;51,64,54,68;49,65,51,66;50,64,51,65;68,64,70,65;71,64,72,75;144,76,161,90;149,66,153,76;149,64,150,66;54,66,56,69;54,65,55,66;70,65,71,69;150,65,151,66;161,66,165,67;162,65,163,66;166,65,168,67;168,66,170,67;169,65,170,66;38,66,41,68;50,66,51,67;67,68,70,71;68,66,69,68;153,69,157,76;155,66,157,68;154,66,155,67;41,67,43,68;56,67,57,69;" $sPixelRect &= "103,67,110,70;110,67,114,68;120,67,122,68;126,67,130,69;125,67,126,68;153,67,154,69;160,69,162,72;161,67,162,69;38,68,40,69;110,68,111,69;113,68,117,70;117,68,120,69;123,68,125,69;154,68,156,69;65,70,67,72;66,69,67,70;110,70,114,72;111,69,113,70;123,69,124,70;127,69,130,70;159,69,160,71;158,69,159,70;176,69,178,78;175,69,176,73;103,70,107,73;107,70,108,71;114,70,116,71;126,70,127,71;129,70,130,71;157,71,159,76;157,70,158,71;165,75,172,80;169,71,171,75;169,70,170,71;33,72,37,73;36,71,37,72;69,71,70,73;104,78,120,88;107,72,111,78;108,71,110,72;132,71,134,73;131,71,132,72;30,73,34,83;30,72,32,73;65,72,66,73;111,72,113,73;119,72,121,73;159,73,161,76;159,72,160,73;161,72,162,73;34,73,36,75;103,73,105,77;105,73,106,74;111,73,112,74;118,73,120,74;125,73,126,75;124,73,125,74;127,73,128,74;133,73,134,74;171,73,172,74;43,74,45,75;117,75,119,78;118,74,119,75;122,75,124,76;123,74,124,75;126,74,127,75;128,74,129,76;129,75,131,76;130,74,131,75;135,74,136,75;34,75,35,78;42,77,46,79;43,75,44,77;42,75,43,76;46,75,50,77;45,75,46,76;54,79,59,83;56,76,58,79;56,75,57,76;105,76,107,78;106,75,107,76;132,75,134,76;161,77,163,84;161,75,162,77;164,75,165,78;163,75,164,76;40,76,41,81;44,76,45,77;50,76,52,78;55,76,56,77;71,76,72,85;112,76,114,78;115,76,117,78;121,76,123,78;129,76,130,77;132,76,133,79;131,76,132,77;134,77,136,79;135,76,136,77;139,76,144,79;137,76,139,78;48,77,50,79;70,77,71,79;103,77,104,79;111,77,112,78;114,77,115,78;41,79,43,81;41,78,42,79;46,78,48,79;50,78,51,80;65,78,68,82;63,78,65,79;68,78,69,81;133,78,134,80;135,79,138,81;136,78,137,79;177,78,178,88;43,79,44,80;51,79,53,80;62,79,63,80;69,79,70,80;120,82,124,92;120,79,121,82;141,79,144,82;138,80,141,81;140,79,141,80;172,80,174,84;172,79,173,80;63,80,65,81;121,80,122,82;34,81,35,83;41,81,42,82;59,81,60,82;61,81,62,82;63,81,64,82;70,81,71,82;103,81,104,83;122,81,123,82;137,81,138,83;136,81,137,82;138,82,140,84;139,81,140,82;53,83,57,86;53,82,54,83;143,82,144,84;142,82,143,83;31,83,34,84;57,83,58,85;109,100,128,105;" $sPixelRect &= "124,86,129,92;124,83,125,86;140,83,142,84;30,84,32,85;35,84,36,85;38,84,39,85;50,84,51,85;69,84,70,86;125,84,126,86;138,84,139,85;161,84,162,89;172,84,173,88;30,86,32,95;30,85,31,86;49,85,50,86;126,85,128,86;136,85,137,86;142,85,143,86;162,85,163,86;35,86,37,87;52,86,53,87;54,86,56,88;59,87,61,91;59,86,60,87;70,86,72,88;129,87,142,89;133,86,134,87;137,86,140,87;32,87,33,89;61,87,62,88;73,87,102,94;72,87,73,88;143,87,144,90;70,89,73,94;70,88,71,89;102,89,105,94;102,88,104,89;109,88,120,94;107,88,109,92;105,88,107,89;56,92,60,94;57,90,59,92;58,89,59,90;61,89,62,91;128,92,136,99;129,89,133,92;136,89,140,93;133,90,136,92;135,89,136,90;140,89,141,92;142,89,143,90;62,90,63,91;146,90,153,95;145,90,146,92;144,90,145,91;153,90,157,92;157,90,159,91;158,95,170,106;162,92,171,95;163,90,164,92;172,90,174,91;167,109,178,144;176,97,178,109;177,90,178,97;32,91,34,92;105,91,106,94;172,91,173,92;32,92,33,93;106,92,107,94;108,92,109,93;120,93,128,98;121,92,125,93;126,92,128,93;153,92,155,93;173,93,175,95;174,92,175,93;136,93,138,94;153,93,154,94;160,94,162,95;161,93,162,94;170,95,173,98;171,93,172,95;56,94,58,100;58,94,59,97;109,97,117,100;113,94,120,96;111,94,113,95;136,94,137,96;172,94,173,95;55,95,56,97;109,95,112,97;137,95,138,96;149,95,151,97;148,95,149,96;151,95,152,96;173,95,174,97;60,97,65,99;61,96,64,97;112,96,114,97;115,96,120,97;152,103,158,110;156,98,158,103;157,96,158,98;117,98,120,100;119,97,120,98;136,97,138,98;124,98,126,100;122,98,124,99;126,98,127,99;170,98,172,100;0,112,25,140;9,99,28,112;0,99,8,110;8,99,9,108;28,102,30,104;28,99,29,102;60,99,61,100;62,99,64,100;120,99,123,100;129,99,130,105;127,99,129,100;130,99,132,101;174,103,176,109;175,99,176,103;29,100,30,101;68,104,70,106;69,100,70,104;170,100,171,101;55,101,58,102;59,102,65,106;60,101,63,102;130,101,131,102;154,102,156,103;155,101,156,102;58,102,59,103;170,102,171,104;56,103,57,106;65,103,66,107;28,104,29,108;57,106,60,110;57,104,59,106;147,106,152,112;148,105,152,106;151,104,152,105;55,105,56,106;" $sPixelRect &= "66,105,67,107;109,105,121,130;121,105,126,117;126,105,127,112;171,106,174,109;173,105,174,106;60,106,62,107;64,106,65,108;67,106,68,107;69,106,70,109;158,106,165,110;165,106,168,108;168,106,169,107;54,108,57,114;55,107,57,108;62,107,63,108;131,112,149,119;142,108,147,112;145,107,147,108;169,108,171,109;170,107,171,108;61,108,62,109;165,108,167,109;53,109,54,110;139,110,142,112;141,109,142,110;0,110,6,111;7,111,9,112;8,110,9,111;28,110,29,112;52,110,53,112;57,110,59,111;64,110,67,113;153,111,158,117;152,110,155,111;158,110,162,113;156,110,158,111;162,110,164,111;155,120,167,150;163,113,167,120;165,111,167,113;166,110,167,111;0,111,3,112;50,111,51,113;53,111,54,114;59,112,64,117;61,111,63,112;57,145,70,197;63,121,70,145;67,115,70,121;68,113,70,115;69,111,70,113;132,111,134,112;137,111,139,112;150,112,153,114;152,111,153,112;162,111,163,112;25,115,29,123;25,112,28,115;164,112,165,113;52,113,53,114;54,117,61,127;57,114,59,117;58,113,59,114;64,113,66,114;119,153,133,161;124,126,138,138;129,118,131,126;129,115,131,116;130,113,131,115;149,113,150,114;158,113,160,115;160,113,161,114;51,114,52,115;54,114,56,115;64,114,65,116;159,116,163,120;161,115,163,116;162,114,163,115;30,115,31,116;50,115,51,116;53,115,55,116;55,116,57,117;56,115,57,116;149,115,151,116;151,116,153,120;152,115,153,116;158,115,159,116;29,116,30,120;52,116,54,117;130,116,131,118;51,117,53,118;61,117,63,118;65,118,67,121;66,117,67,118;121,117,124,120;124,117,125,118;149,117,151,122;153,117,156,118;156,118,159,120;158,117,159,118;61,118,62,121;153,118,154,119;30,119,31,120;32,119,33,120;52,120,54,124;53,119,54,120;64,119,65,121;137,119,145,121;131,119,137,120;147,119,149,121;146,119,147,120;121,120,123,123;127,122,129,126;128,120,129,122;131,120,134,121;133,121,137,126;135,120,136,121;151,120,152,121;131,122,133,126;131,121,132,122;137,121,138,124;139,121,140,122;147,127,155,156;151,122,155,127;152,121,155,122;25,132,34,147;29,123,32,132;29,122,31,123;32,122,33,123;138,122,139,126;25,123,26,126;" $sPixelRect &= "27,123,29,128;33,123,34,125;37,123,38,124;121,123,122,127;125,124,127,126;126,123,127,124;139,123,140,124;149,124,151,127;150,123,151,124;26,124,27,126;34,124,37,126;53,124,54,128;37,125,38,126;137,125,138,126;138,127,141,141;139,125,140,127;33,126,35,131;32,126,33,128;51,126,52,128;140,126,141,127;148,126,149,127;25,127,26,132;50,129,54,136;52,127,53,129;55,127,56,129;54,127,55,128;56,127,57,128;58,127,61,131;141,127,142,136;37,128,38,129;50,128,51,129;60,135,63,145;62,128,63,135;123,138,127,153;122,130,124,137;123,128,124,130;28,129,29,132;27,129,28,130;34,135,42,149;35,130,37,135;35,129,36,130;49,129,50,134;54,129,55,131;32,130,33,132;41,130,43,131;57,130,58,134;109,130,118,152;118,130,120,141;26,131,27,132;33,131,34,132;38,131,39,132;55,131,57,132;58,131,60,132;39,132,41,134;54,132,55,137;61,132,62,135;34,133,35,135;41,133,42,135;44,133,45,134;37,134,40,135;47,134,49,135;56,134,57,135;178,134,198,137;198,134,206,135;223,134,250,136;215,134,223,135;43,135,44,137;55,135,56,137;198,135,200,136;53,136,54,138;52,136,53,137;58,140,60,145;59,136,60,140;121,136,122,140;232,136,250,137;42,138,44,142;42,137,43,138;123,137,124,138;178,137,187,140;189,137,190,139;187,137,189,138;190,137,192,138;243,137,250,138;122,138,123,140;128,138,135,148;135,138,138,141;55,139,56,141;187,139,188,140;1,140,10,147;0,140,1,141;11,140,13,148;10,140,11,146;13,140,14,145;18,140,25,147;15,140,18,145;53,140,54,141;127,140,128,153;178,140,184,141;230,141,232,144;231,140,232,141;118,141,119,146;120,144,123,153;121,141,122,144;135,141,136,142;137,141,140,146;146,141,147,142;178,141,180,143;180,141,181,142;225,141,226,144;229,141,230,143;228,141,229,142;233,141,236,142;237,141,238,142;245,142,249,144;246,141,247,142;0,142,1,149;14,142,15,146;42,144,47,148;42,143,45,144;43,142,44,143;122,142,123,144;136,142,137,143;235,142,237,143;240,142,245,143;135,143,136,147;226,143,227,144;240,143,241,144;167,144,174,146;175,144,176,146;174,144,175,145;176,144,177,145;195,153,209,161;192,146,207,153;" $sPixelRect &= "205,144,207,146;247,144,249,146;246,144,247,145;15,145,16,146;47,145,48,146;136,145,137,146;193,145,203,146;204,145,205,146;236,145,237,146;56,146,57,147;139,146,140,147;167,146,172,148;172,146,173,147;174,153,193,164;186,147,192,153;189,146,190,147;1,147,9,149;14,147,17,149;17,147,18,148;23,147,25,148;26,147,34,150;49,147,50,148;137,147,139,149;9,148,10,151;12,148,14,151;42,148,45,150;39,151,57,190;55,148,57,151;128,148,132,152;132,148,134,149;135,148,137,149;167,148,171,149;207,149,210,152;207,148,208,149;222,148,223,149;220,163,250,206;233,148,250,163;231,148,233,150;230,148,231,149;3,149,4,151;2,149,3,150;5,149,6,150;10,149,11,154;15,149,16,150;34,149,36,151;36,149,37,150;40,149,42,150;45,149,46,150;53,149,55,151;132,150,135,152;134,149,135,150;167,149,168,150;178,149,186,153;8,150,9,152;7,150,8,151;16,150,17,151;26,150,27,151;31,150,33,151;51,150,53,151;155,150,162,152;162,150,166,151;176,150,178,153;231,154,233,155;232,150,233,154;11,151,12,152;13,151,15,153;31,151,32,152;119,151,120,153;136,151,138,152;174,151,176,153;210,151,211,152;8,153,10,155;9,152,10,153;109,152,116,166;116,152,117,162;128,152,131,153;132,152,134,153;155,152,159,154;159,152,160,153;169,154,174,159;172,152,174,154;171,152,172,153;207,152,208,153;7,153,8,154;11,153,12,155;117,153,118,156;135,154,138,157;135,153,137,154;193,153,195,157;14,154,15,155;133,154,135,155;155,154,157,155;209,154,210,155;9,155,10,156;155,155,156,156;155,160,172,175;163,155,169,160;232,155,233,159;10,156,11,157;133,156,135,157;138,156,139,157;149,156,152,158;148,156,149,157;152,156,153,157;156,156,157,157;159,156,161,157;161,157,163,160;162,156,163,157;8,157,9,160;117,157,118,158;133,157,134,158;136,157,138,158;154,158,161,160;155,157,156,158;157,157,160,158;194,157,195,159;150,158,151,159;217,158,218,160;147,159,149,161;151,163,155,169;152,161,155,163;153,159,154,161;169,159,171,160;218,159,219,162;11,160,12,161;154,160,155,161;172,164,175,168;172,160,174,164;193,160,194,161;32,169,39,188;37,163,39,169;" $sPixelRect &= "38,161,39,163;116,176,136,195;121,161,132,176;118,161,121,166;136,161,137,162;151,161,152,162;200,161,207,165;197,161,200,163;196,161,197,162;231,161,233,163;132,168,135,176;132,164,135,167;132,162,133,164;149,162,151,163;220,162,224,163;229,162,231,163;145,169,151,182;148,165,151,169;147,163,149,165;149,163,150,164;193,163,194,165;198,163,200,164;10,164,11,165;135,164,136,166;150,164,151,165;175,164,176,167;184,164,189,171;179,164,184,167;178,164,179,165;189,164,192,167;204,176,220,206;214,167,220,176;219,164,220,167;35,166,37,169;36,165,37,166;147,165,148,166;203,165,207,168;202,165,203,166;216,165,218,166;109,166,114,171;114,166,115,169;117,166,119,167;216,166,217,167;218,166,219,167;33,168,35,169;34,167,35,168;117,167,118,171;119,171,121,176;118,169,121,170;120,167,121,169;132,167,133,168;135,167,137,168;146,168,148,169;147,167,148,168;181,167,183,169;183,167,184,168;189,167,190,168;116,168,117,169;172,169,174,173;173,168,174,169;196,168,197,169;201,168,203,172;200,168,201,170;199,168,200,169;203,168,204,169;205,168,206,169;135,172,138,174;135,169,137,172;154,169,155,170;189,170,197,174;193,169,195,170;120,170,121,171;138,170,139,172;137,170,138,171;151,171,155,180;151,170,154,171;174,170,175,171;203,170,204,171;212,173,214,176;213,170,214,173;109,171,112,178;112,171,113,174;115,173,117,176;116,171,117,173;115,171,116,172;139,179,145,185;143,173,145,179;144,171,145,173;185,171,189,174;197,171,201,175;117,172,118,173;201,173,203,175;202,172,203,173;118,173,119,176;172,173,173,174;114,174,115,175;135,174,137,176;187,174,192,175;194,174,197,175;210,174,212,175;142,175,143,179;158,175,165,180;155,175,158,179;165,175,169,177;169,175,171,176;199,175,202,176;207,175,211,176;30,182,32,188;31,176,32,182;115,176,116,178;114,176,115,177;136,176,137,177;173,181,204,206;179,176,189,181;113,177,114,178;165,177,167,179;167,177,168,178;176,178,179,181;177,177,179,178;189,178,204,181;189,177,191,178;192,177,193,178;195,177,200,178;203,177,204,178;109,178,111,180;109,185,116,206;" $sPixelRect &= "113,179,116,185;114,178,115,179;141,178,142,179;112,179,113,182;136,181,139,192;136,179,138,181;154,180,156,181;155,179,156,180;174,180,176,181;175,179,176,180;109,180,110,182;151,180,153,183;157,180,163,182;163,180,164,181;110,183,113,185;111,181,112,183;153,181,155,183;155,182,158,185;156,181,157,182;145,183,149,186;145,182,147,183;150,182,151,185;149,182,150,183;158,182,160,183;166,187,173,206;171,183,173,187;172,182,173,183;151,183,152,185;152,184,153,186;168,185,171,187;170,184,171,185;70,185,95,197;95,185,106,191;106,185,108,187;139,185,143,188;143,189,145,191;143,186,145,188;144,185,145,186;153,185,156,186;147,186,149,187;155,186,156,187;106,187,107,189;144,188,148,189;145,187,146,188;149,187,150,188;33,188,39,189;105,194,109,206;107,191,109,194;108,188,109,191;139,188,142,190;146,189,148,192;161,193,166,206;164,190,166,193;165,189,166,190;48,190,57,193;44,190,48,191;139,190,140,191;144,191,146,194;145,190,146,191;47,191,48,192;95,191,101,194;101,191,103,193;163,191,164,193;136,192,138,193;146,192,147,194;1,193,2,195;0,193,1,194;53,193,57,195;51,193,53,194;106,193,107,194;136,193,137,194;0,196,7,206;2,194,3,196;95,194,99,195;157,197,161,206;159,195,161,197;160,194,161,195;0,195,1,196;3,195,6,196;55,195,57,196;95,195,97,196;102,196,105,206;104,195,105,196;116,195,131,201;131,197,138,199;133,195,135,197;131,195,133,196;140,195,141,196;131,196,132,197;135,196,136,197;141,196,142,197;158,196,159,197;7,199,12,206;7,197,11,199;67,197,82,204;60,197,67,199;58,197,60,198;82,197,90,200;90,197,94,198;100,198,102,200;101,197,102,198;90,198,91,199;87,202,102,206;93,199,100,201;95,198,96,199;154,200,157,206;155,199,157,200;156,198,157,199;63,199,67,201;62,199,63,200;131,199,135,200;136,199,137,200;82,200,86,202;86,200,88,201;91,200,92,202;90,200,91,201;95,201,102,202;100,200,101,201;12,202,15,206;12,201,13,202;64,201,67,202;89,201,90,202;92,201,93,202;116,201,126,206;128,201,131,206;127,201,128,202;131,201,133,203;135,201,136,202;152,202,154,206;153,201,154,202;" $sPixelRect &= "66,202,67,203;82,202,84,203;126,203,128,206;126,202,127,203;133,202,135,203;35,203,36,204;37,203,39,206;39,204,47,206;41,203,42,204;45,203,47,204;85,203,87,206;151,203,152,206;15,204,18,206;33,204,35,206;68,204,78,206;78,205,85,206;79,204,80,205;84,204,85,205;131,204,133,206;18,205,33,206;35,205,37,206;47,205,68,206;133,205,151,206" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates2() Func _PixelCoordinates3() #region pixel coordinates Local $sPixelRect $sPixelRect &= "40,250x206;38,0,174,27;0,0,38,16;178,27,250,143;179,0,250,27;174,0,179,24;0,40,17,93;0,21,20,37;5,16,8,20;0,16,4,20;4,16,5,19;8,16,13,18;13,16,15,17;24,16,38,20;18,16,22,20;16,16,18,18;22,16,24,19;14,18,16,19;15,17,16,18;9,18,11,19;17,18,18,19;7,20,10,21;8,19,9,20;13,19,14,21;12,19,13,20;18,20,19,21;31,20,38,24;28,20,31,22;20,22,28,35;20,21,24,22;28,25,34,38;28,23,30,25;30,24,32,25;35,24,38,25;174,24,176,25;178,24,179,25;37,25,38,26;174,25,175,26;34,29,41,40;34,26,35,29;35,27,38,29;60,95,105,176;63,27,99,76;50,27,63,37;44,27,50,31;41,27,44,29;99,27,121,64;121,30,128,38;121,27,127,30;150,27,164,43;135,27,150,34;130,27,135,30;129,27,130,29;164,27,171,31;171,27,173,29;173,27,174,28;175,27,177,28;38,28,39,29;175,28,176,29;176,30,178,35;177,28,178,30;43,29,44,30;171,29,172,30;41,32,45,41;41,30,42,32;134,30,135,32;133,30,134,31;42,31,43,32;46,31,50,33;45,31,46,32;164,31,169,34;169,31,170,33;172,31,173,33;128,34,130,38;128,32,129,34;131,32,134,34;174,33,176,34;175,32,176,33;45,33,46,34;48,33,50,35;47,33,48,34;45,37,48,43;45,35,47,37;46,34,47,35;133,34,134,36;132,34,133,35;143,34,150,37;138,34,143,35;164,34,167,37;167,34,168,35;21,35,28,36;49,35,50,36;130,36,133,39;130,35,131,36;134,35,136,37;141,35,143,36;26,36,28,37;137,37,142,40;136,36,138,37;0,37,15,40;15,37,16,38;54,37,63,52;51,37,54,42;133,37,134,38;135,37,137,38;147,37,150,39;145,37,147,38;164,37,165,40;32,38,34,40;31,38,32,39;121,38,124,41;124,38,126,39;142,39,145,42;142,38,144,39;177,38,178,44;48,40,51,41;50,39,51,40;124,39,125,40;126,39,130,40;134,42,143,47;135,39,137,41;149,39,150,41;148,39,149,40;176,39,177,40;34,40,36,42;33,40,34,41;38,40,41,42;37,40,38,41;125,40,126,41;131,40,134,42;130,40,131,41;134,40,135,41;136,41,142,42;141,40,142,41;144,42,148,44;145,40,146,42;146,41,148,42;147,40,148,41;164,71,171,104;164,54,170,61;166,43,170,52;168,40,169,43;170,41,172,46;170,40,171,41;17,53,24,65;17,44,21,50;17,41,19,44;36,41,37,42;43,41,45,43;42,41,43,42;47,43,52,46;48,41,50,43;123,41,124,42;126,41,128,42;" $sPixelRect &= "169,41,170,43;19,42,20,44;38,42,39,43;40,42,42,43;50,42,51,43;53,42,54,45;52,42,53,43;121,46,128,66;121,44,127,46;126,42,127,44;129,42,130,46;128,42,129,43;167,42,168,43;172,42,173,46;44,43,45,44;46,43,47,44;121,43,124,44;131,43,134,48;146,44,150,49;148,43,150,44;152,43,162,54;150,47,152,53;151,43,152,47;162,43,163,47;45,44,46,45;130,44,131,45;145,44,146,47;174,44,175,46;173,44,174,45;51,46,53,49;52,45,53,46;50,46,51,48;49,46,50,47;128,46,129,51;129,48,133,49;130,46,131,48;165,46,166,47;21,47,22,49;53,47,54,48;134,47,136,48;136,48,138,49;137,47,138,48;140,47,143,49;139,47,140,48;170,48,172,52;170,47,171,48;174,47,176,49;176,47,177,48;133,49,136,50;134,48,135,49;164,49,166,52;165,48,166,49;173,48,174,51;175,50,178,71;176,49,178,50;177,48,178,49;52,49,53,51;129,49,131,50;137,51,141,55;138,49,140,51;146,50,149,57;146,49,148,50;149,49,150,51;174,49,175,50;17,50,20,53;21,50,23,53;53,50,54,53;129,50,130,51;132,50,133,51;137,50,138,51;172,50,173,52;20,51,21,53;58,52,63,58;55,52,58,55;128,60,145,71;129,55,137,59;131,53,137,55;132,52,133,53;135,52,137,53;145,52,146,54;149,52,150,55;164,53,169,54;165,52,166,53;167,52,169,53;173,52,175,62;128,53,129,56;24,54,25,55;129,54,130,55;155,54,161,57;153,54,155,56;152,54,153,55;172,54,173,56;31,56,33,61;31,55,32,56;57,55,58,56;137,55,139,58;139,55,140,56;145,55,146,58;162,58,164,59;163,55,164,58;24,56,27,64;27,56,28,58;29,56,31,58;35,56,39,60;139,57,143,60;140,56,142,57;148,58,154,63;150,56,152,58;170,56,171,64;28,57,29,62;33,57,35,61;39,57,42,60;128,57,129,60;146,57,147,59;148,57,150,58;152,57,153,58;158,57,161,59;156,57,158,58;42,59,45,62;42,58,44,59;61,58,62,62;60,58,61,60;59,58,60,59;62,58,63,59;136,59,139,60;138,58,139,59;143,58,144,60;147,58,148,62;29,59,31,62;129,59,131,60;132,59,133,60;134,59,135,60;144,59,145,60;141,71,158,93;153,63,159,67;154,60,156,63;154,59,155,60;161,59,162,61;160,59,161,60;163,59,164,62;27,60,28,62;35,60,38,61;41,60,42,62;40,60,41,61;44,62,47,63;45,60,46,62;62,60,63,65;46,61,47,62;58,63,61,66;" $sPixelRect &= "59,61,60,63;145,63,149,71;145,61,146,63;156,61,157,62;166,61,169,71;164,61,166,64;29,62,30,63;60,62,61,63;146,62,147,63;158,62,159,63;169,62,170,65;174,62,175,66;45,63,46,64;151,63,153,65;150,63,151,64;24,64,26,66;56,65,58,68;57,64,58,65;99,64,108,66;108,64,114,65;116,64,119,66;115,64,116,65;119,66,121,67;120,64,121,66;119,64,120,65;149,65,151,71;149,64,150,65;165,64,166,65;17,67,21,78;17,65,19,67;21,65,24,69;20,65,21,66;61,65,62,66;152,65,153,66;159,66,164,72;160,65,161,66;162,65,163,66;19,66,20,67;24,66,25,67;58,66,59,67;60,66,61,68;62,66,63,67;99,66,105,68;105,66,106,67;108,66,112,68;112,66,115,67;124,66,128,69;123,66,124,68;122,66,123,67;151,67,153,71;151,66,152,67;169,66,171,68;104,68,109,71;106,67,108,68;120,67,121,68;156,67,159,69;154,67,156,68;164,68,166,71;164,67,165,68;99,68,102,70;102,68,103,69;109,68,111,70;153,68,155,71;21,69,23,72;24,69,25,70;30,69,33,70;62,69,63,70;98,77,115,87;101,72,106,77;102,70,104,72;103,69,104,70;122,69,124,70;126,69,128,70;155,69,156,71;157,69,159,70;170,69,171,70;28,73,33,75;30,70,31,73;35,70,40,72;32,70,35,71;43,75,49,79;45,71,48,73;46,70,47,71;99,70,101,71;116,70,118,71;156,70,157,71;169,70,170,71;28,71,29,73;31,71,33,73;39,72,41,75;40,71,41,72;99,71,100,72;104,71,108,72;115,71,117,72;120,71,121,73;134,71,141,78;130,71,134,73;129,71,130,72;177,71,178,82;176,71,177,75;21,72,22,73;33,72,35,73;37,72,39,74;114,72,115,77;121,72,122,74;123,72,124,73;161,72,164,75;160,72,161,74;33,73,34,74;35,73,37,74;46,73,48,75;61,77,97,79;62,73,63,77;61,73,62,75;99,75,101,77;100,73,101,75;113,73,114,74;118,73,120,74;122,73,123,75;124,73,125,75;127,73,128,75;131,73,134,74;158,77,162,89;158,74,160,77;158,73,159,74;21,75,23,77;21,74,22,75;27,74,28,75;41,74,42,75;44,74,45,75;53,74,54,75;56,74,60,78;55,74,56,76;117,75,119,77;118,74,119,75;125,74,126,76;129,74,131,75;133,74,134,76;171,82,174,87;171,74,172,82;30,75,31,77;29,75,30,76;106,75,114,77;126,75,127,76;128,75,130,78;131,76,133,80;131,75,132,76;160,75,161,77;162,75,164,77;53,76,54,78;" $sPixelRect &= "63,76,98,77;127,76,128,77;21,77,22,78;49,77,50,78;54,77,56,78;163,77,164,78;17,81,19,90;17,78,18,81;42,79,46,82;42,78,43,79;115,81,120,93;115,78,116,81;129,78,131,80;132,80,135,82;133,78,134,80;137,78,141,81;136,78,137,80;135,78,136,79;162,78,163,79;18,79,19,80;26,79,27,80;39,79,40,81;41,79,42,80;46,79,47,81;60,80,97,82;60,79,61,80;62,79,97,80;116,79,118,80;134,79,135,80;172,79,173,80;23,80,24,82;116,80,117,81;135,80,136,81;136,81,137,82;139,81,141,83;138,81,139,82;172,81,173,82;19,82,20,83;41,82,42,83;43,82,45,84;45,82,46,83;60,82,61,84;63,82,96,95;96,82,97,85;120,85,124,92;120,82,121,85;134,82,136,84;48,84,51,87;49,83,50,84;61,83,63,95;136,83,138,84;140,83,141,85;160,95,164,113;163,83,164,95;174,83,175,84;177,83,178,91;21,84,22,85;121,84,122,85;135,84,137,85;138,84,139,85;19,86,21,87;45,88,49,91;46,87,49,88;47,86,48,87;51,86,52,87;131,88,137,94;133,86,134,88;174,86,175,87;19,87,20,88;52,87,53,88;96,90,99,95;96,88,98,90;97,87,98,88;103,87,115,94;100,87,103,91;99,87,100,89;121,92,131,100;124,87,127,92;127,88,131,90;130,87,131,88;134,87,137,88;137,88,139,90;138,87,139,88;171,87,173,89;21,88,22,89;139,90,141,91;140,88,141,90;44,91,47,96;44,89,45,91;158,89,161,91;171,89,172,95;18,90,19,91;127,90,129,92;137,90,138,93;172,90,173,91;47,91,48,94;99,92,101,95;99,91,100,92;102,91,103,93;101,91,102,92;129,91,131,92;140,91,141,92;158,91,160,92;162,91,163,95;158,92,159,93;0,93,11,124;11,93,15,101;49,94,54,97;50,93,52,94;60,93,61,95;101,93,102,95;105,101,122,112;114,94,121,99;116,93,120,94;143,93,151,97;142,93,143,95;151,93,154,95;154,93,156,94;172,93,173,94;15,94,17,95;102,94,103,95;108,94,114,97;105,96,107,101;106,94,108,96;105,94,106,95;131,94,134,96;134,94,135,95;161,94,162,95;167,112,178,150;175,102,178,112;176,98,178,100;177,94,178,98;15,95,16,97;151,95,152,96;171,97,175,98;173,95,174,97;45,96,47,97;45,138,60,206;56,114,60,138;59,96,60,114;131,96,133,98;154,100,160,117;158,97,160,100;159,96,160,97;107,98,112,101;107,97,109,98;111,97,114,98;133,97,134,98;146,97,149,99;" $sPixelRect &= "144,97,146,98;149,97,150,98;15,98,16,99;156,98,158,100;171,98,173,101;173,98,174,99;47,99,52,104;45,99,47,100;52,101,55,103;52,99,54,101;112,99,115,101;118,99,121,101;117,99,118,100;122,100,132,101;131,99,132,100;133,99,135,100;147,99,148,100;155,99,156,100;58,100,59,105;115,100,117,101;135,100,136,101;176,101,178,102;177,100,178,101;11,107,13,119;11,101,13,106;13,101,14,104;42,105,48,109;44,101,47,104;122,101,123,106;124,101,128,102;171,101,172,102;14,102,16,103;124,102,126,104;148,107,154,114;153,102,154,107;43,103,44,104;53,103,56,105;48,104,49,106;45,104,48,105;50,104,51,107;49,104,50,105;52,104,53,106;123,105,125,106;124,104,125,105;164,104,169,110;169,104,170,105;173,107,175,112;174,104,175,107;53,105,55,106;56,105,57,106;149,106,153,107;152,105,153,106;12,106,13,107;51,106,52,107;123,106,124,107;169,106,171,107;13,107,14,108;41,109,44,113;41,107,42,109;49,107,50,108;39,108,40,113;141,110,148,116;145,108,148,110;37,109,38,111;40,109,41,110;44,109,46,110;49,110,56,112;53,109,56,110;142,109,143,110;144,109,145,110;171,110,173,112;172,109,173,110;44,110,45,111;57,112,59,114;58,110,59,112;164,110,167,112;167,110,168,111;0,130,18,146;12,120,17,122;13,113,15,118;13,111,14,113;40,111,41,113;43,115,50,121;46,112,53,115;47,111,49,112;130,116,145,124;138,112,141,116;139,111,141,112;169,111,171,112;15,112,16,113;53,112,55,113;105,112,116,126;116,112,120,119;120,112,121,114;135,113,138,116;136,112,137,113;164,112,165,113;37,113,38,114;42,113,43,114;44,114,46,115;45,113,46,114;53,113,54,114;160,113,162,115;162,113,163,114;153,123,167,157;163,115,167,123;164,114,167,115;166,113,167,114;40,114,42,115;125,115,130,123;126,114,129,115;133,114,135,116;148,114,151,118;151,117,156,121;152,114,154,117;39,115,41,116;50,115,52,117;52,115,53,116;51,121,56,138;54,116,56,121;55,115,56,116;130,115,133,116;151,115,152,117;160,115,161,116;15,116,16,118;39,116,40,117;39,121,49,126;41,117,43,121;42,116,43,117;146,116,148,118;159,118,163,123;161,117,163,118;162,116,163,117;17,117,18,118;" $sPixelRect &= "124,117,125,120;145,117,146,118;156,117,158,119;158,117,159,118;13,118,14,120;39,119,41,121;40,118,41,119;52,119,54,121;53,118,54,119;148,119,151,123;150,118,151,119;11,119,12,121;14,119,15,120;116,119,118,123;118,119,119,121;145,119,147,120;156,119,157,120;157,120,159,123;158,119,159,120;17,120,18,121;123,120,124,121;145,121,148,126;147,120,148,121;22,121,23,122;121,126,130,149;123,122,125,126;124,121,125,122;151,121,154,122;155,121,157,123;11,122,12,125;13,122,17,130;19,122,22,124;18,122,19,123;154,122,155,123;12,123,13,126;22,123,23,125;116,123,117,124;122,123,123,126;125,123,129,124;148,123,150,124;0,124,10,130;18,125,20,130;19,124,20,125;23,124,24,125;125,124,127,125;127,125,133,126;129,124,130,125;131,124,141,125;142,124,145,125;148,124,149,125;142,133,153,162;148,126,153,133;150,125,153,126;152,124,153,125;17,125,18,126;49,131,51,138;50,125,51,131;121,125,122,126;125,125,126,126;134,125,135,126;137,125,138,126;10,126,11,128;22,126,23,128;35,129,41,135;38,126,39,129;40,126,49,127;105,126,112,145;112,126,115,130;117,130,121,144;119,127,121,130;120,126,121,127;130,126,134,128;145,126,146,127;11,127,13,129;35,128,37,129;36,127,37,128;42,127,43,129;40,127,42,128;43,127,44,128;45,127,48,131;48,127,49,128;134,127,135,128;145,129,148,133;146,128,148,129;147,127,148,128;17,128,18,130;20,128,21,129;130,132,135,147;130,129,134,131;130,128,132,129;133,128,134,129;10,129,11,130;18,136,27,150;20,130,22,136;21,129,22,130;27,129,28,130;118,129,119,130;22,130,24,131;42,131,46,133;44,130,45,131;112,130,114,133;135,130,136,142;133,131,135,132;134,130,135,131;143,131,145,133;144,130,145,131;18,132,20,136;18,131,19,132;24,132,27,133;25,131,26,132;46,131,47,132;116,131,117,134;130,131,132,132;47,135,49,138;48,132,49,135;136,132,137,133;23,133,25,135;26,133,27,136;30,133,31,134;33,133,34,135;44,133,45,134;112,133,113,138;115,133,116,134;22,134,23,136;27,134,28,135;38,135,42,138;41,134,42,135;43,134,44,135;114,134,115,137;136,134,137,135;24,135,26,136;27,136,29,137;28,135,29,136;" $sPixelRect &= "37,135,38,137;36,135,37,136;111,161,124,178;113,147,121,161;114,138,117,142;115,135,117,138;46,136,47,138;27,138,29,142;27,137,28,138;141,138,142,139;41,140,42,142;141,140,142,164;29,141,30,142;38,141,40,142;113,141,114,147;27,144,31,149;27,143,29,144;28,142,29,143;34,142,35,143;40,142,41,143;23,152,45,195;43,146,45,152;44,142,45,146;114,142,115,143;115,143,117,147;116,142,117,143;178,143,199,145;199,143,207,144;222,143,250,146;212,143,222,144;114,144,115,145;117,144,119,147;219,144,222,145;31,145,32,148;105,145,110,154;110,145,111,150;119,145,121,147;178,145,187,148;187,145,190,147;190,145,191,146;192,145,196,146;0,146,1,147;3,146,4,147;9,146,18,150;5,146,9,147;32,146,34,147;229,146,230,147;236,146,250,148;231,146,236,147;6,147,7,148;8,147,9,148;41,149,43,152;42,147,43,149;130,148,133,152;131,147,134,148;111,154,113,161;112,148,113,154;178,148,183,149;243,148,250,149;27,149,30,151;121,149,127,155;127,151,130,152;128,149,129,151;127,149,128,150;178,149,180,150;248,149,250,150;9,150,10,151;11,150,20,151;25,150,27,151;30,150,35,151;38,151,41,152;40,150,41,151;167,150,175,153;175,150,177,151;14,151,15,153;175,151,176,152;232,152,234,155;233,151,234,152;127,152,129,153;132,152,133,154;226,152,227,155;230,152,232,154;236,152,237,154;235,152,236,153;127,154,131,156;127,153,128,154;167,153,170,155;170,153,171,154;172,153,173,154;227,153,228,155;238,153,240,154;241,153,244,154;243,154,249,155;246,153,247,154;105,154,109,161;131,154,132,155;184,156,207,167;190,155,202,156;193,154,194,155;195,154,196,155;197,154,198,155;204,154,206,156;206,154,207,155;230,154,231,155;238,154,239,155;241,154,242,155;121,155,125,160;167,155,168,156;186,155,187,156;203,155,204,156;247,155,249,156;125,156,127,159;127,156,128,157;109,157,110,158;140,157,141,158;153,157,161,159;161,157,165,158;173,167,189,176;174,158,184,167;183,157,184,158;238,157,240,158;110,158,111,159;127,158,128,159;129,158,130,159;125,159,126,160;153,159,158,160;170,160,174,167;172,159,174,160;207,160,209,163;207,159,208,160;" $sPixelRect &= "223,159,224,160;231,160,247,161;232,159,233,160;121,160,123,161;124,160,125,167;127,162,130,164;129,160,131,162;127,160,129,161;153,160,155,161;234,161,250,206;249,160,250,161;15,171,23,193;20,165,23,171;21,163,23,165;22,161,23,163;105,161,107,171;107,161,108,166;109,166,111,173;109,163,111,164;110,161,111,163;125,161,128,162;140,161,141,162;153,161,154,162;165,163,170,168;168,161,170,163;167,161,168,162;209,161,210,163;233,161,234,163;232,161,233,162;142,162,148,164;149,162,151,164;148,162,149,163;125,163,127,164;128,164,131,165;130,163,131,164;140,163,141,164;148,169,167,185;158,164,165,169;163,163,164,164;110,164,111,166;125,164,126,165;142,164,146,166;146,164,147,165;154,164,156,165;193,167,208,172;207,164,208,167;148,166,150,169;149,165,150,166;151,166,158,169;152,165,155,166;156,165,158,166;208,165,209,166;232,166,234,167;233,165,234,166;140,166,142,169;143,166,145,167;150,166,151,167;18,168,20,171;19,167,20,168;143,170,148,178;147,167,148,170;167,170,173,171;170,167,173,169;189,167,191,172;192,167,193,171;233,167,234,168;107,168,109,169;150,168,151,169;165,168,166,169;169,168,170,169;16,170,18,171;17,169,18,170;126,169,127,170;140,169,141,170;145,169,147,170;167,169,168,170;171,169,173,170;124,170,125,171;217,170,218,172;233,170,234,172;105,171,106,173;108,171,109,174;141,171,143,172;167,171,170,178;171,171,173,174;218,171,219,174;13,177,15,193;14,172,15,177;124,172,128,174;137,179,147,190;140,174,143,179;140,173,142,174;141,172,142,173;170,172,171,177;189,172,190,175;191,172,192,173;199,172,205,177;195,172,199,174;194,172,195,173;205,172,207,173;106,175,108,177;107,173,108,175;190,173,191,176;205,173,206,175;219,176,234,206;232,173,234,176;124,174,126,175;196,174,199,175;219,174,220,175;220,175,224,176;221,174,222,175;104,184,127,206;109,178,122,184;108,176,111,178;110,175,111,176;123,178,129,184;124,175,125,178;126,175,129,176;171,175,173,176;198,175,199,176;225,175,226,176;227,175,228,176;229,175,232,176;60,176,92,200;92,176,101,186;101,176,103,181;" $sPixelRect &= "103,176,104,178;125,176,127,178;139,176,140,177;180,176,186,182;177,176,179,180;175,176,177,178;179,176,180,179;186,176,188,178;105,177,106,179;107,177,108,178;127,177,129,178;138,177,139,179;173,177,174,178;201,177,205,179;200,177,201,178;215,178,219,179;216,177,217,178;104,180,109,181;106,178,107,180;129,178,130,180;139,178,140,179;143,178,144,179;147,178,148,179;167,179,169,183;168,178,169,179;170,178,171,179;187,178,188,179;193,178,194,179;104,179,105,180;108,179,109,180;122,179,123,184;196,179,197,181;201,179,202,181;204,179,205,181;203,179,204,180;211,185,219,206;213,180,219,185;217,179,219,180;130,180,131,181;134,184,137,194;136,180,137,184;147,185,162,189;147,180,148,185;169,180,170,181;197,180,198,181;181,184,201,185;199,181,201,184;199,180,200,181;105,181,107,182;108,181,109,184;181,182,194,184;186,181,187,182;189,181,192,182;12,182,13,192;104,182,106,184;194,183,198,184;195,182,196,183;201,182,202,183;101,183,102,184;107,183,108,184;135,183,136,184;167,183,168,184;212,183,213,185;211,183,212,184;102,184,103,186;127,184,129,186;129,184,130,185;162,185,165,187;165,185,166,186;191,185,200,187;184,185,188,187;182,185,184,186;188,185,191,186;92,186,98,192;98,186,100,187;98,192,104,206;102,187,104,192;103,186,104,187;129,190,134,199;131,188,134,190;133,186,134,188;196,187,201,188;200,186,201,187;98,187,99,189;127,187,128,190;162,187,163,188;170,190,198,206;173,188,185,190;176,187,177,188;178,187,183,188;202,189,211,206;208,187,211,189;100,188,102,190;128,188,129,190;198,188,199,189;204,188,208,189;11,189,12,191;129,189,130,190;147,192,153,194;147,189,149,192;152,189,157,192;150,189,152,190;157,189,161,190;172,189,173,190;185,189,187,190;192,189,193,190;194,189,195,190;99,190,101,192;137,190,146,192;150,190,151,192;149,190,150,191;157,190,159,191;198,191,202,206;199,190,202,191;101,191,102,192;127,191,129,203;141,192,147,193;146,191,147,192;151,191,152,192;92,192,96,196;96,192,97,194;137,193,141,196;137,192,139,193;153,192,155,193;164,195,170,206;" $sPixelRect &= "168,192,170,195;17,193,23,194;141,194,144,196;143,193,144,194;166,193,168,195;22,194,23,195;96,196,98,206;97,194,98,196;134,196,137,199;135,194,136,196;134,194,135,195;146,194,147,195;148,194,150,196;150,194,151,195;165,194,166,195;32,195,45,199;28,195,32,197;26,195,28,196;136,195,137,196;144,195,146,197;92,196,94,199;94,196,95,197;139,196,140,198;138,196,139,197;146,196,149,197;160,199,164,206;162,197,164,199;163,196,164,197;30,197,32,198;140,198,142,199;141,197,142,198;135,200,140,203;136,199,140,200;137,198,138,199;161,198,162,199;38,199,45,202;36,199,38,201;34,199,36,200;129,199,133,201;133,200,135,201;134,199,135,200;60,200,81,206;81,200,87,203;87,200,89,202;89,200,90,201;93,202,96,206;94,201,96,202;95,200,96,201;129,201,130,202;157,202,160,206;158,201,160,202;41,202,45,204;40,202,41,203;81,203,85,204;90,204,93,206;92,203,93,204;127,203,128,206;136,203,138,206;135,203,136,204;155,204,157,206;156,203,157,204;43,204,45,206;138,204,139,206;0,205,43,206;81,205,90,206;128,205,136,206;139,205,155,206" #endregion Local $aPixelRect = StringSplit($sPixelRect, ";", 2) Return $aPixelRect EndFunc ;==>_PixelCoordinates3() Func _PixelCoordinates4() #region pixel coordinates Local $sPixelRect $sPixelRect &= "40,250x206;38,0,181,23;9,0,38,8;0,0,9,4;181,37,250,153;183,0,250,37;181,0,183,22;0,4,4,6;4,4,5,5;7,4,9,6;5,6,7,7;6,5,7,6;0,6,1,7;0,31,10,57;0,10,11,26;4,7,5,10;3,7,4,8;0,8,3,10;9,8,10,9;11,8,14,9;24,8,38,13;20,8,24,11;16,8,20,9;3,9,4,10;5,9,7,10;11,10,18,25;11,9,12,10;18,14,26,27;18,11,20,14;22,11,24,12;20,12,23,14;31,13,38,17;28,13,31,15;27,13,28,14;3