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
13namespace zrythm::legacy
14{
15
19class Clipboard final
20{
21public:
22 using PluginUuid = plugins::Plugin::Uuid;
23
27 enum class Type
28 {
29 ArrangerObjects,
30 Plugins,
31 Tracks,
32 };
33
34public:
35 Clipboard () = default;
36 Clipboard (std::ranges::range auto arranger_objects)
37 requires std::is_same_v<
38 decltype (*arranger_objects.begin ()),
39 structure::arrangement::ArrangerObjectPtrVariant>
40 : type_ (Type::ArrangerObjects),
41 arranger_objects_ (std::ranges::to (arranger_objects))
42 {
43 }
44
45 Clipboard (std::ranges::range auto plugins)
46 requires std::is_same_v<decltype (*plugins.begin ()), plugins::PluginPtrVariant>
47
48 : type_ (Type::Plugins), plugins_ (std::ranges::to (plugins))
49 {
50 }
51
58 Clipboard (std::ranges::range auto tracks)
59 requires std::is_same_v<decltype (*tracks.begin ()), structure::tracks::TrackPtrVariant>
60 : type_ (Type::Tracks), tracks_ (std::ranges::to (tracks))
61 {
62 }
63
64 std::string get_document_type () const { return "ZrythmClipboard"; }
65 int get_format_major_version () const { return 3; }
66 int get_format_minor_version () const { return 0; }
67
68private:
69 NLOHMANN_DEFINE_TYPE_INTRUSIVE (
70 Clipboard,
71 type_,
72 arranger_objects_,
73 tracks_,
74 plugins_)
75
76public:
77 Type type_{};
78 std::vector<structure::arrangement::ArrangerObject::Uuid> arranger_objects_;
79 std::vector<structure::tracks::Track::Uuid> tracks_;
80 std::vector<PluginUuid> plugins_;
81};
82
86}
Clipboard struct.
Definition clipboard.h:20
Clipboard(std::ranges::range auto tracks)
Construct a new Clipboard object.
Definition clipboard.h:58
Type
Clipboard type.
Definition clipboard.h:28