Allow specifying multiple animation versions, for different resolutions, when setting the animation to use via wxAnimationBundle class which is a much simpler version of wxBitmapBundle used elsewhere. This is not implemented for the native GTK version yet. Update the sample, even though the difference in it is not really noticeable as the "high DPI" throbber is just a scaled up version of the existing standard DPI animation produced using gifsicle.
103 lines
3.2 KiB
C++
103 lines
3.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/gtk/animate.h
|
|
// Purpose: Animation classes
|
|
// Author: Julian Smart and Guillermo Rodriguez Garcia
|
|
// Modified by: Francesco Montorsi
|
|
// Created: 13/8/99
|
|
// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_GTKANIMATEH__
|
|
#define _WX_GTKANIMATEH__
|
|
|
|
typedef struct _GdkPixbufAnimation GdkPixbufAnimation;
|
|
typedef struct _GdkPixbufAnimationIter GdkPixbufAnimationIter;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxAnimationCtrl
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Resize to animation size if this is set
|
|
#define wxAN_FIT_ANIMATION 0x0010
|
|
|
|
class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase
|
|
{
|
|
public:
|
|
wxAnimationCtrl() { Init(); }
|
|
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 = wxASCII_STR(wxAnimationCtrlNameStr))
|
|
{
|
|
Init();
|
|
|
|
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 = wxASCII_STR(wxAnimationCtrlNameStr));
|
|
|
|
~wxAnimationCtrl();
|
|
|
|
public: // event handler
|
|
|
|
void OnTimer(wxTimerEvent &);
|
|
|
|
public: // public API
|
|
|
|
virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY) override;
|
|
virtual bool Load(wxInputStream& stream, wxAnimationType type = wxANIMATION_TYPE_ANY) override;
|
|
|
|
void SetAnimation(const wxAnimationBundle& anim) override;
|
|
|
|
virtual bool Play() override;
|
|
virtual void Stop() override;
|
|
|
|
virtual bool IsPlaying() const override;
|
|
|
|
bool SetBackgroundColour( const wxColour &colour ) override;
|
|
|
|
static wxAnimation CreateCompatibleAnimation();
|
|
|
|
protected:
|
|
virtual wxAnimationImpl* DoCreateAnimationImpl() const override;
|
|
|
|
virtual void DisplayStaticImage() override;
|
|
virtual wxSize DoGetBestSize() const override;
|
|
void FitToAnimation();
|
|
void ClearToBackgroundColour();
|
|
|
|
void ResetAnim();
|
|
void ResetIter();
|
|
|
|
// Helpers to safely access methods in the wxAnimationGTKImpl that are
|
|
// specific to the gtk implementation
|
|
GdkPixbufAnimation *AnimationImplGetPixbuf() const;
|
|
void AnimationImplSetPixbuf(GdkPixbufAnimation* p);
|
|
|
|
protected: // internal vars
|
|
|
|
GdkPixbufAnimation *m_anim;
|
|
GdkPixbufAnimationIter *m_iter;
|
|
|
|
wxTimer m_timer;
|
|
bool m_bPlaying;
|
|
|
|
private:
|
|
typedef wxAnimationCtrlBase base_type;
|
|
|
|
void Init();
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxAnimationCtrl);
|
|
wxDECLARE_EVENT_TABLE();
|
|
};
|
|
|
|
#endif // _WX_GTKANIMATEH__
|