1 /* 2 * Copyright 2018 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkFontParameters_DEFINED 9 #define SkFontParameters_DEFINED 10 11 #include "include/core/SkScalar.h" 12 #include "include/core/SkTypes.h" 13 14 struct SkFontParameters { 15 struct Variation { 16 // Parameters in a variation font axis. 17 struct Axis { AxisSkFontParameters::Variation::Axis18 constexpr Axis() : tag(0), min(0), def(0), max(0), flags(0) {} AxisSkFontParameters::Variation::Axis19 constexpr Axis(SkFourByteTag tag, float min, float def, float max, bool hidden) : 20 tag(tag), min(min), def(def), max(max), flags(hidden ? HIDDEN : 0) {} 21 22 // Four character identifier of the font axis (weight, width, slant, italic...). 23 SkFourByteTag tag; 24 // Minimum value supported by this axis. 25 float min; 26 // Default value set by this axis. 27 float def; 28 // Maximum value supported by this axis. The maximum can equal the minimum. 29 float max; 30 // Return whether this axis is recommended to be remain hidden in user interfaces. isHiddenSkFontParameters::Variation::Axis31 bool isHidden() const { return flags & HIDDEN; } 32 // Set this axis to be remain hidden in user interfaces. setHiddenSkFontParameters::Variation::Axis33 void setHidden(bool hidden) { flags = hidden ? (flags | HIDDEN) : (flags & ~HIDDEN); } 34 private: 35 static constexpr uint16_t HIDDEN = 0x0001; 36 // Attributes for a font axis. 37 uint16_t flags; 38 }; 39 }; 40 }; 41 42 #endif 43