#include-once
;===============================================================================
;
; Function Name:    _GUICtrlCreateGIF()
; Description:      Create an Animated GIF control
; Parameter(s):     $gif        [required]      path and filename of the animated GIF
;                   $x          [optional]        x pos of the top-left corner
;                   $y          [optional]  y pos of the top-left corner
;                   $border  [optional]      0 = no border
;                                    any other = sunken border
; Requirement(s):   #include <IE.au3>
; Return Value(s): 
;               controlID of the control created
; Author(s):        elgabionline, gafrost, Ed_Maximized
;
;===============================================================================
Func _GUICtrlCreateGIF($gif,$x=0,$y=0,$border=0)
    Local $pwidth,$pheight,$oIE,$GUIActiveX
    _GetGifPixWidth_Height($gif, $pwidth, $pheight)
    $oIE = ObjCreate("Shell.Explorer.2")
    $GUIActiveX = GUICtrlCreateObj($oIE, $x, $y, $pwidth, $pheight)
    $oIE.navigate ("about:blank")
    While _IEPropertyGet($oIE, "busy")
        Sleep(100)
    WEnd
    $oIE.document.body.background = $gif
    $oIE.document.body.scroll = "no"
    if $border=0 then $oIE.document.body.style.border = "0px"
    Return $oIE
EndFunc
;===============================================================================
;
; Function Name:    _GUICtrlStopGIF()
; Description:      stop an Animated GIF control created with _GUICtrlCreateGIF()
; Parameter(s):     $Control    [required]      controlID of the control returned by _GUICtrlCreateGIF()
;                                   
; Requirement(s):   #include <IE.au3>
; Return Value(s): 
;               none
; Author(s):        lod3n, Ed_Maximized
;
;===============================================================================
Func _GUICtrlStopGIF($Control)
    _IEAction ($Control, "stop" ) ; stop
EndFunc
;===============================================================================
;
; Function Name:    _GUICtrlResumeGIF()
; Description:      resume an Animated GIF control created with _GUICtrlCreateGIF()
; Parameter(s):     $Control    [required]      controlID of the control returned by _GUICtrlCreateGIF()
;                                   
; Requirement(s):   #include <IE.au3>
; Return Value(s): 
;               none
; Author(s):        lod3n, Ed_Maximized
;
;===============================================================================
Func _GUICtrlResumeGIF($Control)
    $Control.document.body.background = $Control.document.body.background ;resume
EndFunc
;===============================================================================
;
; Function Name:    _GetGifPixWidth_Height()
; Description:      return the size of a GIF image in pixels
; Parameter(s):     $s_gif    [required]    path and filename of the animated GIF
;                                   
; Requirement(s):   #include <IE.au3>
; Return Value(s): 
;               $pwidth = width of the GIF in pixels
;               $pheight = height of the GIF in pixels
; Author(s):        gafrost
;
;===============================================================================
Func _GetGifPixWidth_Height($s_gif, ByRef $pwidth, ByRef $pheight)
    If FileGetSize($s_gif) > 9 Then
        Local $sizes = FileRead($s_gif, 10)
        ConsoleWrite("Gif version: " & StringMid($sizes, 1, 6) & @LF)
        $pwidth = Asc(StringMid($sizes, 8, 1)) * 256 + Asc(StringMid($sizes, 7, 1))
        $pheight = Asc(StringMid($sizes, 10, 1)) * 256 + Asc(StringMid($sizes, 9, 1))
        ConsoleWrite($pwidth & " x " & $pheight & @LF)
    EndIf
EndFunc   ;==>_GetGifPixWidth_Height