Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
clipboard.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <optional>
5#include <vector>
6#include <cstdint>
7#include <functional>
8
9namespace pulp::platform {
10
11// Cross-platform clipboard access.
12//
13// Platform notes:
14// - macOS/iOS: real NSPasteboard / UIPasteboard integration.
15// - Windows: real OpenClipboard/SetClipboardData integration.
16// - Linux: shells out to wl-copy/wl-paste (Wayland) or xclip/xsel
17// (X11) — returns false / nullopt if none of those utilities
18// are on PATH. No in-process shadow storage, so callers can
19// reliably detect the unsupported case.
20// - Android: requires a host-registered bridge via
21// Clipboard::set_android_bridge(...). Without one, calls
22// return false / nullopt instead of fake-success. An Android
23// Pulp app installs the bridge at startup so ClipboardManager
24// calls reach a real android.content.Context.
25class Clipboard {
26public:
27 // Text clipboard
28 static bool set_text(const std::string& text);
29 static std::optional<std::string> get_text();
30 static bool has_text();
31
32 // Binary data clipboard (custom pasteboard type)
33 static bool set_data(const std::string& type, const std::vector<uint8_t>& data);
34 static std::optional<std::vector<uint8_t>> get_data(const std::string& type);
35
36 // Android JNI bridge. The Android app registers a bridge backed by
37 // Kotlin ClipboardManager calls; without one, the Android impl fails
38 // closed (returns false/nullopt) rather than fake-succeeding.
40 std::function<bool(const std::string&)> set_text;
41 std::function<std::optional<std::string>()> get_text;
42 std::function<bool()> has_text;
43 };
44 static void set_android_bridge(AndroidBridge bridge);
45 static void clear_android_bridge();
46};
47
48} // namespace pulp::platform
Definition clipboard.hpp:25
static void clear_android_bridge()
static void set_android_bridge(AndroidBridge bridge)
static std::optional< std::string > get_text()
static std::optional< std::vector< uint8_t > > get_data(const std::string &type)
static bool set_data(const std::string &type, const std::vector< uint8_t > &data)
static bool set_text(const std::string &text)
Device capability vocabulary: one tier ladder, one thermal ladder, and the projection from observed i...
Definition child_process.hpp:15
Definition clipboard.hpp:39
std::function< bool()> has_text
Definition clipboard.hpp:42
std::function< std::optional< std::string >()> get_text
Definition clipboard.hpp:41
std::function< bool(const std::string &)> set_text
Definition clipboard.hpp:40