Initial release

This commit is contained in:
civ
2026-08-16 18:24:52 +07:00
commit 876886a39a
13244 changed files with 2353959 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
// 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 "vstguifwd.h"
#include "platform/iplatformtimer.h"
#include <functional>
namespace VSTGUI {
//-----------------------------------------------------------------------------
// CVSTGUITimer Declaration
//! A timer class, which posts timer messages to CBaseObjects or calls a lambda function (c++11 only).
//-----------------------------------------------------------------------------
class CVSTGUITimer final : public CBaseObject, public IPlatformTimerCallback
{
public:
using CallbackFunc = std::function<void(CVSTGUITimer*)>;
CVSTGUITimer (const CallbackFunc& callback, uint32_t fireTime = 100, bool doStart = true);
CVSTGUITimer (CallbackFunc&& callback, uint32_t fireTime = 100, bool doStart = true);
CVSTGUITimer (CBaseObject* timerObject, uint32_t fireTime = 100, bool doStart = false);
/** starts the timer */
bool start ();
/** stops the timer, returns whether timer was running or not */
bool stop ();
/** set fire time in milliseconds */
bool setFireTime (uint32_t newFireTime);
/** get fire time in milliseconds*/
uint32_t getFireTime () const { return fireTime; }
//-----------------------------------------------------------------------------
/** message string posted to CBaseObject's notify method */
static IdStringPtr kMsgTimer;
//-----------------------------------------------------------------------------
CLASS_METHODS_NOCOPY(CVSTGUITimer, CBaseObject)
protected:
~CVSTGUITimer () noexcept override;
void beforeDelete () override;
void fire () override;
uint32_t fireTime;
CallbackFunc callbackFunc;
PlatformTimerPtr platformTimer;
};
namespace Call
{
using FunctionCallback = std::function<void ()>;
/** Trigger a function call at a later timer */
inline void later (FunctionCallback callback, uint32_t delayInMilliseconds = 10)
{
new CVSTGUITimer ([callback] (CVSTGUITimer* timer) {
timer->stop ();
callback ();
timer->forget ();
}, delayInMilliseconds, true);
}
};
} // VSTGUI