blob: 9b62d06dabc7a073e69088bc9b5e4bff80b8cf13 [file] [log] [blame]
// Copyright 2019 Google LLC.
#ifndef FontArguments_DEFINED
#define FontArguments_DEFINED
#include <functional>
#include <vector>
#include "include/core/SkFontArguments.h"
#include "include/core/SkTypeface.h"
namespace skia {
namespace textlayout {
class FontArguments {
public:
FontArguments(const SkFontArguments&);
FontArguments(const FontArguments&) = default;
FontArguments(FontArguments&&) = default;
FontArguments& operator=(const FontArguments&) = default;
FontArguments& operator=(FontArguments&&) = default;
sk_sp<SkTypeface> CloneTypeface(const sk_sp<SkTypeface>& typeface) const;
friend bool operator==(const FontArguments& a, const FontArguments& b);
friend bool operator!=(const FontArguments& a, const FontArguments& b);
friend struct std::hash<FontArguments>;
private:
FontArguments() = delete;
int fCollectionIndex;
std::vector<SkFontArguments::VariationPosition::Coordinate> fCoordinates;
int fPaletteIndex;
std::vector<SkFontArguments::Palette::Override> fPaletteOverrides;
};
} // namespace textlayout
} // namespace skia
namespace std {
template<> struct hash<skia::textlayout::FontArguments> {
size_t operator()(const skia::textlayout::FontArguments& args) const;
};
}
#endif // FontArguments_DEFINED