From: Vadim Zeitlin Date: Mon, 9 Oct 2006 17:51:07 +0000 (+0000) Subject: added wxAnimationCtrl (patch 1570325) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/72045d5768a126191a907bc640c28e81a11afdd6 added wxAnimationCtrl (patch 1570325) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41819 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/Makefile.in b/Makefile.in index ffc07ab3fb..ad0f36a06b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2574,11 +2574,15 @@ COND_TOOLKIT_WINCE_GUI_HDR = \ 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 \ @@ -2587,17 +2591,22 @@ COND_TOOLKIT_MAC_ADVANCED_PLATFORM_HDR = \ @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 \ @@ -2637,6 +2646,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \ $(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 \ @@ -2820,6 +2830,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS = \ wx/wupdlock.h \ wx/accel.h \ wx/access.h \ + wx/anidecod.h \ wx/artprov.h \ wx/bitmap.h \ wx/bookctrl.h \ @@ -3312,6 +3323,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS = \ $(__LOWLEVEL_SRC_OBJECTS) \ $(__GUI_SRC_OBJECTS) \ monodll_accesscmn.o \ + monodll_anidecod.o \ monodll_appcmn.o \ monodll_artprov.o \ monodll_artstd.o \ @@ -3480,6 +3492,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS = \ monodll_mono.o \ monodll_win32.o \ monodll_accesscmn.o \ + monodll_anidecod.o \ monodll_appcmn.o \ monodll_artprov.o \ monodll_artstd.o \ @@ -4713,6 +4726,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1 = \ 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 \ @@ -4735,6 +4749,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \ $(__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 \ @@ -5047,6 +5062,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 = \ $(__LOWLEVEL_SRC_OBJECTS_2) \ $(__GUI_SRC_OBJECTS_1) \ monolib_accesscmn.o \ + monolib_anidecod.o \ monolib_appcmn.o \ monolib_artprov.o \ monolib_artstd.o \ @@ -5215,6 +5231,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 = \ monolib_mono.o \ monolib_win32.o \ monolib_accesscmn.o \ + monolib_anidecod.o \ monolib_appcmn.o \ monolib_artprov.o \ monolib_artstd.o \ @@ -6450,6 +6467,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3 = \ 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 \ @@ -6472,6 +6490,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \ $(__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 \ @@ -6998,6 +7017,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 = \ $(__LOWLEVEL_SRC_OBJECTS_4) \ $(__GUI_SRC_OBJECTS_2) \ coredll_accesscmn.o \ + coredll_anidecod.o \ coredll_appcmn.o \ coredll_artprov.o \ coredll_artstd.o \ @@ -7166,6 +7186,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 = \ coredll_mono.o \ coredll_win32.o \ coredll_accesscmn.o \ + coredll_anidecod.o \ coredll_appcmn.o \ coredll_artprov.o \ coredll_artstd.o \ @@ -8423,6 +8444,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 = \ $(__LOWLEVEL_SRC_OBJECTS_6) \ $(__GUI_SRC_OBJECTS_3) \ corelib_accesscmn.o \ + corelib_anidecod.o \ corelib_appcmn.o \ corelib_artprov.o \ corelib_artstd.o \ @@ -8591,6 +8613,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 = \ corelib_mono.o \ corelib_win32.o \ corelib_accesscmn.o \ + corelib_anidecod.o \ corelib_appcmn.o \ corelib_artprov.o \ corelib_artstd.o \ @@ -9872,6 +9895,7 @@ COND_USE_SOSYMLINKS_1___advdll___so_symlinks_inst_cmd = rm -f \ @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 \ @@ -9894,6 +9918,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \ $(__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 \ @@ -9931,6 +9956,7 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1___advlib___depname = \ @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 \ @@ -9953,6 +9979,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \ $(__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 \ @@ -10612,9 +10639,12 @@ COND_WITH_PLUGIN_SDL_1___sound_sdl___depname = \ @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 \ @@ -10627,11 +10657,13 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS = \ 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 \ @@ -10646,6 +10678,7 @@ COND_TOOLKIT_MOTIF___ADVANCED_PLATFORM_SRC_OBJECTS = \ 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 \ @@ -10653,10 +10686,14 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS = \ 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 \ @@ -10666,9 +10703,12 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS = \ @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 \ @@ -10681,11 +10721,13 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \ 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 \ @@ -10700,6 +10742,7 @@ COND_TOOLKIT_MOTIF___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \ 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 \ @@ -10707,10 +10750,14 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \ 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 \ @@ -10723,9 +10770,12 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \ @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 @@ -10735,11 +10785,13 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \ 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 \ @@ -10751,6 +10803,7 @@ COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \ @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 \ @@ -10758,16 +10811,23 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \ 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 @@ -10777,11 +10837,13 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \ 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 \ @@ -10793,6 +10855,7 @@ COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \ @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 \ @@ -10800,10 +10863,14 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \ 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 @@ -15377,6 +15444,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @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 @@ -15716,6 +15786,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @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 @@ -15770,6 +15843,21 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @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 @@ -15857,6 +15945,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @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 @@ -19376,6 +19467,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @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 @@ -19715,6 +19809,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @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 @@ -19769,6 +19866,21 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @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 @@ -19856,6 +19968,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @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 @@ -23714,6 +23829,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @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 @@ -26621,6 +26739,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @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 @@ -26966,6 +27087,9 @@ advdll_version_rc.o: $(srcdir)/src/msw/version.rc $(ADVDLL_ODEP) 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 @@ -27020,6 +27144,21 @@ advdll_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(ADVDLL_ODEP) 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 @@ -27134,6 +27273,9 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP) @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 @@ -27149,6 +27291,9 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP) 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 @@ -27203,6 +27348,21 @@ advlib_tipdlg.o: $(srcdir)/src/generic/tipdlg.cpp $(ADVLIB_ODEP) 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 @@ -27317,6 +27477,9 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP) @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 diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 8033700998..efc791abc5 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -551,6 +551,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/common/accesscmn.cpp + src/common/anidecod.cpp src/common/appcmn.cpp src/common/artprov.cpp src/common/artstd.cpp @@ -756,6 +757,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/accel.h wx/access.h + wx/anidecod.h wx/artprov.h wx/bitmap.h wx/bookctrl.h @@ -2611,6 +2613,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + src/common/animatecmn.cpp src/common/datavcmn.cpp src/generic/aboutdlgg.cpp src/generic/bmpcboxg.cpp @@ -2632,6 +2635,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + wx/animate.h wx/bmpcbox.h wx/calctrl.h wx/dataview.h @@ -2673,12 +2677,14 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + src/generic/animateg.cpp src/common/taskbarcmn.cpp src/msw/aboutdlg.cpp src/msw/sound.cpp src/msw/taskbar.cpp + wx/generic/animate.h wx/msw/sound.h wx/msw/taskbar.h @@ -2700,6 +2706,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + src/generic/animateg.cpp src/common/taskbarcmn.cpp src/mac/carbon/aboutdlg.cpp src/mac/carbon/drawer.cpp @@ -2708,6 +2715,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/mac/corefoundation/hidjoystick.cpp + wx/generic/animate.h wx/mac/carbon/drawer.h wx/mac/carbon/sound.h wx/mac/carbon/taskbarosx.h @@ -2715,20 +2723,24 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! + src/generic/animateg.cpp src/cocoa/taskbar.mm src/common/taskbarcmn.cpp src/mac/corefoundation/hidjoystick.cpp + wx/generic/animate.h wx/cocoa/taskbar.h wx/mac/corefoundation/joystick.h + src/generic/animateg.cpp src/os2/joystick.cpp src/os2/sound.cpp + wx/generic/animate.h wx/os2/joystick.h wx/os2/sound.h @@ -2747,10 +2759,15 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/gtk/aboutdlg.cpp + src/gtk/animate.cpp src/gtk/taskbar.cpp src/gtk/dataview.cpp src/gtk/eggtrayicon.c + + wx/gtk/animate.h + + diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index 7cf4b8800e..a657f3d1f5 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -1369,6 +1369,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1587,6 +1588,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1703,6 +1705,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ !endif !if "$(WXUNIV)" == "0" ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.obj \ $(OBJS)\monodll_datavcmn.obj \ $(OBJS)\monodll_aboutdlgg.obj \ $(OBJS)\monodll_bmpcboxg.obj \ @@ -1721,6 +1724,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1730,6 +1734,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ !endif !if "$(WXUNIV)" == "1" ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.obj \ $(OBJS)\monodll_datavcmn.obj \ $(OBJS)\monodll_aboutdlgg.obj \ $(OBJS)\monodll_bmpcboxg.obj \ @@ -1748,6 +1753,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1961,6 +1967,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2179,6 +2186,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2295,6 +2303,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ !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 \ @@ -2313,6 +2322,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2322,6 +2332,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ !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 \ @@ -2340,6 +2351,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2467,6 +2479,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -2685,6 +2698,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -2904,6 +2918,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3122,6 +3137,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3242,6 +3258,7 @@ __advdll___depname = \ !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 \ @@ -3260,6 +3277,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3269,6 +3287,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ !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 \ @@ -3287,6 +3306,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3299,6 +3319,7 @@ __advlib___depname = \ !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 \ @@ -3317,6 +3338,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3326,6 +3348,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ !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 \ @@ -3344,6 +3367,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -5635,6 +5659,11 @@ $(OBJS)\monodll_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -6200,6 +6229,11 @@ $(OBJS)\monodll_vscroll.obj: ..\..\src\generic\vscroll.cpp $(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) $** @@ -6290,6 +6324,11 @@ $(OBJS)\monodll_wizard.obj: ..\..\src\generic\wizard.cpp $(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) $** @@ -7548,6 +7587,11 @@ $(OBJS)\monolib_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -8113,6 +8157,11 @@ $(OBJS)\monolib_vscroll.obj: ..\..\src\generic\vscroll.cpp $(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) $** @@ -8203,6 +8252,11 @@ $(OBJS)\monolib_wizard.obj: ..\..\src\generic\wizard.cpp $(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) $** @@ -9482,6 +9536,11 @@ $(OBJS)\coredll_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -10722,6 +10781,11 @@ $(OBJS)\corelib_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -11296,6 +11360,9 @@ $(OBJS)\advdll_version.res: ..\..\src\msw\version.rc $(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) $** @@ -11350,6 +11417,9 @@ $(OBJS)\advdll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp $(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) $** @@ -11371,6 +11441,9 @@ $(OBJS)\advlib_dummy.obj: ..\..\src\common\dummy.cpp $(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) $** @@ -11425,6 +11498,9 @@ $(OBJS)\advlib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp $(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) $** diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 5426f56632..e5d1946fa9 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -1379,6 +1379,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1599,6 +1600,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1716,6 +1718,7 @@ endif endif ifeq ($(WXUNIV),0) ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.o \ $(OBJS)\monodll_datavcmn.o \ $(OBJS)\monodll_aboutdlgg.o \ $(OBJS)\monodll_bmpcboxg.o \ @@ -1734,6 +1737,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1743,6 +1747,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ endif ifeq ($(WXUNIV),1) ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.o \ $(OBJS)\monodll_datavcmn.o \ $(OBJS)\monodll_aboutdlgg.o \ $(OBJS)\monodll_bmpcboxg.o \ @@ -1761,6 +1766,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1977,6 +1983,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2197,6 +2204,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2314,6 +2322,7 @@ endif 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 \ @@ -2332,6 +2341,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2341,6 +2351,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ 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 \ @@ -2359,6 +2370,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2499,6 +2511,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -2719,6 +2732,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -2944,6 +2958,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3164,6 +3179,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3289,6 +3305,7 @@ endif 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 \ @@ -3307,6 +3324,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3316,6 +3334,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ 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 \ @@ -3334,6 +3353,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3350,6 +3370,7 @@ endif 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 \ @@ -3368,6 +3389,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3377,6 +3399,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ 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 \ @@ -3395,6 +3418,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -5852,6 +5876,11 @@ $(OBJS)\monodll_accesscmn.o: ../../src/common/accesscmn.cpp $(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) $< @@ -6417,6 +6446,11 @@ $(OBJS)\monodll_vscroll.o: ../../src/generic/vscroll.cpp $(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) $< @@ -6507,6 +6541,11 @@ $(OBJS)\monodll_wizard.o: ../../src/generic/wizard.cpp $(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) $< @@ -7865,6 +7904,11 @@ $(OBJS)\monolib_accesscmn.o: ../../src/common/accesscmn.cpp $(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) $< @@ -8430,6 +8474,11 @@ $(OBJS)\monolib_vscroll.o: ../../src/generic/vscroll.cpp $(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) $< @@ -8520,6 +8569,11 @@ $(OBJS)\monolib_wizard.o: ../../src/generic/wizard.cpp $(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) $< @@ -9899,6 +9953,11 @@ $(OBJS)\coredll_accesscmn.o: ../../src/common/accesscmn.cpp $(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) $< @@ -11239,6 +11298,11 @@ $(OBJS)\corelib_accesscmn.o: ../../src/common/accesscmn.cpp $(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) $< @@ -11813,6 +11877,9 @@ $(OBJS)\advdll_version_rc.o: ../../src/msw/version.rc $(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) $< @@ -11867,6 +11934,9 @@ $(OBJS)\advdll_tipdlg.o: ../../src/generic/tipdlg.cpp $(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) $< @@ -11888,6 +11958,9 @@ $(OBJS)\advlib_dummy.o: ../../src/common/dummy.cpp $(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) $< @@ -11942,6 +12015,9 @@ $(OBJS)\advlib_tipdlg.o: ../../src/generic/tipdlg.cpp $(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) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index a606c68d1f..1acada9fb5 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -1536,6 +1536,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1754,6 +1755,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1870,6 +1872,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ !endif !if "$(WXUNIV)" == "0" ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.obj \ $(OBJS)\monodll_datavcmn.obj \ $(OBJS)\monodll_aboutdlgg.obj \ $(OBJS)\monodll_bmpcboxg.obj \ @@ -1888,6 +1891,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -1897,6 +1901,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ !endif !if "$(WXUNIV)" == "1" ____ADVANCED_SRC_FILENAMES_OBJECTS = \ + $(OBJS)\monodll_animatecmn.obj \ $(OBJS)\monodll_datavcmn.obj \ $(OBJS)\monodll_aboutdlgg.obj \ $(OBJS)\monodll_bmpcboxg.obj \ @@ -1915,6 +1920,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \ $(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 \ @@ -2134,6 +2140,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2352,6 +2359,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2468,6 +2476,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ !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 \ @@ -2486,6 +2495,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2495,6 +2505,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ !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 \ @@ -2513,6 +2524,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \ $(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 \ @@ -2670,6 +2682,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -2888,6 +2901,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3113,6 +3127,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3331,6 +3346,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3457,6 +3473,7 @@ __RUNTIME_LIBS_195 = $(__THREADSFLAG) !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 \ @@ -3475,6 +3492,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3484,6 +3502,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ !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 \ @@ -3502,6 +3521,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \ $(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 \ @@ -3520,6 +3540,7 @@ __RUNTIME_LIBS_208 = $(__THREADSFLAG) !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 \ @@ -3538,6 +3559,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -3547,6 +3569,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ !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 \ @@ -3565,6 +3588,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \ $(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 \ @@ -5968,6 +5992,11 @@ $(OBJS)\monodll_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -6533,6 +6562,11 @@ $(OBJS)\monodll_vscroll.obj: ..\..\src\generic\vscroll.cpp $(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) $** @@ -6623,6 +6657,11 @@ $(OBJS)\monodll_wizard.obj: ..\..\src\generic\wizard.cpp $(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) $** @@ -7881,6 +7920,11 @@ $(OBJS)\monolib_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -8446,6 +8490,11 @@ $(OBJS)\monolib_vscroll.obj: ..\..\src\generic\vscroll.cpp $(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) $** @@ -8536,6 +8585,11 @@ $(OBJS)\monolib_wizard.obj: ..\..\src\generic\wizard.cpp $(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) $** @@ -9815,6 +9869,11 @@ $(OBJS)\coredll_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -11055,6 +11114,11 @@ $(OBJS)\corelib_accesscmn.obj: ..\..\src\common\accesscmn.cpp $(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) $** @@ -11629,6 +11693,9 @@ $(OBJS)\advdll_version.res: ..\..\src\msw\version.rc $(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) $** @@ -11683,6 +11750,9 @@ $(OBJS)\advdll_tipdlg.obj: ..\..\src\generic\tipdlg.cpp $(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) $** @@ -11704,6 +11774,9 @@ $(OBJS)\advlib_dummy.obj: ..\..\src\common\dummy.cpp $(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) $** @@ -11758,6 +11831,9 @@ $(OBJS)\advlib_tipdlg.obj: ..\..\src\generic\tipdlg.cpp $(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) $** diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat index ae2182a250..b367c426a2 100644 --- a/build/msw/makefile.wat +++ b/build/msw/makefile.wat @@ -301,6 +301,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(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 & @@ -521,6 +522,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(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 & @@ -639,6 +641,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & ____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 & @@ -657,6 +660,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = & $(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 & @@ -666,6 +670,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = & !endif !ifeq WXUNIV 1 ____ADVANCED_SRC_FILENAMES_OBJECTS = & + $(OBJS)\monodll_animatecmn.obj & $(OBJS)\monodll_datavcmn.obj & $(OBJS)\monodll_aboutdlgg.obj & $(OBJS)\monodll_bmpcboxg.obj & @@ -684,6 +689,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = & $(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 & @@ -903,6 +909,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(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 & @@ -1123,6 +1130,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(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 & @@ -1241,6 +1249,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & ____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 & @@ -1259,6 +1268,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = & $(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 & @@ -1268,6 +1278,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = & !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 & @@ -1286,6 +1297,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = & $(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 & @@ -1432,6 +1444,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(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 & @@ -1652,6 +1665,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(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 & @@ -1879,6 +1893,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(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 & @@ -2099,6 +2114,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(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 & @@ -2226,6 +2242,7 @@ __advdll___depname = & ____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 & @@ -2244,6 +2261,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = & $(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 & @@ -2253,6 +2271,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = & !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 & @@ -2271,6 +2290,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = & $(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 & @@ -2289,6 +2309,7 @@ __advlib___depname = & ____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 & @@ -2307,6 +2328,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = & $(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 & @@ -2316,6 +2338,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = & !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 & @@ -2334,6 +2357,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = & $(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 & @@ -6080,6 +6104,11 @@ $(OBJS)\monodll_accesscmn.obj : .AUTODEPEND ..\..\src\common\accesscmn.cpp $(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) $< @@ -6645,6 +6674,11 @@ $(OBJS)\monodll_vscroll.obj : .AUTODEPEND ..\..\src\generic\vscroll.cpp $(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) $< @@ -6735,6 +6769,11 @@ $(OBJS)\monodll_wizard.obj : .AUTODEPEND ..\..\src\generic\wizard.cpp $(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) $< @@ -8093,6 +8132,11 @@ $(OBJS)\monolib_accesscmn.obj : .AUTODEPEND ..\..\src\common\accesscmn.cpp $(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) $< @@ -8658,6 +8702,11 @@ $(OBJS)\monolib_vscroll.obj : .AUTODEPEND ..\..\src\generic\vscroll.cpp $(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) $< @@ -8748,6 +8797,11 @@ $(OBJS)\monolib_wizard.obj : .AUTODEPEND ..\..\src\generic\wizard.cpp $(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) $< @@ -10127,6 +10181,11 @@ $(OBJS)\coredll_accesscmn.obj : .AUTODEPEND ..\..\src\common\accesscmn.cpp $(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) $< @@ -11467,6 +11526,11 @@ $(OBJS)\corelib_accesscmn.obj : .AUTODEPEND ..\..\src\common\accesscmn.cpp $(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) $< @@ -12041,6 +12105,9 @@ $(OBJS)\advdll_version.res : .AUTODEPEND ..\..\src\msw\version.rc $(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) $< @@ -12095,6 +12162,9 @@ $(OBJS)\advdll_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp $(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) $< @@ -12116,6 +12186,9 @@ $(OBJS)\advlib_dummy.obj : .AUTODEPEND ..\..\src\common\dummy.cpp $(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) $< @@ -12170,6 +12243,9 @@ $(OBJS)\advlib_tipdlg.obj : .AUTODEPEND ..\..\src\generic\tipdlg.cpp $(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) $< diff --git a/build/msw/wx_adv.dsp b/build/msw/wx_adv.dsp index e6de6d2529..44064f85c7 100644 --- a/build/msw/wx_adv.dsp +++ b/build/msw/wx_adv.dsp @@ -452,6 +452,10 @@ LIB32=link.exe -lib # 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 @@ -620,6 +624,10 @@ SOURCE=..\..\src\generic\aboutdlgg.cpp # 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 @@ -1137,6 +1145,10 @@ SOURCE=..\..\include\wx\generic\aboutdlgg.h # 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 @@ -1197,6 +1209,10 @@ SOURCE=..\..\include\wx\aboutdlg.h # 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 diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp index 17b8d2c14f..b7ea3d8e6f 100644 --- a/build/msw/wx_core.dsp +++ b/build/msw/wx_core.dsp @@ -456,6 +456,10 @@ SOURCE=..\..\src\common\accesscmn.cpp # 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 @@ -8165,6 +8169,10 @@ SOURCE=..\..\include\wx\generic\accel.h # 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 @@ -8589,6 +8597,14 @@ SOURCE=..\..\include\wx\access.h # 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 diff --git a/configure.in b/configure.in index 5179c97467..ecb36ecaa6 100644 --- a/configure.in +++ b/configure.in @@ -510,6 +510,7 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_VALIDATORS=no DEFAULT_wxUSE_ACCEL=no + DEFAULT_wxUSE_ANIMATIONCTRL=no DEFAULT_wxUSE_BUTTON=no DEFAULT_wxUSE_BMPBUTTON=no DEFAULT_wxUSE_BITMAPCOMBOBOX=no @@ -726,6 +727,7 @@ else DEFAULT_wxUSE_VALIDATORS=yes DEFAULT_wxUSE_ACCEL=yes + DEFAULT_wxUSE_ANIMATIONCTRL=yes DEFAULT_wxUSE_BUTTON=yes DEFAULT_wxUSE_BMPBUTTON=yes DEFAULT_wxUSE_BITMAPCOMBOBOX=yes @@ -1054,6 +1056,7 @@ dnl --disable- later on the command line - but by default all will be 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 @@ -1103,6 +1106,7 @@ if test "$wxUSE_CONTROLS" = "yes"; then 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 @@ -1153,6 +1157,7 @@ elif test "$wxUSE_CONTROLS" = "no"; then 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) @@ -6462,6 +6467,12 @@ if test "$wxUSE_ACCEL" = "yes"; then 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 diff --git a/docs/changes.txt b/docs/changes.txt index cceaf5143d..4c145eeb69 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -68,6 +68,7 @@ All (GUI): - 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. diff --git a/docs/latex/wx/animatctrl.tex b/docs/latex/wx/animatctrl.tex new file mode 100644 index 0000000000..d66bac7f0c --- /dev/null +++ b/docs/latex/wx/animatctrl.tex @@ -0,0 +1,159 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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} + + + +\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. diff --git a/docs/latex/wx/animation.tex b/docs/latex/wx/animation.tex new file mode 100644 index 0000000000..298c9f1df4 --- /dev/null +++ b/docs/latex/wx/animation.tex @@ -0,0 +1,153 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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} + + + +\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. + diff --git a/docs/latex/wx/category.tex b/docs/latex/wx/category.tex index 764cebed52..750d1456b7 100644 --- a/docs/latex/wx/category.tex +++ b/docs/latex/wx/category.tex @@ -85,6 +85,7 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t \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} diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex index 60d8b51378..08aa6d1a82 100644 --- a/docs/latex/wx/classes.tex +++ b/docs/latex/wx/classes.tex @@ -11,6 +11,8 @@ \input activevt.tex \input activexcontainer.tex \input activexevt.tex +\input animation.tex +\input animatctrl.tex \input app.tex \input apptraits.tex \input archive.tex diff --git a/include/wx/anidecod.h b/include/wx/anidecod.h new file mode 100644 index 0000000000..4fe25b6da8 --- /dev/null +++ b/include/wx/anidecod.h @@ -0,0 +1,77 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 + diff --git a/include/wx/animate.h b/include/wx/animate.h new file mode 100644 index 0000000000..5d2772fec5 --- /dev/null +++ b/include/wx/animate.h @@ -0,0 +1,108 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 +#include +#include +#include +#include +#include +#include +#include +#include + +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__ diff --git a/include/wx/animdecod.h b/include/wx/animdecod.h new file mode 100644 index 0000000000..2c65126e75 --- /dev/null +++ b/include/wx/animdecod.h @@ -0,0 +1,139 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 + diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h index 39a66b6c4e..6ad8476e07 100644 --- a/include/wx/chkconf.h +++ b/include/wx/chkconf.h @@ -328,6 +328,14 @@ # 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." diff --git a/include/wx/generic/animate.h b/include/wx/generic/animate.h new file mode 100644 index 0000000000..a244d32ccd --- /dev/null +++ b/include/wx/generic/animate.h @@ -0,0 +1,189 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 +#include +#include +#include +#include +#include +#include +#include +#include + +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__ diff --git a/include/wx/gifdecod.h b/include/wx/gifdecod.h index cb9490e892..346ae800b9 100644 --- a/include/wx/gifdecod.h +++ b/include/wx/gifdecod.h @@ -17,6 +17,10 @@ #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; // -------------------------------------------------------------------------- @@ -29,7 +33,7 @@ // 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 */ @@ -37,18 +41,6 @@ enum 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 */ @@ -56,45 +48,12 @@ enum // 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 */ @@ -103,52 +62,51 @@ private: 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) }; diff --git a/include/wx/gtk/animate.h b/include/wx/gtk/animate.h new file mode 100644 index 0000000000..6e4704a42c --- /dev/null +++ b/include/wx/gtk/animate.h @@ -0,0 +1,181 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 + +// ---------------------------------------------------------------------------- +// 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__ diff --git a/include/wx/imagbmp.h b/include/wx/imagbmp.h index d452670793..c85fac0e6a 100644 --- a/include/wx/imagbmp.h +++ b/include/wx/imagbmp.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // 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 diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h index 01a5ed2e82..9e2c824b85 100644 --- a/include/wx/mac/setup0.h +++ b/include/wx/mac/setup0.h @@ -601,6 +601,7 @@ // 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 diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h index 23bc554f40..43f560b438 100644 --- a/include/wx/motif/setup0.h +++ b/include/wx/motif/setup0.h @@ -600,6 +600,7 @@ // 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 diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h index 58d7558478..9b47d2cc3d 100644 --- a/include/wx/msw/setup0.h +++ b/include/wx/msw/setup0.h @@ -600,6 +600,7 @@ // 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 diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h index e0027b3598..8b055bab1d 100644 --- a/include/wx/msw/wince/setup.h +++ b/include/wx/msw/wince/setup.h @@ -600,6 +600,7 @@ // 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 diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h index 03405feab3..55b47dde66 100644 --- a/include/wx/os2/setup0.h +++ b/include/wx/os2/setup0.h @@ -600,6 +600,7 @@ // 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 diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h index fb5eacf1d6..a06bffa257 100644 --- a/include/wx/palmos/setup0.h +++ b/include/wx/palmos/setup0.h @@ -600,6 +600,7 @@ // 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 diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h index e0b6cb987e..387c59a715 100644 --- a/include/wx/setup_inc.h +++ b/include/wx/setup_inc.h @@ -596,6 +596,7 @@ // 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 diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in new file mode 100644 index 0000000000..4775d42bc5 --- /dev/null +++ b/samples/animate/Makefile.in @@ -0,0 +1,209 @@ +# ========================================================================= +# 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 diff --git a/samples/animate/anitest.bkl b/samples/animate/anitest.bkl new file mode 100644 index 0000000000..27b4cc59c5 --- /dev/null +++ b/samples/animate/anitest.bkl @@ -0,0 +1,20 @@ + + + + + + + + anitest.cpp + + adv + core + base + ../sample.rc + + + + throbber.gif hourglass.ani + + + diff --git a/samples/animate/anitest.cpp b/samples/animate/anitest.cpp new file mode 100644 index 0000000000..a75e0f0c08 --- /dev/null +++ b/samples/animate/anitest.cpp @@ -0,0 +1,266 @@ +///////////////////////////////////////////////////////////////////////////// +// 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"), +} diff --git a/samples/animate/anitest.h b/samples/animate/anitest.h new file mode 100644 index 0000000000..2a265afa4d --- /dev/null +++ b/samples/animate/anitest.h @@ -0,0 +1,61 @@ +///////////////////////////////////////////////////////////////////////////// +// 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() +}; diff --git a/samples/animate/anitest.rc b/samples/animate/anitest.rc new file mode 100644 index 0000000000..7655c62a4c --- /dev/null +++ b/samples/animate/anitest.rc @@ -0,0 +1,3 @@ +mondrian ICON "mondrian.ico" +#include "wx/msw/wx.rc" + diff --git a/samples/animate/hourglass.ani b/samples/animate/hourglass.ani new file mode 100644 index 0000000000..68d1a3125c Binary files /dev/null and b/samples/animate/hourglass.ani differ diff --git a/samples/animate/mondrian.ico b/samples/animate/mondrian.ico new file mode 100644 index 0000000000..2310c5d275 Binary files /dev/null and b/samples/animate/mondrian.ico differ diff --git a/samples/animate/mondrian.xpm b/samples/animate/mondrian.xpm new file mode 100644 index 0000000000..5d092d54c4 --- /dev/null +++ b/samples/animate/mondrian.xpm @@ -0,0 +1,44 @@ +/* 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 ++++ ", +" " +}; diff --git a/samples/animate/throbber.gif b/samples/animate/throbber.gif new file mode 100644 index 0000000000..82c2170acc Binary files /dev/null and b/samples/animate/throbber.gif differ diff --git a/samples/samples.bkl b/samples/samples.bkl index 932d95063f..5cfa6bad12 100644 --- a/samples/samples.bkl +++ b/samples/samples.bkl @@ -10,6 +10,7 @@ + diff --git a/setup.h.in b/setup.h.in index 1e968bbc70..60df19067f 100644 --- a/setup.h.in +++ b/setup.h.in @@ -305,6 +305,7 @@ #define wxUSE_TIPWINDOW 0 +#define wxUSE_ANIMATIONCTRL 0 #define wxUSE_BUTTON 0 #define wxUSE_BMPBUTTON 0 #define wxUSE_CALENDARCTRL 0 diff --git a/src/common/anidecod.cpp b/src/common/anidecod.cpp new file mode 100644 index 0000000000..61cfb664d5 --- /dev/null +++ b/src/common/anidecod.cpp @@ -0,0 +1,314 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 +#include +#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 // this is a magic incantation which must be done! +WX_DEFINE_OBJARRAY(wxImageArray); + +#include // 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; inext; - 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; } @@ -99,7 +106,7 @@ void wxGIFDecoder::Destroy() // 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; @@ -109,20 +116,21 @@ bool wxGIFDecoder::ConvertToImage(wxImage *image) const 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) && @@ -153,11 +161,12 @@ bool wxGIFDecoder::ConvertToImage(wxImage *image) const 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]; @@ -172,118 +181,36 @@ bool wxGIFDecoder::ConvertToImage(wxImage *image) const // 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; -} //--------------------------------------------------------------------------- @@ -293,12 +220,11 @@ bool wxGIFDecoder::GoFrame(int which) // 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; @@ -309,7 +235,7 @@ int wxGIFDecoder::getcode(int bits, int ab_fin) /* 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 @@ -323,8 +249,8 @@ int wxGIFDecoder::getcode(int bits, int ab_fin) } /* 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; @@ -354,7 +280,7 @@ int wxGIFDecoder::getcode(int bits, int ab_fin) // 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) */ @@ -410,7 +336,7 @@ int wxGIFDecoder::dgif(GIFImage *img, int interl, int bits) 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; @@ -629,20 +555,20 @@ as an End of Information itself) // 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 @@ -651,48 +577,48 @@ bool wxGIFDecoder::CanRead() // (== 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; } @@ -700,32 +626,30 @@ int wxGIFDecoder::ReadGIF() /* 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 ";" @@ -735,7 +659,7 @@ int wxGIFDecoder::ReadGIF() 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 @@ -753,12 +677,12 @@ int wxGIFDecoder::ReadGIF() /* 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; @@ -772,15 +696,15 @@ int wxGIFDecoder::ReadGIF() 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; @@ -793,7 +717,7 @@ int wxGIFDecoder::ReadGIF() if (type == 0x2C) { /* allocate memory for IMAGEN struct */ - pimg = (*ppimg) = new GIFImage(); + GIFImage *pimg = new GIFImage(); if (pimg == NULL) { @@ -803,8 +727,8 @@ int wxGIFDecoder::ReadGIF() /* 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; @@ -819,7 +743,8 @@ int wxGIFDecoder::ReadGIF() 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; @@ -831,10 +756,6 @@ int wxGIFDecoder::ReadGIF() 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); @@ -851,9 +772,9 @@ int wxGIFDecoder::ReadGIF() { 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; @@ -866,7 +787,7 @@ int wxGIFDecoder::ReadGIF() } /* 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(); @@ -874,56 +795,54 @@ int wxGIFDecoder::ReadGIF() } /* 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; @@ -933,10 +852,10 @@ int wxGIFDecoder::ReadGIF() 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; @@ -944,12 +863,12 @@ int wxGIFDecoder::ReadGIF() } /* 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 */ diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index c2e8e6599f..5f45ba9207 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -32,6 +32,7 @@ #include "wx/filefn.h" #include "wx/wfstream.h" #include "wx/quantize.h" +#include "wx/anidecod.h" // For memcpy #include @@ -1324,160 +1325,28 @@ IMPLEMENT_DYNAMIC_CLASS(wxANIHandler, wxCURHandler) #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 diff --git a/src/common/imaggif.cpp b/src/common/imaggif.cpp index 69a0fbb094..22a8dc04cc 100644 --- a/src/common/imaggif.cpp +++ b/src/common/imaggif.cpp @@ -37,12 +37,12 @@ bool wxGIFHandler::LoadFile(wxImage *image, wxInputStream& stream, 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)) { @@ -71,24 +71,9 @@ bool wxGIFHandler::LoadFile(wxImage *image, wxInputStream& stream, /* 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 { @@ -111,8 +96,8 @@ bool wxGIFHandler::SaveFile( wxImage * WXUNUSED(image), bool wxGIFHandler::DoCanRead( wxInputStream& stream ) { - wxGIFDecoder decod(&stream); - return decod.CanRead(); + wxGIFDecoder decod; + return decod.CanRead(stream); } #endif // wxUSE_STREAMS diff --git a/src/generic/animateg.cpp b/src/generic/animateg.cpp new file mode 100644 index 0000000000..2ab49659dd --- /dev/null +++ b/src/generic/animateg.cpp @@ -0,0 +1,549 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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_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 + diff --git a/src/gtk/animate.cpp b/src/gtk/animate.cpp new file mode 100644 index 0000000000..df942e3c1a --- /dev/null +++ b/src/gtk/animate.cpp @@ -0,0 +1,339 @@ +///////////////////////////////////////////////////////////////////////////// +// 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 +#include + + +// ============================================================================ +// 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 diff --git a/src/html/m_image.cpp b/src/html/m_image.cpp index 41c8a636df..80d6dba87b 100644 --- a/src/html/m_image.cpp +++ b/src/html/m_image.cpp @@ -309,6 +309,7 @@ private: wxGIFDecoder *m_gifDecoder; wxTimer *m_gifTimer; int m_physX, m_physY; + size_t m_nCurrFrame; #endif double m_scale; wxHtmlImageMapCell *m_imageMap; @@ -358,6 +359,7 @@ wxHtmlImageCell::wxHtmlImageCell(wxHtmlWindowInterface *windowIface, m_gifDecoder = NULL; m_gifTimer = NULL; m_physX = m_physY = wxDefaultCoord; + m_nCurrFrame = 0; #endif if ( m_bmpW && m_bmpH ) @@ -374,11 +376,11 @@ wxHtmlImageCell::wxHtmlImageCell(wxHtmlWindowInterface *windowIface, (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; @@ -386,7 +388,7 @@ wxHtmlImageCell::wxHtmlImageCell(wxHtmlWindowInterface *windowIface, 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 { @@ -481,7 +483,10 @@ void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer) { wxImage img; - m_gifDecoder->GoNextFrame(true); + // advance current frame + m_nCurrFrame++; + if (m_nCurrFrame == m_gifDecoder->GetFrameCount()) + m_nCurrFrame = 0; if ( m_physX == wxDefaultCoord ) { @@ -499,17 +504,16 @@ void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer) 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 @@ -518,7 +522,7 @@ void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer) win->Refresh(img.HasMask(), &rect); } - timer->Start(m_gifDecoder->GetDelay(), true); + timer->Start(m_gifDecoder->GetDelay(m_nCurrFrame), true); } void wxHtmlImageCell::Layout(int w) diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp index 4dbdc4af16..45379d7902 100644 --- a/src/wxWindows.dsp +++ b/src/wxWindows.dsp @@ -301,6 +301,14 @@ SOURCE=.\common\accesscmn.cpp # 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 @@ -971,6 +979,10 @@ SOURCE=.\generic\aboutdlgg.cpp # 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 @@ -2159,6 +2171,14 @@ SOURCE=..\include\wx\afterstd.h # 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 @@ -4103,6 +4123,10 @@ SOURCE=..\include\wx\generic\accel.h # 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