#pragma once #include #include #include #include #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< uniforms::u_matrix, uniforms::u_world>; using FillPatternUniforms = TypeList< uniforms::u_matrix, uniforms::u_world, uniforms::u_texsize, uniforms::u_scale, uniforms::u_fade, uniforms::u_pixel_coord_upper, uniforms::u_pixel_coord_lower>; class FillProgram : public Program< FillProgram, shaders::fill, gfx::PrimitiveType::Triangle, FillLayoutAttributes, FillUniforms, TypeList<>, style::FillPaintProperties> { public: using Program::Program; static LayoutVertex layoutVertex(Point p) { return LayoutVertex { {{ p.x, p.y }} }; } }; class FillPatternProgram : public Program< FillPatternProgram, shaders::fill_pattern, gfx::PrimitiveType::Triangle, FillLayoutAttributes, FillPatternUniforms, TypeList< textures::u_image>, style::FillPaintProperties> { public: using Program::Program; static LayoutUniformValues layoutUniformValues(mat4 matrix, Size framebufferSize, Size atlasSize, const CrossfadeParameters& crossfade, const UnwrappedTileID&, const TransformState&, const float pixelRatio); }; class FillOutlineProgram : public Program< FillOutlineProgram, shaders::fill_outline, gfx::PrimitiveType::Line, FillLayoutAttributes, FillUniforms, TypeList<>, style::FillPaintProperties> { public: using Program::Program; }; class FillOutlinePatternProgram : public Program< FillOutlinePatternProgram, shaders::fill_outline_pattern, gfx::PrimitiveType::Line, FillLayoutAttributes, FillPatternUniforms, TypeList< textures::u_image>, style::FillPaintProperties> { public: using Program::Program; }; using FillLayoutVertex = FillProgram::LayoutVertex; using FillAttributes = FillProgram::AttributeList; class FillLayerPrograms final : public LayerTypePrograms { public: FillLayerPrograms(gl::Context& context, const ProgramParameters& programParameters) : fill(context, programParameters), fillPattern(context, programParameters), fillOutline(context, programParameters), fillOutlinePattern(context, programParameters) {} ProgramMap fill; ProgramMap fillPattern; ProgramMap fillOutline; ProgramMap fillOutlinePattern; }; } // namespace mbgl