Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
splash_screen.hpp
Go to the documentation of this file.
1#pragma once
2
3// SplashScreen — borderless window with image and fade animation.
4// Shows on app launch, dismisses on click or after a timeout.
5
6#include <pulp/view/view.hpp>
8#include <string>
9#include <functional>
10#include <chrono>
11
12namespace pulp::view {
13
14class SplashScreen : public View {
15public:
16 SplashScreen() = default;
17
19 void set_image(std::string_view path) { image_path_ = std::string(path); }
20
22 void set_duration(float seconds) { duration_ = seconds; }
23
25 void set_fade_in(float seconds) { fade_in_ = seconds; }
26
28 void set_fade_out(float seconds) { fade_out_ = seconds; }
29
31 void set_dismiss_on_click(bool dismiss) { dismiss_on_click_ = dismiss; }
32
34 void show();
35
37 void dismiss();
38
40 bool is_showing() const { return showing_; }
41
43 std::function<void()> on_dismissed;
44
45 void paint(canvas::Canvas& canvas) override;
46 void on_mouse_down(Point pos) override;
47 bool wants_mouse_input() const override { return true; }
48
50 bool advance(float dt);
51
52private:
53 std::string image_path_;
54 float duration_ = 3.0f;
55 float fade_in_ = 0.3f;
56 float fade_out_ = 0.5f;
57 bool dismiss_on_click_ = true;
58 bool showing_ = false;
59
60 float elapsed_ = 0.0f;
61 float opacity_ = 0.0f;
62
63 enum class Phase { FadeIn, Hold, FadeOut, Done };
64 Phase phase_ = Phase::FadeIn;
65};
66
67} // namespace pulp::view
Definition canvas.hpp:240
std::function< void()> on_dismissed
Called when the splash is dismissed.
Definition splash_screen.hpp:43
bool advance(float dt)
Advance the animation by dt seconds. Returns false when done.
void set_duration(float seconds)
Set how long the splash is visible (default: 3 seconds).
Definition splash_screen.hpp:22
void paint(canvas::Canvas &canvas) override
void set_dismiss_on_click(bool dismiss)
Whether to dismiss on click (default: true).
Definition splash_screen.hpp:31
bool is_showing() const
Whether the splash is currently showing.
Definition splash_screen.hpp:40
void set_fade_out(float seconds)
Set fade-out duration (default: 0.5s).
Definition splash_screen.hpp:28
bool wants_mouse_input() const override
True if this widget handles mouse down/drag through virtual methods even when it does not expose JS p...
Definition splash_screen.hpp:47
void set_image(std::string_view path)
Set the splash image path (PNG, JPEG).
Definition splash_screen.hpp:19
void on_mouse_down(Point pos) override
void dismiss()
Dismiss the splash screen immediately.
void show()
Show the splash screen. Blocks until dismissed or timed out.
void set_fade_in(float seconds)
Set fade-in duration (default: 0.3s).
Definition splash_screen.hpp:25
Definition affine_transform.hpp:24
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
@ path
Definition anchor_strategy.hpp:42
Definition geometry.hpp:20