Code: Select all
;
; ------------------------------------------------------------
;
; PureBasic - ImagePlugin GIF Viewer example file
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
Global a
Procedure myLoop(ar)
Repeat
a+1
Until a = 100000000
EndProcedure
; Enable the GIF decoder
UseGIFImageDecoder()
; Loading a GIF file
If LoadImage(0, #PB_Compiler_Home+"Examples/Sources/Data/PureBasicLogo.gif")
OpenWindow(0, 100, 100, ImageWidth(0), ImageHeight(0), "GIF viewer")
CanvasGadget(0, 0, 0, ImageWidth(0), ImageHeight(0))
; Add a timer to animate the GIF, starts immediately to display the first frame witout delay
AddWindowTimer(0, 0, 1)
myLoop(0)
;WaitThread(CreateThread(@myLoop(),0))
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Timer
SetImageFrame(0, Frame)
; Each GIF frame can have its own delay, so change the timer accordingly
;
RemoveWindowTimer(0, 0)
AddWindowTimer(0, 0, GetImageFrameDelay(0))
If StartDrawing(CanvasOutput(0))
DrawImage(ImageID(0), 0, 0)
StopDrawing()
EndIf
; Go to next frame
Frame+1
If Frame >= ImageFrameCount(0) ; Cycle back to first frame, to play in loop
Frame = 0
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
Else
Debug "Impossible to load the file: " + Filename$
EndIf