#pragma once #include #include #include #include #include #include #include #include #include namespace mbgl { class ImagePosition; class UnwrappedTileID; class TransformState; template class Faded; using FillLayoutAttributes = PositionOnlyLayoutAttributes; using FillUniforms = TypeList; using FillPatternUniforms = TypeList; class FillProgram final : public Program, style::FillPaintProperties> { public: static constexpr std::string_view Name{"FillProgram"}; const std::string_view typeName() const noexcept override { return Name; } using Program::Program; static LayoutVertex layoutVertex(Point p) { return LayoutVertex{{{p.x, p.y}}}; } }; class FillPatternProgram final : public Program, style::FillPaintProperties> { public: static constexpr std::string_view Name{"FillPatternProgram"}; const std::string_view typeName() const noexcept override { return Name; } using Program::Program; static LayoutUniformValues layoutUniformValues(mat4 matrix, Size framebufferSize, Size atlasSize, const CrossfadeParameters& crossfade, const UnwrappedTileID&, const TransformState&, float pixelRatio); }; class FillOutlineProgram final : public Program, style::FillPaintProperties> { public: static constexpr std::string_view Name{"FillOutlineProgram"}; const std::string_view typeName() const noexcept override { return Name; } using Program::Program; }; class FillOutlinePatternProgram final : public Program, style::FillPaintProperties> { public: static constexpr std::string_view Name{"FillOutlinePatternProgram"}; const std::string_view typeName() const noexcept override { return Name; } using Program::Program; }; using FillLayoutVertex = FillProgram::LayoutVertex; using FillAttributes = FillProgram::AttributeList; } // namespace mbgl