1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2017 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkFontAgruments_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkFontAgruments_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkScalar.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTypes.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** Represents a set of actual arguments for a font. */ 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct SkFontArguments { 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct VariationPosition { 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Coordinate { 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFourByteTag axis; 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar value; 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const Coordinate* coordinates; 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int coordinateCount; 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // deprecated, use VariationCoordinate instead 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot struct Axis { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFourByteTag fTag; 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar fStyleValue; 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFontArguments() : fCollectionIndex(0), fVariationDesignPosition{nullptr, 0} {} 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** Specify the index of the desired font. 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Font formats like ttc, dfont, cff, cid, pfr, t42, t1, and fon may actually be indexed 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * collections of fonts. 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFontArguments& setCollectionIndex(int collectionIndex) { 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fCollectionIndex = collectionIndex; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return *this; 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // deprecated, use setVariationDesignPosition instead. 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFontArguments& setAxes(const Axis* axes, int axisCount) { 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fVariationDesignPosition.coordinates = 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot reinterpret_cast<const VariationPosition::Coordinate*>(axes); 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fVariationDesignPosition.coordinateCount = axisCount; 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return *this; 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** Specify a position in the variation design space. 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Any axis not specified will use the default value. 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Any specified axis not actually present in the font will be ignored. 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * @param position not copied. The value must remain valid for life of SkFontArguments. 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFontArguments& setVariationDesignPosition(VariationPosition position) { 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fVariationDesignPosition.coordinates = position.coordinates; 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fVariationDesignPosition.coordinateCount = position.coordinateCount; 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return *this; 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int getCollectionIndex() const { 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fCollectionIndex; 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // deprecated, use getVariationDesignPosition instead. 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const Axis* getAxes(int* axisCount) const { 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot *axisCount = fVariationDesignPosition.coordinateCount; 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return reinterpret_cast<const Axis*>(fVariationDesignPosition.coordinates); 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VariationPosition getVariationDesignPosition() const { 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fVariationDesignPosition; 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fCollectionIndex; 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VariationPosition fVariationDesignPosition; 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 80