/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef sktext_gpu_VertexFiller_DEFINED #define sktext_gpu_VertexFiller_DEFINED #include "include/core/SkMatrix.h" #include "include/core/SkPoint.h" #include "include/core/SkRect.h" #include "include/core/SkScalar.h" #include "include/core/SkSpan.h" #include "include/core/SkTypes.h" #include "include/private/base/SkTLogic.h" #include "src/base/SkVx.h" #include <optional> #include <tuple> class SkReadBuffer; class SkWriteBuffer; #if defined(SK_GANESH) || defined(SK_USE_LEGACY_GANESH_TEXT_APIS) #include "src/gpu/ganesh/GrColor.h" #include "src/gpu/ganesh/ops/AtlasTextOp.h" #include <cstddef> #endif // defined(SK_GANESH) || defined(SK_USE_LEGACY_GANESH_TEXT_APIS) namespace skgpu { enum class MaskFormat : int; namespace graphite { class DrawWriter; class Rect; class Transform; } } namespace sktext::gpu { class Glyph; class SubRunAllocator; enum FillerType { … }; // -- VertexFiller --------------------------------------------------------------------------------- // The VertexFiller assumes that all points, glyph atlas entries, and bounds are created with // respect to the CreationMatrix. This assumes that mapping any point, mask or bounds through the // CreationMatrix will result in the proper device position. In order to draw using an arbitrary // PositionMatrix, calculate a // // viewDifference = [PositionMatrix] * [CreationMatrix] ^ -1. // // The viewDifference is used to map all points, masks and bounds to position to the device // respecting the PositionMatrix. class VertexFiller { … }; } // namespace sktext::gpu #endif