2012-04-19 10:35:52 +04:00
|
|
|
/****************************************************************************
|
|
|
|
Copyright (c) 2008-2010 Ricardo Quesada
|
2014-01-07 07:25:07 +04:00
|
|
|
Copyright (c) 2010-2013 cocos2d-x.org
|
2012-04-19 10:35:52 +04:00
|
|
|
Copyright (c) 2011 Zynga Inc.
|
2017-02-14 09:36:57 +03:00
|
|
|
Copyright (c) 2013-2017 Chukong Technologies Inc.
|
2012-04-19 10:35:52 +04:00
|
|
|
|
|
|
|
http://www.cocos2d-x.org
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
THE SOFTWARE.
|
|
|
|
****************************************************************************/
|
|
|
|
|
2012-11-14 14:05:15 +04:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* IMPORTANT IMPORTANT IMPORTANT IMPORTANT
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* LEGACY FUNCTIONS
|
|
|
|
*
|
2013-06-20 10:13:12 +04:00
|
|
|
* USE DrawNode instead
|
2012-11-14 14:05:15 +04:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2012-04-19 10:35:52 +04:00
|
|
|
|
|
|
|
#ifndef __CCDRAWING_PRIMITIVES__
|
|
|
|
#define __CCDRAWING_PRIMITIVES__
|
|
|
|
|
2012-11-14 14:05:15 +04:00
|
|
|
|
2014-04-30 04:37:36 +04:00
|
|
|
#include "base/ccTypes.h"
|
|
|
|
#include "base/ccMacros.h"
|
2014-04-26 09:03:25 +04:00
|
|
|
#include "math/CCMath.h"
|
2012-11-14 14:05:15 +04:00
|
|
|
|
2012-04-19 10:35:52 +04:00
|
|
|
/**
|
|
|
|
@file
|
|
|
|
Drawing OpenGL ES primitives.
|
2013-07-25 18:38:55 +04:00
|
|
|
- drawPoint, drawPoints
|
|
|
|
- drawLine
|
|
|
|
- drawRect, drawSolidRect
|
|
|
|
- drawPoly, drawSolidPoly
|
|
|
|
- drawCircle
|
|
|
|
- drawQuadBezier
|
|
|
|
- drawCubicBezier
|
|
|
|
- drawCatmullRom
|
|
|
|
- drawCardinalSpline
|
2012-11-14 14:05:15 +04:00
|
|
|
|
|
|
|
You can change the color, point size, width by calling:
|
2013-07-25 18:38:55 +04:00
|
|
|
- drawColor4B(), drawColor4F()
|
2012-11-14 14:05:15 +04:00
|
|
|
- ccPointSize()
|
|
|
|
- glLineWidth()
|
2012-04-19 10:35:52 +04:00
|
|
|
|
2014-05-14 21:07:09 +04:00
|
|
|
@warning These functions draws the Line, Vec2, Polygon, immediately. They aren't batched. If you are going to make a game that depends on these primitives, I suggest creating a batch. Instead you should use DrawNode
|
2012-04-19 10:35:52 +04:00
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
NS_CC_BEGIN
|
|
|
|
|
2012-06-20 14:09:11 +04:00
|
|
|
/**
|
2015-03-21 12:06:26 +03:00
|
|
|
* @addtogroup _2d
|
2012-06-20 14:09:11 +04:00
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2013-06-20 10:13:12 +04:00
|
|
|
class PointArray;
|
2012-06-11 21:43:07 +04:00
|
|
|
|
2015-03-28 09:28:16 +03:00
|
|
|
/**
|
|
|
|
* @js cc.DrawingPrimitiveCanvas/cc.DrawingPrimitiveWebGL
|
|
|
|
*/
|
2013-07-26 05:42:53 +04:00
|
|
|
namespace DrawPrimitives
|
2013-07-25 18:38:55 +04:00
|
|
|
{
|
2015-03-28 09:28:16 +03:00
|
|
|
/**
|
|
|
|
* Initializes the drawing primitives.
|
|
|
|
* @js NA
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL init();
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-28 09:28:16 +03:00
|
|
|
/**
|
|
|
|
* Frees allocated resources by the drawing primitives.
|
|
|
|
* @js NA
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL free();
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a point given x and y coordinate measured in points
|
|
|
|
*
|
|
|
|
* @param point A Vec2 with a point given x and y coordinate.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawPoint(const Vec2& point);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws an array of points.
|
|
|
|
*
|
2016-07-03 18:42:10 +03:00
|
|
|
* @param points A point coordinates.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @param numberOfPoints The number of points.
|
|
|
|
* @since v0.7.2
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawPoints(const Vec2 *points, unsigned int numberOfPoints);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a line given the origin and destination point measured in points
|
|
|
|
*
|
|
|
|
* @param origin A Vec2 Type point used to the line origin.
|
|
|
|
* @param destination A Vec2 Type point used to the line destination.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawLine(const Vec2& origin, const Vec2& destination);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a rectangle given the origin and destination point measured in points.
|
|
|
|
* The origin and the destination can not have the same x and y coordinate.
|
|
|
|
*
|
|
|
|
* @param origin The rectangle origin.
|
|
|
|
* @param destination The rectangle destination.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawRect(Vec2 origin, Vec2 destination);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a solid rectangle given the origin and destination point measured in points.
|
|
|
|
* The origin and the destination can not have the same x and y coordinate.
|
|
|
|
*
|
|
|
|
* @param origin The rectangle origin.
|
|
|
|
* @param destination The rectangle destination.
|
|
|
|
* @param color The rectangle color.
|
|
|
|
* @since 1.1
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawSolidRect(Vec2 origin, Vec2 destination, Color4F color);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a polygon given a pointer to point coordinates and the number of vertices measured in points.
|
|
|
|
* The polygon can be closed or open.
|
|
|
|
*
|
|
|
|
* @param vertices A pointer to point coordinates.
|
|
|
|
* @param numOfVertices The number of vertices measured in points.
|
|
|
|
* @param closePolygon The polygon can be closed or open.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawPoly(const Vec2 *vertices, unsigned int numOfVertices, bool closePolygon);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a solid polygon given a pointer to CGPoint coordinates, the number of vertices measured in points, and a color.
|
|
|
|
*
|
|
|
|
* @param poli A solid polygon given a pointer to CGPoint coordinates.
|
|
|
|
* @param numberOfPoints The number of vertices measured in points.
|
|
|
|
* @param color The solid polygon color.
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawSolidPoly(const Vec2 *poli, unsigned int numberOfPoints, Color4F color);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a circle given the center, radius and number of segments.
|
|
|
|
*
|
|
|
|
* @param center The circle center point.
|
|
|
|
* @param radius The circle rotate of radius.
|
2015-05-21 03:22:59 +03:00
|
|
|
* @param angle The circle angle.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @param segments The number of segments.
|
|
|
|
* @param drawLineToCenter Whether or not draw the line from the origin to center.
|
|
|
|
* @param scaleX The scale value in x.
|
|
|
|
* @param scaleY The scale value in y.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawCircle(const Vec2& center, float radius, float angle, unsigned int segments, bool drawLineToCenter, float scaleX, float scaleY);
|
2015-03-21 12:06:26 +03:00
|
|
|
|
|
|
|
/** Draws a circle given the center, radius and number of segments.
|
|
|
|
*
|
|
|
|
* @param center The circle center point.
|
|
|
|
* @param radius The circle rotate of radius.
|
2015-05-21 03:22:59 +03:00
|
|
|
* @param angle The circle angle.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @param segments The number of segments.
|
|
|
|
* @param drawLineToCenter Whether or not draw the line from the origin to center.
|
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawCircle(const Vec2& center, float radius, float angle, unsigned int segments, bool drawLineToCenter);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a solid circle given the center, radius and number of segments.
|
|
|
|
* @param center The circle center point.
|
|
|
|
* @param radius The circle rotate of radius.
|
2015-05-21 03:22:59 +03:00
|
|
|
* @param angle The circle angle.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @param segments The number of segments.
|
|
|
|
* @param scaleX The scale value in x.
|
|
|
|
* @param scaleY The scale value in y.
|
2015-03-28 09:28:16 +03:00
|
|
|
* @js NA
|
2015-03-21 12:06:26 +03:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawSolidCircle(const Vec2& center, float radius, float angle, unsigned int segments, float scaleX, float scaleY);
|
2015-03-21 12:06:26 +03:00
|
|
|
|
|
|
|
/** Draws a solid circle given the center, radius and number of segments.
|
|
|
|
* @param center The circle center point.
|
|
|
|
* @param radius The circle rotate of radius.
|
2015-05-21 03:22:59 +03:00
|
|
|
* @param angle The circle angle.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @param segments The number of segments.
|
2015-03-28 09:28:16 +03:00
|
|
|
* @js NA
|
2015-03-21 12:06:26 +03:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawSolidCircle(const Vec2& center, float radius, float angle, unsigned int segments);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a quad bezier path.
|
|
|
|
*
|
|
|
|
* @param origin The origin of the bezier path.
|
|
|
|
* @param control The control of the bezier path.
|
|
|
|
* @param destination The destination of the bezier path.
|
2016-05-05 02:05:20 +03:00
|
|
|
* @param segments The number of segments.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @warning This function could be pretty slow. Use it only for debugging purposes.
|
|
|
|
* @since v0.8
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawQuadBezier(const Vec2& origin, const Vec2& control, const Vec2& destination, unsigned int segments);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a cubic bezier path.
|
|
|
|
*
|
|
|
|
* @param origin The origin of the bezier path.
|
|
|
|
* @param control1 The first control of the bezier path.
|
|
|
|
* @param control2 The second control of the bezier path.
|
|
|
|
* @param destination The destination of the bezier path.
|
2016-05-05 02:05:20 +03:00
|
|
|
* @param segments The number of segments.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @warning This function could be pretty slow. Use it only for debugging purposes.
|
|
|
|
* @since v0.8
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawCubicBezier(const Vec2& origin, const Vec2& control1, const Vec2& control2, const Vec2& destination, unsigned int segments);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a Catmull Rom path.
|
|
|
|
*
|
|
|
|
* @param arrayOfControlPoints A point array of control point.
|
2016-05-05 02:05:20 +03:00
|
|
|
* @param segments The number of segments.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @warning This function could be pretty slow. Use it only for debugging purposes.
|
|
|
|
* @since v2.0
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawCatmullRom(PointArray *arrayOfControlPoints, unsigned int segments);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Draws a Cardinal Spline path.
|
|
|
|
*
|
|
|
|
* @param config A array point.
|
|
|
|
* @param tension The tension of the spline.
|
2016-05-05 02:05:20 +03:00
|
|
|
* @param segments The number of segments.
|
2015-03-21 12:06:26 +03:00
|
|
|
* @warning This function could be pretty slow. Use it only for debugging purposes.
|
|
|
|
* @since v2.0
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL drawCardinalSpline(PointArray *config, float tension, unsigned int segments);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Set the drawing color with 4 unsigned bytes.
|
|
|
|
*
|
|
|
|
* @param r The red color with a unsigned bytes.
|
|
|
|
* @param g The green color with a unsigned bytes.
|
|
|
|
* @param b The blue color with a unsigned bytes.
|
|
|
|
* @param a Alpha with a unsigned bytes.
|
|
|
|
* @since v2.0
|
2015-03-28 09:28:16 +03:00
|
|
|
* @js setDrawColor
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL setDrawColor4B(GLubyte r, GLubyte g, GLubyte b, GLubyte a);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Set the drawing color with 4 floats.
|
|
|
|
*
|
|
|
|
* @param r The red color with an floats.
|
|
|
|
* @param g The green color with an floats.
|
|
|
|
* @param b The blue color with an floats.
|
|
|
|
* @param a Alpha with an floats.
|
|
|
|
* @since v2.0
|
2015-03-28 09:28:16 +03:00
|
|
|
* @js setDrawColor
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL setDrawColor4F(GLfloat r, GLfloat g, GLfloat b, GLfloat a);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
2015-03-21 12:06:26 +03:00
|
|
|
/** Set the point size in points. Default 1.
|
|
|
|
*
|
|
|
|
* @param pointSize The point size with an float.
|
|
|
|
* @since v2.0
|
2013-07-25 18:38:55 +04:00
|
|
|
*/
|
2014-09-11 11:39:56 +04:00
|
|
|
CC_DEPRECATED_ATTRIBUTE void CC_DLL setPointSize(GLfloat pointSize);
|
2013-07-25 18:38:55 +04:00
|
|
|
|
|
|
|
};
|
2012-04-19 10:35:52 +04:00
|
|
|
|
2012-06-20 14:09:11 +04:00
|
|
|
// end of global group
|
2015-03-21 12:06:26 +03:00
|
|
|
/** @} */
|
2012-06-20 14:09:11 +04:00
|
|
|
|
2012-04-19 10:35:52 +04:00
|
|
|
NS_CC_END
|
|
|
|
|
|
|
|
#endif // __CCDRAWING_PRIMITIVES__
|