Files
hot-step-cpp-ROCm/engine/vendor/vst3sdk/vstgui4/vstgui/lib/controls/csplashscreen.h
T
2026-08-16 18:24:52 +07:00

100 lines
3.6 KiB
C++

// This file is part of VSTGUI. It is subject to the license terms
// in the LICENSE file found in the top-level directory of this
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
#pragma once
#include "ccontrol.h"
#include "icontrollistener.h"
#include "../optional.h"
namespace VSTGUI {
//-----------------------------------------------------------------------------
// CSplashScreen Declaration
//!
/// @ingroup views
//-----------------------------------------------------------------------------
class CSplashScreen : public CControl, public IControlListener
{
public:
CSplashScreen (const CRect& size, IControlListener* listener, int32_t tag, CBitmap* background, const CRect& toDisplay, const CPoint& offset = CPoint (0, 0));
CSplashScreen (const CRect& size, IControlListener* listener, int32_t tag, CView* splashView);
CSplashScreen (const CSplashScreen& splashScreen);
void draw (CDrawContext*) override;
bool hitTest (const CPoint& where, const Event& event) override;
//-----------------------------------------------------------------------------
/// @name CSplashScreen Methods
//-----------------------------------------------------------------------------
//@{
virtual void unSplash ();
/** set the area in which the splash will be displayed */
virtual void setDisplayArea (const CRect& rect) { toDisplay = rect; }
/** get the area in which the splash will be displayed */
virtual CRect& getDisplayArea (CRect& rect) const { rect = toDisplay; return rect; }
//@}
CMouseEventResult onMouseDown (CPoint& where, const CButtonState& buttons) override;
CLASS_METHODS(CSplashScreen, CControl)
protected:
~CSplashScreen () noexcept override;
using CControl::valueChanged;
void valueChanged (CControl *pControl) override;
CRect toDisplay;
CRect keepSize;
CPoint offset;
CView* modalView{nullptr};
Optional<ModalViewSessionID> modalViewSessionID;
};
//-----------------------------------------------------------------------------
// CAnimationSplashScreen Declaration
/// @brief a splash screen which animates the opening and closing of the splash bitmap
/// @ingroup views
/// @ingroup new_in_4_0
//-----------------------------------------------------------------------------
class CAnimationSplashScreen : public CSplashScreen
{
public:
CAnimationSplashScreen (const CRect& size, int32_t tag, CBitmap* background, CBitmap* splashBitmap);
CAnimationSplashScreen (const CAnimationSplashScreen& splashScreen) = default;
//-----------------------------------------------------------------------------
/// @name CAnimationSplashScreen Methods
//-----------------------------------------------------------------------------
//@{
virtual void setSplashBitmap (CBitmap* bitmap);
CBitmap* getSplashBitmap () const;
virtual void setSplashRect (const CRect& splashRect);
const CRect& getSplashRect () const;
virtual void setAnimationIndex (uint32_t index) { animationIndex = index; }
uint32_t getAnimationIndex () const { return animationIndex; }
virtual void setAnimationTime (uint32_t time) { animationTime = time; }
uint32_t getAnimationTime () const { return animationTime; }
/** create the animation. subclasses can override this to add special animations */
virtual bool createAnimation (uint32_t animationIndex, uint32_t animationTime, CView* splashView, bool removeViewAnimation);
//@}
void unSplash () override;
void draw (CDrawContext*) override;
CMouseEventResult onMouseDown (CPoint& where, const CButtonState& buttons) override;
bool sizeToFit () override;
protected:
~CAnimationSplashScreen () noexcept override = default;
uint32_t animationIndex{0};
uint32_t animationTime{500};
};
} // VSTGUI