Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
sample_asset_drop_target.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <cstdint>
7#include <functional>
8#include <string>
9#include <vector>
10
11namespace pulp::view {
12
14 std::vector<audio::SampleAssetDropItem> items;
15 std::vector<std::string> probe_audio_paths;
16 std::uint32_t accepted_count = 0;
17 std::uint32_t rejected_count = 0;
18 std::uint32_t audio_count = 0;
19 std::uint32_t midi_count = 0;
20
21 [[nodiscard]] bool accepted() const noexcept {
22 return accepted_count > 0;
23 }
24 [[nodiscard]] bool needs_audio_probe() const noexcept {
25 return !probe_audio_paths.empty();
26 }
27};
28
29[[nodiscard]] SampleAssetDropPlan
30classify_sample_asset_file_drop(const std::vector<std::string>& paths,
31 const audio::SampleAssetPolicy& policy = {});
32
38 public:
39 // The plan reference is valid only for the callback duration. Async
40 // dispatchers must copy paths/items they need after the call returns.
41 using Callback = std::function<void(const SampleAssetDropPlan&, Point)>;
42
45
47 const audio::SampleAssetPolicy& policy() const noexcept {
48 return policy_;
49 }
50
51 const SampleAssetDropPlan& last_plan() const noexcept {
52 return last_plan_;
53 }
54
58
59 bool on_drag_enter(const DropData& data, Point position) override;
60 void on_drag_exit() override;
61 bool on_drop(const DropData& data, Point position) override;
62
63 private:
65 SampleAssetDropPlan last_plan_;
66};
67
68} // namespace pulp::view
Definition drag_drop.hpp:69
const audio::SampleAssetPolicy & policy() const noexcept
Definition sample_asset_drop_target.hpp:47
Callback on_drop_classified
Definition sample_asset_drop_target.hpp:56
bool on_drop(const DropData &data, Point position) override
const SampleAssetDropPlan & last_plan() const noexcept
Definition sample_asset_drop_target.hpp:51
bool on_drag_enter(const DropData &data, Point position) override
void set_policy(audio::SampleAssetPolicy policy)
std::function< void(const SampleAssetDropPlan &, Point)> Callback
Definition sample_asset_drop_target.hpp:41
Callback on_audio_probe_dispatch_requested
Definition sample_asset_drop_target.hpp:57
SampleAssetDropTarget(audio::SampleAssetPolicy policy)
Callback on_drag_classified
Definition sample_asset_drop_target.hpp:55
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
SampleAssetDropPlan classify_sample_asset_file_drop(const std::vector< std::string > &paths, const audio::SampleAssetPolicy &policy={})
Definition sample_asset_io.hpp:36
Definition drag_drop.hpp:14
Definition geometry.hpp:20
Definition sample_asset_drop_target.hpp:13
std::vector< std::string > probe_audio_paths
Definition sample_asset_drop_target.hpp:15
std::uint32_t midi_count
Definition sample_asset_drop_target.hpp:19
std::uint32_t rejected_count
Definition sample_asset_drop_target.hpp:17
bool needs_audio_probe() const noexcept
Definition sample_asset_drop_target.hpp:24
bool accepted() const noexcept
Definition sample_asset_drop_target.hpp:21
std::uint32_t audio_count
Definition sample_asset_drop_target.hpp:18
std::uint32_t accepted_count
Definition sample_asset_drop_target.hpp:16
std::vector< audio::SampleAssetDropItem > items
Definition sample_asset_drop_target.hpp:14