载入中...
搜索中...
未找到
EditorCurveDocument.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <array>
9#include <map>
10#include <memory>
11#include <string>
12#include <vector>
13
14namespace eve::editor {
15
19 double time = 0.0;
20 double value = 0.0;
21 double inTangent = 0.0;
22 double outTangent = 0.0;
23 std::string interpolation = "linear";
24};
25
29 double time = 0.0;
30 std::array<double, 4> color{1.0, 1.0, 1.0, 1.0};
31};
32
35 EditorStatus status = EditorStatus::Failed;
37 std::vector<double> curveSamples;
38 std::vector<std::array<double, 4>> gradientSamples;
39 std::vector<EditorDiagnostic> diagnostics;
40};
41
44public:
46 virtual ~ICurveDocumentEditTarget() = default;
48 static CapabilityId editorCapabilityId() { return CapabilityId("eve.editor.target.curve-document"); }
56 virtual Result<DomainOperation> makeDeleteStop(const StableId& stop) const = 0;
57};
58
61 public virtual IEditableTarget,
65public:
67 explicit EditorCurveDocument(std::string id);
69 TargetId targetId() const override { return TargetId(id_); }
71 TargetDescriptor describe() const override;
73 void* queryCapability(const CapabilityId& capability) override;
75 Result<void> applyDomainOperation(const DomainOperation& operation) override;
77 [[nodiscard]] std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
79 [[nodiscard]] Result<void> commitDomainState(
80 std::unique_ptr<IDomainOperationTarget> candidate) override;
82 Result<DomainOperation> makeSetKey(const EditorCurveKey& key) const override;
84 Result<DomainOperation> makeDeleteKey(const StableId& key) const override;
86 Result<DomainOperation> makeSetStop(const EditorGradientStop& stop) const override;
88 Result<DomainOperation> makeDeleteStop(const StableId& stop) const override;
90 std::vector<EditorCurveKey> keys() const;
92 std::vector<EditorGradientStop> stops() const;
94 double sampleCurve(double time) const;
96 std::array<double, 4> sampleGradient(double time) const;
98 EditorCurvePreview preview(int sampleCount, int maximumSamples = 4096) const;
100 EditorValue snapshotValue() const;
102 Result<void> loadSnapshot(const EditorValue& snapshot);
103
104private:
105 std::string id_;
106 std::map<StableId, EditorCurveKey> keys_;
107 std::map<StableId, EditorGradientStop> stops_;
108};
109
110} // namespace eve::editor
ActionParameterOperation operation
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
std::uint32_t key
Move-only operation result carrying either a value or Status.
Definition Result.h:155
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Dirty region and revision shared by every editable document target.
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
Deterministic owning value tree shared by authoring hosts.
UI-neutral reversible curve and gradient timeline document.
TargetId targetId() const override
Target id.
Stable key/gradient editing capability shared by effects and animation presenters.
virtual ~ICurveDocumentEditTarget()=default
Releases ICurveDocumentEditTarget resources.
virtual Result< DomainOperation > makeDeleteStop(const StableId &stop) const =0
Plan deletion of a gradient stop.
virtual Result< DomainOperation > makeSetKey(const EditorCurveKey &key) const =0
Plan creation or replacement of a scalar key.
static CapabilityId editorCapabilityId()
Editor capability id.
virtual Result< DomainOperation > makeSetStop(const EditorGradientStop &stop) const =0
Plan creation or replacement of a gradient stop.
virtual Result< DomainOperation > makeDeleteKey(const StableId &key) const =0
Plan deletion of a scalar key.
eve::editing::CapabilityId CapabilityId
Definition EditorIds.h:33
eve::editing::Revision Revision
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
DomainOperation public API.
Stable discovery metadata exposed by every editable target.
Stable scalar curve key with editable Hermite tangents.
Bounded revision-tagged curve/gradient lookup preview.
std::vector< EditorDiagnostic > diagnostics
std::vector< std::array< double, 4 > > gradientSamples
Stable normalized RGBA gradient stop.