The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

/*
###########################################################################
# (@)PACKAGE:Win32::GUI::Animation
#
# $Id: Animation.xs,v 1.3 2004/03/28 15:02:22 lrocher Exp $
#
###########################################################################
*/
#include "GUI.h"
void
Animation_onPreCreate(NOTXSPROC LPPERLWIN32GUI_CREATESTRUCT perlcs) {
perlcs->cs.lpszClass = ANIMATE_CLASS;
perlcs->cs.style = WS_VISIBLE | WS_CHILD;
}
BOOL
Animation_onParseOption(NOTXSPROC char *option, SV* value, LPPERLWIN32GUI_CREATESTRUCT perlcs) {
BOOL retval = TRUE;
if BitmaskOptionValue("-autoplay", perlcs->cs.style, ACS_AUTOPLAY)
} else if BitmaskOptionValue("-center", perlcs->cs.style, ACS_CENTER)
} else if BitmaskOptionValue("-transparent", perlcs->cs.style, ACS_TRANSPARENT)
} else retval = FALSE;
return retval;
}
void
Animation_onPostCreate(NOTXSPROC HWND myhandle, LPPERLWIN32GUI_CREATESTRUCT perlcs) {
}
BOOL
Animation_onParseEvent(NOTXSPROC char *name, int* eventID) {
BOOL retval = TRUE;
if Parse_Event("Start", PERLWIN32GUI_NEM_CONTROL1)
else if Parse_Event("Stop", PERLWIN32GUI_NEM_CONTROL2)
else retval = FALSE;
return retval;
}
int
Animation_onEvent (NOTXSPROC LPPERLWIN32GUI_USERDATA perlud, UINT uMsg, WPARAM wParam, LPARAM lParam) {
int PerlResult = 1;
if ( uMsg == WM_COMMAND ) {
switch(HIWORD(wParam)) {
case ACN_START:
/*
* (@)EVENT:Start()
* Sent when the AVI clip has started playing.
* (@)APPLIES_TO:Animation
*/
PerlResult = DoEvent(NOTXSCALL perlud, PERLWIN32GUI_NEM_CONTROL1, "Start", -1 );
break;
case ACN_STOP:
/*
* (@)EVENT:Stop()
* Sent when the AVI clip has stopped playing.
* (@)APPLIES_TO:Animation
*/
PerlResult = DoEvent(NOTXSCALL perlud, PERLWIN32GUI_NEM_CONTROL2, "Stop", -1 );
break;
}
}
return PerlResult;
}
MODULE = Win32::GUI::Animation PACKAGE = Win32::GUI::Animation
PROTOTYPES: DISABLE
#pragma message( "*** PACKAGE Win32::GUI::Animation..." )
###########################################################################
# (@)METHOD:Open(FILE)
# Opens an AVI clip and displays its first frame in an animation control.
BOOL
Open(handle,file)
HWND handle
char * file
CODE:
RETVAL = Animate_Open(handle, (LPSTR) file);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:OpenEx(FILE,[INSTANCE=NULL])
# Opens an AVI clip from a resource in a specified module and displays its first frame in an animation control.
BOOL
OpenEx(handle,file,instance=NULL)
HWND handle
SV * file
HINSTANCE instance
PREINIT:
LPSTR name;
CODE:
if (SvIOK(file))
name = MAKEINTRESOURCE ((WORD ) SvIV(file));
else if (SvPOK(file))
name = SvPV_nolen(file);
else
name = NULL;
if (name != NULL)
RETVAL = Animate_OpenEx(handle, instance, (LPSTR) file);
else
RETVAL = FALSE;
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Close()
# Closes an AVI clip and displays its first frame in an animation control
BOOL
Close(handle)
HWND handle
CODE:
RETVAL = Animate_Close(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Play([FROM], [TO], [REPEAT])
# Plays an AVI clip in an animation control.
BOOL
Play(handle,from=0,to=(UINT)-1,repeat=(UINT)-1)
HWND handle
UINT from
UINT to
UINT repeat
CODE:
RETVAL = Animate_Play(handle, from, to, repeat);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Stop()
# Stops playing an AVI clip in an animation control.
BOOL
Stop(handle)
HWND handle
CODE:
RETVAL = Animate_Stop(handle);
OUTPUT:
RETVAL
###########################################################################
# (@)METHOD:Seek(FRAME)
# Directs an animation control to display a particular frame of an AVI clip.
BOOL
Seek(handle,frame)
HWND handle
UINT frame
CODE:
RETVAL = Animate_Seek(handle, frame);
OUTPUT:
RETVAL