mirror of https://github.com/axmolengine/axmol.git
Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into developNewUI
This commit is contained in:
commit
8826659cf1
1
AUTHORS
1
AUTHORS
|
@ -356,6 +356,7 @@ Developers:
|
||||||
|
|
||||||
ThePickleMan
|
ThePickleMan
|
||||||
Adding 'rotationIsDir' property to ParticleSystem.
|
Adding 'rotationIsDir' property to ParticleSystem.
|
||||||
|
DrawNode supports to draw triangle, quad bezier, cubic bezier.
|
||||||
|
|
||||||
Jianghua (jxhgzs)
|
Jianghua (jxhgzs)
|
||||||
Adding an additional transform for CCNode.
|
Adding an additional transform for CCNode.
|
||||||
|
|
|
@ -4,6 +4,7 @@ cocos2d-x-3.0final ?.? ?
|
||||||
[FIX] ControlSlider doesn't support to set selected thumb sprite.
|
[FIX] ControlSlider doesn't support to set selected thumb sprite.
|
||||||
[FIX] ControlButton doesn't support to set scale ratio of touchdown state.
|
[FIX] ControlButton doesn't support to set scale ratio of touchdown state.
|
||||||
[FIX] Websocket doesn't support send/receive data which larger than 4096 bytes.
|
[FIX] Websocket doesn't support send/receive data which larger than 4096 bytes.
|
||||||
|
[NEW] DrawNode supports to draw triangle, quad bezier, cubic bezier.
|
||||||
cocos2d-x-3.0beta Jan.7 2014
|
cocos2d-x-3.0beta Jan.7 2014
|
||||||
[All]
|
[All]
|
||||||
[NEW] New label: shadow, outline, glow support
|
[NEW] New label: shadow, outline, glow support
|
||||||
|
|
|
@ -456,6 +456,86 @@ void DrawNode::drawPolygon(Point *verts, int count, const Color4F &fillColor, fl
|
||||||
free(extrude);
|
free(extrude);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DrawNode::drawTriangle(const Point &p1, const Point &p2, const Point &p3, const Color4F &color)
|
||||||
|
{
|
||||||
|
unsigned int vertex_count = 2*3;
|
||||||
|
ensureCapacity(vertex_count);
|
||||||
|
|
||||||
|
Color4B col = Color4B(color);
|
||||||
|
V2F_C4B_T2F a = {Vertex2F(p1.x, p1.y), col, Tex2F(0.0, 0.0) };
|
||||||
|
V2F_C4B_T2F b = {Vertex2F(p2.x, p2.y), col, Tex2F(0.0, 0.0) };
|
||||||
|
V2F_C4B_T2F c = {Vertex2F(p3.x, p3.y), col, Tex2F(0.0, 0.0) };
|
||||||
|
|
||||||
|
V2F_C4B_T2F_Triangle *triangles = (V2F_C4B_T2F_Triangle *)(_buffer + _bufferCount);
|
||||||
|
V2F_C4B_T2F_Triangle triangle = {a, b, c};
|
||||||
|
triangles[0] = triangle;
|
||||||
|
|
||||||
|
_bufferCount += vertex_count;
|
||||||
|
_dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawNode::drawCubicBezier(const Point& from, const Point& control1, const Point& control2, const Point& to, unsigned int segments, const Color4F &color)
|
||||||
|
{
|
||||||
|
unsigned int vertex_count = (segments + 1) * 3;
|
||||||
|
ensureCapacity(vertex_count);
|
||||||
|
|
||||||
|
Tex2F texCoord = Tex2F(0.0, 0.0);
|
||||||
|
Color4B col = Color4B(color);
|
||||||
|
Vertex2F vertex;
|
||||||
|
Vertex2F firstVertex = Vertex2F(from.x, from.y);
|
||||||
|
Vertex2F lastVertex = Vertex2F(to.x, to.y);
|
||||||
|
|
||||||
|
float t = 0;
|
||||||
|
for(unsigned int i = segments + 1; i > 0; i--)
|
||||||
|
{
|
||||||
|
float x = powf(1 - t, 3) * from.x + 3.0f * powf(1 - t, 2) * t * control1.x + 3.0f * (1 - t) * t * t * control2.x + t * t * t * to.x;
|
||||||
|
float y = powf(1 - t, 3) * from.y + 3.0f * powf(1 - t, 2) * t * control1.y + 3.0f * (1 - t) * t * t * control2.y + t * t * t * to.y;
|
||||||
|
vertex = Vertex2F(x, y);
|
||||||
|
|
||||||
|
V2F_C4B_T2F a = {firstVertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F b = {lastVertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F c = {vertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F_Triangle triangle = {a, b, c};
|
||||||
|
((V2F_C4B_T2F_Triangle *)(_buffer + _bufferCount))[0] = triangle;
|
||||||
|
|
||||||
|
lastVertex = vertex;
|
||||||
|
t += 1.0f / segments;
|
||||||
|
_bufferCount += 3;
|
||||||
|
}
|
||||||
|
_dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawNode::drawQuadraticBezier(const Point& from, const Point& control, const Point& to, unsigned int segments, const Color4F &color)
|
||||||
|
{
|
||||||
|
unsigned int vertex_count = (segments + 1) * 3;
|
||||||
|
ensureCapacity(vertex_count);
|
||||||
|
|
||||||
|
Tex2F texCoord = Tex2F(0.0, 0.0);
|
||||||
|
Color4B col = Color4B(color);
|
||||||
|
Vertex2F vertex;
|
||||||
|
Vertex2F firstVertex = Vertex2F(from.x, from.y);
|
||||||
|
Vertex2F lastVertex = Vertex2F(to.x, to.y);
|
||||||
|
|
||||||
|
float t = 0;
|
||||||
|
for(unsigned int i = segments + 1; i > 0; i--)
|
||||||
|
{
|
||||||
|
float x = powf(1 - t, 2) * from.x + 2.0f * (1 - t) * t * control.x + t * t * to.x;
|
||||||
|
float y = powf(1 - t, 2) * from.y + 2.0f * (1 - t) * t * control.y + t * t * to.y;
|
||||||
|
vertex = Vertex2F(x, y);
|
||||||
|
|
||||||
|
V2F_C4B_T2F a = {firstVertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F b = {lastVertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F c = {vertex, col, texCoord };
|
||||||
|
V2F_C4B_T2F_Triangle triangle = {a, b, c};
|
||||||
|
((V2F_C4B_T2F_Triangle *)(_buffer + _bufferCount))[0] = triangle;
|
||||||
|
|
||||||
|
lastVertex = vertex;
|
||||||
|
t += 1.0f / segments;
|
||||||
|
_bufferCount += 3;
|
||||||
|
}
|
||||||
|
_dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
void DrawNode::clear()
|
void DrawNode::clear()
|
||||||
{
|
{
|
||||||
_bufferCount = 0;
|
_bufferCount = 0;
|
||||||
|
|
|
@ -63,6 +63,15 @@ public:
|
||||||
* @endcode
|
* @endcode
|
||||||
*/
|
*/
|
||||||
void drawPolygon(Point *verts, int count, const Color4F &fillColor, float borderWidth, const Color4F &borderColor);
|
void drawPolygon(Point *verts, int count, const Color4F &fillColor, float borderWidth, const Color4F &borderColor);
|
||||||
|
|
||||||
|
/** draw a triangle with color */
|
||||||
|
void drawTriangle(const Point &p1, const Point &p2, const Point &p3, const Color4F &color);
|
||||||
|
|
||||||
|
/** draw a cubic bezier curve with color and number of segments */
|
||||||
|
void drawCubicBezier(const Point& from, const Point& control1, const Point& control2, const Point& to, unsigned int segments, const Color4F &color);
|
||||||
|
|
||||||
|
/** draw a quadratic bezier curve with color and number of segments */
|
||||||
|
void drawQuadraticBezier(const Point& from, const Point& control, const Point& to, unsigned int segments, const Color4F &color);
|
||||||
|
|
||||||
/** Clear the geometry in the node's buffer. */
|
/** Clear the geometry in the node's buffer. */
|
||||||
void clear();
|
void clear();
|
||||||
|
|
|
@ -376,7 +376,7 @@ namespace
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Image::Image()
|
Image::Image()
|
||||||
: _data(0)
|
: _data(nullptr)
|
||||||
, _dataLen(0)
|
, _dataLen(0)
|
||||||
, _width(0)
|
, _width(0)
|
||||||
, _height(0)
|
, _height(0)
|
||||||
|
@ -391,10 +391,7 @@ Image::Image()
|
||||||
|
|
||||||
Image::~Image()
|
Image::~Image()
|
||||||
{
|
{
|
||||||
if (_data != nullptr)
|
CC_SAFE_FREE(_data);
|
||||||
{
|
|
||||||
free(_data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Image::initWithImageFile(const std::string& path)
|
bool Image::initWithImageFile(const std::string& path)
|
||||||
|
@ -1539,7 +1536,7 @@ bool Image::initWithTGAData(tImageTGA* tgaData)
|
||||||
|
|
||||||
}while(false);
|
}while(false);
|
||||||
|
|
||||||
if (!ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
const unsigned char tgaSuffix[] = ".tga";
|
const unsigned char tgaSuffix[] = ".tga";
|
||||||
for(int i = 0; i < 4; ++i)
|
for(int i = 0; i < 4; ++i)
|
||||||
|
@ -1556,6 +1553,7 @@ bool Image::initWithTGAData(tImageTGA* tgaData)
|
||||||
if (tgaData->imageData != nullptr)
|
if (tgaData->imageData != nullptr)
|
||||||
{
|
{
|
||||||
free(tgaData->imageData);
|
free(tgaData->imageData);
|
||||||
|
_data = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ bool ControlSlider::initWithSprites(Sprite * backgroundSprite, Sprite* progressS
|
||||||
Sprite* selectedThumbSprite = Sprite::createWithTexture(thumbSprite->getTexture(),
|
Sprite* selectedThumbSprite = Sprite::createWithTexture(thumbSprite->getTexture(),
|
||||||
thumbSprite->getTextureRect());
|
thumbSprite->getTextureRect());
|
||||||
selectedThumbSprite->setColor(Color3B::GRAY);
|
selectedThumbSprite->setColor(Color3B::GRAY);
|
||||||
this->initWithSprites(backgroundSprite, progressSprite, thumbSprite, selectedThumbSprite);
|
return this->initWithSprites(backgroundSprite, progressSprite, thumbSprite, selectedThumbSprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ControlSlider::initWithSprites(Sprite * backgroundSprite, Sprite* progressSprite, Sprite* thumbSprite,
|
bool ControlSlider::initWithSprites(Sprite * backgroundSprite, Sprite* progressSprite, Sprite* thumbSprite,
|
||||||
|
|
|
@ -302,6 +302,14 @@ DrawNodeTest::DrawNodeTest()
|
||||||
draw->drawSegment(Point(20,s.height), Point(20,s.height/2), 10, Color4F(0, 1, 0, 1));
|
draw->drawSegment(Point(20,s.height), Point(20,s.height/2), 10, Color4F(0, 1, 0, 1));
|
||||||
|
|
||||||
draw->drawSegment(Point(10,s.height/2), Point(s.width/2, s.height/2), 40, Color4F(1, 0, 1, 0.5));
|
draw->drawSegment(Point(10,s.height/2), Point(s.width/2, s.height/2), 40, Color4F(1, 0, 1, 0.5));
|
||||||
|
|
||||||
|
// Draw triangle
|
||||||
|
draw->drawTriangle(Point(10, 10), Point(70, 30), Point(100, 140), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
|
||||||
|
|
||||||
|
// Draw some beziers
|
||||||
|
draw->drawQuadraticBezier(Point(s.width - 150, s.height - 150), Point(s.width - 70, s.height - 10), Point(s.width - 10, s.height - 10), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
|
||||||
|
|
||||||
|
draw->drawCubicBezier(Point(s.width - 250, 40), Point(s.width - 70, 100), Point(s.width - 30, 250), Point(s.width - 10, s.height - 50), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
string DrawNodeTest::title() const
|
string DrawNodeTest::title() const
|
||||||
|
|
Loading…
Reference in New Issue