Merge branch 'dev' of https://github.com/yangws/cocos2d-x into yangws-dev

This commit is contained in:
walzer 2011-03-15 15:44:53 +08:00
commit 19d8dc6978
75 changed files with 123 additions and 61 deletions

View File

@ -51,7 +51,7 @@ echo.*/
echo. echo.
set SCRIPT_LOG=InstallWizardLog.txt set SCRIPT_LOG=InstallWizardLog.txt
set SCRIPT_DIR=.\template\CCApplicationWizard.vs\ set SCRIPT_DIR=.\template\msvc\
if exist %SCRIPT_LOG% del /Q %SCRIPT_LOG% if exist %SCRIPT_LOG% del /Q %SCRIPT_LOG%
cscript "%SCRIPT_DIR%InstallWizardForVC2008Express.js" /quiet cscript "%SCRIPT_DIR%InstallWizardForVC2008Express.js" /quiet

View File

@ -109,10 +109,11 @@ void ccDrawPoints(const CCPoint *points, unsigned int numberOfPoints)
void ccDrawLine(CCPoint origin, CCPoint destination) void ccDrawLine(CCPoint origin, CCPoint destination)
{ {
CCPoint vertices[2]; ccVertex2F vertices[2] =
{
vertices[0] = origin; {origin.x * CC_CONTENT_SCALE_FACTOR(), origin.y * CC_CONTENT_SCALE_FACTOR()},
vertices[1] = destination; {destination.x * CC_CONTENT_SCALE_FACTOR(), destination.y * CC_CONTENT_SCALE_FACTOR()},
};
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY, // Needed states: GL_VERTEX_ARRAY,
@ -131,8 +132,13 @@ void ccDrawLine(CCPoint origin, CCPoint destination)
} }
void ccDrawPoly(const CCPoint *poli, int points, bool closePolygon) void ccDrawPoly(const CCPoint *poli, int numberOfPoints, bool closePolygon)
{ {
ccVertex2F* newPoint = new ccVertex2F[numberOfPoints];
if (! newPoint)
{
return;
}
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY, // Needed states: GL_VERTEX_ARRAY,
// Unneeded states: GL_TEXTURE_2D, GL_TEXTURE_COORD_ARRAY, GL_COLOR_ARRAY // Unneeded states: GL_TEXTURE_2D, GL_TEXTURE_COORD_ARRAY, GL_COLOR_ARRAY
@ -140,20 +146,47 @@ void ccDrawPoly(const CCPoint *poli, int points, bool closePolygon)
glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_COLOR_ARRAY);
// iPhone and 32-bit machines
if( sizeof(CCPoint) == sizeof(ccVertex2F) ) {
// convert to pixels ?
if( CC_CONTENT_SCALE_FACTOR() != 1 ) {
memcpy( newPoint, poli, numberOfPoints * sizeof(ccVertex2F) );
for( int i=0; i<numberOfPoints;i++)
{
newPoint[i].x = poli[i].x * CC_CONTENT_SCALE_FACTOR();
newPoint[i].y = poli[i].y * CC_CONTENT_SCALE_FACTOR();
}
glVertexPointer(2, GL_FLOAT, 0, newPoint);
} else
glVertexPointer(2, GL_FLOAT, 0, poli); glVertexPointer(2, GL_FLOAT, 0, poli);
} else {
// 64-bit machines (Mac)
for( int i=0; i<numberOfPoints;i++)
{
newPoint[i].x = poli[i].x;
newPoint[i].y = poli[i].y;
}
glVertexPointer(2, GL_FLOAT, 0, newPoint );
}
if( closePolygon ) if( closePolygon )
{ glDrawArrays(GL_LINE_LOOP, 0, numberOfPoints);
glDrawArrays(GL_LINE_LOOP, 0, points);
}
else else
{ glDrawArrays(GL_LINE_STRIP, 0, numberOfPoints);
glDrawArrays(GL_LINE_STRIP, 0, points);
}
// restore default state // restore default state
glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
delete[] newPoint;
} }
void ccDrawCircle(CCPoint center, float r, float a, int segs, bool drawLineToCenter) void ccDrawCircle(CCPoint center, float r, float a, int segs, bool drawLineToCenter)
@ -180,11 +213,11 @@ void ccDrawCircle(CCPoint center, float r, float a, int segs, bool drawLineToCen
float j = r * cosf(rads + a) + center.x; float j = r * cosf(rads + a) + center.x;
float k = r * sinf(rads + a) + center.y; float k = r * sinf(rads + a) + center.y;
vertices[i*2] = j; vertices[i*2] = j * CC_CONTENT_SCALE_FACTOR();
vertices[i*2+1] =k; vertices[i*2+1] =k * CC_CONTENT_SCALE_FACTOR();
} }
vertices[(segs+1)*2] = center.x; vertices[(segs+1)*2] = center.x * CC_CONTENT_SCALE_FACTOR();
vertices[(segs+1)*2+1] = center.y; vertices[(segs+1)*2+1] = center.y * CC_CONTENT_SCALE_FACTOR();
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY, // Needed states: GL_VERTEX_ARRAY,
@ -213,10 +246,10 @@ void ccDrawQuadBezier(CCPoint origin, CCPoint control, CCPoint destination, int
{ {
float x = powf(1 - t, 2) * origin.x + 2.0f * (1 - t) * t * control.x + t * t * destination.x; float x = powf(1 - t, 2) * origin.x + 2.0f * (1 - t) * t * control.x + t * t * destination.x;
float y = powf(1 - t, 2) * origin.y + 2.0f * (1 - t) * t * control.y + t * t * destination.y; float y = powf(1 - t, 2) * origin.y + 2.0f * (1 - t) * t * control.y + t * t * destination.y;
vertices[i] = CCPointMake(x, y); vertices[i] = CCPointMake(x * CC_CONTENT_SCALE_FACTOR(), y * CC_CONTENT_SCALE_FACTOR());
t += 1.0f / segments; t += 1.0f / segments;
} }
vertices[segments] = destination; vertices[segments] = CCPointMake(destination.x * CC_CONTENT_SCALE_FACTOR(), destination.y * CC_CONTENT_SCALE_FACTOR());
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY, // Needed states: GL_VERTEX_ARRAY,
@ -244,10 +277,10 @@ void ccDrawCubicBezier(CCPoint origin, CCPoint control1, CCPoint control2, CCPoi
{ {
float x = powf(1 - t, 3) * origin.x + 3.0f * powf(1 - t, 2) * t * control1.x + 3.0f * (1 - t) * t * t * control2.x + t * t * t * destination.x; float x = powf(1 - t, 3) * origin.x + 3.0f * powf(1 - t, 2) * t * control1.x + 3.0f * (1 - t) * t * t * control2.x + t * t * t * destination.x;
float y = powf(1 - t, 3) * origin.y + 3.0f * powf(1 - t, 2) * t * control1.y + 3.0f * (1 - t) * t * t * control2.y + t * t * t * destination.y; float y = powf(1 - t, 3) * origin.y + 3.0f * powf(1 - t, 2) * t * control1.y + 3.0f * (1 - t) * t * t * control2.y + t * t * t * destination.y;
vertices[i] = CCPointMake(x, y); vertices[i] = CCPointMake(x * CC_CONTENT_SCALE_FACTOR(), y * CC_CONTENT_SCALE_FACTOR());
t += 1.0f / segments; t += 1.0f / segments;
} }
vertices[segments] = destination; vertices[segments] = CCPointMake(destination.x * CC_CONTENT_SCALE_FACTOR(), destination.y * CC_CONTENT_SCALE_FACTOR());
// Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // Default GL states: GL_TEXTURE_2D, GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// Needed states: GL_VERTEX_ARRAY, // Needed states: GL_VERTEX_ARRAY,

View File

@ -392,6 +392,7 @@ public:
@since v0.99.5 @since v0.99.5
*/ */
bool enableRetinaDisplay(bool enabled); bool enableRetinaDisplay(bool enabled);
bool isRetinaDisplay() { return m_bRetinaDisplay; }
/** There are 4 types of Director. /** There are 4 types of Director.
- kCCDirectorTypeNSTimer (default) - kCCDirectorTypeNSTimer (default)
@ -548,6 +549,7 @@ protected:
* mac platforms specific members * mac platforms specific members
**************************************************/ **************************************************/
bool m_bIsFullScreen; bool m_bIsFullScreen;
bool m_bRetinaDisplay;
int m_nResizeMode; int m_nResizeMode;
CCPoint m_winOffset; CCPoint m_winOffset;
CCSize m_originalWinSize; CCSize m_originalWinSize;

View File

@ -119,6 +119,7 @@ bool CCDirector::init(void)
m_pobOpenGLView = NULL; m_pobOpenGLView = NULL;
m_bRetinaDisplay = false;
m_fContentScaleFactor = 1; m_fContentScaleFactor = 1;
m_bIsContentScaleSupported = false; m_bIsContentScaleSupported = false;
@ -804,6 +805,16 @@ bool CCDirector::enableRetinaDisplay(bool enabled)
m_pFPSLabel->retain(); m_pFPSLabel->retain();
} }
#endif #endif
if (m_fContentScaleFactor == 2)
{
m_bRetinaDisplay = true;
}
else
{
m_bRetinaDisplay = false;
}
return true; return true;
} }

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1 @@
79a3a895ba8a3568400db39e819a15d110045d6c

View File

@ -0,0 +1 @@
33b72a10558b874067b03ec1fd2a38a53b31d044

View File

@ -11,9 +11,13 @@ CCLayer* createHiResLayer(int idx)
switch (idx) switch (idx)
{ {
case 0: case 0:
pLayer = new HiResTest1(); break; CCDirector::sharedDirector()->enableRetinaDisplay(false);
pLayer = new HiResTest1();
break;
case 1: case 1:
pLayer = new HiResTest2(); break; CCDirector::sharedDirector()->enableRetinaDisplay(true);
pLayer = new HiResTest2();
break;
} }
return pLayer; return pLayer;
@ -44,6 +48,25 @@ CCLayer* backHiResAction()
return pLayer; return pLayer;
} }
//////////////////////////////////////////////////////////////////////////
// HiResTestBackToMainMenuLayer
//////////////////////////////////////////////////////////////////////////
class HiResTestBackToainMenuLayer : public BackToMainMenuLayer
{
public:
HiResTestBackToainMenuLayer() {}
// The CallBack for back to the main menu scene
virtual void MainMenuCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->enableRetinaDisplay(sm_bRitinaDisplay);
BackToMainMenuLayer::MainMenuCallback(pSender);
}
static bool sm_bRitinaDisplay;
};
bool HiResTestBackToainMenuLayer::sm_bRitinaDisplay = false;
//////////////////////////////////// ////////////////////////////////////
// //
// HiResDemo // HiResDemo
@ -143,16 +166,6 @@ void HiResDemo::backCallback(CCObject* pSender)
/////////////////////////////////// ///////////////////////////////////
void HiResTest1::onEnter() void HiResTest1::onEnter()
{ {
CCDirector::sharedDirector()->enableRetinaDisplay(false);
// Because BackToMainMenuLayer maybe addChild to scene again by HiResTest2,
// we add it again to make it in the right place.
// The right way is calling enableRetinaDisplay before all scene and layer.
CCScene * pScene = (CCScene*)getParent();
CCLayer* pLayer = (CCLayer*)pScene->getChildByTag(54321);
pScene->removeChild(pLayer, true);
pLayer = new BackToMainMenuLayer;
pScene->addChild(pLayer, 1000, 54321);
pLayer->release();
HiResDemo::onEnter(); HiResDemo::onEnter();
@ -180,17 +193,6 @@ std::string HiResTest1::subtitle()
/////////////////////////////////// ///////////////////////////////////
void HiResTest2::onEnter() void HiResTest2::onEnter()
{ {
CCDirector::sharedDirector()->enableRetinaDisplay(true);
// Because BackToMainMenuLayer has been addChild to scene,
// we must add it again.
// The right way is calling enableRetinaDisplay before all scene and layer.
CCScene * pScene = (CCScene*)getParent();
CCLayer* pLayer = (CCLayer*)pScene->getChildByTag(54321);
pScene->removeChild(pLayer, true);
pLayer = new BackToMainMenuLayer;
pScene->addChild(pLayer, 1000, 54321);
pLayer->release();
HiResDemo::onEnter(); HiResDemo::onEnter();
@ -218,9 +220,22 @@ std::string HiResTest2::subtitle()
/////////////////////////////////// ///////////////////////////////////
void HiResTestScene::runThisTest() void HiResTestScene::runThisTest()
{ {
HiResTestBackToainMenuLayer::sm_bRitinaDisplay = CCDirector::sharedDirector()->isRetinaDisplay();
CCLayer* pLayer = nextHiResAction(); CCLayer* pLayer = nextHiResAction();
addChild(pLayer); addChild(pLayer);
pLayer->release(); pLayer->release();
CCDirector::sharedDirector()->replaceScene(this); CCDirector::sharedDirector()->replaceScene(this);
} }
void HiResTestScene::onEnter()
{
TestScene::onEnter();
CCLayer* pLayer = (CCLayer*)getChildByTag(54321);
removeChild(pLayer, true);
pLayer = new HiResTestBackToainMenuLayer;
addChild(pLayer, 1000, 54321);
pLayer->release();
}

View File

@ -37,6 +37,7 @@ class HiResTestScene : public TestScene
{ {
public: public:
virtual void runThisTest(); virtual void runThisTest();
virtual void onEnter();
}; };
#endif #endif

View File

@ -17,8 +17,6 @@ BackToMainMenuLayer::BackToMainMenuLayer()
void BackToMainMenuLayer::MainMenuCallback(CCObject* pSender) void BackToMainMenuLayer::MainMenuCallback(CCObject* pSender)
{ {
CCDirector::sharedDirector()->enableRetinaDisplay(false);
CCScene* pScene = CCScene::node(); CCScene* pScene = CCScene::node();
CCLayer* pLayer = new TestController(); CCLayer* pLayer = new TestController();
pLayer->autorelease(); pLayer->autorelease();

View File

@ -11,7 +11,7 @@ public:
BackToMainMenuLayer(); BackToMainMenuLayer();
// The CallBack for back to the main menu scene // The CallBack for back to the main menu scene
void MainMenuCallback(CCObject* pSender); virtual void MainMenuCallback(CCObject* pSender);
}; };
class TestScene : public CCScene class TestScene : public CCScene