void DrawPrimitivesTest::draw() { CCLayer::draw(); CCSize s = CCDirector::sharedDirector()->getWinSize(); // draw a simple line // The default state is: // Line Width: 1 // color: 255,255,255,255 (white, non-transparent) // Anti-Aliased glEnable(GL_LINE_SMOOTH); ccDrawLine( CCPointMake(0, 0), CCPointMake(s.width, s.height) ); // line: color, width, aliased // glLineWidth > 1 and GL_LINE_SMOOTH are not compatible // GL_SMOOTH_LINE_WIDTH_RANGE = (1,1) on iPhone glDisable(GL_LINE_SMOOTH); glLineWidth( 5.0f ); /*glColor4ub(255,0,0,255);*/ glColor4f(1.0, 0.0, 0.0, 1.0); ccDrawLine( CCPointMake(0, s.height), CCPointMake(s.width, 0) ); // TIP: // If you are going to use always the same color or width, you don't // need to call it before every draw // // Remember: OpenGL is a state-machine. // draw big point in the center glPointSize(64); /*glColor4ub(0,0,255,128);*/ glColor4f(0.0, 0.0, 1.0, 0.5); ccDrawPoint( CCPointMake(s.width / 2, s.height / 2) ); // draw 4 small points CCPoint points[] = { CCPointMake(60,60), CCPointMake(70,70), CCPointMake(60,70), CCPointMake(70,60) }; glPointSize(4); /*glColor4ub(0,255,255,255);*/ glColor4f(0.0, 1.0, 1.0, 1.0); ccDrawPoints( points, 4); // draw a green circle with 10 segments glLineWidth(16); /*glColor4ub(0, 255, 0, 255);*/ glColor4f(0.0, 1.0, 0.0, 1.0); ccDrawCircle( CCPointMake(s.width/2, s.height/2), 100, 0, 10, false); // draw a green circle with 50 segments with line to center glLineWidth(2); /*glColor4ub(0, 255, 255, 255);*/ glColor4f(0.0, 1.0, 1.0, 1.0); ccDrawCircle( CCPointMake(s.width/2, s.height/2), 50, CC_DEGREES_TO_RADIANS(90), 50, true); // open yellow poly /*glColor4ub(255, 255, 0, 255);*/ glColor4f(1.0, 1.0, 0.0, 1.0); glLineWidth(10); CCPoint vertices[] = { CCPointMake(0,0), CCPointMake(50,50), CCPointMake(100,50), CCPointMake(100,100), CCPointMake(50,100) }; ccDrawPoly( vertices, 5, false); // closed purble poly /*glColor4ub(255, 0, 255, 255);*/ glColor4f(1.0, 0.0, 1.0, 1.0); glLineWidth(2); CCPoint vertices2[] = { CCPointMake(30,130), CCPointMake(30,230), CCPointMake(50,200) }; ccDrawPoly( vertices2, 3, true); // draw quad bezier path ccDrawQuadBezier(CCPointMake(0,s.height), CCPointMake(s.width/2,s.height/2), CCPointMake(s.width,s.height), 50); // draw cubic bezier path ccDrawCubicBezier(CCPointMake(s.width/2, s.height/2), CCPointMake(s.width/2+30,s.height/2+50), CCPointMake(s.width/2+60,s.height/2-50),CCPointMake(s.width, s.height/2),100); // restore original values glLineWidth(1); /*glColor4ub(255,255,255,255);*/ glColor4f(1.0, 1.0, 1.0, 1.0); glPointSize(1); }
//virtual void SpellDiagramNode::draw() { CCNode::draw(); float ptSz = 5; ccDrawInit(); ccPointSize(ptSz); glLineWidth(ptSz); //ccDrawColor4B(0, 0, 256, 256); ccDrawColor4F(0.0f, 0.0f, 1.0f, 1.0f); //ccDrawLine(ccp(0,0), ccp(100, 100)); Json::Value& lines = m_spellDiagrams[m_type]["lines"]; for( int i=0; i< lines.size(); i++) { std::string type = lines[i].get("type", "circle").asString(); if( type.compare("circle") == 0 ) { ccDrawCircle(ccp(0,0), size/2, 0, 32, false); }else if( type.compare("bezier") == 0 ) { Json::Value& pts = lines[i]["points"]; ccDrawCubicBezier(ccp(size*pts[0u].asDouble(), size*pts[1].asDouble()), ccp(size*pts[2].asDouble(), size*pts[3].asDouble()), ccp(size*pts[4].asDouble(), size*pts[5].asDouble()), ccp(size*pts[6].asDouble(), size*pts[7].asDouble()), 32); }else if( type.compare("line") == 0 ) { Json::Value& pts = lines[i]["points"]; ccDrawLine(ccp(size*pts[0u].asDouble(), size*pts[1].asDouble()), ccp(size*pts[2].asDouble(), size*pts[3].asDouble()) ); } } /* if( m_type == SD_08_FORTRESS ) { //square shape ccDrawLine(ccp(-size/2 - ptSz/2, size/2), ccp(size/2 + ptSz/2, size/2)); //top ccDrawLine(ccp(-size/2 - ptSz/2, -size/2), ccp(size/2 + ptSz/2, -size/2)); //btm ccDrawLine(ccp(size/2, size/2), ccp(size/2 , -size/2)); //right ccDrawLine(ccp(-size/2, size/2), ccp(-size/2 , -size/2)); //left } if( m_type == SD_06_LESSER_TRIQUESTRA || m_type == SD_11_LEAF || m_type == SD_13_GREATER_TRIQUETRA ) { float topY = tA.y; float botY = tB.y; float midY = 0; CCPoint lcp1 = ccp(size*0.1666, -size*0.2167); CCPoint lcp2 = ccp(size*0.3335, size*0.1233); ccDrawCubicBezier(tC, lcp1, lcp2, tA, 32); //left CCPoint rcp1 = ccp(-size*0.1666, -size*0.2167); CCPoint rcp2 = ccp(-size*0.3335, size*0.1233); ccDrawCubicBezier(tB, rcp1, rcp2, tA, 32); //right CCPoint bcp1 = ccp(-size*0.25, size*0.286); CCPoint bcp2 = ccp( size*0.25, size*0.286); ccDrawCubicBezier(tC, bcp1, bcp2, tB, 32); //bottom } if( m_type == SD_07_COMPASS || m_type == SD_03_ADEPTS_CIRCLE ) { ccDrawLine(ccp(0, size/2), ccp(0, -size/2)); } if( m_type == SD_05_SERPENTS_EYE ) { //shorter verticle line for eye ccDrawLine( seT, seB); } if( m_type == SD_11_LEAF ) { //offset verticle line for leaf ccDrawLine(leT, leB); } if( m_type == SD_09_DRAGONS_EYE ) { //shorter eye CCPoint t = ccp(0, size*0.38); CCPoint b = ccp(0, -size*0.38); CCPoint rcp1 = ccp(size/3,size/5); CCPoint rcp2 = ccp(size/3,-size/5); ccDrawCubicBezier(t, rcp1, rcp2, b, 32); CCPoint lcp1 = ccp(-size/3,size/5); CCPoint lcp2 = ccp(-size/3,-size/5); ccDrawCubicBezier(t, lcp1, lcp2, b, 32); } if( m_type == SD_10_SEEING_EYE ) { //shorter eye ccDrawCubicBezier(ccp(-size/2, 0), ccp(-size/3, size/4), ccp(size/3,size/4), ccp(size/2,0), 32); ccDrawCubicBezier(ccp(-size/2, 0), ccp(-size/3, -size/4), ccp(size/3,-size/4), ccp(size/2,0), 32); } if( m_type == SD_07_COMPASS ) { //horizontal line ccDrawLine(ccp(-size/2, 0), ccp(size/2, 0)); } */ }