/* * Copyright 2020 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrSDFTControl_DEFINED #define GrSDFTControl_DEFINED #include "include/core/SkFont.h" #include "include/core/SkScalar.h" class SkMatrix; class SkSurfaceProps; class GrSDFTControl { public: GrSDFTControl(bool ableToUseSDFT, bool useSDFTForSmallText, SkScalar min, SkScalar max); enum DrawingType : uint8_t { kDirect = 1, kSDFT = 2, kPath = 4 }; DrawingType drawingType( const SkFont& font, const SkPaint& paint, const SkMatrix& viewMatrix) const; SkFont getSDFFont(const SkFont& font, const SkMatrix& viewMatrix, SkScalar* textRatio) const; std::pair computeSDFMinMaxScale( SkScalar textSize, const SkMatrix& viewMatrix) const; private: static SkScalar MinSDFTRange(bool useSDFTForSmallText, SkScalar min); // Below this size (in device space) distance field text will not be used. const SkScalar fMinDistanceFieldFontSize; // Above this size (in device space) distance field text will not be used and glyphs will // be rendered from outline as individual paths. const SkScalar fMaxDistanceFieldFontSize; const bool fAbleToUseSDFT; }; #endif // GrSDFTControl_DEFINED