wxAnimationCtrl cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -34,8 +34,8 @@ It is only available if \texttt{wxUSE\_ANIMATIONCTRL} is set to $1$ (the default
|
||||
|
||||
\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
|
||||
\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}
|
||||
|
@@ -68,7 +68,7 @@ data be deleted.
|
||||
|
||||
\membersection{wxAnimation::GetDelay}\label{wxanimationgetdelay}
|
||||
|
||||
\constfunc{int}{GetDelay}{\param{size_t }{i}}
|
||||
\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.
|
||||
@@ -76,14 +76,14 @@ If {\tt -1} is returned the frame is to be displayed forever.
|
||||
|
||||
\membersection{wxAnimation::GetFrameCount}\label{wxanimationgetframecount}
|
||||
|
||||
\constfunc{size_t}{GetFrameCount}{\void}
|
||||
\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}}
|
||||
\constfunc{wxImage}{GetFrame}{\param{size\_t }{i}}
|
||||
|
||||
Returns the i-th frame as a \helpref{wxImage}{wximage}.
|
||||
|
||||
|
@@ -16,15 +16,9 @@
|
||||
|
||||
#if wxUSE_ANIMATIONCTRL
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/list.h>
|
||||
#include <wx/timer.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/control.h>
|
||||
#include <wx/animdecod.h>
|
||||
#include "wx/animdecod.h"
|
||||
#include "wx/control.h"
|
||||
#include "wx/timer.h"
|
||||
|
||||
class WXDLLIMPEXP_ADV wxAnimation;
|
||||
|
||||
|
@@ -14,9 +14,11 @@
|
||||
|
||||
#if wxUSE_STREAMS && wxUSE_GIF
|
||||
|
||||
#include "wx/stream.h"
|
||||
#include "wx/image.h"
|
||||
#include "wx/colour.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
class WXDLLIMPEXP_BASE wxInputStream;
|
||||
class WXDLLIMPEXP_CORE wxImage;
|
||||
|
||||
/*
|
||||
|
||||
|
@@ -12,23 +12,6 @@
|
||||
#ifndef _WX_GENERIC_ANIMATEH__
|
||||
#define _WX_GENERIC_ANIMATEH__
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/list.h>
|
||||
#include <wx/timer.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/control.h>
|
||||
#include <wx/animdecod.h>
|
||||
|
||||
class WXDLLIMPEXP_ADV wxAnimationBase;
|
||||
class WXDLLIMPEXP_ADV wxAnimationPlayer;
|
||||
class WXDLLEXPORT wxImage;
|
||||
class WXDLLEXPORT wxGIFDecoder;
|
||||
class WXDLLIMPEXP_ADV wxAnimation;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimation
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -38,17 +21,6 @@ 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
|
||||
@@ -83,7 +55,6 @@ public:
|
||||
static void CleanUpHandlers();
|
||||
static void InitStandardHandlers();
|
||||
|
||||
protected:
|
||||
DECLARE_DYNAMIC_CLASS(wxAnimation)
|
||||
};
|
||||
|
||||
@@ -95,7 +66,7 @@ protected:
|
||||
class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase
|
||||
{
|
||||
public:
|
||||
wxAnimationCtrl() {}
|
||||
wxAnimationCtrl();
|
||||
wxAnimationCtrl(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxAnimation& anim = wxNullAnimation,
|
||||
@@ -182,6 +153,7 @@ protected:
|
||||
// on the screen
|
||||
|
||||
private:
|
||||
typedef wxAnimationCtrlBase base_type;
|
||||
DECLARE_DYNAMIC_CLASS(wxAnimationCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
@@ -12,8 +12,8 @@
|
||||
#ifndef _WX_GTKANIMATEH__
|
||||
#define _WX_GTKANIMATEH__
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
typedef struct _GdkPixbufAnimation GdkPixbufAnimation;
|
||||
typedef struct _GdkPixbufAnimationIter GdkPixbufAnimationIter;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimation
|
||||
@@ -27,19 +27,11 @@
|
||||
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(GdkPixbufAnimation *p = NULL) { m_pixbuf = p; }
|
||||
wxAnimation(const wxAnimation&);
|
||||
~wxAnimation() { UnRef(); }
|
||||
|
||||
wxAnimation &operator= (const wxAnimation &tocopy)
|
||||
{
|
||||
m_pixbuf=tocopy.m_pixbuf;
|
||||
if (m_pixbuf) g_object_ref(m_pixbuf);
|
||||
return *this;
|
||||
}
|
||||
wxAnimation& operator= (const wxAnimation&);
|
||||
|
||||
bool operator == (const wxAnimation& anim) const
|
||||
{ return m_pixbuf == anim.m_pixbuf; }
|
||||
@@ -54,34 +46,24 @@ public:
|
||||
|
||||
virtual size_t GetFrameCount() const
|
||||
{ return 0; }
|
||||
virtual wxImage GetFrame(size_t i) const
|
||||
{ return wxNullImage; }
|
||||
virtual wxImage GetFrame(size_t i) const;
|
||||
|
||||
// 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 wxSize GetSize() const;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// Implementation
|
||||
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); }
|
||||
void SetPixbuf(GdkPixbufAnimation* p);
|
||||
|
||||
protected:
|
||||
GdkPixbufAnimation *m_pixbuf;
|
||||
@@ -89,12 +71,14 @@ protected:
|
||||
// used temporary by Load()
|
||||
//bool m_bLoadComplete;
|
||||
|
||||
protected:
|
||||
private:
|
||||
void UnRef();
|
||||
|
||||
typedef wxAnimationBase base_type;
|
||||
DECLARE_DYNAMIC_CLASS(wxAnimation)
|
||||
};
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimationCtrl
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -105,7 +89,7 @@ protected:
|
||||
class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase
|
||||
{
|
||||
public:
|
||||
wxAnimationCtrl() {}
|
||||
wxAnimationCtrl();
|
||||
wxAnimationCtrl(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxAnimation& anim = wxNullAnimation,
|
||||
@@ -151,19 +135,8 @@ protected:
|
||||
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;
|
||||
}
|
||||
void ResetAnim();
|
||||
void ResetIter();
|
||||
|
||||
protected: // internal vars
|
||||
|
||||
@@ -174,6 +147,7 @@ protected: // internal vars
|
||||
bool m_bPlaying;
|
||||
|
||||
private:
|
||||
typedef wxAnimationCtrlBase base_type;
|
||||
DECLARE_DYNAMIC_CLASS(wxAnimationCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
@@ -15,28 +15,28 @@
|
||||
#pragma hdrstop
|
||||
#endif //__BORLANDC__
|
||||
|
||||
|
||||
#if wxUSE_ANIMATIONCTRL
|
||||
|
||||
#include "wx/log.h"
|
||||
#include "wx/animate.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/log.h"
|
||||
#include "wx/image.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/module.h"
|
||||
#endif
|
||||
|
||||
#include "wx/wfstream.h"
|
||||
#include "wx/image.h"
|
||||
#include "wx/gifdecod.h"
|
||||
#include "wx/anidecod.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/dc.h"
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/animate.h"
|
||||
#include "wx/animdecod.h"
|
||||
|
||||
|
||||
#include <wx/listimpl.cpp>
|
||||
#include "wx/listimpl.cpp"
|
||||
WX_DEFINE_LIST(wxAnimationDecoderList);
|
||||
|
||||
wxAnimationDecoderList wxAnimation::sm_handlers;
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimation
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -244,8 +244,6 @@ public:
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxAnimationModule, wxModule)
|
||||
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxAnimationCtrl
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -257,6 +255,14 @@ BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase)
|
||||
EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxAnimationCtrl::wxAnimationCtrl()
|
||||
{
|
||||
m_currentFrame = 0;
|
||||
m_looped = false;
|
||||
m_isPlaying = false;
|
||||
m_useWinBackgroundColour = false;
|
||||
}
|
||||
|
||||
bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
const wxAnimation& animation, const wxPoint& pos,
|
||||
const wxSize& size, long style, const wxString& name)
|
||||
@@ -268,7 +274,7 @@ bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
m_useWinBackgroundColour = false;
|
||||
m_timer.SetOwner(this);
|
||||
|
||||
if (!wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name))
|
||||
if (!base_type::Create(parent, id, pos, size, style, wxDefaultValidator, name))
|
||||
return false;
|
||||
|
||||
// by default we get the same background colour of our parent
|
||||
|
@@ -9,20 +9,20 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#if wxUSE_ANIMATIONCTRL
|
||||
|
||||
#include "wx/animate.h"
|
||||
#include "wx/log.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/image.h"
|
||||
#include "wx/log.h"
|
||||
#include "wx/stream.h"
|
||||
#endif
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkimage.h>
|
||||
|
||||
|
||||
// ============================================================================
|
||||
@@ -51,6 +51,27 @@ void gdk_pixbuf_area_updated(GdkPixbufLoader *loader,
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxAnimation, wxAnimationBase)
|
||||
|
||||
wxAnimation::wxAnimation(const wxAnimation& that)
|
||||
: base_type(that)
|
||||
{
|
||||
m_pixbuf = that.m_pixbuf;
|
||||
if (m_pixbuf)
|
||||
g_object_ref(m_pixbuf);
|
||||
}
|
||||
|
||||
wxAnimation& wxAnimation::operator=(const wxAnimation& that)
|
||||
{
|
||||
if (this != &that)
|
||||
{
|
||||
base_type::operator=(that);
|
||||
UnRef();
|
||||
m_pixbuf = that.m_pixbuf;
|
||||
if (m_pixbuf)
|
||||
g_object_ref(m_pixbuf);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool wxAnimation::LoadFile(const wxString &name, wxAnimationType WXUNUSED(type))
|
||||
{
|
||||
UnRef();
|
||||
@@ -75,6 +96,7 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
||||
break;
|
||||
|
||||
default:
|
||||
anim_type[0] = '\0';
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -100,7 +122,7 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
||||
while (stream.IsOk())
|
||||
{
|
||||
// read a chunk of data
|
||||
stream.Read(buf, 2048);
|
||||
stream.Read(buf, sizeof(buf));
|
||||
|
||||
// fetch all data into the loader
|
||||
if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error))
|
||||
@@ -123,6 +145,31 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
||||
return true;
|
||||
}
|
||||
|
||||
wxImage wxAnimation::GetFrame(size_t i) const
|
||||
{
|
||||
return wxNullImage;
|
||||
}
|
||||
|
||||
wxSize wxAnimation::GetSize() const
|
||||
{
|
||||
return wxSize(gdk_pixbuf_animation_get_width(m_pixbuf),
|
||||
gdk_pixbuf_animation_get_height(m_pixbuf));
|
||||
}
|
||||
|
||||
void wxAnimation::UnRef()
|
||||
{
|
||||
if (m_pixbuf)
|
||||
g_object_unref(m_pixbuf);
|
||||
m_pixbuf = NULL;
|
||||
}
|
||||
|
||||
void wxAnimation::SetPixbuf(GdkPixbufAnimation* p)
|
||||
{
|
||||
UnRef();
|
||||
m_pixbuf = p;
|
||||
if (m_pixbuf)
|
||||
g_object_ref(m_pixbuf);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxAnimationCtrl
|
||||
@@ -133,6 +180,13 @@ BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase)
|
||||
EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxAnimationCtrl::wxAnimationCtrl()
|
||||
{
|
||||
m_anim = NULL;
|
||||
m_iter = NULL;
|
||||
m_bPlaying = false;
|
||||
}
|
||||
|
||||
bool wxAnimationCtrl::Create( wxWindow *parent, wxWindowID id,
|
||||
const wxAnimation& anim,
|
||||
const wxPoint& pos,
|
||||
@@ -144,7 +198,7 @@ bool wxAnimationCtrl::Create( wxWindow *parent, wxWindowID id,
|
||||
m_acceptsFocus = true;
|
||||
|
||||
if (!PreCreation( parent, pos, size ) ||
|
||||
!wxControl::CreateBase(parent, id, pos, size, style & wxWINDOW_STYLE_MASK,
|
||||
!base_type::CreateBase(parent, id, pos, size, style & wxWINDOW_STYLE_MASK,
|
||||
wxDefaultValidator, name))
|
||||
{
|
||||
wxFAIL_MSG( wxT("wxAnimationCtrl creation failed") );
|
||||
@@ -234,6 +288,20 @@ void wxAnimationCtrl::FitToAnimation()
|
||||
SetSize(w, h);
|
||||
}
|
||||
|
||||
void wxAnimationCtrl::ResetAnim()
|
||||
{
|
||||
if (m_anim)
|
||||
g_object_unref(m_anim);
|
||||
m_anim = NULL;
|
||||
}
|
||||
|
||||
void wxAnimationCtrl::ResetIter()
|
||||
{
|
||||
if (m_iter)
|
||||
g_object_unref(m_iter);
|
||||
m_iter = NULL;
|
||||
}
|
||||
|
||||
bool wxAnimationCtrl::Play()
|
||||
{
|
||||
if (m_anim == NULL)
|
||||
|
Reference in New Issue
Block a user