26#include "renderer/CCRenderer.h"
27#include "renderer/CCCustomCommand.h"
33DrawPrimitivesTests::DrawPrimitivesTests()
47 auto s = Director::getInstance()->getWinSize();
49 auto draw = DrawNode::create();
52 draw->drawPoint(Vec2(s.width/2-120, s.height/2-120), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
54 draw->drawPoint(Vec2(s.width/2+120, s.height/2+120), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
57 Vec2 position[] = { Vec2(60,60), Vec2(70,70), Vec2(60,70), Vec2(70,60) };
58 draw->drawPoints( position, 4, 5, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
61 draw->drawLine(Vec2(0,0), Vec2(s.width, s.height), Color4F(1.0, 0.0, 0.0, 0.5));
64 draw->drawRect(Vec2(23,23), Vec2(7,7), Color4F(1,1,0,1));
66 draw->drawRect(Vec2(15,30), Vec2(30,15), Vec2(15,0), Vec2(0,15), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
69 draw->drawCircle(
VisibleRect::center() + Vec2(140,0), 100, CC_DEGREES_TO_RADIANS(90), 50,
true, 1.0f, 2.0f, Color4F(1.0f, 0.0f, 0.0f, 0.5f));
71 draw->drawCircle(
VisibleRect::center() - Vec2(140,0), 50, CC_DEGREES_TO_RADIANS(90), 30,
false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
74 draw->drawQuadBezier(Vec2(s.width - 150, s.height - 150), Vec2(s.width - 70, s.height - 10), Vec2(s.width - 10, s.height - 10), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
76 draw->drawQuadBezier(Vec2(0.0f, s.height), Vec2(s.width/2, s.height/2), Vec2(s.width, s.height), 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
78 draw->drawCubicBezier(
VisibleRect::center(), Vec2(
VisibleRect::center().x+30,
VisibleRect::center().y+50), Vec2(
VisibleRect::center().x+60,
VisibleRect::center().y-50),
VisibleRect::right(),100, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
80 draw->drawCubicBezier(Vec2(s.width - 250, 40.0f), Vec2(s.width - 70, 100.0f), Vec2(s.width - 30, 250.0f), Vec2(s.width - 10, s.height - 50), 10, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
82 auto array = PointArray::create(20);
83 array->addControlPoint(Vec2(0.0f,0.0f));
84 array->addControlPoint(Vec2(80.0f,80.0f));
85 array->addControlPoint(Vec2(s.width-80,80.0f));
86 array->addControlPoint(Vec2(s.width-80,s.height-80));
87 array->addControlPoint(Vec2(80.0f,s.height-80));
88 array->addControlPoint(Vec2(80.0f,80.0f));
89 array->addControlPoint(Vec2(s.width/2, s.height/2));
90 draw->drawCardinalSpline(array, 0.5f, 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
92 auto array2 = PointArray::create(20);
93 array2->addControlPoint(Vec2(s.width / 2, 30.0f));
94 array2->addControlPoint(Vec2(s.width -80, 30.0f));
95 array2->addControlPoint(Vec2(s.width - 80, s.height - 80));
96 array2->addControlPoint(Vec2(s.width / 2, s.height - 80));
97 array2->addControlPoint(Vec2(s.width / 2, 30.0f));
98 draw->drawCatmullRom(array2, 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
101 Vec2 vertices[] = { Vec2(0.0f,0.0f), Vec2(50.0f,50.0f), Vec2(100.0f,50.0f), Vec2(100.0f,100.0f), Vec2(50.0f,100.0f) };
102 draw->drawPoly( vertices, 5,
false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
105 Vec2 vertices2[] = { Vec2(30.0f,130.0f), Vec2(30.0f,230.0f), Vec2(50.0f,200.0f) };
106 draw->drawPoly( vertices2, 3,
true, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
109 for(
int i=0; i < 10; i++)
111 draw->drawDot(Vec2(s.width/2, s.height/2), 10*(10-i), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
115 Vec2 points[] = { Vec2(s.height/4,0.0f), Vec2(s.width,s.height/5), Vec2(s.width/3*2,s.height) };
116 draw->drawPolygon(points,
sizeof(points)/
sizeof(points[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 4, Color4F(0.0f,0.0f,1.0f,0.5f));
124 Vec2(o+w,o-h), Vec2(o+w*2, o),
125 Vec2(o + w*2 + h, o+w ), Vec2(o + w*2, o+w*2),
130 draw->drawPolygon(star,
sizeof(star)/
sizeof(star[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 1, Color4F(0.0f,0.0f,1.0f,1.0f));
139 Vec2(o,o), Vec2(o+w,o-h), Vec2(o+w*2, o),
140 Vec2(o + w*2 + h, o+w ), Vec2(o + w*2, o+w*2),
141 Vec2(o +w, o+w*2+h), Vec2(o,o+w*2),
145 draw->drawPolygon(star,
sizeof(star)/
sizeof(star[0]), Color4F(1.0f,0.0f,0.0f,0.5f), 1, Color4F(0.0f,0.0f,1.0f,1.0f));
149 Vec2 vertices3[] = {Vec2(60.0f,160.0f), Vec2(70.0f,190.0f), Vec2(100.0f,190.0f), Vec2(90.0f,160.0f)};
150 draw->drawSolidPoly( vertices3, 4, Color4F(1.0f,1.0f,0.0f,1.0f) );
153 draw->drawSolidRect(Vec2(10.0f,10.0f), Vec2(20.0f,20.0f), Color4F(1.0f,1.0f,0.0f,1.0f));
156 draw->drawSolidCircle(
VisibleRect::center() + Vec2(140.0f,0.0f), 40, CC_DEGREES_TO_RADIANS(90), 50, 2.0f, 2.0f, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
159 draw->drawSegment(Vec2(20.0f,s.height), Vec2(20.0f,s.height/2), 10, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
161 draw->drawSegment(Vec2(10.0f,s.height/2), Vec2(s.width/2, s.height/2), 40, Color4F(1.0f, 0.0f, 1.0f, 0.5f));
164 draw->drawTriangle(Vec2(10.0f, 10.0f), Vec2(70.0f, 30.0f), Vec2(100.0f, 140.0f), Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5f));
166 for (
int i = 0; i < 100; i++) {
167 draw->drawPoint(Vec2(i*7.0f, 5.0f), (
float)i/5+1, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1.0f));
170 auto draw1 = DrawNode::create();
171 this->addChild(draw1, 10);
172 draw1->setLineWidth(4);
173 draw1->drawLine(Vec2(0.0f, s.height), Vec2(s.width, s.height - 20), Color4F::YELLOW);
174 draw1->drawLine(Vec2(0.0f, 0.0f), Vec2(s.width, s.height - 20), Color4F::YELLOW);
176 draw->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2),FadeOut::create(1.2), NULL)));
177 draw1->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1.2),FadeOut::create(1.2), NULL)));
182 return "Test DrawNode";
187 return "Testing DrawNode - batched draws. Concave polygons are BROKEN";
195 auto draw = DrawNode::create();
199 draw->setLineWidth(1);
200 draw->drawCircle(
VisibleRect::center() - Vec2(140.0f,0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30,
false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
201 draw->setLineWidth(10);
202 draw->drawCircle(
VisibleRect::center() + Vec2(140.0f,0.0f), 50, CC_DEGREES_TO_RADIANS(90), 30,
false, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 1));
207 return "GitHub Issue #11942";
212 return "drawCircle() with width";
#define ADD_TEST_CASE(__className__)
virtual std::string subtitle() const override
virtual std::string title() const override
virtual std::string title() const override
virtual std::string subtitle() const override
virtual std::string title() const override
static cocos2d::Vec2 center()
static cocos2d::Vec2 right()