#pragma once #include #include #include #include #include #include namespace mbgl { namespace uniforms { MBGL_DEFINE_UNIFORM_SCALAR(bool, u_scale_with_map); } // namespace uniforms class CircleProgram : public Program< shaders::circle, gfx::Triangle, TypeList< attributes::a_pos>, TypeList< uniforms::u_matrix, uniforms::u_scale_with_map, uniforms::u_extrude_scale, uniforms::u_camera_to_center_distance, uniforms::u_pitch_with_map>, TypeList<>, style::CirclePaintProperties> { public: using Program::Program; /* * @param {number} x vertex position * @param {number} y vertex position * @param {number} ex extrude normal * @param {number} ey extrude normal */ static LayoutVertex vertex(Point p, float ex, float ey) { return LayoutVertex { {{ static_cast((p.x * 2) + ((ex + 1) / 2)), static_cast((p.y * 2) + ((ey + 1) / 2)) }} }; } }; using CircleLayoutVertex = CircleProgram::LayoutVertex; using CircleAttributes = CircleProgram::Attributes; class CircleLayerPrograms final : public LayerTypePrograms { public: CircleLayerPrograms(gl::Context& context, const ProgramParameters& programParameters) : circle(context, programParameters) {} ProgramMap circle; }; } // namespace mbgl