//////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library // Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. // // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it freely, // subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; // you must not claim that you wrote the original software. // If you use this software in a product, an acknowledgment // in the product documentation would be appreciated but is not required. // // 2. Altered source versions must be plainly marked as such, // and must not be misrepresented as being the original software. // // 3. This notice may not be removed or altered from any source distribution. // //////////////////////////////////////////////////////////// #ifndef SFML_CIRCLESHAPE_HPP #define SFML_CIRCLESHAPE_HPP //////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include #include namespace sf { //////////////////////////////////////////////////////////// /// \brief Specialized shape representing a circle /// //////////////////////////////////////////////////////////// class SFML_GRAPHICS_API CircleShape : public Shape { public: //////////////////////////////////////////////////////////// /// \brief Default constructor /// /// \param radius Radius of the circle /// \param pointCount Number of points composing the circle /// //////////////////////////////////////////////////////////// explicit CircleShape(float radius = 0, std::size_t pointCount = 30); //////////////////////////////////////////////////////////// /// \brief Set the radius of the circle /// /// \param radius New radius of the circle /// /// \see getRadius /// //////////////////////////////////////////////////////////// void setRadius(float radius); //////////////////////////////////////////////////////////// /// \brief Get the radius of the circle /// /// \return Radius of the circle /// /// \see setRadius /// //////////////////////////////////////////////////////////// float getRadius() const; //////////////////////////////////////////////////////////// /// \brief Set the number of points of the circle /// /// \param count New number of points of the circle /// /// \see getPointCount /// //////////////////////////////////////////////////////////// void setPointCount(std::size_t count); //////////////////////////////////////////////////////////// /// \brief Get the number of points of the circle /// /// \return Number of points of the circle /// /// \see setPointCount /// //////////////////////////////////////////////////////////// virtual std::size_t getPointCount() const; //////////////////////////////////////////////////////////// /// \brief Get a point of the circle /// /// The returned point is in local coordinates, that is, /// the shape's transforms (position, rotation, scale) are /// not taken into account. /// The result is undefined if \a index is out of the valid range. /// /// \param index Index of the point to get, in range [0 .. getPointCount() - 1] /// /// \return index-th point of the shape /// //////////////////////////////////////////////////////////// virtual Vector2f getPoint(std::size_t index) const; private: //////////////////////////////////////////////////////////// // Member data //////////////////////////////////////////////////////////// float m_radius; ///< Radius of the circle std::size_t m_pointCount; ///< Number of points composing the circle }; } // namespace sf #endif // SFML_CIRCLESHAPE_HPP //////////////////////////////////////////////////////////// /// \class sf::CircleShape /// \ingroup graphics /// /// This class inherits all the functions of sf::Transformable /// (position, rotation, scale, bounds, ...) as well as the /// functions of sf::Shape (outline, color, texture, ...). /// /// Usage example: /// \code /// sf::CircleShape circle; /// circle.setRadius(150); /// circle.setOutlineColor(sf::Color::Red); /// circle.setOutlineThickness(5); /// circle.setPosition(10, 20); /// ... /// window.draw(circle); /// \endcode /// /// Since the graphics card can't draw perfect circles, we have to /// fake them with multiple triangles connected to each other. The /// "points count" property of sf::CircleShape defines how many of these /// triangles to use, and therefore defines the quality of the circle. /// /// The number of points can also be used for another purpose; with /// small numbers you can create any regular polygon shape: /// equilateral triangle, square, pentagon, hexagon, ... /// /// \see sf::Shape, sf::RectangleShape, sf::ConvexShape /// ////////////////////////////////////////////////////////////