blob: f5614e72cd6d7f85606cd95d05cb40333f4ea436 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "impeller/renderer/snapshot.h"
#include <optional>
namespace impeller {
std::optional<Rect> Snapshot::GetCoverage() const {
if (!texture) {
return std::nullopt;
}
return Rect(Size(texture->GetSize())).TransformBounds(transform);
}
std::optional<Matrix> Snapshot::GetUVTransform() const {
if (!texture || texture->GetSize().IsZero()) {
return std::nullopt;
}
return Matrix::MakeScale(1 / Vector2(texture->GetSize())) *
transform.Invert();
}
std::optional<std::array<Point, 4>> Snapshot::GetCoverageUVs(
const Rect& coverage) const {
auto uv_transform = GetUVTransform();
if (!uv_transform.has_value()) {
return std::nullopt;
}
return coverage.GetTransformedPoints(uv_transform.value());
}
} // namespace impeller