blob: 552e159f1f82412da9dcffae1583c43ff0c32a19 [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/typographer/backends/skia/typeface_skia.h"
namespace impeller {
TypefaceSkia::TypefaceSkia(sk_sp<SkTypeface> typeface)
: typeface_(std::move(typeface)) {}
TypefaceSkia::~TypefaceSkia() = default;
bool TypefaceSkia::IsValid() const {
return !!typeface_;
}
std::size_t TypefaceSkia::GetHash() const {
if (!IsValid()) {
return 0u;
}
return reinterpret_cast<size_t>(typeface_.get());
}
bool TypefaceSkia::IsEqual(const Typeface& other) const {
auto sk_other = reinterpret_cast<const TypefaceSkia*>(&other);
return sk_other->typeface_ == typeface_;
}
Rect TypefaceSkia::GetBoundingBox() const {
if (!IsValid()) {
return {};
}
const auto bounds = typeface_->getBounds();
return Rect::MakeLTRB(bounds.left(), bounds.top(), bounds.right(),
bounds.bottom());
}
const sk_sp<SkTypeface>& TypefaceSkia::GetSkiaTypeface() const {
return typeface_;
}
} // namespace impeller