载入中...
搜索中...
未找到
OffscreenPreview.cpp
浏览该文件的文档.
45Result<OffscreenPreviewArtifact> GraphicsOffscreenPreviewService::render(const OffscreenPreviewRequest& request,
49 if (!impl_->graphics || !impl_->canvases || !impl_->targets || request.previewId.empty() || !draw ||
50 request.sourceRevision == 0 || request.width <= 0 || request.height <= 0 || maximumDimension <= 0 ||
52 static_cast<std::uint64_t>(request.width) * static_cast<std::uint64_t>(request.height) > maximumPixels)
71 canvas->clear(graphics::Color(static_cast<float>(request.clearColor[0]), static_cast<float>(request.clearColor[1]),
98 metadata.handle = "preview://" + request.previewId.value() + "/" + std::to_string(request.sourceRevision) + "/" +
100 impl_->artifacts.insert_or_assign(metadata.handle, Impl::Artifact{metadata, std::move(pixels)});
104Result<const image::ImageData*> GraphicsOffscreenPreviewService::image(const std::string& handle,
120 return eve::editing::failed<void>(EditorStatus::NotFound, RuleId("editor.preview.artifact-not-found"),
bool ok() const noexcept
Whether this result represents a non-failure outcome.
Definition Result.h:255
const Status & status() const noexcept
Inspect the structured operation status.
Definition Result.h:269
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
virtual image::ImageData * newImageData()=0
Creates a image data. @ownership Caller deletes unless documented otherwise.
virtual void clear(std::optional< Color > color, std::optional< int > stencil, std::optional< double > depth)=0
Clears .
Definition Graphics.h:125
Narrow offscreen-Canvas allocation boundary for tools and optional modules.
Definition ICanvasFactory.h:8
Narrow render-target binding boundary for optional tooling modules.
Definition ICanvasTarget.h:6
Result< void > release(const std::string &handle)
Remove an in-memory readback artifact.
Definition OffscreenPreview.cpp:118
Result< const image::ImageData * > image(const std::string &handle, Revision currentRevision) const
Borrow pixels only when the requested source revision still matches.
Definition OffscreenPreview.cpp:104
~GraphicsOffscreenPreviewService()
Graphics offscreen preview service.
std::function< Result< void >(graphics::Graphics *, graphics::Canvas *)> DrawCallback
Definition OffscreenPreview.h:49
Result< OffscreenPreviewArtifact > render(const OffscreenPreviewRequest &request, const DrawCallback &draw, int maximumDimension=4096, std::uint64_t maximumPixels=16777216)
Clear, draw and read back one isolated offscreen Canvas.
Definition OffscreenPreview.cpp:45
GraphicsOffscreenPreviewService(graphics::Graphics *graphics, graphics::ICanvasFactory *canvases, graphics::ICanvasTarget *targets)
Bind borrowed draw, allocation and target-control interfaces.
Definition OffscreenPreview.cpp:35
Definition OffscreenPreview.cpp:12
eve::Color Color
RGBA color used by every graphics draw call. Lives inside eve::graphics so including a graphics heade...
Definition Color.h:13
Definition Container.h:602
OffscreenPreviewArtifact metadata
Definition OffscreenPreview.cpp:24
std::unique_ptr< image::ImageData > pixels
Definition OffscreenPreview.cpp:25
graphics::ICanvasFactory * canvases
Definition OffscreenPreview.cpp:28
graphics::Graphics * graphics
Definition OffscreenPreview.cpp:27
std::map< std::pair< int, int >, graphics::Canvas * > canvasCache
Definition OffscreenPreview.cpp:30
std::unordered_map< std::string, Artifact > artifacts
Definition OffscreenPreview.cpp:31
graphics::ICanvasTarget * targets
Definition OffscreenPreview.cpp:29
In-memory artifact metadata returned after synchronous readback.
Definition OffscreenPreview.h:38
Revision sourceRevision
Definition OffscreenPreview.h:41
StableId previewId
Definition OffscreenPreview.h:40
std::string handle
Definition OffscreenPreview.h:39
Immutable request for one isolated Canvas render and CPU readback.
Definition OffscreenPreview.h:29