1cb93a386Sopenharmony_ci// Copyright 2019 Google LLC. 2cb93a386Sopenharmony_ci#ifndef FontArguments_DEFINED 3cb93a386Sopenharmony_ci#define FontArguments_DEFINED 4cb93a386Sopenharmony_ci 5cb93a386Sopenharmony_ci#include <functional> 6cb93a386Sopenharmony_ci#include <vector> 7cb93a386Sopenharmony_ci#include "include/core/SkFontArguments.h" 8cb93a386Sopenharmony_ci#include "include/core/SkTypeface.h" 9cb93a386Sopenharmony_ci#include "drawing.h" 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_cinamespace skia { 12cb93a386Sopenharmony_cinamespace textlayout { 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ciclass FontArguments { 15cb93a386Sopenharmony_cipublic: 16cb93a386Sopenharmony_ci FontArguments(const SkFontArguments&); 17cb93a386Sopenharmony_ci FontArguments(const FontArguments&) = default; 18cb93a386Sopenharmony_ci FontArguments(FontArguments&&) = default; 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci FontArguments& operator=(const FontArguments&) = default; 21cb93a386Sopenharmony_ci FontArguments& operator=(FontArguments&&) = default; 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ci#ifndef USE_SKIA_TXT 24cb93a386Sopenharmony_ci sk_sp<SkTypeface> CloneTypeface(sk_sp<SkTypeface> typeface) const; 25cb93a386Sopenharmony_ci#else 26cb93a386Sopenharmony_ci std::shared_ptr<RSTypeface> CloneTypeface(std::shared_ptr<RSTypeface> typeface) const; 27cb93a386Sopenharmony_ci#endif 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci friend bool operator==(const FontArguments& a, const FontArguments& b); 30cb93a386Sopenharmony_ci friend bool operator!=(const FontArguments& a, const FontArguments& b); 31cb93a386Sopenharmony_ci friend struct std::hash<FontArguments>; 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ciprivate: 34cb93a386Sopenharmony_ci FontArguments() = delete; 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci int fCollectionIndex; 37cb93a386Sopenharmony_ci std::vector<SkFontArguments::VariationPosition::Coordinate> fCoordinates; 38cb93a386Sopenharmony_ci int fPaletteIndex; 39cb93a386Sopenharmony_ci std::vector<SkFontArguments::Palette::Override> fPaletteOverrides; 40cb93a386Sopenharmony_ci}; 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci} // namespace textlayout 43cb93a386Sopenharmony_ci} // namespace skia 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_cinamespace std { 46cb93a386Sopenharmony_ci template<> struct hash<skia::textlayout::FontArguments> { 47cb93a386Sopenharmony_ci size_t operator()(const skia::textlayout::FontArguments& args) const; 48cb93a386Sopenharmony_ci }; 49cb93a386Sopenharmony_ci} 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ci#endif // FontArguments_DEFINED 52