Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
clipboard.h
1// SPDX-FileCopyrightText: © 2020-2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "structure/arrangement/arranger_object_span.h"
7#include "structure/tracks/track_span.h"
8
12
16class Clipboard final
17{
18public:
19 using PluginUuid = plugins::Plugin::Uuid;
20
24 enum class Type
25 {
26 ArrangerObjects,
27 Plugins,
28 Tracks,
29 };
30
31public:
32 Clipboard () = default;
33 Clipboard (std::ranges::range auto arranger_objects)
34 requires std::is_same_v<
35 decltype (*arranger_objects.begin ()),
36 structure::arrangement::ArrangerObjectPtrVariant>
37 : type_ (Type::ArrangerObjects),
38 arranger_objects_ (std::ranges::to (arranger_objects))
39 {
40 }
41
42 Clipboard (std::ranges::range auto plugins)
43 requires std::is_same_v<decltype (*plugins.begin ()), plugins::PluginPtrVariant>
44
45 : type_ (Type::Plugins), plugins_ (std::ranges::to (plugins))
46 {
47 }
48
55 Clipboard (std::ranges::range auto tracks)
56 requires std::is_same_v<decltype (*tracks.begin ()), structure::tracks::TrackPtrVariant>
57 : type_ (Type::Tracks), tracks_ (std::ranges::to (tracks))
58 {
59 }
60
61 std::string get_document_type () const { return "ZrythmClipboard"; }
62 int get_format_major_version () const { return 3; }
63 int get_format_minor_version () const { return 0; }
64
65private:
66 NLOHMANN_DEFINE_TYPE_INTRUSIVE (
67 Clipboard,
68 type_,
69 arranger_objects_,
70 tracks_,
71 plugins_)
72
73public:
74 Type type_{};
75 std::vector<structure::arrangement::ArrangerObject::Uuid> arranger_objects_;
76 std::vector<structure::tracks::Track::Uuid> tracks_;
77 std::vector<PluginUuid> plugins_;
78};
79
Clipboard struct.
Definition clipboard.h:17
Type
Clipboard type.
Definition clipboard.h:25
Clipboard(std::ranges::range auto tracks)
Construct a new Clipboard object.
Definition clipboard.h:55