wx/msw/wince/textctrlce.h \
wx/msw/wince/resources.h
@COND_TOOLKIT_WINCE@GUI_HDR = $(COND_TOOLKIT_WINCE_GUI_HDR)
-@COND_TOOLKIT_COCOA@ADVANCED_PLATFORM_HDR = \
-@COND_TOOLKIT_COCOA@ wx/cocoa/taskbar.h wx/mac/corefoundation/joystick.h
+COND_TOOLKIT_COCOA_ADVANCED_PLATFORM_HDR = \
+ wx/generic/animate.h \
+ wx/cocoa/taskbar.h \
+ wx/mac/corefoundation/joystick.h
+@COND_TOOLKIT_COCOA@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_COCOA_ADVANCED_PLATFORM_HDR)
@COND_TOOLKIT_GTK@ADVANCED_PLATFORM_HDR = \
@COND_TOOLKIT_GTK@ wx/unix/joystick.h wx/unix/sound.h wx/unix/taskbarx11.h
COND_TOOLKIT_MAC_ADVANCED_PLATFORM_HDR = \
+ wx/generic/animate.h \
wx/mac/carbon/drawer.h \
wx/mac/carbon/sound.h \
wx/mac/carbon/taskbarosx.h \
@COND_TOOLKIT_MOTIF@ADVANCED_PLATFORM_HDR = \
@COND_TOOLKIT_MOTIF@ wx/unix/joystick.h wx/unix/sound.h \
@COND_TOOLKIT_MOTIF@ wx/unix/taskbarx11.h
-@COND_TOOLKIT_MSW@ADVANCED_PLATFORM_HDR = wx/msw/sound.h \
-@COND_TOOLKIT_MSW@ wx/msw/taskbar.h wx/msw/joystick.h
-@COND_TOOLKIT_PM@ADVANCED_PLATFORM_HDR = wx/os2/joystick.h \
-@COND_TOOLKIT_PM@ wx/os2/sound.h
+COND_TOOLKIT_MSW_ADVANCED_PLATFORM_HDR = \
+ wx/generic/animate.h \
+ wx/msw/sound.h \
+ wx/msw/taskbar.h \
+ wx/msw/joystick.h
+@COND_TOOLKIT_MSW@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_MSW_ADVANCED_PLATFORM_HDR)
+@COND_TOOLKIT_PM@ADVANCED_PLATFORM_HDR = \
+@COND_TOOLKIT_PM@ wx/generic/animate.h wx/os2/joystick.h wx/os2/sound.h
@COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_HDR = \
-@COND_TOOLKIT_WINCE@ wx/msw/sound.h wx/msw/taskbar.h
+@COND_TOOLKIT_WINCE@ wx/generic/animate.h wx/msw/sound.h wx/msw/taskbar.h
@COND_TOOLKIT_X11@ADVANCED_PLATFORM_HDR = \
@COND_TOOLKIT_X11@ wx/unix/joystick.h wx/unix/sound.h wx/unix/taskbarx11.h
@COND_TOOLKIT_MSW@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
@COND_TOOLKIT_WINCE@ADVANCED_PLATFORM_NATIVE_HDR = wx/msw/datectrl.h
COND_WXUNIV_0_ADVANCED_HDR = \
+ wx/animate.h \
wx/bmpcbox.h \
wx/calctrl.h \
wx/dataview.h \
$(ADVANCED_PLATFORM_NATIVE_HDR)
@COND_WXUNIV_0@ADVANCED_HDR = $(COND_WXUNIV_0_ADVANCED_HDR)
COND_WXUNIV_1_ADVANCED_HDR = \
+ wx/animate.h \
wx/bmpcbox.h \
wx/calctrl.h \
wx/dataview.h \
wx/wupdlock.h \
wx/accel.h \
wx/access.h \
+ wx/anidecod.h \
wx/artprov.h \
wx/bitmap.h \
wx/bookctrl.h \
$(__LOWLEVEL_SRC_OBJECTS) \
$(__GUI_SRC_OBJECTS) \
monodll_accesscmn.o \
+ monodll_anidecod.o \
monodll_appcmn.o \
monodll_artprov.o \
monodll_artstd.o \
monodll_mono.o \
monodll_win32.o \
monodll_accesscmn.o \
+ monodll_anidecod.o \
monodll_appcmn.o \
monodll_artprov.o \
monodll_artstd.o \
monodll_window.o
@COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1)
COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
+ monodll_animatecmn.o \
monodll_datavcmn.o \
monodll_aboutdlgg.o \
monodll_bmpcboxg.o \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS)
COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
+ monodll_animatecmn.o \
monodll_datavcmn.o \
monodll_aboutdlgg.o \
monodll_bmpcboxg.o \
$(__LOWLEVEL_SRC_OBJECTS_2) \
$(__GUI_SRC_OBJECTS_1) \
monolib_accesscmn.o \
+ monolib_anidecod.o \
monolib_appcmn.o \
monolib_artprov.o \
monolib_artstd.o \
monolib_mono.o \
monolib_win32.o \
monolib_accesscmn.o \
+ monolib_anidecod.o \
monolib_appcmn.o \
monolib_artprov.o \
monolib_artstd.o \
monolib_window.o
@COND_TOOLKIT_X11@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3)
COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
+ monolib_animatecmn.o \
monolib_datavcmn.o \
monolib_aboutdlgg.o \
monolib_bmpcboxg.o \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1)
COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
+ monolib_animatecmn.o \
monolib_datavcmn.o \
monolib_aboutdlgg.o \
monolib_bmpcboxg.o \
$(__LOWLEVEL_SRC_OBJECTS_4) \
$(__GUI_SRC_OBJECTS_2) \
coredll_accesscmn.o \
+ coredll_anidecod.o \
coredll_appcmn.o \
coredll_artprov.o \
coredll_artstd.o \
coredll_mono.o \
coredll_win32.o \
coredll_accesscmn.o \
+ coredll_anidecod.o \
coredll_appcmn.o \
coredll_artprov.o \
coredll_artstd.o \
$(__LOWLEVEL_SRC_OBJECTS_6) \
$(__GUI_SRC_OBJECTS_3) \
corelib_accesscmn.o \
+ corelib_anidecod.o \
corelib_appcmn.o \
corelib_artprov.o \
corelib_artstd.o \
corelib_mono.o \
corelib_win32.o \
corelib_accesscmn.o \
+ corelib_anidecod.o \
corelib_appcmn.o \
corelib_artprov.o \
corelib_artstd.o \
@COND_USE_SOSYMLINKS_1@__advdll___so_symlinks_inst_cmd = $(COND_USE_SOSYMLINKS_1___advdll___so_symlinks_inst_cmd)
@COND_PLATFORM_WIN32_1@__advdll___win32rc = advdll_version_rc.o
COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
+ advdll_animatecmn.o \
advdll_datavcmn.o \
advdll_aboutdlgg.o \
advdll_bmpcboxg.o \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2)
COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
+ advdll_animatecmn.o \
advdll_datavcmn.o \
advdll_aboutdlgg.o \
advdll_bmpcboxg.o \
@COND_USE_PCH_1@___pch_wxprec_advlib_wx_wxprec_h_gch___depname \
@COND_USE_PCH_1@ = .pch/wxprec_advlib/wx/wxprec.h.gch
COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
+ advlib_animatecmn.o \
advlib_datavcmn.o \
advlib_aboutdlgg.o \
advlib_bmpcboxg.o \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3)
COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
+ advlib_animatecmn.o \
advlib_datavcmn.o \
advlib_aboutdlgg.o \
advlib_bmpcboxg.o \
@COND_PLATFORM_MACOSX_1@__MAC_LOWLEVEL_SRC_OBJECTS \
@COND_PLATFORM_MACOSX_1@ = monodll_gsockosx.o monodll_hid.o \
@COND_PLATFORM_MACOSX_1@ monodll_utilsexc_cf.o
-@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS = \
-@COND_TOOLKIT_COCOA@ monodll_taskbar.o monodll_taskbarcmn.o \
-@COND_TOOLKIT_COCOA@ monodll_hidjoystick.o
+COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS = \
+ monodll_animateg.o \
+ monodll_taskbar.o \
+ monodll_taskbarcmn.o \
+ monodll_hidjoystick.o
+@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS)
COND_TOOLKIT_GTK_TOOLKIT_VERSION____ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_taskbarcmn.o \
monodll_joystick.o \
monodll_sound.o \
monodll_taskbarx11.o \
monodll_aboutdlg.o \
+ monodll_animate.o \
monodll_taskbar.o \
monodll_dataview.o \
monodll_eggtrayicon.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS = \
+ monodll_animateg.o \
monodll_taskbarcmn.o \
monodll_aboutdlg.o \
monodll_drawer.o \
monodll_taskbarx11.o
@COND_TOOLKIT_MOTIF@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_MOTIF___ADVANCED_PLATFORM_SRC_OBJECTS)
COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS = \
+ monodll_animateg.o \
monodll_taskbarcmn.o \
monodll_aboutdlg.o \
monodll_sound.o \
monodll_joystick.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS)
@COND_TOOLKIT_PM@__ADVANCED_PLATFORM_SRC_OBJECTS = \
-@COND_TOOLKIT_PM@ monodll_joystick.o monodll_sound.o
-@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS = \
-@COND_TOOLKIT_WINCE@ monodll_taskbarcmn.o monodll_aboutdlg.o \
-@COND_TOOLKIT_WINCE@ monodll_sound.o monodll_taskbar.o
+@COND_TOOLKIT_PM@ monodll_animateg.o monodll_joystick.o monodll_sound.o
+COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS = \
+ monodll_animateg.o \
+ monodll_taskbarcmn.o \
+ monodll_aboutdlg.o \
+ monodll_sound.o \
+ monodll_taskbar.o
+@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS)
COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_taskbarcmn.o \
monodll_joystick.o \
@COND_PLATFORM_MACOSX_1@__MAC_LOWLEVEL_SRC_OBJECTS_0 \
@COND_PLATFORM_MACOSX_1@ = monolib_gsockosx.o monolib_hid.o \
@COND_PLATFORM_MACOSX_1@ monolib_utilsexc_cf.o
-@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
-@COND_TOOLKIT_COCOA@ monolib_taskbar.o monolib_taskbarcmn.o \
-@COND_TOOLKIT_COCOA@ monolib_hidjoystick.o
+COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
+ monolib_animateg.o \
+ monolib_taskbar.o \
+ monolib_taskbarcmn.o \
+ monolib_hidjoystick.o
+@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_0)
COND_TOOLKIT_GTK_TOOLKIT_VERSION____ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_taskbarcmn.o \
monolib_joystick.o \
monolib_sound.o \
monolib_taskbarx11.o \
monolib_aboutdlg.o \
+ monolib_animate.o \
monolib_taskbar.o \
monolib_dataview.o \
monolib_eggtrayicon.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
+ monolib_animateg.o \
monolib_taskbarcmn.o \
monolib_aboutdlg.o \
monolib_drawer.o \
monolib_taskbarx11.o
@COND_TOOLKIT_MOTIF@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_MOTIF___ADVANCED_PLATFORM_SRC_OBJECTS_0)
COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
+ monolib_animateg.o \
monolib_taskbarcmn.o \
monolib_aboutdlg.o \
monolib_sound.o \
monolib_joystick.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_0)
@COND_TOOLKIT_PM@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
-@COND_TOOLKIT_PM@ monolib_joystick.o monolib_sound.o
-@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
-@COND_TOOLKIT_WINCE@ monolib_taskbarcmn.o monolib_aboutdlg.o \
-@COND_TOOLKIT_WINCE@ monolib_sound.o monolib_taskbar.o
+@COND_TOOLKIT_PM@ monolib_animateg.o monolib_joystick.o monolib_sound.o
+COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
+ monolib_animateg.o \
+ monolib_taskbarcmn.o \
+ monolib_aboutdlg.o \
+ monolib_sound.o \
+ monolib_taskbar.o
+@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_0)
COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_taskbarcmn.o \
monolib_joystick.o \
@COND_PLATFORM_MACOSX_1@__MAC_LOWLEVEL_SRC_OBJECTS_9 \
@COND_PLATFORM_MACOSX_1@ = corelib_gsockosx.o corelib_hid.o \
@COND_PLATFORM_MACOSX_1@ corelib_utilsexc_cf.o
-@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
-@COND_TOOLKIT_COCOA@ advdll_taskbar.o advdll_taskbarcmn.o \
-@COND_TOOLKIT_COCOA@ advdll_hidjoystick.o
+COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
+ advdll_animateg.o \
+ advdll_taskbar.o \
+ advdll_taskbarcmn.o \
+ advdll_hidjoystick.o
+@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_8)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@__ADVANCED_PLATFORM_SRC_OBJECTS_8 \
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = advdll_taskbarcmn.o advdll_joystick.o \
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ advdll_sound.o advdll_taskbarx11.o
advdll_sound.o \
advdll_taskbarx11.o \
advdll_aboutdlg.o \
+ advdll_animate.o \
advdll_taskbar.o \
advdll_dataview.o \
advdll_eggtrayicon.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
+ advdll_animateg.o \
advdll_taskbarcmn.o \
advdll_aboutdlg.o \
advdll_drawer.o \
@COND_TOOLKIT_MOTIF@ advdll_taskbarcmn.o advdll_joystick.o advdll_sound.o \
@COND_TOOLKIT_MOTIF@ advdll_taskbarx11.o
COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
+ advdll_animateg.o \
advdll_taskbarcmn.o \
advdll_aboutdlg.o \
advdll_sound.o \
advdll_joystick.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_8)
@COND_TOOLKIT_PM@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
-@COND_TOOLKIT_PM@ advdll_joystick.o advdll_sound.o
-@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
-@COND_TOOLKIT_WINCE@ advdll_taskbarcmn.o advdll_aboutdlg.o advdll_sound.o \
-@COND_TOOLKIT_WINCE@ advdll_taskbar.o
+@COND_TOOLKIT_PM@ advdll_animateg.o advdll_joystick.o advdll_sound.o
+COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
+ advdll_animateg.o \
+ advdll_taskbarcmn.o \
+ advdll_aboutdlg.o \
+ advdll_sound.o \
+ advdll_taskbar.o
+@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_8)
@COND_TOOLKIT_X11@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
@COND_TOOLKIT_X11@ advdll_taskbarcmn.o advdll_joystick.o advdll_sound.o \
@COND_TOOLKIT_X11@ advdll_taskbarx11.o
-@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
-@COND_TOOLKIT_COCOA@ advlib_taskbar.o advlib_taskbarcmn.o \
-@COND_TOOLKIT_COCOA@ advlib_hidjoystick.o
+COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
+ advlib_animateg.o \
+ advlib_taskbar.o \
+ advlib_taskbarcmn.o \
+ advlib_hidjoystick.o
+@COND_TOOLKIT_COCOA@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_COCOA___ADVANCED_PLATFORM_SRC_OBJECTS_9)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@__ADVANCED_PLATFORM_SRC_OBJECTS_9 \
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = advlib_taskbarcmn.o advlib_joystick.o \
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ advlib_sound.o advlib_taskbarx11.o
advlib_sound.o \
advlib_taskbarx11.o \
advlib_aboutdlg.o \
+ advlib_animate.o \
advlib_taskbar.o \
advlib_dataview.o \
advlib_eggtrayicon.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9)
COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
+ advlib_animateg.o \
advlib_taskbarcmn.o \
advlib_aboutdlg.o \
advlib_drawer.o \
@COND_TOOLKIT_MOTIF@ advlib_taskbarcmn.o advlib_joystick.o advlib_sound.o \
@COND_TOOLKIT_MOTIF@ advlib_taskbarx11.o
COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
+ advlib_animateg.o \
advlib_taskbarcmn.o \
advlib_aboutdlg.o \
advlib_sound.o \
advlib_joystick.o
@COND_TOOLKIT_MSW@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_9)
@COND_TOOLKIT_PM@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
-@COND_TOOLKIT_PM@ advlib_joystick.o advlib_sound.o
-@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
-@COND_TOOLKIT_WINCE@ advlib_taskbarcmn.o advlib_aboutdlg.o advlib_sound.o \
-@COND_TOOLKIT_WINCE@ advlib_taskbar.o
+@COND_TOOLKIT_PM@ advlib_animateg.o advlib_joystick.o advlib_sound.o
+COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
+ advlib_animateg.o \
+ advlib_taskbarcmn.o \
+ advlib_aboutdlg.o \
+ advlib_sound.o \
+ advlib_taskbar.o
+@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_9)
@COND_TOOLKIT_X11@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
@COND_TOOLKIT_X11@ advlib_taskbarcmn.o advlib_joystick.o advlib_sound.o \
@COND_TOOLKIT_X11@ advlib_taskbarx11.o
@COND_USE_GUI_1@monodll_accesscmn.o: $(srcdir)/src/common/accesscmn.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/accesscmn.cpp
+@COND_USE_GUI_1@monodll_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+
@COND_USE_GUI_1@monodll_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@monodll_vscroll.o: $(srcdir)/src/generic/vscroll.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/vscroll.cpp
+@COND_USE_GUI_1@monodll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
+
@COND_USE_GUI_1@monodll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
@COND_USE_GUI_1@monodll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1@monodll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_MAC_USE_GUI_1@monodll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MAC_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_COCOA_USE_GUI_1@monodll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_PM_USE_GUI_1@monodll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_PM_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@COND_TOOLKIT_X11_USE_GUI_1@monodll_taskbarx11.o: $(srcdir)/src/unix/taskbarx11.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/taskbarx11.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
+
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_dataview.o: $(srcdir)/src/gtk/dataview.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/dataview.cpp
@COND_USE_GUI_1@monolib_accesscmn.o: $(srcdir)/src/common/accesscmn.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/accesscmn.cpp
+@COND_USE_GUI_1@monolib_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+
@COND_USE_GUI_1@monolib_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@monolib_vscroll.o: $(srcdir)/src/generic/vscroll.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/vscroll.cpp
+@COND_USE_GUI_1@monolib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
+
@COND_USE_GUI_1@monolib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
@COND_USE_GUI_1@monolib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1@monolib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_MAC_USE_GUI_1@monolib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MAC_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_COCOA_USE_GUI_1@monolib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_PM_USE_GUI_1@monolib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_PM_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@COND_TOOLKIT_X11_USE_GUI_1@monolib_taskbarx11.o: $(srcdir)/src/unix/taskbarx11.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/taskbarx11.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_animate.o: $(srcdir)/src/gtk/animate.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
+
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_dataview.o: $(srcdir)/src/gtk/dataview.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/dataview.cpp
@COND_USE_GUI_1@coredll_accesscmn.o: $(srcdir)/src/common/accesscmn.cpp $(COREDLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/accesscmn.cpp
+@COND_USE_GUI_1@coredll_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+
@COND_USE_GUI_1@coredll_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(COREDLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
@COND_USE_GUI_1@corelib_accesscmn.o: $(srcdir)/src/common/accesscmn.cpp $(CORELIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/accesscmn.cpp
+@COND_USE_GUI_1@corelib_anidecod.o: $(srcdir)/src/common/anidecod.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/anidecod.cpp
+
@COND_USE_GUI_1@corelib_appcmn.o: $(srcdir)/src/common/appcmn.cpp $(CORELIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/appcmn.cpp
advdll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/unix/sound_sdl.cpp
+advdll_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
+
advdll_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_TOOLKIT_MSW@advdll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_WINCE@advdll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_MAC@advdll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_COCOA@advdll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_PM@advdll_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_PM@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
@COND_TOOLKIT_MSW@advdll_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@COND_TOOLKIT_X11@advdll_taskbarx11.o: $(srcdir)/src/unix/taskbarx11.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/unix/taskbarx11.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advdll_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
+
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advdll_dataview.o: $(srcdir)/src/gtk/dataview.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/dataview.cpp
advlib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/unix/sound_sdl.cpp
+advlib_animatecmn.o: $(srcdir)/src/common/animatecmn.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/animatecmn.cpp
+
advlib_datavcmn.o: $(srcdir)/src/common/datavcmn.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/datavcmn.cpp
advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_TOOLKIT_MSW@advlib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_WINCE@advlib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_MAC@advlib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_COCOA@advlib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
+@COND_TOOLKIT_PM@advlib_animateg.o: $(srcdir)/src/generic/animateg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_PM@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/animateg.cpp
+
@COND_TOOLKIT_MSW@advlib_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@COND_TOOLKIT_X11@advlib_taskbarx11.o: $(srcdir)/src/unix/taskbarx11.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/unix/taskbarx11.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advlib_animate.o: $(srcdir)/src/gtk/animate.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/animate.cpp
+
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advlib_dataview.o: $(srcdir)/src/gtk/dataview.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/dataview.cpp
<set var="GUI_CMN_SRC" hints="files">
src/common/accesscmn.cpp
+ src/common/anidecod.cpp
src/common/appcmn.cpp
src/common/artprov.cpp
src/common/artstd.cpp
wx/accel.h
wx/access.h
+ wx/anidecod.h
wx/artprov.h
wx/bitmap.h
wx/bookctrl.h
<!-- ====================================================================== -->
<set var="ADVANCED_CMN_SRC" hints="files">
+ src/common/animatecmn.cpp
src/common/datavcmn.cpp
src/generic/aboutdlgg.cpp
src/generic/bmpcboxg.cpp
</set>
<set var="ADVANCED_CMN_HDR" hints="files">
+ wx/animate.h
wx/bmpcbox.h
wx/calctrl.h
wx/dataview.h
</set>
<set var="ADVANCED_MSW_SRC" hints="files">
+ src/generic/animateg.cpp
src/common/taskbarcmn.cpp
src/msw/aboutdlg.cpp
src/msw/sound.cpp
src/msw/taskbar.cpp
</set>
<set var="ADVANCED_MSW_HDR" hints="files">
+ wx/generic/animate.h
wx/msw/sound.h
wx/msw/taskbar.h
</set>
</set>
<set var="ADVANCED_MAC_SRC" hints="files">
+ src/generic/animateg.cpp
src/common/taskbarcmn.cpp
src/mac/carbon/aboutdlg.cpp
src/mac/carbon/drawer.cpp
src/mac/corefoundation/hidjoystick.cpp
</set>
<set var="ADVANCED_MAC_HDR" hints="files">
+ wx/generic/animate.h
wx/mac/carbon/drawer.h
wx/mac/carbon/sound.h
wx/mac/carbon/taskbarosx.h
</set>
<set var="ADVANCED_COCOA_SRC" hints="files">
+ src/generic/animateg.cpp
src/cocoa/taskbar.mm
src/common/taskbarcmn.cpp
src/mac/corefoundation/hidjoystick.cpp
</set>
<set var="ADVANCED_COCOA_HDR" hints="files">
+ wx/generic/animate.h
wx/cocoa/taskbar.h
wx/mac/corefoundation/joystick.h
</set>
<set var="ADVANCED_OS2_SRC" hints="files">
+ src/generic/animateg.cpp
src/os2/joystick.cpp
src/os2/sound.cpp
</set>
<set var="ADVANCED_OS2_HDR" hints="files">
+ wx/generic/animate.h
wx/os2/joystick.h
wx/os2/sound.h
</set>
<set var="ADVANCED_GTK_SRC" hints="files">
src/gtk/aboutdlg.cpp
+ src/gtk/animate.cpp
src/gtk/taskbar.cpp
src/gtk/dataview.cpp
src/gtk/eggtrayicon.c
</set>
+<set var="ADVANCED_GTK_HDR" hints="files">
+ wx/gtk/animate.h
+</set>
+
<set var="ADVANCED_GTK1_SRC" hints="files">
</set>
$(OBJS)\monodll_fdrepdlg.obj \
$(OBJS)\monodll_fontdlg.obj \
$(OBJS)\monodll_accesscmn.obj \
+ $(OBJS)\monodll_anidecod.obj \
$(OBJS)\monodll_appcmn.obj \
$(OBJS)\monodll_artprov.obj \
$(OBJS)\monodll_artstd.obj \
$(OBJS)\monodll_mono.obj \
$(OBJS)\monodll_win32.obj \
$(OBJS)\monodll_accesscmn.obj \
+ $(OBJS)\monodll_anidecod.obj \
$(OBJS)\monodll_appcmn.obj \
$(OBJS)\monodll_artprov.obj \
$(OBJS)\monodll_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_datavcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_animateg.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_datavcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_animateg.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monolib_fdrepdlg.obj \
$(OBJS)\monolib_fontdlg.obj \
$(OBJS)\monolib_accesscmn.obj \
+ $(OBJS)\monolib_anidecod.obj \
$(OBJS)\monolib_appcmn.obj \
$(OBJS)\monolib_artprov.obj \
$(OBJS)\monolib_artstd.obj \
$(OBJS)\monolib_mono.obj \
$(OBJS)\monolib_win32.obj \
$(OBJS)\monolib_accesscmn.obj \
+ $(OBJS)\monolib_anidecod.obj \
$(OBJS)\monolib_appcmn.obj \
$(OBJS)\monolib_artprov.obj \
$(OBJS)\monolib_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_datavcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_animateg.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_datavcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_animateg.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\coredll_fdrepdlg.obj \
$(OBJS)\coredll_fontdlg.obj \
$(OBJS)\coredll_accesscmn.obj \
+ $(OBJS)\coredll_anidecod.obj \
$(OBJS)\coredll_appcmn.obj \
$(OBJS)\coredll_artprov.obj \
$(OBJS)\coredll_artstd.obj \
$(OBJS)\coredll_mono.obj \
$(OBJS)\coredll_win32.obj \
$(OBJS)\coredll_accesscmn.obj \
+ $(OBJS)\coredll_anidecod.obj \
$(OBJS)\coredll_appcmn.obj \
$(OBJS)\coredll_artprov.obj \
$(OBJS)\coredll_artstd.obj \
$(OBJS)\corelib_fdrepdlg.obj \
$(OBJS)\corelib_fontdlg.obj \
$(OBJS)\corelib_accesscmn.obj \
+ $(OBJS)\corelib_anidecod.obj \
$(OBJS)\corelib_appcmn.obj \
$(OBJS)\corelib_artprov.obj \
$(OBJS)\corelib_artstd.obj \
$(OBJS)\corelib_mono.obj \
$(OBJS)\corelib_win32.obj \
$(OBJS)\corelib_accesscmn.obj \
+ $(OBJS)\corelib_anidecod.obj \
$(OBJS)\corelib_appcmn.obj \
$(OBJS)\corelib_artprov.obj \
$(OBJS)\corelib_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_datavcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_animateg.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_datavcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_animateg.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_sound.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_datavcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_animateg.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_datavcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_animateg.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_sound.obj \
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\coredll_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\corelib_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
$(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
$(OBJS)\advdll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
$(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
$(OBJS)\advlib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
$(OBJS)\monodll_fdrepdlg.o \
$(OBJS)\monodll_fontdlg.o \
$(OBJS)\monodll_accesscmn.o \
+ $(OBJS)\monodll_anidecod.o \
$(OBJS)\monodll_appcmn.o \
$(OBJS)\monodll_artprov.o \
$(OBJS)\monodll_artstd.o \
$(OBJS)\monodll_mono.o \
$(OBJS)\monodll_win32.o \
$(OBJS)\monodll_accesscmn.o \
+ $(OBJS)\monodll_anidecod.o \
$(OBJS)\monodll_appcmn.o \
$(OBJS)\monodll_artprov.o \
$(OBJS)\monodll_artstd.o \
endif
ifeq ($(WXUNIV),0)
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.o \
$(OBJS)\monodll_datavcmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bmpcboxg.o \
$(OBJS)\monodll_splash.o \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_wizard.o \
+ $(OBJS)\monodll_animateg.o \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_sound.o \
endif
ifeq ($(WXUNIV),1)
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.o \
$(OBJS)\monodll_datavcmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bmpcboxg.o \
$(OBJS)\monodll_splash.o \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_wizard.o \
+ $(OBJS)\monodll_animateg.o \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_sound.o \
$(OBJS)\monolib_fdrepdlg.o \
$(OBJS)\monolib_fontdlg.o \
$(OBJS)\monolib_accesscmn.o \
+ $(OBJS)\monolib_anidecod.o \
$(OBJS)\monolib_appcmn.o \
$(OBJS)\monolib_artprov.o \
$(OBJS)\monolib_artstd.o \
$(OBJS)\monolib_mono.o \
$(OBJS)\monolib_win32.o \
$(OBJS)\monolib_accesscmn.o \
+ $(OBJS)\monolib_anidecod.o \
$(OBJS)\monolib_appcmn.o \
$(OBJS)\monolib_artprov.o \
$(OBJS)\monolib_artstd.o \
endif
ifeq ($(WXUNIV),0)
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.o \
$(OBJS)\monolib_datavcmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bmpcboxg.o \
$(OBJS)\monolib_splash.o \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_wizard.o \
+ $(OBJS)\monolib_animateg.o \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_sound.o \
endif
ifeq ($(WXUNIV),1)
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.o \
$(OBJS)\monolib_datavcmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bmpcboxg.o \
$(OBJS)\monolib_splash.o \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_wizard.o \
+ $(OBJS)\monolib_animateg.o \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_sound.o \
$(OBJS)\coredll_fdrepdlg.o \
$(OBJS)\coredll_fontdlg.o \
$(OBJS)\coredll_accesscmn.o \
+ $(OBJS)\coredll_anidecod.o \
$(OBJS)\coredll_appcmn.o \
$(OBJS)\coredll_artprov.o \
$(OBJS)\coredll_artstd.o \
$(OBJS)\coredll_mono.o \
$(OBJS)\coredll_win32.o \
$(OBJS)\coredll_accesscmn.o \
+ $(OBJS)\coredll_anidecod.o \
$(OBJS)\coredll_appcmn.o \
$(OBJS)\coredll_artprov.o \
$(OBJS)\coredll_artstd.o \
$(OBJS)\corelib_fdrepdlg.o \
$(OBJS)\corelib_fontdlg.o \
$(OBJS)\corelib_accesscmn.o \
+ $(OBJS)\corelib_anidecod.o \
$(OBJS)\corelib_appcmn.o \
$(OBJS)\corelib_artprov.o \
$(OBJS)\corelib_artstd.o \
$(OBJS)\corelib_mono.o \
$(OBJS)\corelib_win32.o \
$(OBJS)\corelib_accesscmn.o \
+ $(OBJS)\corelib_anidecod.o \
$(OBJS)\corelib_appcmn.o \
$(OBJS)\corelib_artprov.o \
$(OBJS)\corelib_artstd.o \
endif
ifeq ($(WXUNIV),0)
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.o \
$(OBJS)\advdll_datavcmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bmpcboxg.o \
$(OBJS)\advdll_splash.o \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_wizard.o \
+ $(OBJS)\advdll_animateg.o \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_sound.o \
endif
ifeq ($(WXUNIV),1)
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.o \
$(OBJS)\advdll_datavcmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bmpcboxg.o \
$(OBJS)\advdll_splash.o \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_wizard.o \
+ $(OBJS)\advdll_animateg.o \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_sound.o \
endif
ifeq ($(WXUNIV),0)
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.o \
$(OBJS)\advlib_datavcmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bmpcboxg.o \
$(OBJS)\advlib_splash.o \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_wizard.o \
+ $(OBJS)\advlib_animateg.o \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_sound.o \
endif
ifeq ($(WXUNIV),1)
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.o \
$(OBJS)\advlib_datavcmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bmpcboxg.o \
$(OBJS)\advlib_splash.o \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_wizard.o \
+ $(OBJS)\advlib_animateg.o \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_sound.o \
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_anidecod.o: ../../src/common/anidecod.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_appcmn.o: ../../src/common/appcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_animatecmn.o: ../../src/common/animatecmn.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_datavcmn.o: ../../src/common/datavcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_animateg.o: ../../src/generic/animateg.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_anidecod.o: ../../src/common/anidecod.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_appcmn.o: ../../src/common/appcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_animatecmn.o: ../../src/common/animatecmn.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_datavcmn.o: ../../src/common/datavcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_animateg.o: ../../src/generic/animateg.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_anidecod.o: ../../src/common/anidecod.cpp
+ $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\coredll_appcmn.o: ../../src/common/appcmn.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_anidecod.o: ../../src/common/anidecod.cpp
+ $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\corelib_appcmn.o: ../../src/common/appcmn.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advdll_datectrl.o: ../../src/msw/datectrl.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_animatecmn.o: ../../src/common/animatecmn.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_datavcmn.o: ../../src/common/datavcmn.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advdll_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_animateg.o: ../../src/generic/animateg.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advlib_datectrl.o: ../../src/msw/datectrl.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_animatecmn.o: ../../src/common/animatecmn.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_datavcmn.o: ../../src/common/datavcmn.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\advlib_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_animateg.o: ../../src/generic/animateg.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_fdrepdlg.obj \
$(OBJS)\monodll_fontdlg.obj \
$(OBJS)\monodll_accesscmn.obj \
+ $(OBJS)\monodll_anidecod.obj \
$(OBJS)\monodll_appcmn.obj \
$(OBJS)\monodll_artprov.obj \
$(OBJS)\monodll_artstd.obj \
$(OBJS)\monodll_mono.obj \
$(OBJS)\monodll_win32.obj \
$(OBJS)\monodll_accesscmn.obj \
+ $(OBJS)\monodll_anidecod.obj \
$(OBJS)\monodll_appcmn.obj \
$(OBJS)\monodll_artprov.obj \
$(OBJS)\monodll_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_datavcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_animateg.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_OBJECTS = \
+ $(OBJS)\monodll_animatecmn.obj \
$(OBJS)\monodll_datavcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bmpcboxg.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_animateg.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monolib_fdrepdlg.obj \
$(OBJS)\monolib_fontdlg.obj \
$(OBJS)\monolib_accesscmn.obj \
+ $(OBJS)\monolib_anidecod.obj \
$(OBJS)\monolib_appcmn.obj \
$(OBJS)\monolib_artprov.obj \
$(OBJS)\monolib_artstd.obj \
$(OBJS)\monolib_mono.obj \
$(OBJS)\monolib_win32.obj \
$(OBJS)\monolib_accesscmn.obj \
+ $(OBJS)\monolib_anidecod.obj \
$(OBJS)\monolib_appcmn.obj \
$(OBJS)\monolib_artprov.obj \
$(OBJS)\monolib_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_datavcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_animateg.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
+ $(OBJS)\monolib_animatecmn.obj \
$(OBJS)\monolib_datavcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bmpcboxg.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_animateg.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\coredll_fdrepdlg.obj \
$(OBJS)\coredll_fontdlg.obj \
$(OBJS)\coredll_accesscmn.obj \
+ $(OBJS)\coredll_anidecod.obj \
$(OBJS)\coredll_appcmn.obj \
$(OBJS)\coredll_artprov.obj \
$(OBJS)\coredll_artstd.obj \
$(OBJS)\coredll_mono.obj \
$(OBJS)\coredll_win32.obj \
$(OBJS)\coredll_accesscmn.obj \
+ $(OBJS)\coredll_anidecod.obj \
$(OBJS)\coredll_appcmn.obj \
$(OBJS)\coredll_artprov.obj \
$(OBJS)\coredll_artstd.obj \
$(OBJS)\corelib_fdrepdlg.obj \
$(OBJS)\corelib_fontdlg.obj \
$(OBJS)\corelib_accesscmn.obj \
+ $(OBJS)\corelib_anidecod.obj \
$(OBJS)\corelib_appcmn.obj \
$(OBJS)\corelib_artprov.obj \
$(OBJS)\corelib_artstd.obj \
$(OBJS)\corelib_mono.obj \
$(OBJS)\corelib_win32.obj \
$(OBJS)\corelib_accesscmn.obj \
+ $(OBJS)\corelib_anidecod.obj \
$(OBJS)\corelib_appcmn.obj \
$(OBJS)\corelib_artprov.obj \
$(OBJS)\corelib_artstd.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_datavcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_animateg.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
+ $(OBJS)\advdll_animatecmn.obj \
$(OBJS)\advdll_datavcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bmpcboxg.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_animateg.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_sound.obj \
!endif
!if "$(WXUNIV)" == "0"
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_datavcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_animateg.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_sound.obj \
!endif
!if "$(WXUNIV)" == "1"
____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
+ $(OBJS)\advlib_animatecmn.obj \
$(OBJS)\advlib_datavcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bmpcboxg.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_animateg.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_sound.obj \
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\coredll_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_anidecod.obj: ..\..\src\common\anidecod.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\corelib_appcmn.obj: ..\..\src\common\appcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
$(OBJS)\advdll_datectrl.obj: ..\..\src\msw\datectrl.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
$(OBJS)\advdll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+$(OBJS)\advdll_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+
$(OBJS)\advdll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
$(OBJS)\advlib_datectrl.obj: ..\..\src\msw\datectrl.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_animatecmn.obj: ..\..\src\common\animatecmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_datavcmn.obj: ..\..\src\common\datavcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
$(OBJS)\advlib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+$(OBJS)\advlib_animateg.obj: ..\..\src\generic\animateg.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+
$(OBJS)\advlib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
$(OBJS)\monodll_fdrepdlg.obj &
$(OBJS)\monodll_fontdlg.obj &
$(OBJS)\monodll_accesscmn.obj &
+ $(OBJS)\monodll_anidecod.obj &
$(OBJS)\monodll_appcmn.obj &
$(OBJS)\monodll_artprov.obj &
$(OBJS)\monodll_artstd.obj &
$(OBJS)\monodll_mono.obj &
$(OBJS)\monodll_win32.obj &
$(OBJS)\monodll_accesscmn.obj &
+ $(OBJS)\monodll_anidecod.obj &
$(OBJS)\monodll_appcmn.obj &
$(OBJS)\monodll_artprov.obj &
$(OBJS)\monodll_artstd.obj &
____ADVANCED_SRC_FILENAMES_OBJECTS =
!ifeq WXUNIV 0
____ADVANCED_SRC_FILENAMES_OBJECTS = &
+ $(OBJS)\monodll_animatecmn.obj &
$(OBJS)\monodll_datavcmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bmpcboxg.obj &
$(OBJS)\monodll_splash.obj &
$(OBJS)\monodll_tipdlg.obj &
$(OBJS)\monodll_wizard.obj &
+ $(OBJS)\monodll_animateg.obj &
$(OBJS)\monodll_taskbarcmn.obj &
$(OBJS)\monodll_aboutdlg.obj &
$(OBJS)\monodll_sound.obj &
!endif
!ifeq WXUNIV 1
____ADVANCED_SRC_FILENAMES_OBJECTS = &
+ $(OBJS)\monodll_animatecmn.obj &
$(OBJS)\monodll_datavcmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bmpcboxg.obj &
$(OBJS)\monodll_splash.obj &
$(OBJS)\monodll_tipdlg.obj &
$(OBJS)\monodll_wizard.obj &
+ $(OBJS)\monodll_animateg.obj &
$(OBJS)\monodll_taskbarcmn.obj &
$(OBJS)\monodll_aboutdlg.obj &
$(OBJS)\monodll_sound.obj &
$(OBJS)\monolib_fdrepdlg.obj &
$(OBJS)\monolib_fontdlg.obj &
$(OBJS)\monolib_accesscmn.obj &
+ $(OBJS)\monolib_anidecod.obj &
$(OBJS)\monolib_appcmn.obj &
$(OBJS)\monolib_artprov.obj &
$(OBJS)\monolib_artstd.obj &
$(OBJS)\monolib_mono.obj &
$(OBJS)\monolib_win32.obj &
$(OBJS)\monolib_accesscmn.obj &
+ $(OBJS)\monolib_anidecod.obj &
$(OBJS)\monolib_appcmn.obj &
$(OBJS)\monolib_artprov.obj &
$(OBJS)\monolib_artstd.obj &
____ADVANCED_SRC_FILENAMES_1_OBJECTS =
!ifeq WXUNIV 0
____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
+ $(OBJS)\monolib_animatecmn.obj &
$(OBJS)\monolib_datavcmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bmpcboxg.obj &
$(OBJS)\monolib_splash.obj &
$(OBJS)\monolib_tipdlg.obj &
$(OBJS)\monolib_wizard.obj &
+ $(OBJS)\monolib_animateg.obj &
$(OBJS)\monolib_taskbarcmn.obj &
$(OBJS)\monolib_aboutdlg.obj &
$(OBJS)\monolib_sound.obj &
!endif
!ifeq WXUNIV 1
____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
+ $(OBJS)\monolib_animatecmn.obj &
$(OBJS)\monolib_datavcmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bmpcboxg.obj &
$(OBJS)\monolib_splash.obj &
$(OBJS)\monolib_tipdlg.obj &
$(OBJS)\monolib_wizard.obj &
+ $(OBJS)\monolib_animateg.obj &
$(OBJS)\monolib_taskbarcmn.obj &
$(OBJS)\monolib_aboutdlg.obj &
$(OBJS)\monolib_sound.obj &
$(OBJS)\coredll_fdrepdlg.obj &
$(OBJS)\coredll_fontdlg.obj &
$(OBJS)\coredll_accesscmn.obj &
+ $(OBJS)\coredll_anidecod.obj &
$(OBJS)\coredll_appcmn.obj &
$(OBJS)\coredll_artprov.obj &
$(OBJS)\coredll_artstd.obj &
$(OBJS)\coredll_mono.obj &
$(OBJS)\coredll_win32.obj &
$(OBJS)\coredll_accesscmn.obj &
+ $(OBJS)\coredll_anidecod.obj &
$(OBJS)\coredll_appcmn.obj &
$(OBJS)\coredll_artprov.obj &
$(OBJS)\coredll_artstd.obj &
$(OBJS)\corelib_fdrepdlg.obj &
$(OBJS)\corelib_fontdlg.obj &
$(OBJS)\corelib_accesscmn.obj &
+ $(OBJS)\corelib_anidecod.obj &
$(OBJS)\corelib_appcmn.obj &
$(OBJS)\corelib_artprov.obj &
$(OBJS)\corelib_artstd.obj &
$(OBJS)\corelib_mono.obj &
$(OBJS)\corelib_win32.obj &
$(OBJS)\corelib_accesscmn.obj &
+ $(OBJS)\corelib_anidecod.obj &
$(OBJS)\corelib_appcmn.obj &
$(OBJS)\corelib_artprov.obj &
$(OBJS)\corelib_artstd.obj &
____ADVANCED_SRC_FILENAMES_2_OBJECTS =
!ifeq WXUNIV 0
____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
+ $(OBJS)\advdll_animatecmn.obj &
$(OBJS)\advdll_datavcmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bmpcboxg.obj &
$(OBJS)\advdll_splash.obj &
$(OBJS)\advdll_tipdlg.obj &
$(OBJS)\advdll_wizard.obj &
+ $(OBJS)\advdll_animateg.obj &
$(OBJS)\advdll_taskbarcmn.obj &
$(OBJS)\advdll_aboutdlg.obj &
$(OBJS)\advdll_sound.obj &
!endif
!ifeq WXUNIV 1
____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
+ $(OBJS)\advdll_animatecmn.obj &
$(OBJS)\advdll_datavcmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bmpcboxg.obj &
$(OBJS)\advdll_splash.obj &
$(OBJS)\advdll_tipdlg.obj &
$(OBJS)\advdll_wizard.obj &
+ $(OBJS)\advdll_animateg.obj &
$(OBJS)\advdll_taskbarcmn.obj &
$(OBJS)\advdll_aboutdlg.obj &
$(OBJS)\advdll_sound.obj &
____ADVANCED_SRC_FILENAMES_3_OBJECTS =
!ifeq WXUNIV 0
____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
+ $(OBJS)\advlib_animatecmn.obj &
$(OBJS)\advlib_datavcmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bmpcboxg.obj &
$(OBJS)\advlib_splash.obj &
$(OBJS)\advlib_tipdlg.obj &
$(OBJS)\advlib_wizard.obj &
+ $(OBJS)\advlib_animateg.obj &
$(OBJS)\advlib_taskbarcmn.obj &
$(OBJS)\advlib_aboutdlg.obj &
$(OBJS)\advlib_sound.obj &
!endif
!ifeq WXUNIV 1
____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
+ $(OBJS)\advlib_animatecmn.obj &
$(OBJS)\advlib_datavcmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bmpcboxg.obj &
$(OBJS)\advlib_splash.obj &
$(OBJS)\advlib_tipdlg.obj &
$(OBJS)\advlib_wizard.obj &
+ $(OBJS)\advlib_animateg.obj &
$(OBJS)\advlib_taskbarcmn.obj &
$(OBJS)\advlib_aboutdlg.obj &
$(OBJS)\advlib_sound.obj &
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monodll_anidecod.obj : .AUTODEPEND ..\..\src\common\anidecod.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monodll_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monodll_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monodll_datavcmn.obj : .AUTODEPEND ..\..\src\common\datavcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monodll_animateg.obj : .AUTODEPEND ..\..\src\generic\animateg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monodll_taskbarcmn.obj : .AUTODEPEND ..\..\src\common\taskbarcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monolib_anidecod.obj : .AUTODEPEND ..\..\src\common\anidecod.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monolib_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monolib_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monolib_datavcmn.obj : .AUTODEPEND ..\..\src\common\datavcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\monolib_animateg.obj : .AUTODEPEND ..\..\src\generic\animateg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\monolib_taskbarcmn.obj : .AUTODEPEND ..\..\src\common\taskbarcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\coredll_anidecod.obj : .AUTODEPEND ..\..\src\common\anidecod.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\coredll_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
!endif
+!ifeq USE_GUI 1
+$(OBJS)\corelib_anidecod.obj : .AUTODEPEND ..\..\src\common\anidecod.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
!ifeq USE_GUI 1
$(OBJS)\corelib_appcmn.obj : .AUTODEPEND ..\..\src\common\appcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
$(OBJS)\advdll_datectrl.obj : .AUTODEPEND ..\..\src\msw\datectrl.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_datavcmn.obj : .AUTODEPEND ..\..\src\common\datavcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
$(OBJS)\advdll_wizard.obj : .AUTODEPEND ..\..\src\generic\wizard.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_animateg.obj : .AUTODEPEND ..\..\src\generic\animateg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_taskbarcmn.obj : .AUTODEPEND ..\..\src\common\taskbarcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
$(OBJS)\advlib_datectrl.obj : .AUTODEPEND ..\..\src\msw\datectrl.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_animatecmn.obj : .AUTODEPEND ..\..\src\common\animatecmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_datavcmn.obj : .AUTODEPEND ..\..\src\common\datavcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
$(OBJS)\advlib_wizard.obj : .AUTODEPEND ..\..\src\generic\wizard.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_animateg.obj : .AUTODEPEND ..\..\src\generic\animateg.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_taskbarcmn.obj : .AUTODEPEND ..\..\src\common\taskbarcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
# PROP Default_Filter ""
# Begin Source File
+SOURCE=..\..\src\common\animatecmn.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\common\datavcmn.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\src\generic\animateg.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\generic\bmpcboxg.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\bmpcbox.h
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\bmpcbox.h
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\src\common\anidecod.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\common\appcmn.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\generic\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\generic\bmpcbox.h
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\anidecod.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\wx\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\artprov.h
# End Source File
# Begin Source File
DEFAULT_wxUSE_VALIDATORS=no
DEFAULT_wxUSE_ACCEL=no
+ DEFAULT_wxUSE_ANIMATIONCTRL=no
DEFAULT_wxUSE_BUTTON=no
DEFAULT_wxUSE_BMPBUTTON=no
DEFAULT_wxUSE_BITMAPCOMBOBOX=no
DEFAULT_wxUSE_VALIDATORS=yes
DEFAULT_wxUSE_ACCEL=yes
+ DEFAULT_wxUSE_ANIMATIONCTRL=yes
DEFAULT_wxUSE_BUTTON=yes
DEFAULT_wxUSE_BMPBUTTON=yes
DEFAULT_wxUSE_BITMAPCOMBOBOX=yes
dnl used (and vice versa)
if test "$wxUSE_CONTROLS" = "yes"; then
DEFAULT_wxUSE_ACCEL=yes
+ DEFAULT_wxUSE_ANIMATIONCTRL=yes
DEFAULT_wxUSE_BMPBUTTON=yes
DEFAULT_wxUSE_BUTTON=yes
DEFAULT_wxUSE_CALCTRL=yes
DEFAULT_wxUSE_TIPWINDOW=yes
elif test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_ACCEL=no
+ DEFAULT_wxUSE_ANIMATIONCTRL=no
DEFAULT_wxUSE_BMPBUTTON=no
DEFAULT_wxUSE_BUTTON=no
DEFAULT_wxUSE_CALCTRL=no
fi
WX_ARG_ENABLE(accel, [ --enable-accel use accelerators], wxUSE_ACCEL)
+WX_ARG_ENABLE(animatectrl, [ --enable-animatectrl use wxAnimationCtrl class], wxUSE_ANIMATIONCTRL)
WX_ARG_ENABLE(button, [ --enable-button use wxButton class], wxUSE_BUTTON)
WX_ARG_ENABLE(bmpbutton, [ --enable-bmpbutton use wxBitmapButton class], wxUSE_BMPBUTTON)
WX_ARG_ENABLE(bmpcombobox, [ --enable-bmpcombobox use wxBitmapComboBox class], wxUSE_BITMAPCOMBOBOX)
USES_CONTROLS=1
fi
+if test "$wxUSE_ACCEL" = "yes"; then
+ AC_DEFINE(wxUSE_ANIMATIONCTRL)
+ USES_CONTROLS=1
+ SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS animate"
+fi
+
if test "$wxUSE_BUTTON" = "yes"; then
AC_DEFINE(wxUSE_BUTTON)
USES_CONTROLS=1
- Support for right-to-left text layout (started by Diaa Sami during Google Summer of
Code, with a lot of help from Tim Kosse and others).
+- wxAnimationCtrl added (Francesco Montorsi)
- Added wxAboutBox() function for displaying the standard about dialog
- Added wxID_PAGE_SETUP standard id.
- Added wxSize::IncBy() and DecBy() methods.
--- /dev/null
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: animatctrl.tex
+%% Purpose: wxAnimationCtrl documentation
+%% Author: Francesco Montorsi
+%% Created: 24-9-2006
+%% RCS-ID: $Id$
+%% Copyright: (c) 2006 Francesco Montorsi
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxAnimationCtrl}}\label{wxanimationctrl}
+
+This is a static control which displays an animation.
+wxAnimationCtrl API is simple as possible and won't give you full control on the
+animation; if you need it then use \helpref{wxMediaCtrl}{wxmediactrl}.
+
+This control is useful to display a (small) animation while doing a long task
+(e.g. a "throbber").
+
+It is only available if \texttt{wxUSE\_ANIMATIONCTRL} is set to $1$ (the default).
+
+\wxheading{Derived from}
+
+\helpref{wxControl}{wxcontrol}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/animate.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxAC\_DEFAULT\_STYLE}}{The default style: wxNO_BORDER.}
+\twocolitem{\windowstyle{wxAC\_NO_AUTORESIZE}}{By default, the control will adjust
+its size to exactly fit to the size of the animation when \helpref{SetAnimation}{wxanimationctrlsetanimation}
+is called. If this style flag is given, the control will not change its size}
+\end{twocollist}
+
+%\wxheading{Event handling}
+%
+%\twocolwidtha{7cm}%
+%\begin{twocollist}\itemsep=0pt
+%\twocolitem{{\bf EVT\_ANIMATION\_END(id, func)}}{}
+%\end{twocollist}
+
+\wxheading{See also}
+
+\helpref{wxAnimation}{wxanimation}
+
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxAnimationCtrl::wxAnimationCtrl}\label{wxanimationctrl}
+
+\func{}{wxAnimationCtrl}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxAnimation\& }{anim},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxAC\_DEFAULT\_STYLE},\rtfsp
+\param{const wxString\& }{name = ``animationctrl"}}
+
+Initializes the object and calls \helpref{Create}{wxanimationctrlcreate} with
+all the parameters.
+
+
+\membersection{wxAnimationCtrl::Create}\label{wxanimationctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow *}{parent},\rtfsp
+\param{wxWindowID}{ id},\rtfsp
+\param{const wxAnimation\& }{anim},\rtfsp
+\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\& }{size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxAC\_DEFAULT\_STYLE},\rtfsp
+\param{const wxString\& }{name = ``animationctrl"}}
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window, must not be non-\texttt{NULL}.}
+
+\docparam{id}{The identifier for the control.}
+
+\docparam{anim}{The initial animation shown in the control.}
+
+\docparam{pos}{Initial position.}
+
+\docparam{size}{Initial size.}
+
+\docparam{style}{The window style, see {\tt wxAC\_*} flags.}
+
+\docparam{name}{Control name.}
+
+After control creation you must explicitely call \helpref{Play}{wxanimationctrlplay}
+to start to play the animation. Until that function won't be called, the first frame
+of the animation is displayed.
+
+\wxheading{Return value}
+
+\true if the control was successfully created or \false if creation failed.
+
+
+\membersection{wxAnimationCtrl::GetAnimation}\label{wxanimationctrlgetanimation}
+
+\constfunc{wxAnimation}{GetAnimation}{\void}
+
+Returns the animation associated with this control.
+
+
+\membersection{wxAnimationCtrl::IsPlaying}\label{wxanimationctrlisplaying}
+
+\constfunc{bool}{IsPlaying}{\void}
+
+Returns \true if the animation is being played.
+
+
+\membersection{wxAnimationCtrl::LoadFile}\label{wxanimationctrlloadfile}
+
+\func{bool}{LoadFile}{\param{const wxString \&}{ file}, \param{wxAnimationType }{ animType = wxANIMATION\_TYPE\_ANY}}
+
+Loads the animation from the given file and calls \helpref{SetAnimation}{wxanimationctrlsetanimation}.
+See \helpref{wxAnimation::LoadFile}{wxanimationloadfile} for more info.
+
+
+\membersection{wxAnimationCtrl::Play}\label{wxanimationctrlplay}
+
+\func{bool}{Play}{\void}
+
+Starts playing the animation.
+The animation is always played in loop mode (unless the last frame of the animation
+has an infinite delay time) and always start from the first frame
+(even if you \helpref{atopped}{wxanimationctrlstop} it while some other frame was
+displayed).
+
+
+\membersection{wxAnimationCtrl::SetAnimation}\label{wxanimationctrlsetanimation}
+
+\func{void}{SetAnimation}{\param{const wxAnimation \&}{ anim}}
+
+Sets the animation to play in this control.
+If the previous animation is being played, it's \helpref{Stopped}{wxanimationctrlstop}.
+
+Until \helpref{Play}{wxanimationctrlplay} isn't called, the first frame
+of the animation is displayed.
+
+If {\tt wxNullAnimation} is given as animation, the control will be cleared to display
+the background colour (see \helpref{wxWindow::GetBackgroundColour}{wxwindowgetbackgroundcolour}).
+
+
+\membersection{wxAnimationCtrl::Stop}\label{wxanimationctrlstop}
+
+\func{void}{Stop}{\void}
+
+Stops playing the animation.
+The control will show the last frame rendered of the current animation until
+\helpref{Play}{wxanimationctrlplay} is called.
--- /dev/null
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: animation.tex
+%% Purpose: wxAnimation documentation
+%% Author: Francesco Montorsi
+%% Created: 24-9-2006
+%% RCS-ID: $Id$
+%% Copyright: (c) 2006 Francesco Montorsi
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxAnimation}}\label{wxanimation}
+
+This class encapsulates the concept of a platform-dependent animation.
+An animation is a sequence of frames of the same size.
+Sound is not supported by wxAnimation.
+
+\wxheading{Derived from}
+
+\helpref{wxGDIObject}{wxgdiobject}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/animate.h>
+
+\wxheading{Predefined objects}
+
+Objects:
+
+{\bf wxNullAnimation}
+
+\wxheading{See also}
+
+\helpref{wxAnimationCtrl}{wxanimationctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxAnimation::wxAnimation}\label{wxanimationctor}
+
+\func{}{wxAnimation}{\void}
+
+Default constructor.
+
+\func{}{wxAnimation}{\param{const wxAnimation\& }{anim}}
+
+Copy constructor.
+wxAnimation objects are reference counted so that this operation is very fast.
+
+\func{}{wxAnimation}{\param{const wxString\& }{name}, \param{wxAnimationType}{ type = wxANIMATION\_TYPE\_ANY}}
+
+Loads an animation from a file.
+
+\docparam{name}{The name of the file to load.}
+
+\docparam{type}{See \helpref{LoadFile}{wxanimationloadfile} for more info.}
+
+
+\membersection{wxAnimation::\destruct{wxAnimation}}\label{wxanimationdtor}
+
+\func{}{\destruct{wxAnimation}}{\void}
+
+Destroys the wxAnimation object and possibly the underlying animation data.
+Because reference counting is used, the animation may not actually be
+destroyed at this point - only when the reference count is zero will the
+data be deleted.
+
+
+\membersection{wxAnimation::GetDelay}\label{wxanimationgetdelay}
+
+\constfunc{int}{GetDelay}{\param{size_t }{i}}
+
+Returns the delay for the i-th frame in milliseconds.
+If {\tt -1} is returned the frame is to be displayed forever.
+
+
+\membersection{wxAnimation::GetFrameCount}\label{wxanimationgetframecount}
+
+\constfunc{size_t}{GetFrameCount}{\void}
+
+Returns the number of frames for this animation.
+
+
+\membersection{wxAnimation::GetFrame}\label{wxanimationgetframe}
+
+\constfunc{wxImage}{GetFrame}{\param{size_t }{i}}
+
+Returns the i-th frame as a \helpref{wxImage}{wximage}.
+
+
+\membersection{wxAnimation::GetSize}\label{wxanimationgetsize}
+
+\constfunc{wxSize}{GetSize}{\void}
+
+Returns the size of the animation.
+
+
+\membersection{wxAnimation::IsOk}\label{wxanimationisok}
+
+\constfunc{bool}{IsOk}{\void}
+
+Returns \true if animation data is present.
+
+
+\membersection{wxAnimation::Load}\label{wxanimationload}
+
+\func{bool}{Load}{\param{wxInputStream&}{ stream}, \param{wxAnimationType}{ type = wxANIMATION\_TYPE\_ANY}}
+
+Loads an animation from the given stream.
+
+\wxheading{Parameters}
+
+\docparam{stream}{The stream to use to load the animation.}
+
+\docparam{type}{One of the following values:
+
+\twocolwidtha{5cm}
+\begin{twocollist}
+\twocolitem{\indexit{wxANIM\_TYPE\_GIF}}{Load an animated GIF file.}
+\twocolitem{\indexit{wxANIM\_TYPE\_ANI}}{Load an ANI file.}
+\twocolitem{\indexit{wxANIM\_TYPE\_ANY}}{Try to autodetect the filetype.}
+\end{twocollist}
+}
+
+\wxheading{Return value}
+
+\true if the operation succeeded, \false otherwise.
+
+
+\membersection{wxAnimation::LoadFile}\label{wxanimationloadfile}
+
+\func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{wxAnimationType}{ type = wxANIMATION\_TYPE\_ANY}}
+
+Loads an animation from a file.
+
+\wxheading{Parameters}
+
+\docparam{name}{A filename.}
+
+\docparam{type}{One of the following values:
+
+\twocolwidtha{5cm}
+\begin{twocollist}
+\twocolitem{\indexit{wxANIM\_TYPE\_GIF}}{Load an animated GIF file.}
+\twocolitem{\indexit{wxANIM\_TYPE\_ANI}}{Load an ANI file.}
+\twocolitem{\indexit{wxANIM\_TYPE\_ANY}}{Try to autodetect the filetype.}
+\end{twocollist}
+}
+
+\wxheading{Return value}
+
+\true if the operation succeeded, \false otherwise.
+
\twocolwidtha{6cm}
\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{wxAnimationCtrl}{wxanimationctrl}}{A control to display an animation}
\twocolitem{\helpref{wxControl}{wxcontrol}}{The base class for controls}
\twocolitem{\helpref{wxButton}{wxbutton}}{Push button control, displaying text}
\twocolitem{\helpref{wxBitmapButton}{wxbitmapbutton}}{Push button control, displaying a bitmap}
\input activevt.tex
\input activexcontainer.tex
\input activexevt.tex
+\input animation.tex
+\input animatctrl.tex
\input app.tex
\input apptraits.tex
\input archive.tex
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/anidecod.h
+// Purpose: wxANIDecoder, ANI reader for wxImage and wxAnimation
+// Author: Francesco Montorsi
+// CVS-ID: $Id$
+// Copyright: (c) 2006 Francesco Montorsi
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_ANIDECOD_H
+#define _WX_ANIDECOD_H
+
+#include "wx/defs.h"
+
+#if wxUSE_STREAMS && wxUSE_GIF
+
+#include "wx/stream.h"
+#include "wx/image.h"
+#include "wx/animdecod.h"
+
+
+class /*WXDLLEXPORT*/ wxANIFrameInfo;
+
+WX_DECLARE_OBJARRAY(wxANIFrameInfo, wxANIFrameInfoArray);
+WX_DECLARE_OBJARRAY(wxImage, wxImageArray);
+
+// --------------------------------------------------------------------------
+// wxANIDecoder class
+// --------------------------------------------------------------------------
+
+class WXDLLEXPORT wxANIDecoder : public wxAnimationDecoder
+{
+private:
+
+ // frames stored as wxImage(s): ANI files are meant to be used mostly for animated
+ // cursors and thus they do not use any optimization to encode differences between
+ // two frames: they are just a list of images to display sequentially.
+ wxImageArray m_images;
+
+ // the info about each image stored in m_images.
+ // NB: m_info.GetCount() may differ from m_images.GetCount()!
+ wxANIFrameInfoArray m_info;
+
+ // this is the wxCURHandler used to load the ICON chunk of the ANI files
+ static wxCURHandler sm_handler;
+
+public:
+ virtual wxSize GetFrameSize(size_t frame) const;
+ virtual wxPoint GetFramePosition(size_t frame) const;
+ virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const;
+ virtual long GetDelay(size_t frame) const;
+
+public:
+ // constructor, destructor, etc.
+ wxANIDecoder();
+ ~wxANIDecoder();
+
+public: // implementation of wxAnimationDecoder's pure virtuals
+
+ virtual bool CanRead( wxInputStream& stream ) const;
+ virtual bool Load( wxInputStream& stream );
+
+ bool ConvertToImage(size_t frame, wxImage *image) const;
+
+ wxAnimationDecoder *Clone() const
+ { return new wxANIDecoder; }
+ wxAnimationType GetType() const
+ { return wxANIMATION_TYPE_ANI; }
+
+private:
+ DECLARE_NO_COPY_CLASS(wxANIDecoder)
+};
+
+
+#endif // wxUSE_STREAM && wxUSE_GIF
+#endif // _WX_ANIDECOD_H
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/animate.h
+// Purpose: wxAnimation and wxAnimationCtrl
+// Author: Julian Smart and Guillermo Rodriguez Garcia
+// Modified by: Francesco Montorsi
+// Created: 13/8/99
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_ANIMATEH__
+#define _WX_ANIMATEH__
+
+#include "wx/defs.h"
+
+#if wxUSE_ANIMATIONCTRL
+
+#include <wx/defs.h>
+#include <wx/string.h>
+#include <wx/gdicmn.h>
+#include <wx/list.h>
+#include <wx/timer.h>
+#include <wx/bitmap.h>
+#include <wx/colour.h>
+#include <wx/control.h>
+#include <wx/animdecod.h>
+
+class WXDLLIMPEXP_ADV wxAnimation;
+
+extern WXDLLEXPORT_DATA(wxAnimation) wxNullAnimation;
+extern WXDLLEXPORT_DATA(const wxChar) wxAnimationCtrlNameStr[];
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationBase
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxAnimationBase : public wxGDIObject
+{
+public:
+ wxAnimationBase() {}
+
+ virtual bool IsOk() const = 0;
+
+ // can be -1
+ virtual int GetDelay(size_t i) const = 0;
+
+ virtual size_t GetFrameCount() const = 0;
+ virtual wxImage GetFrame(size_t i) const = 0;
+ virtual wxSize GetSize() const = 0;
+
+ virtual bool LoadFile(const wxString &name, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
+ virtual bool Load(wxInputStream &stream, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
+
+protected:
+ DECLARE_ABSTRACT_CLASS(wxAnimationBase)
+};
+
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrlBase
+// ----------------------------------------------------------------------------
+
+// do not autoresize to the animation's size when SetAnimation() is called
+#define wxAC_NO_AUTORESIZE (0x0010)
+
+// default style does not include wxAC_NO_AUTORESIZE, that is, the control
+// auto-resizes by default to fit the new animation when SetAnimation() is called
+#define wxAC_DEFAULT_STYLE (wxNO_BORDER)
+
+
+class WXDLLIMPEXP_ADV wxAnimationCtrlBase : public wxControl
+{
+public:
+ wxAnimationCtrlBase() {}
+
+public: // public API
+
+ virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0;
+
+ virtual void SetAnimation(const wxAnimation &anim) = 0;
+ virtual wxAnimation GetAnimation() const = 0;
+
+ virtual bool Play() = 0;
+ virtual void Stop() = 0;
+
+ virtual bool IsPlaying() const = 0;
+
+private:
+ DECLARE_ABSTRACT_CLASS(wxAnimationCtrlBase)
+};
+
+
+// ----------------------------------------------------------------------------
+// include the platform-specific version of the wxAnimationCtrl class
+// ----------------------------------------------------------------------------
+
+#if defined(__WXGTK__)
+ #include "wx/gtk/animate.h"
+#else
+ #include "wx/generic/animate.h"
+#endif
+
+#endif // wxUSE_ANIMATIONCTRL
+
+#endif // _WX_ANIMATEH__
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/animdecod.h
+// Purpose: wxAnimationDecoder
+// Author: Francesco Montorsi
+// CVS-ID: $Id$
+// Copyright: (c) 2006 Francesco Montorsi
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_ANIMDECOD_H
+#define _WX_ANIMDECOD_H
+
+#include "wx/defs.h"
+
+#if wxUSE_STREAMS && wxUSE_GIF
+
+#include "wx/stream.h"
+#include "wx/image.h"
+
+/*
+
+ Differences between a wxAnimationDecoder and a wxImageHandler:
+
+ 1) wxImageHandlers always load an input stream directly into a given wxImage
+ object converting from the format-specific data representation to the
+ wxImage native format (RGB24).
+ wxAnimationDecoders always load an input stream using some optimized format
+ to store it which is format-depedent. This allows to store a (possibly big)
+ animation using a format which is a good compromise between required memory
+ and time required to blit in on the screen.
+
+ 2) wxAnimationDecoders contain the animation data in some internal var.
+ That's why they derive from wxObjectRefData: they are data which can be shared.
+
+ 3) wxAnimationDecoders can be used by a wxImageHandler to retrieve a frame
+ in wxImage format; the viceversa cannot be done.
+
+ 4) wxAnimationDecoders are decoders only, thus do not support save features.
+
+ 5) wxAnimationDecoders are directly used by wxAnimation (generic implementation)
+ as wxObjectRefData while they need to be 'wrapped' by a wxImageHandler for
+ wxImage uses.
+
+*/
+
+
+// --------------------------------------------------------------------------
+// Constants
+// --------------------------------------------------------------------------
+
+// NB: the values of these enum items are not casual but coincide with the
+// GIF disposal codes. Do not change them !!
+enum wxAnimationDisposal
+{
+ // No disposal specified. The decoder is not required to take any action.
+ wxANIM_UNSPECIFIED = -1,
+
+ // Do not dispose. The graphic is to be left in place.
+ wxANIM_DONOTREMOVE = 0,
+
+ // Restore to background color. The area used by the graphic must be
+ // restored to the background color.
+ wxANIM_TOBACKGROUND = 1,
+
+ // Restore to previous. The decoder is required to restore the area
+ // overwritten by the graphic with what was there prior to rendering the graphic.
+ wxANIM_TOPREVIOUS = 2
+};
+
+enum wxAnimationType
+{
+ wxANIMATION_TYPE_INVALID,
+ wxANIMATION_TYPE_GIF,
+ wxANIMATION_TYPE_ANI,
+
+ wxANIMATION_TYPE_ANY
+};
+
+
+// --------------------------------------------------------------------------
+// wxAnimationDecoder class
+// --------------------------------------------------------------------------
+
+class WXDLLEXPORT wxAnimationDecoder : public wxObjectRefData
+{
+protected:
+ wxSize m_szAnimation;
+ size_t m_nFrames;
+
+ // this is the colour to use for the wxANIM_TOBACKGROUND disposal.
+ // if not specified by the animation, it's set to wxNullColour
+ wxColour m_background;
+
+public: // frame specific data getters
+
+ // not all frames may be of the same size; e.g. GIF allows to
+ // specify that between two frames only a smaller portion of the
+ // entire animation has changed.
+ virtual wxSize GetFrameSize(size_t frame) const = 0;
+
+ // the position of this frame in case it's not as big as m_szAnimation
+ // or wxPoint(0,0) otherwise.
+ virtual wxPoint GetFramePosition(size_t frame) const = 0;
+
+ // what should be done after displaying this frame.
+ virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const = 0;
+
+ // the number of milliseconds this frame should be displayed.
+ // if returns -1 then the frame must be displayed forever.
+ virtual long GetDelay(size_t frame) const = 0;
+
+ // get global data
+ wxSize GetAnimationSize() const { return m_szAnimation; }
+ wxColour GetBackgroundColour() const { return m_background; }
+ size_t GetFrameCount() const { return m_nFrames; }
+
+public:
+ wxAnimationDecoder()
+ {
+ m_background = wxNullColour;
+ m_nFrames = 0;
+ }
+ ~wxAnimationDecoder() {}
+
+
+ virtual bool Load( wxInputStream& stream ) = 0;
+ virtual bool CanRead( wxInputStream& stream ) const = 0;
+
+ virtual wxAnimationDecoder *Clone() const = 0;
+ virtual wxAnimationType GetType() const = 0;
+
+ // convert given frame to wxImage
+ virtual bool ConvertToImage(size_t frame, wxImage *image) const = 0;
+};
+
+
+#endif // wxUSE_STREAM && wxUSE_GIF
+#endif // _WX_ANIMDECOD_H
+
# endif
#endif /* !defined(wxUSE_ACCEL) */
+#ifndef wxUSE_ANIMATIONCTRL
+# ifdef wxABORT_ON_CONFIG_ERROR
+# error "wxUSE_ANIMATIONCTRL must be defined."
+# else
+# define wxUSE_ANIMATIONCTRL 0
+# endif
+#endif /* !defined(wxUSE_ANIMATIONCTRL) */
+
#ifndef wxUSE_BITMAPCOMBOBOX
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_BITMAPCOMBOBOX must be defined."
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/animate.h
+// Purpose: wxAnimation and wxAnimationCtrl
+// Author: Julian Smart and Guillermo Rodriguez Garcia
+// Modified by: Francesco Montorsi
+// Created: 13/8/99
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_ANIMATEH__
+#define _WX_GENERIC_ANIMATEH__
+
+#include <wx/defs.h>
+#include <wx/string.h>
+#include <wx/gdicmn.h>
+#include <wx/list.h>
+#include <wx/timer.h>
+#include <wx/bitmap.h>
+#include <wx/colour.h>
+#include <wx/control.h>
+#include <wx/animdecod.h>
+
+class WXDLLIMPEXP_ADV wxAnimationBase;
+class WXDLLIMPEXP_ADV wxAnimationPlayer;
+class WXDLLEXPORT wxImage;
+class WXDLLEXPORT wxGIFDecoder;
+class WXDLLEXPORT wxAnimation;
+
+
+// ----------------------------------------------------------------------------
+// wxAnimation
+// ----------------------------------------------------------------------------
+
+WX_DECLARE_LIST(wxAnimationDecoder, wxAnimationDecoderList);
+
+class WXDLLIMPEXP_ADV wxAnimation : public wxAnimationBase
+{
+public:
+ wxAnimation(const wxAnimation &tocopy)
+ { Ref(tocopy); }
+ wxAnimation() {}
+ ~wxAnimation() { UnRef(); }
+
+ wxAnimation &operator= (const wxAnimation &tocopy)
+ {
+ Ref(tocopy);
+ return *this;
+ }
+
+ bool operator == (const wxAnimation& anim) const
+ { return m_refData == anim.m_refData; }
+ bool operator != (const wxAnimation& anim) const
+ { return m_refData != anim.m_refData; }
+
+ bool IsOk() const
+ { return m_refData != NULL; }
+
+ size_t GetFrameCount() const;
+ int GetDelay(size_t i) const;
+ wxImage GetFrame(size_t i) const;
+ wxSize GetSize() const;
+
+ bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY);
+ bool Load(wxInputStream &stream, wxAnimationType type = wxANIMATION_TYPE_ANY);
+
+public: // extended interface used by the generic implementation of wxAnimationCtrl
+
+ wxPoint GetFramePosition(size_t frame) const;
+ wxAnimationDisposal GetDisposalMethod(size_t frame) const;
+ wxColour GetBackgroundColour() const;
+
+protected:
+ static wxAnimationDecoderList sm_handlers;
+
+public:
+ static inline wxAnimationDecoderList& GetHandlers() { return sm_handlers; }
+ static void AddHandler(wxAnimationDecoder *handler);
+ static void InsertHandler(wxAnimationDecoder *handler);
+ static const wxAnimationDecoder *FindHandler( wxAnimationType animType );
+
+ static void CleanUpHandlers();
+ static void InitStandardHandlers();
+
+protected:
+ DECLARE_DYNAMIC_CLASS(wxAnimation)
+};
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase
+{
+public:
+ wxAnimationCtrl() {}
+ wxAnimationCtrl(wxWindow *parent,
+ wxWindowID id,
+ const wxAnimation& anim = wxNullAnimation,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxAC_DEFAULT_STYLE,
+ const wxString& name = wxAnimationCtrlNameStr)
+ {
+ Create(parent, id, anim, pos, size, style, name);
+ }
+
+ bool Create(wxWindow *parent, wxWindowID id,
+ const wxAnimation& anim = wxNullAnimation,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxAC_DEFAULT_STYLE,
+ const wxString& name = wxAnimationCtrlNameStr);
+
+ ~wxAnimationCtrl();
+
+public:
+ virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY);
+
+ virtual void Stop();
+ virtual bool Play()
+ { return Play(true /* looped */); }
+ virtual bool IsPlaying() const
+ { return m_isPlaying; }
+
+ void SetAnimation(const wxAnimation &animation);
+ wxAnimation GetAnimation() const
+ { return m_animation; }
+
+public: // event handlers
+
+ void OnPaint(wxPaintEvent& event);
+ void OnTimer(wxTimerEvent& event);
+ void OnSize(wxSizeEvent& event);
+
+public: // extended API specific to this implementation of wxAnimateCtrl
+
+ // Specify whether the animation's background colour is to be shown (the default),
+ // or whether the window background should show through
+ void SetUseWindowBackgroundColour(bool useWinBackground = true)
+ { m_useWinBackgroundColour = useWinBackground; }
+ bool IsUsingWindowBackgroundColour() const
+ { return m_useWinBackgroundColour; }
+
+ // This overload of Play() lets you specify if the animation must loop or not
+ bool Play(bool looped);
+
+ // Draw the current frame of the animation into given DC.
+ // This is fast as current frame is always cached.
+ void DrawCurrentFrame(wxDC& dc);
+
+ // Returns a wxBitmap with the current frame drawn in it
+ wxBitmap& GetBackingStore()
+ { return m_backingStore; }
+
+protected: // internal utilities
+
+ // resize this control to fit m_animation
+ void FitToAnimation();
+
+ // Draw the background; use this when e.g. previous frame had wxANIM_TOBACKGROUND disposal.
+ void DisposeToBackground(wxDC& dc);
+
+ void IncrementalUpdateBackingStore();
+ void RebuildBackingStoreUpToFrame(size_t);
+ void DrawFrame(wxDC &dc, size_t);
+
+ virtual wxSize DoGetBestSize() const;
+
+protected:
+ size_t m_currentFrame; // Current frame
+ bool m_looped; // Looped, or not
+ wxTimer m_timer; // The timer
+ wxAnimation m_animation; // The animation
+
+ bool m_isPlaying; // Is the animation playing?
+ bool m_useWinBackgroundColour; // Use animation bg colour or window bg colour?
+
+ wxBitmap m_backingStore; // The frames are drawn here and then blitted
+ // on the screen
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxAnimationCtrl)
+ DECLARE_EVENT_TABLE()
+};
+
+#endif // _WX_GENERIC_ANIMATEH__
#include "wx/stream.h"
#include "wx/image.h"
+#include "wx/animdecod.h"
+
+// internal utility used to store a frame in 8bit-per-pixel format
+class /*WXDLLEXPORT*/ GIFImage;
// --------------------------------------------------------------------------
// stream; this means that if it was not reading directly from file,
// the stream will not be correctly positioned. the
//
-enum
+enum wxGIFErrorCode
{
wxGIF_OK = 0, /* everything was OK */
wxGIF_INVFORMAT, /* error in gif header */
wxGIF_TRUNCATED /* file appears to be truncated */
};
-// Disposal method
-// Experimental; subject to change.
-//
-enum
-{
- wxGIF_D_UNSPECIFIED = -1, /* not specified */
- wxGIF_D_DONOTDISPOSE = 0, /* do not dispose */
- wxGIF_D_TOBACKGROUND = 1, /* restore to background colour */
- wxGIF_D_TOPREVIOUS = 2 /* restore to previous image */
-};
-
-
#define MAX_BLOCK_SIZE 256 /* max. block size */
// wxGIFDecoder class
// --------------------------------------------------------------------------
-// internal class for storing GIF image data
-class GIFImage
-{
-public:
- // def ctor
- GIFImage();
-
- unsigned int w; /* width */
- unsigned int h; /* height */
- unsigned int left; /* x coord (in logical screen) */
- unsigned int top; /* y coord (in logical screen) */
- int transparent; /* transparent color (-1 = none) */
- int disposal; /* disposal method (-1 = unspecified) */
- long delay; /* delay in ms (-1 = unused) */
- unsigned char *p; /* bitmap */
- unsigned char *pal; /* palette */
- unsigned int ncolours; /* number of colours */
- GIFImage *next; /* next image */
- GIFImage *prev; /* prev image */
-
- DECLARE_NO_COPY_CLASS(GIFImage)
-};
-
-
-class WXDLLEXPORT wxGIFDecoder
+class WXDLLEXPORT wxGIFDecoder : public wxAnimationDecoder
{
private:
- // logical screen
- unsigned int m_screenw; /* logical screen width */
- unsigned int m_screenh; /* logical screen height */
- int m_background; /* background color (-1 = none) */
-
- // image data
- bool m_anim; /* animated GIF */
- int m_nimages; /* number of images */
- int m_image; /* current image */
- GIFImage *m_pimage; /* pointer to current image */
- GIFImage *m_pfirst; /* pointer to first image */
- GIFImage *m_plast; /* pointer to last image */
+ // a wxArray provides a constant access time rather than a linear time
+ // like for linked lists.
+ wxArrayPtrVoid m_frames;
// decoder state vars
int m_restbits; /* remaining valid bits */
unsigned char m_buffer[MAX_BLOCK_SIZE]; /* buffer for reading */
unsigned char *m_bufp; /* pointer to next byte in buffer */
- // input stream
- wxInputStream *m_f; /* input stream */
-
private:
- int getcode(int bits, int abfin);
- int dgif(GIFImage *img, int interl, int bits);
+ int getcode(wxInputStream& stream, int bits, int abfin);
+ wxGIFErrorCode dgif(wxInputStream& stream, GIFImage *img, int interl, int bits);
public:
// get data of current frame
- int GetFrameIndex() const;
- unsigned char* GetData() const;
- unsigned char* GetPalette() const;
- unsigned int GetNcolours() const;
- unsigned int GetWidth() const;
- unsigned int GetHeight() const;
- unsigned int GetLeft() const;
- unsigned int GetTop() const;
- int GetDisposalMethod() const;
- int GetTransparentColour() const;
- long GetDelay() const;
-
- // get global data
- unsigned int GetLogicalScreenWidth() const;
- unsigned int GetLogicalScreenHeight() const;
- int GetBackgroundColour() const;
- int GetNumberOfFrames() const;
- bool IsAnimation() const;
-
- // move through the animation
- bool GoFirstFrame();
- bool GoLastFrame();
- bool GoNextFrame(bool cyclic = false);
- bool GoPrevFrame(bool cyclic = false);
- bool GoFrame(int which);
+ unsigned char* GetData(size_t frame) const;
+ unsigned char* GetPalette(size_t frame) const;
+ unsigned int GetNcolours(size_t frame) const;
+ int GetTransparentColour(size_t frame) const;
+
+ virtual wxSize GetFrameSize(size_t frame) const;
+ virtual wxPoint GetFramePosition(size_t frame) const;
+ virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const;
+ virtual long GetDelay(size_t frame) const;
+
+ // GIFs can contain both static images and animations
+ bool IsAnimation() const
+ { return m_nFrames > 1; }
public:
// constructor, destructor, etc.
- wxGIFDecoder(wxInputStream *s, bool anim = false);
+ wxGIFDecoder();
~wxGIFDecoder();
- bool CanRead();
- int ReadGIF();
+
+ // load function which returns more info than just Load():
+ wxGIFErrorCode LoadGIF( wxInputStream& stream );
+
+ // free all internal frames
void Destroy();
- // convert current frame to wxImage
- bool ConvertToImage(wxImage *image) const;
+public: // implementation of wxAnimationDecoder's pure virtuals
+
+ virtual bool CanRead( wxInputStream& stream ) const;
+ virtual bool Load( wxInputStream& stream )
+ { return LoadGIF(stream) == wxGIF_OK; }
+
+ bool ConvertToImage(size_t frame, wxImage *image) const;
+ wxAnimationDecoder *Clone() const
+ { return new wxGIFDecoder; }
+ wxAnimationType GetType() const
+ { return wxANIMATION_TYPE_GIF; }
+
+private:
DECLARE_NO_COPY_CLASS(wxGIFDecoder)
};
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/gtk/animate.h
+// Purpose: Animation classes
+// Author: Julian Smart and Guillermo Rodriguez Garcia
+// Modified by: Francesco Montorsi
+// Created: 13/8/99
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTKANIMATEH__
+#define _WX_GTKANIMATEH__
+
+#include "wx/defs.h"
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+// ----------------------------------------------------------------------------
+// wxAnimation
+// Unlike the generic wxAnimation object (see generic\animate.cpp), we won't
+// use directly wxAnimationHandlers as gdk-pixbuf already provides the
+// concept of handler and will automatically use the available handlers.
+// Like generic wxAnimation object, this implementation of wxAnimation is
+// refcounted so that assignment is very fast
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxAnimation : public wxAnimationBase
+{
+public:
+ wxAnimation(const wxAnimation &tocopy)
+ { m_pixbuf=tocopy.m_pixbuf; if (m_pixbuf) g_object_ref(m_pixbuf); }
+ wxAnimation(GdkPixbufAnimation *p = NULL)
+ { m_pixbuf=p; }
+ ~wxAnimation()
+ { UnRef(); }
+
+ wxAnimation &operator= (const wxAnimation &tocopy)
+ {
+ m_pixbuf=tocopy.m_pixbuf;
+ if (m_pixbuf) g_object_ref(m_pixbuf);
+ return *this;
+ }
+
+ bool operator == (const wxAnimation& anim) const
+ { return m_pixbuf == anim.m_pixbuf; }
+ bool operator != (const wxAnimation& anim) const
+ { return m_pixbuf != anim.m_pixbuf; }
+
+ virtual bool IsOk() const
+ { return m_pixbuf != NULL; }
+
+
+ // unfortunately GdkPixbufAnimation does not expose these info:
+
+ virtual size_t GetFrameCount() const
+ { return 0; }
+ virtual wxImage GetFrame(size_t i) const
+ { return wxNullImage; }
+
+ // we can retrieve the delay for a frame only after building
+ // a GdkPixbufAnimationIter...
+ virtual int GetDelay(size_t i) const
+ { return 0; }
+
+ virtual wxSize GetSize() const
+ { return wxSize(gdk_pixbuf_animation_get_width(m_pixbuf),
+ gdk_pixbuf_animation_get_height(m_pixbuf)); }
+
+ virtual bool LoadFile(const wxString &name, wxAnimationType type = wxANIMATION_TYPE_ANY);
+ virtual bool Load(wxInputStream &stream, wxAnimationType type = wxANIMATION_TYPE_ANY);
+
+ void UnRef()
+ {
+ if (m_pixbuf)
+ g_object_unref(m_pixbuf);
+ m_pixbuf = NULL;
+ }
+
+public: // used by GTK callbacks
+
+ GdkPixbufAnimation *GetPixbuf() const
+ { return m_pixbuf; }
+ void SetPixbuf(GdkPixbufAnimation *p)
+ { m_pixbuf=p; if (m_pixbuf) g_object_ref(m_pixbuf); }
+
+protected:
+ GdkPixbufAnimation *m_pixbuf;
+
+ // used temporary by Load()
+ //bool m_bLoadComplete;
+
+protected:
+ DECLARE_DYNAMIC_CLASS(wxAnimation)
+};
+
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl
+// ----------------------------------------------------------------------------
+
+// Resize to animation size if this is set
+#define wxAN_FIT_ANIMATION 0x0010
+
+class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase
+{
+public:
+ wxAnimationCtrl() {}
+ wxAnimationCtrl(wxWindow *parent,
+ wxWindowID id,
+ const wxAnimation& anim = wxNullAnimation,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxAC_DEFAULT_STYLE,
+ const wxString& name = wxAnimationCtrlNameStr)
+ {
+ Create(parent, id, anim, pos, size, style, name);
+ }
+
+ bool Create(wxWindow *parent, wxWindowID id,
+ const wxAnimation& anim = wxNullAnimation,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxAC_DEFAULT_STYLE,
+ const wxString& name = wxAnimationCtrlNameStr);
+
+ ~wxAnimationCtrl();
+
+public: // event handler
+
+ void OnTimer(wxTimerEvent &);
+
+public: // public API
+
+ virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY);
+
+ virtual void SetAnimation(const wxAnimation &anim);
+ virtual wxAnimation GetAnimation() const
+ { return wxAnimation(m_anim); }
+
+ virtual bool Play();
+ virtual void Stop();
+
+ virtual bool IsPlaying() const;
+
+ bool SetBackgroundColour( const wxColour &colour );
+
+protected:
+
+ virtual wxSize DoGetBestSize() const;
+ void FitToAnimation();
+ void ClearToBackgroundColour();
+
+ void ResetAnim()
+ {
+ if (m_anim)
+ g_object_unref(m_anim);
+ m_anim = NULL;
+ }
+
+ void ResetIter()
+ {
+ if (m_iter)
+ g_object_unref(m_iter);
+ m_iter = NULL;
+ }
+
+protected: // internal vars
+
+ GdkPixbufAnimation *m_anim;
+ GdkPixbufAnimationIter *m_iter;
+
+ wxTimer m_timer;
+ bool m_bPlaying;
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxAnimationCtrl)
+ DECLARE_EVENT_TABLE()
+};
+
+#endif // _WX_GTKANIMATEH__
/////////////////////////////////////////////////////////////////////////////
// Name: imagbmp.h
-// Purpose: wxImage BMP, ICO and CUR handlers
+// Purpose: wxImage BMP, ICO, CUR and ANI handlers
// Author: Robert Roebling, Chris Elliott
// RCS-ID: $Id$
// Copyright: (c) Robert Roebling, Chris Elliott
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
// Default is 1
//
// Recommended setting: 1
+#define wxUSE_ANIMATIONCTRL 1 // wxAnimationCtrl
#define wxUSE_BUTTON 1 // wxButton
#define wxUSE_BMPBUTTON 1 // wxBitmapButton
#define wxUSE_CALENDARCTRL 1 // wxCalendarCtrl
--- /dev/null
+# =========================================================================
+# This makefile was generated by
+# Bakefile 0.2.0 (http://bakefile.sourceforge.net)
+# Do not modify, all changes will be overwritten!
+# =========================================================================
+
+
+@MAKE_SET@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+INSTALL = @INSTALL@
+EXEEXT = @EXEEXT@
+WINDRES = @WINDRES@
+REZ = @REZ@
+SETFILE = @SETFILE@
+NM = @NM@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+LIBS = @LIBS@
+LDFLAGS_GUI = @LDFLAGS_GUI@
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@
+TOOLKIT = @TOOLKIT@
+TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@
+TOOLKIT_VERSION = @TOOLKIT_VERSION@
+TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@
+EXTRALIBS = @EXTRALIBS@
+EXTRALIBS_GUI = @EXTRALIBS_GUI@
+EXTRALIBS_SDL = @EXTRALIBS_SDL@
+HOST_SUFFIX = @HOST_SUFFIX@
+SAMPLES_RPATH_FLAG = @SAMPLES_RPATH_FLAG@
+SAMPLES_RPATH_POSTLINK = @SAMPLES_RPATH_POSTLINK@
+
+### Variables: ###
+
+DESTDIR =
+WX_RELEASE = 2.7
+WX_VERSION = $(WX_RELEASE).0
+LIBDIRNAME = $(top_builddir)lib
+ANITEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
+ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
+ -I$(srcdir) $(__DLLFLAG_p) -I$(srcdir)/../../samples $(CPPFLAGS) $(CXXFLAGS)
+ANITEST_OBJECTS = \
+ $(__anitest_os2_lib_res) \
+ anitest_anitest.o \
+ $(__anitest___win32rc)
+
+### Conditionally set variables: ###
+
+@COND_DEPS_TRACKING_0@CXXC = $(CXX)
+@COND_DEPS_TRACKING_1@CXXC = $(top_builddir)./bk-deps $(CXX)
+@COND_USE_PLUGINS_0@PLUGIN_ADV_EXTRALIBS = $(EXTRALIBS_SDL)
+@COND_USE_GUI_0@PORTNAME = base
+@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
+@COND_TOOLKIT_MAC@WXBASEPORT = _carbon
+@COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT@WXDEBUGFLAG = d
+@COND_DEBUG_FLAG_1@WXDEBUGFLAG = d
+@COND_UNICODE_1@WXUNICODEFLAG = u
+@COND_WXUNIV_1@WXUNIVNAME = univ
+@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS)
+@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
+@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
+@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI =
+@COND_PLATFORM_MAC_1@__anitest___mac_setfilecmd = \
+@COND_PLATFORM_MAC_1@ $(SETFILE) -a C anitest$(EXEEXT)
+@COND_PLATFORM_MAC_1@__anitest___mac_rezcmd = $(__MACOSX_RESOURCES_p_1)
+@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
+@COND_WXUNIV_1@__WXUNIV_DEFINE_p_1 = -d __WXUNIVERSAL__
+@COND_WXUNIV_1@__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
+@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
+@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_1 = -d wxNO_EXCEPTIONS
+@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
+@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
+@COND_USE_RTTI_0@__RTTI_DEFINE_p_1 = -d wxNO_RTTI
+@COND_USE_RTTI_0@__RTTI_DEFINE_p_2 = --define wxNO_RTTI
+@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
+@COND_USE_THREADS_0@__THREAD_DEFINE_p_1 = -d wxNO_THREADS
+@COND_USE_THREADS_0@__THREAD_DEFINE_p_2 = --define wxNO_THREADS
+@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL
+@COND_SHARED_1@__DLLFLAG_p_1 = -d WXUSINGDLL
+@COND_SHARED_1@__DLLFLAG_p_2 = --define WXUSINGDLL
+COND_PLATFORM_OS2_1___anitest___os2_emxbindcmd = $(NM) anitest$(EXEEXT) | if \
+ grep -q pmwin.763 ; then emxbind -ep anitest$(EXEEXT) ; fi
+@COND_PLATFORM_OS2_1@__anitest___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___anitest___os2_emxbindcmd)
+@COND_TOOLKIT_MSW@__RCDEFDIR_p = -i \
+@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
+@COND_TOOLKIT_MSW@__RCDEFDIR_p_1 = --include-dir \
+@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
+@COND_PLATFORM_OS2_1@__anitest_os2_lib_res = \
+@COND_PLATFORM_OS2_1@ $(top_srcdir)/include/wx/os2/wx.res
+@COND_PLATFORM_MACOSX_1@__anitest_bundle___depname = anitest_bundle
+@COND_TOOLKIT_COCOA@____anitest_BUNDLE_TGT_REF_DEP = \
+@COND_TOOLKIT_COCOA@ anitest.app/Contents/PkgInfo
+@COND_TOOLKIT_MAC@____anitest_BUNDLE_TGT_REF_DEP = \
+@COND_TOOLKIT_MAC@ anitest.app/Contents/PkgInfo
+COND_MONOLITHIC_0___WXLIB_ADV_p = \
+ -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_adv-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_MONOLITHIC_0@__WXLIB_ADV_p = $(COND_MONOLITHIC_0___WXLIB_ADV_p)
+COND_MONOLITHIC_0___WXLIB_CORE_p = \
+ -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
+COND_MONOLITHIC_0___WXLIB_BASE_p = \
+ -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
+@COND_PLATFORM_WIN32_1@__anitest___win32rc = anitest_sample_rc.o
+COND_MONOLITHIC_1___WXLIB_MONO_p = \
+ -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
+@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \
+@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \
+@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@__LIB_JPEG_p \
+@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ = \
+@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@__LIB_PNG_p \
+@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ = \
+@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \
+@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_WXUSE_ODBC_BUILTIN@__LIB_ODBC_p = \
+@COND_WXUSE_ODBC_BUILTIN@ -lwxodbc$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
+ -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_WXUSE_REGEX_BUILTIN@__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p)
+@COND_WXUSE_EXPAT_BUILTIN@__LIB_EXPAT_p = \
+@COND_WXUSE_EXPAT_BUILTIN@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
+COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1 = $(REZ) -d __DARWIN__ -t APPL -d \
+ __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) \
+ $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) -i $(srcdir) $(__DLLFLAG_p_1) -i \
+ $(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \
+ anitest$(EXEEXT) Carbon.r sample.r
+@COND_TOOLKIT_MAC@__MACOSX_RESOURCES_p_1 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1)
+
+### Targets: ###
+
+all: anitest$(EXEEXT) $(__anitest_bundle___depname) catalog
+
+install: all
+
+uninstall:
+
+install-strip: install
+
+clean:
+ rm -rf ./.deps ./.pch
+ rm -f ./*.o
+ rm -f anitest$(EXEEXT)
+ rm -rf anitest.app
+
+distclean: clean
+ rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
+
+anitest$(EXEEXT): $(ANITEST_OBJECTS) $(__anitest___win32rc)
+ $(CXX) -o $@ $(ANITEST_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_ADV_p) $(PLUGIN_ADV_EXTRALIBS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
+ $(__anitest___mac_rezcmd)
+ $(__anitest___mac_setfilecmd)
+ $(__anitest___os2_emxbindcmd)
+ $(SAMPLES_RPATH_POSTLINK)
+
+anitest.app/Contents/PkgInfo: anitest$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
+ mkdir -p anitest.app/Contents
+ mkdir -p anitest.app/Contents/MacOS
+ mkdir -p anitest.app/Contents/Resources
+
+
+ sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
+ -e "s/EXECUTABLE/anitest/" \
+ -e "s/VERSION/$(WX_VERSION)/" \
+ $(top_srcdir)/src/mac/carbon/Info.plist.in >anitest.app/Contents/Info.plist
+
+
+ echo -n "APPL????" >anitest.app/Contents/PkgInfo
+
+
+ ln -f anitest$(EXEEXT) anitest.app/Contents/MacOS/anitest
+
+
+ cp -f $(top_srcdir)/src/mac/carbon/wxmac.icns anitest.app/Contents/Resources/wxmac.icns
+
+@COND_PLATFORM_MACOSX_1@anitest_bundle: $(____anitest_BUNDLE_TGT_REF_DEP)
+
+catalog:
+ @mkdir -p .
+ @for f in throbber.gif hourglass.ani; do \
+ if test ! -f ./$$f -a ! -d ./$$f ; \
+ then x=yep ; \
+ else x=`find $(srcdir)/$$f -newer ./$$f -print` ; \
+ fi; \
+ case "$$x" in ?*) \
+ cp -pRf $(srcdir)/$$f . ;; \
+ esac; \
+ done
+
+anitest_anitest.o: $(srcdir)/anitest.cpp
+ $(CXXC) -c -o $@ $(ANITEST_CXXFLAGS) $(srcdir)/anitest.cpp
+
+anitest_sample_rc.o: $(srcdir)/../sample.rc
+ $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
+
+
+# Include dependency info, if present:
+@IF_GNU_MAKE@-include .deps/*.d
+
+.PHONY: all install uninstall clean distclean anitest_bundle catalog
--- /dev/null
+<?xml version="1.0" ?>
+<makefile>
+
+ <include file="../../../build/bakefiles/common_samples.bkl"/>
+
+ <exe id="anitest" template="wx_sample" template_append="wx_append">
+ <sources>
+ anitest.cpp
+ </sources>
+ <wx-lib>adv</wx-lib>
+ <wx-lib>core</wx-lib>
+ <wx-lib>base</wx-lib>
+ <win32-res>../sample.rc</win32-res>
+ </exe>
+
+ <wx-data id="catalog">
+ <files>throbber.gif hourglass.ani</files>
+ </wx-data>
+
+</makefile>
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: anitest.cpp
+// Purpose: Animation sample
+// Author: Julian Smart
+// Modified by: Francesco Montorsi
+// Created: 02/07/2001
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ===========================================================================
+// declarations
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// headers
+// ---------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#ifndef __WXMSW__
+ #include "mondrian.xpm"
+#endif
+
+#include "anitest.h"
+
+IMPLEMENT_APP(MyApp)
+
+// ---------------------------------------------------------------------------
+// global variables
+// ---------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+// event tables
+// ---------------------------------------------------------------------------
+
+enum
+{
+ wxID_PLAY
+};
+
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_MENU(wxID_PLAY, MyFrame::OnPlay)
+ EVT_MENU(wxID_STOP, MyFrame::OnStop)
+ EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
+ EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
+#if wxUSE_FILEDLG
+ EVT_MENU(wxID_OPEN, MyFrame::OnOpen)
+#endif // wxUSE_FILEDLG
+
+ EVT_SIZE(MyFrame::OnSize)
+ EVT_UPDATE_UI(wxID_ANY, MyFrame::OnUpdateUI)
+END_EVENT_TABLE()
+
+// ===========================================================================
+// implementation
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// MyApp
+// ---------------------------------------------------------------------------
+
+// Initialise this in OnInit, not statically
+bool MyApp::OnInit()
+{
+ // Create the main frame window
+
+ MyFrame* frame = new MyFrame((wxFrame *)NULL, -1, _T("Animation Demo"),
+ wxPoint(-1, -1), wxSize(500, 400),
+ wxDEFAULT_FRAME_STYLE);
+
+ // Give it an icon
+#ifdef __WXMSW__
+ frame->SetIcon(wxIcon(_T("mdi_icn")));
+#else
+ frame->SetIcon(wxIcon( mondrian_xpm ));
+#endif
+
+ // Make a menubar
+ wxMenu *file_menu = new wxMenu;
+
+#if wxUSE_FILEDLG
+ file_menu->Append(wxID_OPEN, _T("&Open Animation...\tCtrl+O"), _T("Loads an animation"));
+#endif // wxUSE_FILEDLG
+ file_menu->Append(wxID_EXIT);
+
+ wxMenu *play_menu = new wxMenu;
+ play_menu->Append(wxID_PLAY, _T("Play\tCtrl+P"), _T("Play the animation"));
+ play_menu->Append(wxID_STOP, _T("Stop\tCtrl+P"), _T("Stop the animation"));
+
+ wxMenu *help_menu = new wxMenu;
+ help_menu->Append(wxID_ABOUT);
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+
+ menu_bar->Append(file_menu, _T("&File"));
+ menu_bar->Append(play_menu, _T("&Animation"));
+ menu_bar->Append(help_menu, _T("&Help"));
+
+ // Associate the menu bar with the frame
+ frame->SetMenuBar(menu_bar);
+
+#if wxUSE_STATUSBAR
+ frame->CreateStatusBar();
+#endif // wxUSE_STATUSBAR
+
+ frame->Show(true);
+
+ SetTopWindow(frame);
+
+ return true;
+}
+
+// ---------------------------------------------------------------------------
+// MyFrame
+// ---------------------------------------------------------------------------
+
+#include "wx/wfstream.h"
+
+// Define my frame constructor
+MyFrame::MyFrame(wxWindow *parent,
+ const wxWindowID id,
+ const wxString& title,
+ const wxPoint& pos,
+ const wxSize& size,
+ const long style)
+ : wxFrame(parent, id, title, pos, size,
+ style | wxNO_FULL_REPAINT_ON_RESIZE)
+{
+ //m_canvas = new MyCanvas(this, wxPoint(0, 0), wxDefaultSize);
+
+ //wxSizer *sz = new wxBoxSizer(wxVERTICAL);
+
+ m_animationCtrl = new wxAnimationCtrl(this, wxID_ANY, wxNullAnimation,
+ wxPoint(0,0),wxSize(100,100));
+ if (m_animationCtrl->LoadFile(wxT("throbber.gif")))
+ m_animationCtrl->Play();
+
+ //sz->Add(m_animationCtrl, 1, wxGROW);
+
+ //SetSizer(sz);
+}
+
+MyFrame::~MyFrame()
+{
+}
+
+void MyFrame::OnPlay(wxCommandEvent& WXUNUSED(event))
+{
+ if (!m_animationCtrl->Play())
+ wxLogError(wxT("Invalid animation"));
+}
+
+void MyFrame::OnStop(wxCommandEvent& WXUNUSED(event))
+{
+ m_animationCtrl->Stop();
+}
+
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+ Close();
+}
+
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
+{
+ /*
+
+ FIXME: on wxGTK at least using File->About command it shows
+ the message dialog but does not focus it
+
+ */
+
+ (void)wxMessageBox(_T("wxWidgets 2 Animation Demo\n")
+ _T("Author: Julian Smart (c) 2001\n"),
+ _T("About Animation Demo"));
+}
+
+#if wxUSE_FILEDLG
+void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
+{
+ wxFileDialog dialog(this, _T("Please choose an animation"),
+ wxEmptyString, wxEmptyString, wxT("*.gif;*.ani"), wxFD_OPEN);
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxString filename(dialog.GetPath());
+
+ // enable one of the two chunk of codes to test different parts of wxAnimation/wxAnimationCtrl
+#if 0
+ if (m_animationCtrl->LoadFile(filename))
+ m_animationCtrl->Play();
+ else
+ wxMessageBox(_T("Sorry, this animation is not a valid format for wxAnimation."));
+#else
+ #if 0
+ wxAnimation temp;
+ if (!temp.LoadFile(filename))
+ {
+ wxLogError(wxT("Sorry, this animation is not a valid format for wxAnimation."));
+ return;
+ }
+
+ m_animationCtrl->SetAnimation(temp);
+ m_animationCtrl->Play();
+ #else
+ wxFileInputStream stream(filename);
+ if (!stream.Ok())
+ {
+ wxLogError(wxT("Sorry, this animation is not a valid format for wxAnimation."));
+ return;
+ }
+
+ wxAnimation temp;
+ if (!temp.Load(stream))
+ {
+ wxLogError(wxT("Sorry, this animation is not a valid format for wxAnimation."));
+ return;
+ }
+
+ m_animationCtrl->SetAnimation(temp);
+ m_animationCtrl->Play();
+ #endif
+#endif
+ }
+}
+#endif // wxUSE_FILEDLG
+
+void MyFrame::OnUpdateUI(wxUpdateUIEvent& WXUNUSED(event) )
+{
+ GetMenuBar()->FindItem(wxID_STOP)->Enable(m_animationCtrl->IsPlaying());
+ GetMenuBar()->FindItem(wxID_PLAY)->Enable(!m_animationCtrl->IsPlaying());
+}
+
+// ---------------------------------------------------------------------------
+// MyCanvas
+// ---------------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
+ //EVT_PAINT(MyCanvas::OnPaint)
+END_EVENT_TABLE()
+
+// Define a constructor for my canvas
+MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
+ : wxScrolledWindow(parent, -1, pos, size,
+ wxSUNKEN_BORDER |
+ wxNO_FULL_REPAINT_ON_RESIZE |
+ wxVSCROLL | wxHSCROLL)
+{
+ SetBackgroundColour(wxColour(_T("YELLOW")));
+}
+
+void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
+{
+ //wxPaintDC dc(this);
+
+ //dc.DrawRotatedText(wxT("Background"),
+}
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: anitest.cpp
+// Purpose: anitest sample
+// Author: Julian Smart
+// Modified by:
+// Created: 02/07/2001
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/animate.h"
+
+// Define a new application
+class MyApp : public wxApp
+{
+public:
+ bool OnInit();
+};
+
+class MyCanvas : public wxScrolledWindow
+{
+public:
+ MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size);
+ void OnPaint(wxPaintEvent& event);
+
+private:
+ DECLARE_EVENT_TABLE()
+};
+
+// Define a new frame
+class MyFrame : public wxFrame
+{
+public:
+
+ MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title,
+ const wxPoint& pos, const wxSize& size, const long style);
+ ~MyFrame();
+
+ void OnAbout(wxCommandEvent& event);
+ void OnQuit(wxCommandEvent& event);
+
+ void OnPlay(wxCommandEvent& event);
+ void OnStop(wxCommandEvent& event);
+
+ void OnUpdateUI(wxUpdateUIEvent& event);
+
+#if wxUSE_FILEDLG
+ void OnOpen(wxCommandEvent& event);
+#endif // wxUSE_FILEDLG
+
+ MyCanvas* GetCanvas() const { return m_canvas; }
+ wxAnimationCtrl* GetAnimationCtrl() const { return m_animationCtrl; }
+
+protected:
+ MyCanvas* m_canvas;
+ wxAnimationCtrl* m_animationCtrl;
+
+private:
+ DECLARE_EVENT_TABLE()
+};
--- /dev/null
+mondrian ICON "mondrian.ico"
+#include "wx/msw/wx.rc"
+
--- /dev/null
+/* XPM */
+static char *mondrian_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 6 1",
+" c black",
+". c blue",
+"X c #00BF00",
+"o c red",
+"O c yellow",
+"+ c gray100",
+/* pixels */
+" ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" oooooo +++++++++++++++++++++++ ",
+" ",
+" ++++++ ++++++++++++++++++ .... ",
+" ++++++ ++++++++++++++++++ .... ",
+" ++++++ ++++++++++++++++++ .... ",
+" ++++++ ++++++++++++++++++ .... ",
+" ++++++ ++++++++++++++++++ .... ",
+" ++++++ ++++++++++++++++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++++++++++++++++ ++++ ",
+" ++++++ ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
+" "
+};
<!-- all samples are enumerated here: -->
<subproject id="access" template="sub"/>
+ <subproject id="animate" template="sub"/>
<subproject id="artprov" template="sub"/>
<subproject id="calendar" template="sub"/>
<subproject id="caret" template="sub"/>
#define wxUSE_TIPWINDOW 0
+#define wxUSE_ANIMATIONCTRL 0
#define wxUSE_BUTTON 0
#define wxUSE_BMPBUTTON 0
#define wxUSE_CALENDARCTRL 0
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/anidecod.cpp
+// Purpose: wxANIDecoder, ANI reader for wxImage and wxAnimation
+// Author: Francesco Montorsi
+// RCS-ID: $Id$
+// Copyright: (c) Francesco Montorsi
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_STREAMS && wxUSE_GIF
+
+#ifndef WX_PRECOMP
+ #include "wx/palette.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include "wx/anidecod.h"
+
+// static
+wxCURHandler wxANIDecoder::sm_handler;
+
+
+
+//---------------------------------------------------------------------------
+// wxANIFrameInfo
+//---------------------------------------------------------------------------
+
+class wxANIFrameInfo
+{
+public:
+ wxANIFrameInfo(size_t delay = 0, int idx = -1)
+ { m_delay=delay; m_imageIndex=idx; }
+
+ size_t m_delay;
+ int m_imageIndex;
+};
+
+#include <wx/arrimpl.cpp> // this is a magic incantation which must be done!
+WX_DEFINE_OBJARRAY(wxImageArray);
+
+#include <wx/arrimpl.cpp> // this is a magic incantation which must be done!
+WX_DEFINE_OBJARRAY(wxANIFrameInfoArray);
+
+
+
+
+//---------------------------------------------------------------------------
+// wxANIDecoder
+//---------------------------------------------------------------------------
+
+wxANIDecoder::wxANIDecoder()
+{
+}
+
+wxANIDecoder::~wxANIDecoder()
+{
+}
+
+bool wxANIDecoder::ConvertToImage(size_t frame, wxImage *image) const
+{
+ size_t idx = m_info[frame].m_imageIndex;
+ *image = m_images[idx]; // copy
+ return image->Ok();
+}
+
+
+//---------------------------------------------------------------------------
+// Data accessors
+//---------------------------------------------------------------------------
+
+wxSize wxANIDecoder::GetFrameSize(size_t WXUNUSED(frame)) const
+{
+ // all frames are of the same size...
+ return m_szAnimation;
+}
+
+wxPoint wxANIDecoder::GetFramePosition(size_t WXUNUSED(frame)) const
+{
+ // all frames are of the same size...
+ return wxPoint(0,0);
+}
+
+wxAnimationDisposal wxANIDecoder::GetDisposalMethod(size_t WXUNUSED(frame)) const
+{
+ // this disposal is implicit for all frames inside an ANI file
+ return wxANIM_TOBACKGROUND;
+}
+
+long wxANIDecoder::GetDelay(size_t frame) const
+{
+ return m_info[frame].m_delay;
+}
+
+
+//---------------------------------------------------------------------------
+// ANI reading and decoding
+//---------------------------------------------------------------------------
+
+bool wxANIDecoder::CanRead(wxInputStream& stream) const
+{
+ wxInt32 FCC1, FCC2;
+ wxUint32 datalen ;
+
+ wxInt32 riff32;
+ memcpy( &riff32, "RIFF", 4 );
+ wxInt32 list32;
+ memcpy( &list32, "LIST", 4 );
+ wxInt32 ico32;
+ memcpy( &ico32, "icon", 4 );
+ wxInt32 anih32;
+ memcpy( &anih32, "anih", 4 );
+
+ stream.SeekI(0);
+ if ( !stream.Read(&FCC1, 4) )
+ return false;
+
+ if ( FCC1 != riff32 )
+ return false;
+
+ // we have a riff file:
+ while ( stream.IsOk() )
+ {
+ if ( FCC1 == anih32 )
+ return true; // found the ANIH chunk - this should be an ANI file
+
+ // we always have a data size:
+ stream.Read(&datalen, 4);
+ datalen = wxINT32_SWAP_ON_BE(datalen) ;
+
+ // data should be padded to make even number of bytes
+ if (datalen % 2 == 1) datalen ++ ;
+
+ // now either data or a FCC:
+ if ( (FCC1 == riff32) || (FCC1 == list32) )
+ {
+ stream.Read(&FCC2, 4);
+ }
+ else
+ {
+ stream.SeekI(stream.TellI() + datalen);
+ }
+
+ // try to read next data chunk:
+ if ( !stream.Read(&FCC1, 4) )
+ {
+ // reading failed -- either EOF or IO error, bail out anyhow
+ return false;
+ }
+ }
+
+ return false;
+}
+
+// the "anih" RIFF chunk
+struct wxANIHeader
+{
+ wxInt32 cbSizeOf; // Num bytes in AniHeader (36 bytes)
+ wxInt32 cFrames; // Number of unique Icons in this cursor
+ wxInt32 cSteps; // Number of Blits before the animation cycles
+ wxInt32 cx; // width of the frames
+ wxInt32 cy; // height of the frames
+ wxInt32 cBitCount; // bit depth
+ wxInt32 cPlanes; // 1
+ wxInt32 JifRate; // Default Jiffies (1/60th of a second) if rate chunk not present.
+ wxInt32 flags; // Animation Flag (see AF_ constants)
+};
+
+bool wxANIDecoder::Load( wxInputStream& stream )
+{
+ wxInt32 FCC1, FCC2;
+ wxUint32 datalen;
+ size_t globaldelay=0;
+
+ wxInt32 riff32;
+ memcpy( &riff32, "RIFF", 4 );
+ wxInt32 list32;
+ memcpy( &list32, "LIST", 4 );
+ wxInt32 ico32;
+ memcpy( &ico32, "icon", 4 );
+ wxInt32 anih32;
+ memcpy( &anih32, "anih", 4 );
+ wxInt32 rate32;
+ memcpy( &rate32, "rate", 4 );
+ wxInt32 seq32;
+ memcpy( &seq32, "seq ", 4 );
+
+ stream.SeekI(0);
+ stream.Read(&FCC1, 4);
+ if ( FCC1 != riff32 )
+ return false;
+
+ m_nFrames = 0;
+ m_szAnimation = wxDefaultSize;
+
+ m_images.Clear();
+ m_info.Clear();
+
+ // we have a riff file:
+ while ( stream.IsOk() )
+ {
+ // we always have a data size:
+ stream.Read(&datalen, 4);
+ datalen = wxINT32_SWAP_ON_BE(datalen);
+
+ //data should be padded to make even number of bytes
+ if (datalen % 2 == 1) datalen++;
+
+ // now either data or a FCC:
+ if ( (FCC1 == riff32) || (FCC1 == list32) )
+ {
+ stream.Read(&FCC2, 4);
+ }
+ else if ( FCC1 == anih32 )
+ {
+ if ( datalen != sizeof(wxANIHeader) )
+ return false;
+
+ if (m_nFrames > 0)
+ return false; // already parsed an ani header?
+
+ struct wxANIHeader header;
+ stream.Read(&header, sizeof(wxANIHeader));
+
+ // we should have a global frame size
+ m_szAnimation = wxSize(header.cx, header.cy);
+
+ // save interesting info from the header
+ m_nFrames = header.cSteps; // NB: not cFrames!!
+ if (m_nFrames==0)
+ return false;
+
+ globaldelay = wxINT32_SWAP_ON_BE(header.JifRate) * 1000 / 60;
+
+ m_images.Alloc(header.cFrames);
+ m_info.Add(wxANIFrameInfo(), m_nFrames);
+ }
+ else if ( FCC1 == rate32 )
+ {
+ // did we already process the anih32 chunk?
+ if (m_nFrames == 0)
+ return false; // rate chunks should always be placed after anih chunk
+
+ wxASSERT(m_info.GetCount() == m_nFrames);
+ for (size_t i=0; i<m_nFrames; i++)
+ {
+ stream.Read(&FCC2, 4);
+ m_info[i].m_delay = wxINT32_SWAP_ON_BE(FCC2) * 1000 / 60;
+ }
+ }
+ else if ( FCC1 == seq32 )
+ {
+ // did we already process the anih32 chunk?
+ if (m_nFrames == 0)
+ return false; // seq chunks should always be placed after anih chunk
+
+ wxASSERT(m_info.GetCount() == m_nFrames);
+ for (size_t i=0; i<m_nFrames; i++)
+ {
+ stream.Read(&FCC2, 4);
+ m_info[i].m_imageIndex = wxINT32_SWAP_ON_BE(FCC2);
+ }
+ }
+ else if ( FCC1 == ico32 )
+ {
+ // use DoLoadFile() and not LoadFile()!
+ wxImage image;
+ if (!sm_handler.DoLoadFile(&image, stream, false /* verbose */, -1))
+ return false;
+
+ m_images.Add(image);
+ }
+ else
+ stream.SeekI(stream.TellI() + datalen);
+
+ // try to read next data chunk:
+ stream.Read(&FCC1, 4);
+ }
+
+ if (m_nFrames==0)
+ return false;
+
+ if (m_nFrames==m_images.GetCount())
+ {
+ // if no SEQ chunk is available, display the frames in the order
+ // they were loaded
+ for (size_t i=0; i<m_nFrames; i++)
+ if (m_info[i].m_imageIndex == -1)
+ m_info[i].m_imageIndex = i;
+ }
+
+ // if some frame has an invalid delay, use the global delay given in the
+ // ANI header
+ for (size_t i=0; i<m_nFrames; i++)
+ if (m_info[i].m_delay == 0)
+ m_info[i].m_delay = globaldelay;
+
+ // if the header did not contain a valid frame size, try to grab
+ // it from the size of the first frame (all frames are of the same size)
+ if (m_szAnimation.GetWidth() == 0 ||
+ m_szAnimation.GetHeight() == 0)
+ m_szAnimation = wxSize(m_images[0].GetWidth(), m_images[0].GetHeight());
+
+ return m_szAnimation!=wxDefaultSize;
+}
+
+#endif // wxUSE_STREAMS && wxUSE_GIF
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/animatecmn.cpp
+// Purpose: wxAnimation and wxAnimationCtrl
+// Author: Francesco Montorsi
+// Modified By:
+// Created: 24/09/2006
+// Id: $Id$
+// Copyright: (c) Francesco Montorsi
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_ANIMATIONCTRL
+
+#include "wx/animate.h"
+
+const wxChar wxAnimationCtrlNameStr[] = wxT("animationctrl");
+
+// global object
+wxAnimation wxNullAnimation;
+
+//wxIMPLEMENT_HANDLER_LIST_MANAGER(wxAnimation,
+IMPLEMENT_ABSTRACT_CLASS(wxAnimationBase, wxObject)
+IMPLEMENT_ABSTRACT_CLASS(wxAnimationCtrlBase, wxControl)
+
+
+
+#endif // wxUSE_ANIMATIONCTRL
#include "wx/gifdecod.h"
+
+//---------------------------------------------------------------------------
+// GIFImage
+//---------------------------------------------------------------------------
+
+// internal class for storing GIF image data
+class GIFImage
+{
+public:
+ // def ctor
+ GIFImage();
+
+ unsigned int w; /* width */
+ unsigned int h; /* height */
+ unsigned int left; /* x coord (in logical screen) */
+ unsigned int top; /* y coord (in logical screen) */
+ int transparent; /* transparent color index (-1 = none) */
+ wxAnimationDisposal disposal; /* disposal method */
+ long delay; /* delay in ms (-1 = unused) */
+ unsigned char *p; /* bitmap */
+ unsigned char *pal; /* palette */
+ unsigned int ncolours; /* number of colours */
+
+ DECLARE_NO_COPY_CLASS(GIFImage)
+};
+
+
+
//---------------------------------------------------------------------------
// GIFImage constructor
//---------------------------------------------------------------------------
left = 0;
top = 0;
transparent = 0;
- disposal = 0;
+ disposal = wxANIM_DONOTREMOVE;
delay = -1;
p = (unsigned char *) NULL;
pal = (unsigned char *) NULL;
ncolours = 0;
- next = (GIFImage *) NULL;
- prev = (GIFImage *) NULL;
}
//---------------------------------------------------------------------------
// wxGIFDecoder constructor and destructor
//---------------------------------------------------------------------------
-wxGIFDecoder::wxGIFDecoder(wxInputStream *s, bool anim)
+wxGIFDecoder::wxGIFDecoder()
{
- m_f = s;
- m_anim = anim;
-
- m_background = -1;
- m_screenw = 0;
- m_screenh = 0;
-
- m_pimage = NULL;
- m_pfirst = NULL;
- m_plast = NULL;
- m_image = 0;
- m_nimages = 0;
}
wxGIFDecoder::~wxGIFDecoder()
void wxGIFDecoder::Destroy()
{
- GIFImage *pimg, *paux;
-
- pimg = m_pfirst;
-
- while (pimg != NULL)
+ wxASSERT(m_nFrames==m_frames.GetCount());
+ for (size_t i=0; i<m_nFrames; i++)
{
- paux = pimg->next;
- free(pimg->p);
- free(pimg->pal);
- delete pimg;
- pimg = paux;
+ GIFImage *f = (GIFImage*)m_frames[i];
+ free(f->p);
+ free(f->pal);
+ delete f;
}
- m_pimage = NULL;
- m_pfirst = NULL;
- m_plast = NULL;
- m_image = 0;
- m_nimages = 0;
+ m_frames.Clear();
+ m_nFrames = 0;
}
// This function was designed by Vaclav Slavik
-bool wxGIFDecoder::ConvertToImage(wxImage *image) const
+bool wxGIFDecoder::ConvertToImage(size_t frame, wxImage *image) const
{
unsigned char *src, *dst, *pal;
unsigned long i;
image->Destroy();
/* create the image */
- image->Create(GetWidth(), GetHeight());
+ wxSize sz = GetFrameSize(frame);
+ image->Create(sz.GetWidth(), sz.GetHeight());
if (!image->Ok())
return false;
- pal = GetPalette();
- src = GetData();
+ pal = GetPalette(frame);
+ src = GetData(frame);
dst = image->GetData();
- transparent = GetTransparentColour();
+ transparent = GetTransparentColour(frame);
/* set transparent colour mask */
if (transparent != -1)
{
- for (i = 0; i < GetNcolours(); i++)
+ for (i = 0; i < GetNcolours(frame); i++)
{
if ((pal[3 * i + 0] == 255) &&
(pal[3 * i + 1] == 0) &&
b[i] = pal[3*i + 2];
}
- image->SetPalette(wxPalette(GetNcolours(), r, g, b));
+ image->SetPalette(wxPalette(GetNcolours(frame), r, g, b));
#endif // wxUSE_PALETTE
/* copy image data */
- for (i = 0; i < (GetWidth() * GetHeight()); i++, src++)
+ unsigned long npixel = sz.GetWidth() * sz.GetHeight();
+ for (i = 0; i < npixel; i++, src++)
{
*(dst++) = pal[3 * (*src) + 0];
*(dst++) = pal[3 * (*src) + 1];
// Data accessors
//---------------------------------------------------------------------------
-// Get data for current frame
-
-int wxGIFDecoder::GetFrameIndex() const { return m_image; }
-unsigned char* wxGIFDecoder::GetData() const { return (m_pimage->p); }
-unsigned char* wxGIFDecoder::GetPalette() const { return (m_pimage->pal); }
-unsigned int wxGIFDecoder::GetNcolours() const { return (m_pimage->ncolours); }
-unsigned int wxGIFDecoder::GetWidth() const { return (m_pimage->w); }
-unsigned int wxGIFDecoder::GetHeight() const { return (m_pimage->h); }
-unsigned int wxGIFDecoder::GetTop() const { return (m_pimage->top); }
-unsigned int wxGIFDecoder::GetLeft() const { return (m_pimage->left); }
-int wxGIFDecoder::GetTransparentColour() const { return (m_pimage->transparent); }
-int wxGIFDecoder::GetDisposalMethod() const { return (m_pimage->disposal); }
-long wxGIFDecoder::GetDelay() const { return (m_pimage->delay); }
-
-// Get global data
-
-unsigned int wxGIFDecoder::GetLogicalScreenWidth() const { return m_screenw; }
-unsigned int wxGIFDecoder::GetLogicalScreenHeight() const { return m_screenh; }
-int wxGIFDecoder::GetBackgroundColour() const { return m_background; }
-int wxGIFDecoder::GetNumberOfFrames() const { return m_nimages; }
-bool wxGIFDecoder::IsAnimation() const { return (m_nimages > 1); }
+#define GetFrame(n) ((GIFImage*)m_frames[n])
-//---------------------------------------------------------------------------
-// Functions to move through the animation
-//---------------------------------------------------------------------------
+// Get data for current frame
-bool wxGIFDecoder::GoFirstFrame()
+wxSize wxGIFDecoder::GetFrameSize(size_t frame) const
{
- if (!IsAnimation())
- return false;
-
- m_image = 1;
- m_pimage = m_pfirst;
- return true;
+ return wxSize(GetFrame(frame)->w, GetFrame(frame)->h);
}
-bool wxGIFDecoder::GoLastFrame()
+wxPoint wxGIFDecoder::GetFramePosition(size_t frame) const
{
- if (!IsAnimation())
- return false;
-
- m_image = m_nimages;
- m_pimage = m_plast;
- return true;
+ return wxPoint(GetFrame(frame)->left, GetFrame(frame)->top);
}
-bool wxGIFDecoder::GoNextFrame(bool cyclic)
+wxAnimationDisposal wxGIFDecoder::GetDisposalMethod(size_t frame) const
{
- if (!IsAnimation())
- return false;
-
- if ((m_image < m_nimages) || (cyclic))
- {
- m_pimage = m_pimage->next;
- m_image++;
-
- if (!m_pimage)
- {
- m_image = 1;
- m_pimage = m_pfirst;
- }
-
- return true;
- }
- else
- return false;
+ return GetFrame(frame)->disposal;
}
-bool wxGIFDecoder::GoPrevFrame(bool cyclic)
+long wxGIFDecoder::GetDelay(size_t frame) const
{
- if (!IsAnimation())
- return false;
-
- if ((m_image > 1) || (cyclic))
- {
- m_pimage = m_pimage->prev;
- m_image--;
-
- if (!m_pimage)
- {
- m_image = m_nimages;
- m_pimage = m_plast;
- }
-
- return true;
- }
- else
- return false;
+ return GetFrame(frame)->delay;
}
-bool wxGIFDecoder::GoFrame(int which)
-{
- if (!IsAnimation())
- return false;
+unsigned char* wxGIFDecoder::GetData(size_t frame) const { return (GetFrame(frame)->p); }
+unsigned char* wxGIFDecoder::GetPalette(size_t frame) const { return (GetFrame(frame)->pal); }
+unsigned int wxGIFDecoder::GetNcolours(size_t frame) const { return (GetFrame(frame)->ncolours); }
+int wxGIFDecoder::GetTransparentColour(size_t frame) const { return (GetFrame(frame)->transparent); }
- if ((which >= 1) && (which <= m_nimages))
- {
- m_image = 1;
- m_pimage = m_pfirst;
-
- while (m_image < which)
- {
- m_image++;
- m_pimage = m_pimage->next;
- }
-
- return true;
- }
- else
- return false;
-}
//---------------------------------------------------------------------------
// getcode:
// Reads the next code from the file stream, with size 'bits'
//
-int wxGIFDecoder::getcode(int bits, int ab_fin)
+int wxGIFDecoder::getcode(wxInputStream& stream, int bits, int ab_fin)
{
unsigned int mask; /* bit mask */
unsigned int code; /* code (result) */
-
/* get remaining bits from last byte read */
mask = (1 << bits) - 1;
code = (m_lastbyte >> (8 - m_restbits)) & mask;
/* if no bytes left in this block, read the next block */
if (m_restbyte == 0)
{
- m_restbyte = (unsigned char)m_f->GetC();
+ m_restbyte = (unsigned char)stream.GetC();
/* Some encoders are a bit broken: instead of issuing
* an end-of-image symbol (ab_fin) they come up with
}
/* prefetch data */
- m_f->Read((void *) m_buffer, m_restbyte);
- if (m_f->LastRead() != m_restbyte)
+ stream.Read((void *) m_buffer, m_restbyte);
+ if (stream.LastRead() != m_restbyte)
{
code = ab_fin;
return code;
// is 'bits'. Supports interlaced images (interl == 1).
// Returns wxGIF_OK (== 0) on success, or an error code if something
// fails (see header file for details)
-int wxGIFDecoder::dgif(GIFImage *img, int interl, int bits)
+wxGIFErrorCode wxGIFDecoder::dgif(wxInputStream& stream, GIFImage *img, int interl, int bits)
{
static const int allocSize = 4096 + 1;
int *ab_prefix = new int[allocSize]; /* alphabet (prefixes) */
do
{
/* get next code */
- readcode = code = getcode(ab_bits, ab_fin);
+ readcode = code = getcode(stream, ab_bits, ab_fin);
/* end of image? */
if (code == ab_fin) break;
// CanRead:
// Returns true if the file looks like a valid GIF, false otherwise.
//
-bool wxGIFDecoder::CanRead()
+bool wxGIFDecoder::CanRead(wxInputStream &stream) const
{
unsigned char buf[3];
- if ( !m_f->Read(buf, WXSIZEOF(buf)) )
+ if ( !stream.Read(buf, WXSIZEOF(buf)) )
return false;
- m_f->SeekI(-(wxFileOffset)WXSIZEOF(buf), wxFromCurrent);
+ stream.SeekI(-(wxFileOffset)WXSIZEOF(buf), wxFromCurrent);
return memcmp(buf, "GIF", WXSIZEOF(buf)) == 0;
}
-// ReadGIF:
+// LoadGIF:
// Reads and decodes one or more GIF images, depending on whether
// animated GIF support is enabled. Can read GIFs with any bit
// size (color depth), but the output images are always expanded
// (== 0) on success, or an error code if something fails (see
// header file for details)
//
-int wxGIFDecoder::ReadGIF()
+wxGIFErrorCode wxGIFDecoder::LoadGIF(wxInputStream& stream)
{
unsigned int global_ncolors = 0;
- int bits, interl, transparent, disposal, i;
+ int bits, interl, transparent, i;
+ wxAnimationDisposal disposal;
long size;
long delay;
unsigned char type = 0;
unsigned char pal[768];
unsigned char buf[16];
- GIFImage **ppimg;
- GIFImage *pimg, *pprev;
+ bool anim = true;
/* check GIF signature */
- if (!CanRead())
+ if (!CanRead(stream))
return wxGIF_INVFORMAT;
/* check for animated GIF support (ver. >= 89a) */
static const size_t headerSize = (3 + 3);
- m_f->Read(buf, headerSize);
- if (m_f->LastRead() != headerSize)
+ stream.Read(buf, headerSize);
+ if (stream.LastRead() != headerSize)
{
return wxGIF_INVFORMAT;
}
if (memcmp(buf + 3, "89a", 3) < 0)
{
- m_anim = false;
+ anim = false;
}
/* read logical screen descriptor block (LSDB) */
static const size_t lsdbSize = (2 + 2 + 1 + 1 + 1);
- m_f->Read(buf, lsdbSize);
- if (m_f->LastRead() != lsdbSize)
+ stream.Read(buf, lsdbSize);
+ if (stream.LastRead() != lsdbSize)
{
return wxGIF_INVFORMAT;
}
- m_screenw = buf[0] + 256 * buf[1];
- m_screenh = buf[2] + 256 * buf[3];
+ m_szAnimation.SetWidth( buf[0] + 256 * buf[1] );
+ m_szAnimation.SetHeight( buf[2] + 256 * buf[3] );
- if ((m_screenw == 0) || (m_screenh == 0))
+ if ((m_szAnimation.GetWidth() == 0) || (m_szAnimation.GetHeight() == 0))
{
return wxGIF_INVFORMAT;
}
/* load global color map if available */
if ((buf[4] & 0x80) == 0x80)
{
- m_background = buf[5];
+ int backgroundColIndex = buf[5];
global_ncolors = 2 << (buf[4] & 0x07);
size_t numBytes = 3 * global_ncolors;
- m_f->Read(pal, numBytes);
- if (m_f->LastRead() != numBytes)
+ stream.Read(pal, numBytes);
+ if (stream.LastRead() != numBytes)
{
return wxGIF_INVFORMAT;
}
+
+ m_background.Set(pal[backgroundColIndex*3 + 0],
+ pal[backgroundColIndex*3 + 1],
+ pal[backgroundColIndex*3 + 2]);
}
/* transparent colour, disposal method and delay default to unused */
transparent = -1;
- disposal = -1;
+ disposal = wxANIM_UNSPECIFIED;
delay = -1;
- /* read images */
- ppimg = &m_pfirst;
- pprev = NULL;
- pimg = NULL;
-
bool done = false;
-
while (!done)
{
- type = (unsigned char)m_f->GetC();
+ type = (unsigned char)stream.GetC();
/*
If the end of file has been reached (or an error) and a ";"
be decoded as far as possible). returning wxGIF_TRUNCATED is not
possible here since some init code is done after this loop.
*/
- if (m_f->Eof())// || !m_f->IsOk())
+ if (stream.Eof())// || !stream.IsOk())
{
/*
type is set to some bogus value, so there's no
/* extension block? */
if (type == 0x21)
{
- if (((unsigned char)m_f->GetC()) == 0xF9)
+ if (((unsigned char)stream.GetC()) == 0xF9)
/* graphics control extension, parse it */
{
static const size_t gceSize = 6;
- m_f->Read(buf, gceSize);
- if (m_f->LastRead() != gceSize)
+ stream.Read(buf, gceSize);
+ if (stream.LastRead() != gceSize)
{
Destroy();
return wxGIF_INVFORMAT;
transparent = buf[4];
/* read disposal method */
- disposal = ((buf[1] & 0x1C) >> 2) - 1;
+ disposal = (wxAnimationDisposal)(((buf[1] & 0x1C) >> 2) - 1);
}
else
/* other extension, skip */
{
- while ((i = (unsigned char)m_f->GetC()) != 0)
+ while ((i = (unsigned char)stream.GetC()) != 0)
{
- m_f->SeekI(i, wxFromCurrent);
- if (m_f->Eof())
+ stream.SeekI(i, wxFromCurrent);
+ if (stream.Eof())
{
done = true;
break;
if (type == 0x2C)
{
/* allocate memory for IMAGEN struct */
- pimg = (*ppimg) = new GIFImage();
+ GIFImage *pimg = new GIFImage();
if (pimg == NULL)
{
/* fill in the data */
static const size_t idbSize = (2 + 2 + 2 + 2 + 1);
- m_f->Read(buf, idbSize);
- if (m_f->LastRead() != idbSize)
+ stream.Read(buf, idbSize);
+ if (stream.LastRead() != idbSize)
{
Destroy();
return wxGIF_INVFORMAT;
pimg->w = buf[4] + 256 * buf[5];
pimg->h = buf[6] + 256 * buf[7];
- if ((pimg->w == 0) || (pimg->w > m_screenw) || (pimg->h == 0) || (pimg->h > m_screenh))
+ if ((pimg->w == 0) || (pimg->w > (unsigned int)m_szAnimation.GetWidth()) ||
+ (pimg->h == 0) || (pimg->h > (unsigned int)m_szAnimation.GetHeight()))
{
Destroy();
return wxGIF_INVFORMAT;
pimg->transparent = transparent;
pimg->disposal = disposal;
pimg->delay = delay;
- pimg->next = NULL;
- pimg->prev = pprev;
- pprev = pimg;
- ppimg = &pimg->next;
/* allocate memory for image and palette */
pimg->p = (unsigned char *) malloc((size_t)size);
{
unsigned int local_ncolors = 2 << (buf[8] & 0x07);
size_t numBytes = 3 * local_ncolors;
- m_f->Read(pimg->pal, numBytes);
+ stream.Read(pimg->pal, numBytes);
pimg->ncolours = local_ncolors;
- if (m_f->LastRead() != numBytes)
+ if (stream.LastRead() != numBytes)
{
Destroy();
return wxGIF_INVFORMAT;
}
/* get initial code size from first byte in raster data */
- bits = (unsigned char)m_f->GetC();
+ bits = (unsigned char)stream.GetC();
if (bits == 0)
{
Destroy();
}
/* decode image */
- int result = dgif(pimg, interl, bits);
+ wxGIFErrorCode result = dgif(stream, pimg, interl, bits);
if (result != wxGIF_OK)
{
Destroy();
return result;
}
- m_nimages++;
+
+ /* add the image to our frame array */
+ m_frames.Add((void*)pimg);
+ m_nFrames++;
/* if this is not an animated GIF, exit after first image */
- if (!m_anim)
+ if (!anim)
done = true;
}
}
- if (m_nimages <= 0)
+ if (m_nFrames <= 0)
{
Destroy();
return wxGIF_INVFORMAT;
}
- /* setup image pointers */
- m_image = 1;
- m_plast = pimg;
- m_pimage = m_pfirst;
-
/* try to read to the end of the stream */
while (type != 0x3B)
{
- if (!m_f->IsOk())
+ if (!stream.IsOk())
return wxGIF_TRUNCATED;
- type = (unsigned char)m_f->GetC();
+ type = (unsigned char)stream.GetC();
if (type == 0x21)
{
/* extension type */
- (void) m_f->GetC();
+ (void) stream.GetC();
/* skip all data */
- while ((i = (unsigned char)m_f->GetC()) != 0)
+ while ((i = (unsigned char)stream.GetC()) != 0)
{
- m_f->SeekI(i, wxFromCurrent);
+ stream.SeekI(i, wxFromCurrent);
}
}
else if (type == 0x2C)
{
/* image descriptor block */
static const size_t idbSize = (2 + 2 + 2 + 2 + 1);
- m_f->Read(buf, idbSize);
- if (m_f->LastRead() != idbSize)
+ stream.Read(buf, idbSize);
+ if (stream.LastRead() != idbSize)
{
Destroy();
return wxGIF_INVFORMAT;
if ((buf[8] & 0x80) == 0x80)
{
unsigned int local_ncolors = 2 << (buf[8] & 0x07);
- wxFileOffset pos = m_f->TellI();
+ wxFileOffset pos = stream.TellI();
wxFileOffset numBytes = 3 * local_ncolors;
- m_f->SeekI(numBytes, wxFromCurrent);
- if (m_f->TellI() != (pos + numBytes))
+ stream.SeekI(numBytes, wxFromCurrent);
+ if (stream.TellI() != (pos + numBytes))
{
Destroy();
return wxGIF_INVFORMAT;
}
/* initial code size */
- (void) m_f->GetC();
+ (void) stream.GetC();
/* skip all data */
- while ((i = (unsigned char)m_f->GetC()) != 0)
+ while ((i = (unsigned char)stream.GetC()) != 0)
{
- m_f->SeekI(i, wxFromCurrent);
+ stream.SeekI(i, wxFromCurrent);
}
}
else if ((type != 0x3B) && (type != 00)) /* testing */
#include "wx/filefn.h"
#include "wx/wfstream.h"
#include "wx/quantize.h"
+#include "wx/anidecod.h"
// For memcpy
#include <string.h>
#if wxUSE_STREAMS
bool wxANIHandler::LoadFile(wxImage *image, wxInputStream& stream,
- bool verbose, int index)
+ bool WXUNUSED(verbose), int index)
{
- wxInt32 FCC1, FCC2;
- wxUint32 datalen;
-
- wxInt32 riff32;
- memcpy( &riff32, "RIFF", 4 );
- wxInt32 list32;
- memcpy( &list32, "LIST", 4 );
- wxInt32 ico32;
- memcpy( &ico32, "icon", 4 );
- int iIcon = 0;
-
- stream.SeekI(0);
- stream.Read(&FCC1, 4);
- if ( FCC1 != riff32 )
+ wxANIDecoder decoder;
+ if (!decoder.Load(stream))
return false;
- // we have a riff file:
- while (stream.IsOk())
- {
- // we always have a data size
- stream.Read(&datalen, 4);
- datalen = wxINT32_SWAP_ON_BE(datalen) ;
- //data should be padded to make even number of bytes
- if (datalen % 2 == 1) datalen ++ ;
- //now either data or a FCC
- if ( (FCC1 == riff32) || (FCC1 == list32) )
- {
- stream.Read(&FCC2, 4);
- }
- else
- {
- if (FCC1 == ico32 && iIcon >= index)
- {
- return DoLoadFile(image, stream, verbose, -1);
- }
- else
- {
- stream.SeekI(stream.TellI() + datalen);
- if ( FCC1 == ico32 )
- iIcon ++;
- }
- }
-
- // try to read next data chunk:
- stream.Read(&FCC1, 4);
- }
- return false;
+ return decoder.ConvertToImage(index != -1 ? (size_t)index : 0, image);
}
bool wxANIHandler::DoCanRead(wxInputStream& stream)
{
- wxInt32 FCC1, FCC2;
- wxUint32 datalen ;
-
- wxInt32 riff32;
- memcpy( &riff32, "RIFF", 4 );
- wxInt32 list32;
- memcpy( &list32, "LIST", 4 );
- wxInt32 ico32;
- memcpy( &ico32, "icon", 4 );
- wxInt32 anih32;
- memcpy( &anih32, "anih", 4 );
-
- stream.SeekI(0);
- if ( !stream.Read(&FCC1, 4) )
- return false;
-
- if ( FCC1 != riff32 )
- return false;
-
- // we have a riff file:
- while ( stream.IsOk() )
- {
- if ( FCC1 == anih32 )
- return true;
- // we always have a data size:
- stream.Read(&datalen, 4);
- datalen = wxINT32_SWAP_ON_BE(datalen) ;
- //data should be padded to make even number of bytes
- if (datalen % 2 == 1) datalen ++ ;
- // now either data or a FCC:
- if ( (FCC1 == riff32) || (FCC1 == list32) )
- {
- stream.Read(&FCC2, 4);
- }
- else
- {
- stream.SeekI(stream.TellI() + datalen);
- }
-
- // try to read next data chunk:
- if ( !stream.Read(&FCC1, 4) )
- {
- // reading failed -- either EOF or IO error, bail out anyhow
- return false;
- }
- }
-
- return false;
+ wxANIDecoder decod;
+ return decod.CanRead(stream);
}
int wxANIHandler::GetImageCount(wxInputStream& stream)
{
- wxInt32 FCC1, FCC2;
- wxUint32 datalen ;
-
- wxInt32 riff32;
- memcpy( &riff32, "RIFF", 4 );
- wxInt32 list32;
- memcpy( &list32, "LIST", 4 );
- wxInt32 ico32;
- memcpy( &ico32, "icon", 4 );
- wxInt32 anih32;
- memcpy( &anih32, "anih", 4 );
-
- stream.SeekI(0);
- stream.Read(&FCC1, 4);
- if ( FCC1 != riff32 )
+ wxANIDecoder decoder;
+ if (!decoder.Load(stream))
return wxNOT_FOUND;
- // we have a riff file:
- while ( stream.IsOk() )
- {
- // we always have a data size:
- stream.Read(&datalen, 4);
- datalen = wxINT32_SWAP_ON_BE(datalen) ;
- //data should be padded to make even number of bytes
- if (datalen % 2 == 1) datalen ++ ;
- // now either data or a FCC:
- if ( (FCC1 == riff32) || (FCC1 == list32) )
- {
- stream.Read(&FCC2, 4);
- }
- else
- {
- if ( FCC1 == anih32 )
- {
- wxUint32 *pData = new wxUint32[datalen/4];
- stream.Read(pData, datalen);
- int nIcons = wxINT32_SWAP_ON_BE(*(pData + 1));
- delete[] pData;
- return nIcons;
- }
- else
- stream.SeekI(stream.TellI() + datalen);
- }
-
- // try to read next data chunk:
- stream.Read(&FCC1, 4);
- }
-
- return wxNOT_FOUND;
+ return decoder.GetFrameCount();
}
#endif // wxUSE_STREAMS
bool verbose, int index)
{
wxGIFDecoder *decod;
- int error;
+ wxGIFErrorCode error;
bool ok = true;
// image->Destroy();
- decod = new wxGIFDecoder(&stream, true);
- error = decod->ReadGIF();
+ decod = new wxGIFDecoder();
+ error = decod->LoadGIF(stream);
if ((error != wxGIF_OK) && (error != wxGIF_TRUNCATED))
{
/* go on; image data is OK */
}
- if (index != -1)
- {
- // We're already on index = 0 by default. So no need
- // to call GoFrame(0) then. On top of that GoFrame doesn't
- // accept an index of 0. (Instead GoFirstFrame() should be used)
- // Also if the gif image has only one frame, calling GoFrame(0)
- // fails because GoFrame() only works with gif animations.
- // (It fails if IsAnimation() returns false)
- // All valid reasons to NOT call GoFrame when index equals 0.
- if (index != 0)
- {
- ok = decod->GoFrame(index);
- }
- }
-
if (ok)
{
- ok = decod->ConvertToImage(image);
+ ok = decod->ConvertToImage(index != -1 ? (size_t)index : 0, image);
}
else
{
bool wxGIFHandler::DoCanRead( wxInputStream& stream )
{
- wxGIFDecoder decod(&stream);
- return decod.CanRead();
+ wxGIFDecoder decod;
+ return decod.CanRead(stream);
}
#endif // wxUSE_STREAMS
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: animateg.cpp
+// Purpose: wxAnimation and wxAnimationCtrl
+// Author: Julian Smart and Guillermo Rodriguez Garcia
+// Modified by: Francesco Montorsi
+// Created: 13/8/99
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif //__BORLANDC__
+
+
+#if wxUSE_ANIMATIONCTRL
+
+#include "wx/log.h"
+#include "wx/wfstream.h"
+#include "wx/image.h"
+#include "wx/gifdecod.h"
+#include "wx/anidecod.h"
+#include "wx/dcmemory.h"
+#include "wx/dc.h"
+#include "wx/dcclient.h"
+#include "wx/animate.h"
+#include "wx/animdecod.h"
+
+
+#include <wx/listimpl.cpp>
+WX_DEFINE_LIST(wxAnimationDecoderList);
+
+wxAnimationDecoderList wxAnimation::sm_handlers;
+
+
+
+// ----------------------------------------------------------------------------
+// wxAnimation
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxAnimation, wxAnimationBase)
+#define M_ANIMDATA wx_static_cast(wxAnimationDecoder*, m_refData)
+
+wxSize wxAnimation::GetSize() const
+{
+ wxCHECK_MSG( IsOk(), wxDefaultSize, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetAnimationSize();
+}
+
+size_t wxAnimation::GetFrameCount() const
+{
+ wxCHECK_MSG( IsOk(), 0, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetFrameCount();
+}
+
+wxImage wxAnimation::GetFrame(size_t i) const
+{
+ wxCHECK_MSG( IsOk(), wxNullImage, wxT("invalid animation") );
+
+ wxImage ret;
+ if (!M_ANIMDATA->ConvertToImage(i, &ret))
+ return wxNullImage;
+ return ret;
+}
+
+int wxAnimation::GetDelay(size_t i) const
+{
+ wxCHECK_MSG( IsOk(), 0, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetDelay(i);
+}
+
+wxPoint wxAnimation::GetFramePosition(size_t frame) const
+{
+ wxCHECK_MSG( IsOk(), wxDefaultPosition, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetFramePosition(frame);
+}
+
+wxAnimationDisposal wxAnimation::GetDisposalMethod(size_t frame) const
+{
+ wxCHECK_MSG( IsOk(), wxANIM_UNSPECIFIED, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetDisposalMethod(frame);
+}
+
+wxColour wxAnimation::GetBackgroundColour() const
+{
+ wxCHECK_MSG( IsOk(), wxNullColour, wxT("invalid animation") );
+
+ return M_ANIMDATA->GetBackgroundColour();
+}
+
+bool wxAnimation::LoadFile(const wxString& filename, wxAnimationType type)
+{
+ wxFileInputStream stream(filename);
+ if (!stream.Ok())
+ return false;
+
+ return Load(stream, type);
+}
+
+bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
+{
+ UnRef();
+
+ const wxAnimationDecoder *handler;
+ if ( type == wxANIMATION_TYPE_ANY )
+ {
+ for ( wxAnimationDecoderList::compatibility_iterator node = sm_handlers.GetFirst();
+ node; node = node->GetNext() )
+ {
+ handler=(const wxAnimationDecoder*)node->GetData();
+
+ if ( handler->CanRead(stream) )
+ {
+ // do a copy of the handler from the static list which we will own
+ // as our reference data
+ m_refData = handler->Clone();
+ return M_ANIMDATA->Load(stream);
+ }
+
+ }
+
+ wxLogWarning( _("No handler found for animation type.") );
+ return false;
+ }
+
+ handler = FindHandler(type);
+
+ // do a copy of the handler from the static list which we will own
+ // as our reference data
+ m_refData = handler->Clone();
+
+ if (handler == NULL)
+ {
+ wxLogWarning( _("No animation handler for type %ld defined."), type );
+
+ return false;
+ }
+
+ if (stream.IsSeekable() && !M_ANIMDATA->CanRead(stream))
+ {
+ wxLogError(_("Animation file is not of type %ld."), type);
+ return false;
+ }
+ else
+ return M_ANIMDATA->Load(stream);
+}
+
+
+// ----------------------------------------------------------------------------
+// animation decoders
+// ----------------------------------------------------------------------------
+
+void wxAnimation::AddHandler( wxAnimationDecoder *handler )
+{
+ // Check for an existing handler of the type being added.
+ if (FindHandler( handler->GetType() ) == 0)
+ {
+ sm_handlers.Append( handler );
+ }
+ else
+ {
+ // This is not documented behaviour, merely the simplest 'fix'
+ // for preventing duplicate additions. If someone ever has
+ // a good reason to add and remove duplicate handlers (and they
+ // may) we should probably refcount the duplicates.
+ // also an issue in InsertHandler below.
+
+ wxLogDebug( _T("Adding duplicate animation handler for '%d' type"),
+ handler->GetType() );
+ delete handler;
+ }
+}
+
+void wxAnimation::InsertHandler( wxAnimationDecoder *handler )
+{
+ // Check for an existing handler of the type being added.
+ if (FindHandler( handler->GetType() ) == 0)
+ {
+ sm_handlers.Insert( handler );
+ }
+ else
+ {
+ // see AddHandler for additional comments.
+ wxLogDebug( _T("Inserting duplicate animation handler for '%d' type"),
+ handler->GetType() );
+ delete handler;
+ }
+}
+
+const wxAnimationDecoder *wxAnimation::FindHandler( wxAnimationType animType )
+{
+ wxAnimationDecoderList::compatibility_iterator node = sm_handlers.GetFirst();
+ while (node)
+ {
+ const wxAnimationDecoder *handler = (const wxAnimationDecoder *)node->GetData();
+ if (handler->GetType() == animType) return handler;
+ node = node->GetNext();
+ }
+ return 0;
+}
+
+void wxAnimation::InitStandardHandlers()
+{
+ AddHandler(new wxGIFDecoder);
+ AddHandler(new wxANIDecoder);
+}
+
+void wxAnimation::CleanUpHandlers()
+{
+ wxAnimationDecoderList::compatibility_iterator node = sm_handlers.GetFirst();
+ while (node)
+ {
+ wxAnimationDecoder *handler = (wxAnimationDecoder *)node->GetData();
+ wxAnimationDecoderList::compatibility_iterator next = node->GetNext();
+ delete handler;
+ node = next;
+ }
+
+ sm_handlers.Clear();
+}
+
+
+// A module to allow wxAnimation initialization/cleanup
+// without calling these functions from app.cpp or from
+// the user's application.
+
+class wxAnimationModule: public wxModule
+{
+DECLARE_DYNAMIC_CLASS(wxAnimationModule)
+public:
+ wxAnimationModule() {}
+ bool OnInit() { wxAnimation::InitStandardHandlers(); return true; };
+ void OnExit() { wxAnimation::CleanUpHandlers(); };
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxAnimationModule, wxModule)
+
+
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_CLASS(wxAnimationCtrl, wxAnimationCtrlBase)
+BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase)
+ EVT_PAINT(wxAnimationCtrl::OnPaint)
+ EVT_SIZE(wxAnimationCtrl::OnSize)
+ EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer)
+END_EVENT_TABLE()
+
+bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id,
+ const wxAnimation& animation, const wxPoint& pos,
+ const wxSize& size, long style, const wxString& name)
+{
+ m_animation = animation;
+ m_currentFrame = 0;
+ m_looped = true;
+ m_isPlaying = false;
+ m_useWinBackgroundColour = false;
+ m_timer.SetOwner(this);
+
+ if (!wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name))
+ return false;
+
+ // by default we get the same background colour of our parent
+ SetBackgroundColour(parent->GetBackgroundColour());
+ return true;
+}
+
+wxAnimationCtrl::~wxAnimationCtrl()
+{
+ Stop();
+}
+
+bool wxAnimationCtrl::LoadFile(const wxString& filename, wxAnimationType type)
+{
+ wxAnimation anim;
+ if (!anim.LoadFile(filename, type) ||
+ !anim.IsOk())
+ return false;
+
+ SetAnimation(anim);
+ return true;
+}
+
+wxSize wxAnimationCtrl::DoGetBestSize() const
+{
+ if (m_animation.IsOk() && !this->HasFlag(wxAC_NO_AUTORESIZE))
+ return m_animation.GetSize();
+
+ return wxSize(100, 100);
+}
+
+void wxAnimationCtrl::SetAnimation(const wxAnimation& animation)
+{
+ if (IsPlaying())
+ Stop();
+
+ m_animation = animation;
+
+ if (m_animation.GetBackgroundColour() == wxNullColour)
+ SetUseWindowBackgroundColour();
+ if (!this->HasFlag(wxAC_NO_AUTORESIZE))
+ FitToAnimation();
+
+ // display first frame
+ m_currentFrame = 0;
+ if (m_animation.IsOk())
+ RebuildBackingStoreUpToFrame(0);
+ else
+ {
+ // clear to
+ wxMemoryDC dc;
+ dc.SelectObject(m_backingStore);
+
+ // Draw the background
+ DisposeToBackground(dc);
+ }
+
+ Refresh();
+}
+
+void wxAnimationCtrl::FitToAnimation()
+{
+ SetSize(m_animation.GetSize());
+}
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl - stop/play methods
+// ----------------------------------------------------------------------------
+
+void wxAnimationCtrl::Stop()
+{
+ // leave current frame displayed until Play() is called again
+ m_timer.Stop();
+ m_isPlaying = false;
+}
+
+bool wxAnimationCtrl::Play(bool looped)
+{
+ if (!m_animation.IsOk())
+ return false;
+
+ int oldframe = m_currentFrame;
+ m_looped = looped;
+ m_currentFrame = 0;
+ m_isPlaying = true;
+
+ // small optimization: if the back store was already updated to the
+ // first frame, don't rebuild it
+ if (oldframe != 0)
+ RebuildBackingStoreUpToFrame(0);
+
+ // DrawCurrentFrame() will use our updated backing store
+ wxClientDC clientDC(this);
+ DrawCurrentFrame(clientDC);
+
+ // start the timer
+ int delay = m_animation.GetDelay(0);
+ if (delay == 0)
+ delay = 1; // 0 is invalid timeout for wxTimer.
+ m_timer.Start(delay);
+
+ return true;
+}
+
+
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl - rendering methods
+// ----------------------------------------------------------------------------
+
+void wxAnimationCtrl::RebuildBackingStoreUpToFrame(size_t frame)
+{
+ // if we've not created the backing store yet or it's too
+ // small, then recreate it
+ wxSize sz = m_animation.GetSize(),
+ winsz = GetClientSize();
+ int w = wxMin(sz.GetWidth(), winsz.GetWidth());
+ int h = wxMin(sz.GetHeight(), winsz.GetHeight());
+
+ if (m_backingStore.GetWidth() < w ||
+ m_backingStore.GetHeight() < h)
+ m_backingStore.Create(w, h);
+
+ wxMemoryDC dc;
+ dc.SelectObject(m_backingStore);
+
+ // Draw the background
+ DisposeToBackground(dc);
+
+ // Draw all intermediate frames that haven't been removed from the animation
+ for (size_t i = 0; i < frame; i++)
+ {
+ if (m_animation.GetDisposalMethod(i) == wxANIM_DONOTREMOVE ||
+ m_animation.GetDisposalMethod(i) == wxANIM_UNSPECIFIED)
+ {
+ DrawFrame(dc, i);
+ }
+ }
+
+ // finally draw this frame
+ DrawFrame(dc, frame);
+ dc.SelectObject(wxNullBitmap);
+}
+
+void wxAnimationCtrl::IncrementalUpdateBackingStore()
+{
+ wxMemoryDC dc;
+ dc.SelectObject(m_backingStore);
+
+ // OPTIMIZATION:
+ // since wxAnimationCtrl can only play animations forward, without skipping
+ // frames, we can be sure that m_backingStore contains the m_currentFrame-1
+ // frame and thus we just need to dispose the m_currentFrame-1 frame and
+ // render the m_currentFrame-th one.
+
+ if (m_currentFrame == 0)
+ {
+ // before drawing the first frame always dispose to bg colour
+ DisposeToBackground(dc);
+ }
+ else
+ {
+ switch (m_animation.GetDisposalMethod(m_currentFrame-1))
+ {
+ case wxANIM_TOBACKGROUND:
+ DisposeToBackground(dc);
+ break;
+
+ case wxANIM_TOPREVIOUS:
+ // this disposal should never be used too often.
+ // E.g. GIF specification explicitely say to keep the usage of this
+ // disposal limited to the minimum.
+ // In fact it may require a lot of time to restore
+ if (m_currentFrame == 1)
+ {
+ // if 0-th frame disposal is to restore to previous frame,
+ // the best we can do is to restore to background
+ DisposeToBackground(dc);
+ }
+ else
+ RebuildBackingStoreUpToFrame(m_currentFrame-2);
+ break;
+
+ case wxANIM_DONOTREMOVE:
+ case wxANIM_UNSPECIFIED:
+ break;
+ }
+ }
+
+ // now just draw the current frame on the top of the backing store
+ DrawFrame(dc, m_currentFrame);
+ dc.SelectObject(wxNullBitmap);
+}
+
+void wxAnimationCtrl::DrawFrame(wxDC &dc, size_t frame)
+{
+ // PERFORMANCE NOTE:
+ // this draw stuff is not as fast as possible: the wxAnimationDecoder
+ // needs first to convert from its internal format to wxImage RGB24;
+ // the wxImage is then converted as a wxBitmap and finally blitted.
+ // If wxAnimationDecoder had a function to convert directly from its
+ // internal format to a port-specific wxBitmap, it would be somewhat faster.
+ wxBitmap bmp(m_animation.GetFrame(frame));
+ dc.DrawBitmap(bmp, m_animation.GetFramePosition(frame),
+ true /* use mask */);
+}
+
+void wxAnimationCtrl::DrawCurrentFrame(wxDC& dc)
+{
+ wxASSERT(m_backingStore.Ok());
+
+ // m_backingStore always contains the current frame
+ dc.DrawBitmap(m_backingStore, 0, 0);
+}
+
+void wxAnimationCtrl::DisposeToBackground(wxDC& dc)
+{
+ wxBrush brush(IsUsingWindowBackgroundColour() ?
+ this->GetBackgroundColour() : m_animation.GetBackgroundColour(), wxSOLID);
+ dc.SetBackground(brush);
+ dc.Clear();
+}
+
+// ----------------------------------------------------------------------------
+// wxAnimationCtrl - event handlers
+// ----------------------------------------------------------------------------
+
+void wxAnimationCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
+{
+ // VERY IMPORTANT: the wxPaintDC *must* be created in any case
+ wxPaintDC dc(this);
+
+ // both if we are playing or not, we need to refresh the current frame
+ if (m_backingStore.Ok())
+ DrawCurrentFrame(dc);
+ //else: m_animation is not valid and thus we don't have a valid backing store...
+}
+
+void wxAnimationCtrl::OnTimer(wxTimerEvent &WXUNUSED(event))
+{
+ m_currentFrame++;
+ if (m_currentFrame == m_animation.GetFrameCount())
+ {
+ // Should a non-looped animation display the last frame?
+ if (!m_looped)
+ {
+ m_timer.Stop();
+ m_isPlaying = false;
+ return;
+ }
+ else
+ m_currentFrame = 0; // let's restart
+ }
+
+ IncrementalUpdateBackingStore();
+
+ wxClientDC dc(this);
+ DrawCurrentFrame(dc);
+
+ // Set the timer for the next frame
+ int delay = m_animation.GetDelay(m_currentFrame);
+ if (delay == 0)
+ delay = 1; // 0 is invalid timeout for wxTimer.
+ m_timer.Start(delay);
+}
+
+void wxAnimationCtrl::OnSize(wxSizeEvent &WXUNUSED(event))
+{
+ // NB: resizing an animation control may take a lot of time
+ // for big animations as the backing store must be
+ // extended and rebuilt. Try to avoid it!!
+ if (m_animation.IsOk())
+ RebuildBackingStoreUpToFrame(m_currentFrame);
+}
+
+#endif // wxUSE_ANIMATIONCTRL
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/gtk/animate.cpp
+// Purpose: wxAnimation and wxAnimationCtrl
+// Author: Francesco Montorsi
+// Modified By:
+// Created: 24/09/2006
+// Id: $Id$
+// Copyright: (c) Francesco Montorsi
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_ANIMATIONCTRL
+
+#include "wx/animate.h"
+#include <gtk/gtk.h>
+#include <gtk/gtkimage.h>
+
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+void gdk_pixbuf_area_updated(GdkPixbufLoader *loader,
+ gint x,
+ gint y,
+ gint width,
+ gint height,
+ wxAnimation *anim)
+{
+ if (anim && anim->GetPixbuf() == NULL)
+ {
+ // we need to set the pixbuf only if this is the first time this signal
+ // has been called!
+ anim->SetPixbuf(gdk_pixbuf_loader_get_animation(loader));
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// wxAnimation
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxAnimation, wxAnimationBase)
+
+bool wxAnimation::LoadFile(const wxString &name, wxAnimationType WXUNUSED(type))
+{
+ UnRef();
+ m_pixbuf = gdk_pixbuf_animation_new_from_file(name.c_str(), NULL);
+ return IsOk();
+}
+
+bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
+{
+ UnRef();
+
+ char anim_type[12];
+ switch (type)
+ {
+ case wxANIMATION_TYPE_GIF:
+ strcpy(anim_type, "gif");
+ break;
+
+ case wxANIMATION_TYPE_ANI:
+ strcpy(anim_type, "ani");
+ break;
+
+ default:
+ break;
+ }
+
+ // create a GdkPixbufLoader
+ GError *error = NULL;
+ GdkPixbufLoader *loader;
+ if (type != wxANIMATION_TYPE_INVALID && type != wxANIMATION_TYPE_ANY)
+ loader = gdk_pixbuf_loader_new_with_type(anim_type, &error);
+ else
+ loader = gdk_pixbuf_loader_new();
+
+ if (!loader)
+ {
+ wxLogDebug(wxT("Could not create the loader for '%s' animation type"), anim_type);
+ return false;
+ }
+
+ // connect to loader signals
+ g_signal_connect(loader, "area-updated", G_CALLBACK(gdk_pixbuf_area_updated), this);
+
+ //m_bLoadComplete = false;
+ guchar buf[2048];
+ while (stream.IsOk())
+ {
+ // read a chunk of data
+ stream.Read(buf, 2048);
+
+ // fetch all data into the loader
+ if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error))
+ {
+ gdk_pixbuf_loader_close(loader, &error);
+ wxLogDebug(wxT("Could not write to the loader"));
+ return false;
+ }
+ }
+
+ // load complete
+ if (!gdk_pixbuf_loader_close(loader, &error))
+ {
+ wxLogDebug(wxT("Could not close the loader"));
+ return false;
+ }
+ //m_bLoadComplete = true;
+
+ // wait until we get the last area_updated signal
+ return true;
+}
+
+
+//-----------------------------------------------------------------------------
+// wxAnimationCtrl
+//-----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxAnimationCtrl, wxAnimationCtrlBase)
+BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase)
+ EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer)
+END_EVENT_TABLE()
+
+bool wxAnimationCtrl::Create( wxWindow *parent, wxWindowID id,
+ const wxAnimation& anim,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name)
+{
+ m_needParent = true;
+ m_acceptsFocus = true;
+
+ if (!PreCreation( parent, pos, size ) ||
+ !wxControl::CreateBase(parent, id, pos, size, style & wxWINDOW_STYLE_MASK,
+ wxDefaultValidator, name))
+ {
+ wxFAIL_MSG( wxT("wxAnimationCtrl creation failed") );
+ return false;
+ }
+
+ SetWindowStyle(style);
+
+ m_widget = gtk_image_new();
+ gtk_widget_show( GTK_WIDGET(m_widget) );
+
+ m_parent->DoAddChild( this );
+
+ PostCreation(size);
+ SetBestSize(size);
+
+ m_anim = NULL;
+ m_iter = NULL;
+ m_bPlaying = false;
+ if (anim != wxNullAnimation)
+ SetAnimation(anim);
+
+ // init the timer used for animation
+ m_timer.SetOwner(this);
+
+ return true;
+}
+
+wxAnimationCtrl::~wxAnimationCtrl()
+{
+ ResetAnim();
+ ResetIter();
+}
+
+bool wxAnimationCtrl::LoadFile(const wxString &filename, wxAnimationType type)
+{
+ wxAnimation anim;
+ if (!anim.LoadFile(filename, type))
+ return false;
+
+ SetAnimation(anim);
+ return true;
+}
+
+void wxAnimationCtrl::SetAnimation(const wxAnimation &anim)
+{
+ if (IsPlaying())
+ Stop();
+
+ ResetAnim();
+ ResetIter();
+
+ // copy underlying GdkPixbuf object
+ m_anim = anim.GetPixbuf();
+
+ // m_anim may be null in case wxNullAnimation has been passed
+ if (m_anim)
+ {
+ // add a reference to the GdkPixbufAnimation
+ g_object_ref(m_anim);
+
+ if (!this->HasFlag(wxAC_NO_AUTORESIZE))
+ FitToAnimation();
+
+ // display first frame
+ gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget),
+ gdk_pixbuf_animation_get_static_image(m_anim));
+ }
+ else
+ {
+ // we need to clear the control to the background colour
+ ClearToBackgroundColour();
+ }
+}
+
+void wxAnimationCtrl::FitToAnimation()
+{
+ if (!m_anim)
+ return;
+
+ int w = gdk_pixbuf_animation_get_width(m_anim),
+ h = gdk_pixbuf_animation_get_height(m_anim);
+
+ // update our size to fit animation
+ //if (w > 0 && h > 0)
+// gtk_widget_set_size_request(m_widget, w, h);
+ SetSize(w, h);
+}
+
+bool wxAnimationCtrl::Play()
+{
+ if (m_anim == NULL)
+ return false;
+
+ // init the iterator and start a one-shot timer
+ ResetIter();
+ m_iter = gdk_pixbuf_animation_get_iter (m_anim, NULL);
+ m_bPlaying = true;
+
+ // gdk_pixbuf_animation_iter_get_delay_time() may return -1 which means
+ // that the timer should not start
+ int n = gdk_pixbuf_animation_iter_get_delay_time(m_iter);
+ if (n >= 0)
+ m_timer.Start(n, true);
+
+ return true;
+}
+
+void wxAnimationCtrl::Stop()
+{
+ // leave current frame displayed until Play() is called again
+ if (IsPlaying())
+ m_timer.Stop();
+ m_bPlaying = false;
+}
+
+bool wxAnimationCtrl::IsPlaying() const
+{
+ // NB: we cannot just return m_timer.IsRunning() as this would not
+ // be safe as e.g. if we are displaying a frame forever,
+ // then we are "officially" still playing the animation, but
+ // the timer is not running anymore...
+ return m_bPlaying;
+}
+
+wxSize wxAnimationCtrl::DoGetBestSize() const
+{
+ if (m_anim && !this->HasFlag(wxAC_NO_AUTORESIZE))
+ {
+ return wxSize(gdk_pixbuf_animation_get_width(m_anim),
+ gdk_pixbuf_animation_get_height(m_anim));
+ }
+
+ return wxSize(100,100);
+}
+
+void wxAnimationCtrl::ClearToBackgroundColour()
+{
+ wxSize sz = GetClientSize();
+ GdkPixbuf *newpix = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8,
+ sz.GetWidth(), sz.GetHeight());
+ if (!newpix)
+ return;
+
+ wxColour clr = GetBackgroundColour();
+ guint32 col = (clr.Red() << 24) | (clr.Green() << 16) | (clr.Blue() << 8);
+ gdk_pixbuf_fill(newpix, col);
+
+ wxLogDebug(wxT("Clearing to background %s"), clr.GetAsString().c_str());
+
+ gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget), newpix);
+ g_object_unref(newpix);
+}
+
+bool wxAnimationCtrl::SetBackgroundColour( const wxColour &colour )
+{
+ // wxWindowGTK::SetBackgroundColour works but since our m_widget is a GtkImage
+ // it won't show the background colour unlike the user would expect.
+ // Thus we clear the GtkImage contents to the background colour...
+ if (!wxControl::SetBackgroundColour(colour))
+ return false;
+ ClearToBackgroundColour();
+ return true;
+}
+
+
+//-----------------------------------------------------------------------------
+// wxAnimationCtrl - event handlers
+//-----------------------------------------------------------------------------
+
+void wxAnimationCtrl::OnTimer(wxTimerEvent &ev)
+{
+ wxASSERT(m_iter != NULL);
+
+ // gdk_pixbuf_animation_iter_advance() will automatically restart
+ // the animation, if necessary and we have no way to know !!
+ if (gdk_pixbuf_animation_iter_advance(m_iter, NULL))
+ {
+ // start a new one-shot timer
+ int n = gdk_pixbuf_animation_iter_get_delay_time(m_iter);
+ if (n >= 0)
+ m_timer.Start(n, true);
+
+ gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget),
+ gdk_pixbuf_animation_iter_get_pixbuf(m_iter));
+ }
+ else
+ {
+ // no need to update the m_widget yet
+ m_timer.Start(10, true);
+ }
+}
+
+#endif // wxUSE_ANIMATIONCTRL
wxGIFDecoder *m_gifDecoder;
wxTimer *m_gifTimer;
int m_physX, m_physY;
+ size_t m_nCurrFrame;
#endif
double m_scale;
wxHtmlImageMapCell *m_imageMap;
m_gifDecoder = NULL;
m_gifTimer = NULL;
m_physX = m_physY = wxDefaultCoord;
+ m_nCurrFrame = 0;
#endif
if ( m_bmpW && m_bmpH )
(input->GetLocation().Matches(wxT("*.gif")) ||
input->GetLocation().Matches(wxT("*.GIF"))) )
{
- m_gifDecoder = new wxGIFDecoder(s, true);
- if ( m_gifDecoder->ReadGIF() == wxGIF_OK )
+ m_gifDecoder = new wxGIFDecoder();
+ if ( m_gifDecoder->LoadGIF(*s) == wxGIF_OK )
{
wxImage img;
- if ( m_gifDecoder->ConvertToImage(&img) )
+ if ( m_gifDecoder->ConvertToImage(0, &img) )
SetImage(img);
readImg = false;
if ( m_gifDecoder->IsAnimation() )
{
m_gifTimer = new wxGIFTimer(this);
- m_gifTimer->Start(m_gifDecoder->GetDelay(), true);
+ m_gifTimer->Start(m_gifDecoder->GetDelay(0), true);
}
else
{
{
wxImage img;
- m_gifDecoder->GoNextFrame(true);
+ // advance current frame
+ m_nCurrFrame++;
+ if (m_nCurrFrame == m_gifDecoder->GetFrameCount())
+ m_nCurrFrame = 0;
if ( m_physX == wxDefaultCoord )
{
wxRect rect(pos, wxSize(m_Width, m_Height));
if ( win->GetClientRect().Intersects(rect) &&
- m_gifDecoder->ConvertToImage(&img) )
+ m_gifDecoder->ConvertToImage(m_nCurrFrame, &img) )
{
#if !defined(__WXMSW__) || wxUSE_WXDIB
- if ( (int)m_gifDecoder->GetWidth() != m_Width ||
- (int)m_gifDecoder->GetHeight() != m_Height ||
- m_gifDecoder->GetLeft() != 0 || m_gifDecoder->GetTop() != 0 )
+ if ( m_gifDecoder->GetFrameSize(m_nCurrFrame) != wxSize(m_Width, m_Height) ||
+ m_gifDecoder->GetFramePosition(m_nCurrFrame) != wxPoint(0, 0) )
{
wxBitmap bmp(img);
wxMemoryDC dc;
dc.SelectObject(*m_bitmap);
- dc.DrawBitmap(bmp, m_gifDecoder->GetLeft(), m_gifDecoder->GetTop(),
+ dc.DrawBitmap(bmp, m_gifDecoder->GetFramePosition(m_nCurrFrame),
true /* use mask */);
}
else
win->Refresh(img.HasMask(), &rect);
}
- timer->Start(m_gifDecoder->GetDelay(), true);
+ timer->Start(m_gifDecoder->GetDelay(m_nCurrFrame), true);
}
void wxHtmlImageCell::Layout(int w)
# End Source File
# Begin Source File
+SOURCE=.\common\anidecod.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\common\animatecmn.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\common\appbase.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=.\generic\animateg.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\generic\bmpcboxg.cpp
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\include\wx\anidecod.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\wx\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\include\wx\app.h
# End Source File
# Begin Source File
# End Source File
# Begin Source File
+SOURCE=..\include\wx\generic\animate.h
+# End Source File
+# Begin Source File
+
SOURCE=..\include\wx\generic\bmpcbox.h
# End Source File
# Begin Source File