Add static wxAnimationCtrl::CreateCompatibleAnimation()

This may be more convenient to use than CreateAnimation() if there is no
wxAnimationCtrl object at hand.
This commit is contained in:
Vadim Zeitlin 2020-04-06 23:33:07 +02:00
parent cdf156e7e8
commit f2ed3a5376
6 changed files with 32 additions and 2 deletions

View File

@ -115,12 +115,16 @@ public:
{ return m_bmpStatic; }
wxAnimation CreateAnimation() const
{ return wxAnimation(DoCreateAnimationImpl()); }
{ return MakeAnimFromImpl(DoCreateAnimationImpl()); }
protected:
virtual wxAnimationImpl* DoCreateAnimationImpl() const = 0;
// This method allows derived classes access to wxAnimation::GetImpl().
// These methods allow derived classes access to private wxAnimation ctor
// and wxAnimation::GetImpl(), respectively.
static wxAnimation MakeAnimFromImpl(wxAnimationImpl* impl)
{ return wxAnimation(impl); }
wxAnimationImpl* GetAnimImpl() const
{ return m_animation.GetImpl(); }

View File

@ -64,6 +64,8 @@ public:
// override base class method
virtual bool SetBackgroundColour(const wxColour& col) wxOVERRIDE;
static wxAnimation CreateCompatibleAnimation();
public: // event handlers
void OnPaint(wxPaintEvent& event);

View File

@ -65,6 +65,8 @@ public: // public API
bool SetBackgroundColour( const wxColour &colour ) wxOVERRIDE;
static wxAnimation CreateCompatibleAnimation();
protected:
virtual wxAnimationImpl* DoCreateAnimationImpl() const wxOVERRIDE;

View File

@ -113,10 +113,22 @@ public:
A wxAnimation object created using this function is always compatible
with controls of this type, see wxAnimation::IsCompatibleWith().
@see CreateCompatibleAnimation()
@since 3.1.4
*/
wxAnimation CreateAnimation() const;
/**
Create a new animation object compatible with this control.
This method does the same thing as CreateAnimation() but is static,
i.e. can be called without creating any wxAnimationCtrl objects.
@since 3.1.4
*/
static wxAnimation CreateCompatibleAnimation();
/**
Returns the animation associated with this control.
*/

View File

@ -225,6 +225,11 @@ bool wxGenericAnimationCtrl::Load(wxInputStream& stream, wxAnimationType type)
return true;
}
wxAnimation wxGenericAnimationCtrl::CreateCompatibleAnimation()
{
return MakeAnimFromImpl(new wxAnimationGenericImpl());
}
wxAnimationImpl* wxGenericAnimationCtrl::DoCreateAnimationImpl() const
{
return new wxAnimationGenericImpl();

View File

@ -265,6 +265,11 @@ bool wxAnimationCtrl::Load(wxInputStream& stream, wxAnimationType type)
return true;
}
wxAnimation wxAnimationCtrl::CreateCompatibleAnimation()
{
return MakeAnimFromImpl(new wxAnimationGTKImpl());
}
wxAnimationImpl* wxAnimationCtrl::DoCreateAnimationImpl() const
{
return new wxAnimationGTKImpl();