mirror of https://github.com/axmolengine/axmol.git
Merge branch 'iss1405_multi_resolution' of https://github.com/minggo/cocos2d-x into minggo_res
This commit is contained in:
commit
af1b58bea6
|
@ -56,6 +56,15 @@ THE SOFTWARE.
|
|||
#include "CCEGLView.h"
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
Position of the FPS
|
||||
|
||||
Default: 0,0 (bottom-left corner)
|
||||
*/
|
||||
#ifndef CC_DIRECTOR_STATS_POSITION
|
||||
#define CC_DIRECTOR_STATS_POSITION CCDirector::sharedDirector()->getVisibleOrigin()
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
unsigned int g_uNumberOfDraws = 0;
|
||||
|
@ -465,6 +474,30 @@ CCSize CCDirector::getWinSizeInPixels()
|
|||
return m_obWinSizeInPixels;
|
||||
}
|
||||
|
||||
CCSize CCDirector::getVisibleSize()
|
||||
{
|
||||
if (m_pobOpenGLView)
|
||||
{
|
||||
return m_pobOpenGLView->getVisibleSize();
|
||||
}
|
||||
else
|
||||
{
|
||||
return CCSizeZero;
|
||||
}
|
||||
}
|
||||
|
||||
CCPoint CCDirector::getVisibleOrigin()
|
||||
{
|
||||
if (m_pobOpenGLView)
|
||||
{
|
||||
return m_pobOpenGLView->getVisibleOrigin();
|
||||
}
|
||||
else
|
||||
{
|
||||
return CCPointZero;
|
||||
}
|
||||
}
|
||||
|
||||
void CCDirector::reshapeProjection(const CCSize& newWindowSize)
|
||||
{
|
||||
CC_UNUSED_PARAM(newWindowSize);
|
||||
|
@ -733,16 +766,17 @@ void CCDirector::createStatsLabel()
|
|||
{
|
||||
if( m_pFPSLabel && m_pSPFLabel )
|
||||
{
|
||||
CCTexture2D *texture = m_pFPSLabel->getTexture();
|
||||
//CCTexture2D *texture = m_pFPSLabel->getTexture();
|
||||
|
||||
CC_SAFE_RELEASE_NULL(m_pFPSLabel);
|
||||
CC_SAFE_RELEASE_NULL(m_pSPFLabel);
|
||||
CC_SAFE_RELEASE_NULL(m_pDrawsLabel);
|
||||
CCTextureCache::sharedTextureCache()->removeTexture(texture);
|
||||
// CCTextureCache::sharedTextureCache()->removeTexture(texture);
|
||||
|
||||
CCFileUtils::sharedFileUtils()->purgeCachedEntries();
|
||||
}
|
||||
|
||||
/*
|
||||
CCTexture2DPixelFormat currentFormat = CCTexture2D::defaultAlphaPixelFormat();
|
||||
CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGBA4444);
|
||||
m_pFPSLabel = new CCLabelAtlas();
|
||||
|
@ -751,12 +785,23 @@ void CCDirector::createStatsLabel()
|
|||
m_pSPFLabel->initWithString("0.000", "fps_images.png", 12, 32, '.');
|
||||
m_pDrawsLabel = new CCLabelAtlas();
|
||||
m_pDrawsLabel->initWithString("000", "fps_images.png", 12, 32, '.');
|
||||
*/
|
||||
m_pFPSLabel = CCLabelTTF::create("00.0", "Arial", 24);
|
||||
m_pFPSLabel->retain();
|
||||
m_pSPFLabel = CCLabelTTF::create("0.000", "Arial", 24);
|
||||
m_pSPFLabel->retain();
|
||||
m_pDrawsLabel = CCLabelTTF::create("000", "Arial", 24);
|
||||
m_pDrawsLabel->retain();
|
||||
|
||||
CCTexture2D::setDefaultAlphaPixelFormat(currentFormat);
|
||||
//CCTexture2D::setDefaultAlphaPixelFormat(currentFormat);
|
||||
|
||||
m_pDrawsLabel->setPosition( ccpAdd( ccp(0,34), CC_DIRECTOR_STATS_POSITION ) );
|
||||
m_pSPFLabel->setPosition( ccpAdd( ccp(0,17), CC_DIRECTOR_STATS_POSITION ) );
|
||||
m_pFPSLabel->setPosition( CC_DIRECTOR_STATS_POSITION );
|
||||
|
||||
CCSize contentSize = m_pDrawsLabel->getContentSize();
|
||||
m_pDrawsLabel->setPosition(ccpAdd(ccp(contentSize.width/2, contentSize.height/2 + 40), CC_DIRECTOR_STATS_POSITION));
|
||||
contentSize = m_pSPFLabel->getContentSize();
|
||||
m_pSPFLabel->setPosition(ccpAdd(ccp(contentSize.width/2, contentSize.height/2 + 20), CC_DIRECTOR_STATS_POSITION));
|
||||
contentSize = m_pFPSLabel->getContentSize();
|
||||
m_pFPSLabel->setPosition(ccpAdd(ccp(contentSize.width/2, contentSize.height/2), CC_DIRECTOR_STATS_POSITION));
|
||||
}
|
||||
|
||||
|
||||
|
@ -766,16 +811,7 @@ void CCDirector::createStatsLabel()
|
|||
|
||||
void CCDirector::updateContentScaleFactor()
|
||||
{
|
||||
// [openGLView responseToSelector:@selector(setContentScaleFactor)]
|
||||
if (m_pobOpenGLView->canSetContentScaleFactor())
|
||||
{
|
||||
m_pobOpenGLView->setContentScaleFactor(m_fContentScaleFactor);
|
||||
m_bIsContentScaleSupported = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
CCLOG("cocos2d: setContentScaleFactor:'is not supported on this device");
|
||||
}
|
||||
m_bIsContentScaleSupported = m_pobOpenGLView->setContentScaleFactor(m_fContentScaleFactor);
|
||||
}
|
||||
|
||||
bool CCDirector::enableRetinaDisplay(bool enabled)
|
||||
|
@ -791,15 +827,8 @@ bool CCDirector::enableRetinaDisplay(bool enabled)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// setContentScaleFactor is not supported
|
||||
if (! m_pobOpenGLView->canSetContentScaleFactor())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// SD device
|
||||
if (m_pobOpenGLView->getMainScreenScale() == 1.0)
|
||||
|
||||
if (! m_pobOpenGLView->enableRetina())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ THE SOFTWARE.
|
|||
#include "cocoa/CCArray.h"
|
||||
#include "CCGL.h"
|
||||
#include "kazmath/mat4.h"
|
||||
#include "label_nodes/CCLabelTTF.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
|
@ -164,6 +165,16 @@ public:
|
|||
/** returns the size of the OpenGL view in pixels.
|
||||
*/
|
||||
CCSize getWinSizeInPixels(void);
|
||||
|
||||
/** returns visible size of the OpenGL view in points.
|
||||
* the value is equal to getWinSize if don't invoke
|
||||
* CCEGLView::setDesignResolutionSize()
|
||||
*/
|
||||
CCSize getVisibleSize();
|
||||
|
||||
/** returns visible origin of the OpenGL view in points.
|
||||
*/
|
||||
CCPoint getVisibleOrigin();
|
||||
|
||||
/** changes the projection size */
|
||||
void reshapeProjection(const CCSize& newWindowSize);
|
||||
|
@ -344,9 +355,9 @@ protected:
|
|||
float m_fAccumDt;
|
||||
float m_fFrameRate;
|
||||
|
||||
CCLabelAtlas *m_pFPSLabel;
|
||||
CCLabelAtlas *m_pSPFLabel;
|
||||
CCLabelAtlas *m_pDrawsLabel;
|
||||
CCLabelTTF *m_pFPSLabel;
|
||||
CCLabelTTF *m_pSPFLabel;
|
||||
CCLabelTTF *m_pDrawsLabel;
|
||||
|
||||
/** Whether or not the Director is paused */
|
||||
bool m_bPaused;
|
||||
|
@ -404,7 +415,9 @@ protected:
|
|||
|
||||
WatcherCallbackFun m_pWatcherFun;
|
||||
void *m_pWatcherSender;
|
||||
|
||||
|
||||
// CCEGLViewProtocol will recreate stats labels to fit visible rect
|
||||
friend class CCEGLViewProtocol;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -76,16 +76,6 @@ To enabled set it to 1. Disabled by default.
|
|||
#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 0
|
||||
#endif
|
||||
|
||||
|
||||
/** @def CC_DIRECTOR_STATS_POSITION
|
||||
Position of the FPS
|
||||
|
||||
Default: 0,0 (bottom-left corner)
|
||||
*/
|
||||
#ifndef CC_DIRECTOR_STATS_POSITION
|
||||
#define CC_DIRECTOR_STATS_POSITION ccp(0,0)
|
||||
#endif
|
||||
|
||||
/** @def CC_DIRECTOR_FPS_INTERVAL
|
||||
Senconds between FPS updates.
|
||||
0.5 seconds, means that the FPS number will be updated every 0.5 seconds.
|
||||
|
|
|
@ -305,22 +305,6 @@ typedef struct _ccBlendFunc
|
|||
GLenum dst;
|
||||
} ccBlendFunc;
|
||||
|
||||
//! ccResolutionType
|
||||
typedef enum
|
||||
{
|
||||
//! Unknonw resolution type
|
||||
kCCResolutionUnknown,
|
||||
//! iPhone resolution type
|
||||
kCCResolutioniPhone,
|
||||
//! RetinaDisplay resolution type
|
||||
kCCResolutioniPhoneRetinaDisplay,
|
||||
//! iPad resolution type
|
||||
kCCResolutioniPad,
|
||||
//! iPad Retina Display resolution type
|
||||
kCCResolutioniPadRetinaDisplay,
|
||||
|
||||
} ccResolutionType;
|
||||
|
||||
// XXX: If any of these enums are edited and/or reordered, udpate CCTexture2D.m
|
||||
//! Vertical text alignment type
|
||||
typedef enum
|
||||
|
|
|
@ -293,32 +293,6 @@ void CCLabelTTF::updateTexture()
|
|||
m_pFontName->c_str(),
|
||||
m_fFontSize * CC_CONTENT_SCALE_FACTOR());
|
||||
}
|
||||
|
||||
// iPad ?
|
||||
//if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
|
||||
if (CCApplication::sharedApplication().isIpad())
|
||||
{
|
||||
if (CC_CONTENT_SCALE_FACTOR() == 2)
|
||||
{
|
||||
tex->setResolutionType(kCCResolutioniPadRetinaDisplay);
|
||||
}
|
||||
else
|
||||
{
|
||||
tex->setResolutionType(kCCResolutioniPad);
|
||||
}
|
||||
}
|
||||
// iPhone ?
|
||||
else
|
||||
{
|
||||
if (CC_CONTENT_SCALE_FACTOR() == 2)
|
||||
{
|
||||
tex->setResolutionType(kCCResolutioniPhoneRetinaDisplay);
|
||||
}
|
||||
else
|
||||
{
|
||||
tex->setResolutionType(kCCResolutioniPhone);
|
||||
}
|
||||
}
|
||||
|
||||
this->setTexture(tex);
|
||||
tex->release();
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
virtual ccLanguageType getCurrentLanguage() = 0;
|
||||
|
||||
virtual bool isIpad() { return false; }
|
||||
virtual bool isIos() { return false; }
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -43,11 +43,13 @@ static void removeUsedIndexBit(int index)
|
|||
}
|
||||
|
||||
CCEGLViewProtocol::CCEGLViewProtocol()
|
||||
: m_bNeedScale(false)
|
||||
, m_pDelegate(NULL)
|
||||
, m_fScreenScaleFactor(1.0f)
|
||||
: m_pDelegate(NULL)
|
||||
, m_fScreenScaleFactor(1.0f)
|
||||
, m_fYScale(1.0f)
|
||||
, m_fXScale(1.0f)
|
||||
, m_bIsRetinaEnabled(false)
|
||||
, m_eResolutionPolicy(kResolutionUnKnown)
|
||||
{
|
||||
strncpy(m_szViewName, "Cocos2d-x Game", sizeof(m_szViewName));
|
||||
}
|
||||
|
||||
CCEGLViewProtocol::~CCEGLViewProtocol()
|
||||
|
@ -55,57 +57,85 @@ CCEGLViewProtocol::~CCEGLViewProtocol()
|
|||
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setFrameSize(float width, float height)
|
||||
{
|
||||
m_sSizeInPixel.setSize(width, height);
|
||||
m_rcViewPort.size.setSize(width, height);
|
||||
}
|
||||
|
||||
CCSize CCEGLViewProtocol::getFrameSize()
|
||||
{
|
||||
return m_sSizeInPixel;
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setDesignResolutionSize(float width, float height)
|
||||
void CCEGLViewProtocol::setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy)
|
||||
{
|
||||
CCAssert(m_bIsRetinaEnabled == false, "can not enable retina while set design resolution size!");
|
||||
CCAssert(resolutionPolicy != kResolutionUnKnown, "should set resolutionPolicy");
|
||||
|
||||
if (width == 0.0f || height == 0.0f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_sSizeInPoint.setSize(width, height);
|
||||
m_obDesignResolutionSize.setSize(width, height);
|
||||
|
||||
m_fXScale = (float)m_obScreenSize.width / m_obDesignResolutionSize.width;
|
||||
m_fYScale = (float)m_obScreenSize.height / m_obDesignResolutionSize.height;
|
||||
|
||||
if (resolutionPolicy == kCCResolutionNoBorder)
|
||||
{
|
||||
m_fXScale = m_fYScale = MAX(m_fXScale, m_fYScale);
|
||||
}
|
||||
|
||||
if (resolutionPolicy == kCCResolutionShowAll)
|
||||
{
|
||||
m_fXScale = m_fYScale = MIN(m_fXScale, m_fYScale);
|
||||
}
|
||||
|
||||
// calculate the factor and the rect of viewport
|
||||
m_fScreenScaleFactor = MIN((float)m_sSizeInPixel.width / m_sSizeInPoint.width,
|
||||
(float)m_sSizeInPixel.height / m_sSizeInPoint.height);
|
||||
float viewPortW = m_sSizeInPoint.width * m_fScreenScaleFactor;
|
||||
float viewPortH = m_sSizeInPoint.height * m_fScreenScaleFactor;
|
||||
// calculate the rect of viewport
|
||||
float viewPortW = m_obDesignResolutionSize.width * m_fXScale;
|
||||
float viewPortH = m_obDesignResolutionSize.height * m_fYScale;
|
||||
|
||||
m_rcViewPort.setRect((m_sSizeInPixel.width - viewPortW) / 2, (m_sSizeInPixel.height - viewPortH) / 2, viewPortW, viewPortH);
|
||||
m_obViewPortRect.setRect((m_obScreenSize.width - viewPortW) / 2, (m_obScreenSize.height - viewPortH) / 2, viewPortW, viewPortH);
|
||||
|
||||
m_eResolutionPolicy = resolutionPolicy;
|
||||
|
||||
//setViewPortInPoints(0, 0,m_obScreenSize.width, m_obScreenSize.height);
|
||||
|
||||
// reset director's member vaviables to fit visible rect
|
||||
CCDirector::sharedDirector()->createStatsLabel();
|
||||
CCDirector::sharedDirector()->m_obWinSizeInPoints = CCDirector::sharedDirector()->m_obWinSizeInPixels = getSize();
|
||||
CCDirector::sharedDirector()->setGLDefaultValues();
|
||||
}
|
||||
|
||||
CCLOG("m_fScreenScaleFactor = %f", m_fScreenScaleFactor);
|
||||
m_bNeedScale = true;
|
||||
bool CCEGLViewProtocol::enableRetina()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
CCSize CCEGLViewProtocol::getSize()
|
||||
{
|
||||
CCSize size;
|
||||
if (m_bNeedScale)
|
||||
{
|
||||
// retina and scale mode can't be opened at the same time
|
||||
CCAssert(CC_CONTENT_SCALE_FACTOR() == 1.0f, "retina and scale mode can't be opened at the same time!");
|
||||
size.setSize(m_sSizeInPoint.width, m_sSizeInPoint.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
size.setSize(m_sSizeInPixel.width, m_sSizeInPixel.height);
|
||||
}
|
||||
return size;
|
||||
return m_obDesignResolutionSize;
|
||||
}
|
||||
|
||||
CCRect CCEGLViewProtocol::getViewPort()
|
||||
void CCEGLViewProtocol::setSize(float width, float height)
|
||||
{
|
||||
return m_rcViewPort;
|
||||
m_obDesignResolutionSize = m_obScreenSize = CCSizeMake(width, height);
|
||||
}
|
||||
|
||||
CCSize CCEGLViewProtocol::getVisibleSize()
|
||||
{
|
||||
if (m_eResolutionPolicy == kCCResolutionNoBorder)
|
||||
{
|
||||
return CCSizeMake(m_obScreenSize.width/m_fXScale, m_obScreenSize.height/m_fYScale);
|
||||
}
|
||||
else
|
||||
{
|
||||
return m_obDesignResolutionSize;
|
||||
}
|
||||
}
|
||||
|
||||
CCPoint CCEGLViewProtocol::getVisibleOrigin()
|
||||
{
|
||||
if (m_eResolutionPolicy == kCCResolutionNoBorder)
|
||||
{
|
||||
return CCPointMake((m_obDesignResolutionSize.width - m_obScreenSize.width/m_fXScale)/2,
|
||||
(m_obDesignResolutionSize.height - m_obScreenSize.height/m_fYScale)/2);
|
||||
}
|
||||
else
|
||||
{
|
||||
return CCPointZero;
|
||||
}
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setTouchDelegate(EGLTouchDelegate * pDelegate)
|
||||
|
@ -118,74 +148,25 @@ float CCEGLViewProtocol::getScreenScaleFactor()
|
|||
return m_fScreenScaleFactor;
|
||||
}
|
||||
|
||||
bool CCEGLViewProtocol::canSetContentScaleFactor()
|
||||
bool CCEGLViewProtocol::setContentScaleFactor(float contentScaleFactor)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setContentScaleFactor(float contentScaleFactor)
|
||||
{
|
||||
m_fScreenScaleFactor = contentScaleFactor;
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setViewPortInPoints(float x , float y , float w , float h)
|
||||
{
|
||||
if (m_bNeedScale)
|
||||
{
|
||||
CCAssert(CC_CONTENT_SCALE_FACTOR() == 1.0f, "retina and scale mode can't be opened at the same time!");
|
||||
float factor = m_fScreenScaleFactor / CC_CONTENT_SCALE_FACTOR();
|
||||
glViewport((GLint)(x * factor + m_rcViewPort.origin.x),
|
||||
(GLint)(y * factor + m_rcViewPort.origin.y),
|
||||
(GLsizei)(w * factor),
|
||||
(GLsizei)(h * factor));
|
||||
}
|
||||
else
|
||||
{
|
||||
glViewport(
|
||||
(GLint)(x*CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLint)(y*CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLsizei)(w*CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLsizei)(h*CC_CONTENT_SCALE_FACTOR()));
|
||||
}
|
||||
glViewport((GLint)(x * m_fXScale + m_obViewPortRect.origin.x),
|
||||
(GLint)(y * m_fYScale + m_obViewPortRect.origin.y),
|
||||
(GLsizei)(w * m_fXScale),
|
||||
(GLsizei)(h * m_fYScale));
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setScissorInPoints(float x , float y , float w , float h)
|
||||
{
|
||||
if (m_bNeedScale)
|
||||
{
|
||||
CCAssert(CC_CONTENT_SCALE_FACTOR() == 1.0f, "retina and scale mode can't be opened at the same time!");
|
||||
float factor = m_fScreenScaleFactor / CC_CONTENT_SCALE_FACTOR();
|
||||
glScissor((GLint)(x * factor + m_rcViewPort.origin.x),
|
||||
(GLint)(y * factor + m_rcViewPort.origin.y),
|
||||
(GLsizei)(w * factor),
|
||||
(GLsizei)(h * factor));
|
||||
}
|
||||
else
|
||||
{
|
||||
glScissor(
|
||||
(GLint)(x * CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLint)(y * CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLsizei)(w * CC_CONTENT_SCALE_FACTOR()),
|
||||
(GLsizei)(h * CC_CONTENT_SCALE_FACTOR()));
|
||||
}
|
||||
}
|
||||
|
||||
float CCEGLViewProtocol::getMainScreenScale()
|
||||
{
|
||||
return -1.0f;
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::setViewName(const char* pszViewName)
|
||||
{
|
||||
if (pszViewName != NULL && strlen(pszViewName) > 0)
|
||||
{
|
||||
strncpy(m_szViewName, pszViewName, sizeof(m_szViewName));
|
||||
}
|
||||
}
|
||||
|
||||
const char* CCEGLViewProtocol::getViewName()
|
||||
{
|
||||
return m_szViewName;
|
||||
glScissor((GLint)(x * m_fXScale + m_obViewPortRect.origin.x),
|
||||
(GLint)(y * m_fYScale + m_obViewPortRect.origin.y),
|
||||
(GLsizei)(w * m_fXScale),
|
||||
(GLsizei)(h * m_fYScale));
|
||||
}
|
||||
|
||||
void CCEGLViewProtocol::handleTouchesBegin(int num, int ids[], float xs[], float ys[])
|
||||
|
@ -212,15 +193,21 @@ void CCEGLViewProtocol::handleTouchesBegin(int num, int ids[], float xs[], float
|
|||
}
|
||||
|
||||
CCTouch* pTouch = s_pTouches[nUnusedIndex] = new CCTouch();
|
||||
if (m_bNeedScale)
|
||||
if (m_bIsRetinaEnabled)
|
||||
{
|
||||
pTouch->setTouchInfo(nUnusedIndex, (x - m_rcViewPort.origin.x) / m_fScreenScaleFactor,
|
||||
(y - m_rcViewPort.origin.y) / m_fScreenScaleFactor);
|
||||
// on iOS, though retina is enabled, the value got from os is also
|
||||
// relative to its original size
|
||||
pTouch->setTouchInfo(nUnusedIndex, (x - m_obViewPortRect.origin.x),
|
||||
(y - m_obViewPortRect.origin.y));
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
pTouch->setTouchInfo(nUnusedIndex, x, y);
|
||||
pTouch->setTouchInfo(nUnusedIndex, (x - m_obViewPortRect.origin.x) / m_fXScale,
|
||||
(y - m_obViewPortRect.origin.y) / m_fYScale);
|
||||
}
|
||||
|
||||
CCLOG("x = %f y = %f", pTouch->getLocationInView().x, pTouch->getLocationInView().y);
|
||||
|
||||
CCInteger* pInterObj = new CCInteger(nUnusedIndex);
|
||||
s_TouchesIntergerDict.setObject(pInterObj, id);
|
||||
set.addObject(pTouch);
|
||||
|
@ -256,15 +243,17 @@ void CCEGLViewProtocol::handleTouchesMove(int num, int ids[], float xs[], float
|
|||
CCTouch* pTouch = s_pTouches[pIndex->getValue()];
|
||||
if (pTouch)
|
||||
{
|
||||
if (m_bNeedScale)
|
||||
if (m_bIsRetinaEnabled)
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_rcViewPort.origin.x) / m_fScreenScaleFactor,
|
||||
(y - m_rcViewPort.origin.y) / m_fScreenScaleFactor);
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x),
|
||||
(y - m_obViewPortRect.origin.y));
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), x, y);
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x) / m_fXScale,
|
||||
(y - m_obViewPortRect.origin.y) / m_fYScale);
|
||||
}
|
||||
|
||||
set.addObject(pTouch);
|
||||
}
|
||||
else
|
||||
|
@ -303,17 +292,18 @@ void CCEGLViewProtocol::getSetOfTouchesEndOrCancel(CCSet& set, int num, int ids[
|
|||
if (pTouch)
|
||||
{
|
||||
CCLOGINFO("Ending touches with id: %d, x=%f, y=%f", id, x, y);
|
||||
|
||||
if (m_bNeedScale)
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_rcViewPort.origin.x) / m_fScreenScaleFactor,
|
||||
(y - m_rcViewPort.origin.y) / m_fScreenScaleFactor);
|
||||
}
|
||||
else
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), x, y);
|
||||
}
|
||||
|
||||
if (m_bIsRetinaEnabled)
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x),
|
||||
(y - m_obViewPortRect.origin.y));
|
||||
}
|
||||
else
|
||||
{
|
||||
pTouch->setTouchInfo(pIndex->getValue(), (x - m_obViewPortRect.origin.x) / m_fXScale,
|
||||
(y - m_obViewPortRect.origin.y) / m_fYScale);
|
||||
}
|
||||
|
||||
set.addObject(pTouch);
|
||||
|
||||
// release the object
|
||||
|
|
|
@ -3,6 +3,21 @@
|
|||
|
||||
#include "ccTypes.h"
|
||||
|
||||
enum ResolutionPolicy
|
||||
{
|
||||
// The entire application is visible in the specified area without trying to preserve the original aspect ratio.
|
||||
// Distortion can occur, and the application may appear stretched or compressed.
|
||||
kCCResolutionExactFit,
|
||||
// The entire application fills the specified area, without distortion but possibly with some cropping,
|
||||
// while maintaining the original aspect ratio of the application.
|
||||
kCCResolutionNoBorder,
|
||||
// The entire application is visible in the specified area without distortion while maintaining the original
|
||||
// aspect ratio of the application. Borders can appear on two sides of the application.
|
||||
kCCResolutionShowAll,
|
||||
|
||||
kResolutionUnKnown,
|
||||
};
|
||||
|
||||
NS_CC_BEGIN
|
||||
|
||||
#define CC_MAX_TOUCHES 5
|
||||
|
@ -26,20 +41,17 @@ public:
|
|||
virtual void swapBuffers() = 0;
|
||||
virtual void setIMEKeyboardState(bool bOpen) = 0;
|
||||
|
||||
virtual CCRect getViewPort();
|
||||
virtual CCSize getSize();
|
||||
virtual void setFrameSize(float width, float height);
|
||||
virtual CCSize getFrameSize();
|
||||
virtual void setDesignResolutionSize(float width, float height);
|
||||
virtual void setSize(float width, float height);
|
||||
virtual CCSize getVisibleSize();
|
||||
virtual CCPoint getVisibleOrigin();
|
||||
virtual void setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy);
|
||||
virtual void setTouchDelegate(EGLTouchDelegate * pDelegate);
|
||||
virtual float getScreenScaleFactor();
|
||||
virtual bool canSetContentScaleFactor();
|
||||
virtual void setContentScaleFactor(float contentScaleFactor);
|
||||
virtual bool setContentScaleFactor(float contentScaleFactor);
|
||||
virtual void setViewPortInPoints(float x , float y , float w , float h);
|
||||
virtual void setScissorInPoints(float x , float y , float w , float h);
|
||||
virtual float getMainScreenScale();
|
||||
virtual void setViewName(const char* pszViewName);
|
||||
const char* getViewName();
|
||||
virtual bool enableRetina();
|
||||
|
||||
/** handle touch events by default, if you want to custom your handles, please override these functions */
|
||||
virtual void handleTouchesBegin(int num, int ids[], float xs[], float ys[]);
|
||||
|
@ -50,13 +62,19 @@ public:
|
|||
private:
|
||||
void getSetOfTouchesEndOrCancel(CCSet& set, int num, int ids[], float xs[], float ys[]);
|
||||
protected:
|
||||
bool m_bNeedScale;
|
||||
EGLTouchDelegate* m_pDelegate;
|
||||
float m_fScreenScaleFactor;
|
||||
CCSize m_sSizeInPixel;
|
||||
CCSize m_sSizeInPoint;
|
||||
CCRect m_rcViewPort;
|
||||
char m_szViewName[50];
|
||||
// real size of screen
|
||||
CCSize m_obScreenSize;
|
||||
// resolution size, it is the size the app resources designed for
|
||||
CCSize m_obDesignResolutionSize;
|
||||
// the view port size
|
||||
CCRect m_obViewPortRect;
|
||||
char m_szViewName[50];
|
||||
float m_fXScale;
|
||||
float m_fYScale;
|
||||
ResolutionPolicy m_eResolutionPolicy;
|
||||
bool m_bIsRetinaEnabled;
|
||||
};
|
||||
|
||||
// end of platform group
|
||||
|
|
|
@ -62,16 +62,6 @@ public:
|
|||
*/
|
||||
unsigned char* getFileDataFromZip(const char* pszZipFilePath, const char* pszFileName, unsigned long * pSize);
|
||||
|
||||
/** removes the suffix from a path
|
||||
* On RetinaDisplay it will remove the -hd suffix
|
||||
* On iPad it will remove the -ipad suffix
|
||||
* On iPhone it will remove the (empty) suffix
|
||||
Only valid on iOS. Not valid for OS X.
|
||||
|
||||
@since v0.99.5
|
||||
*/
|
||||
std::string& removeSuffixFromFile(std::string& path);
|
||||
|
||||
/**
|
||||
@brief Generate the absolute path of the file.
|
||||
@param pszRelativePath The relative path of the file.
|
||||
|
@ -82,76 +72,15 @@ public:
|
|||
*/
|
||||
const char* fullPathFromRelativePath(const char *pszRelativePath);
|
||||
|
||||
/** Returns the fullpath of an filename including the resolution of the image.
|
||||
|
||||
If in RetinaDisplay mode, and a RetinaDisplay file is found, it will return that path.
|
||||
If in iPad mode, and an iPad file is found, it will return that path.
|
||||
|
||||
Examples:
|
||||
|
||||
* In iPad mode: "image.png" -> "/full/path/image-ipad.png" (in case the -ipad file exists)
|
||||
* In RetinaDisplay mode: "image.png" -> "/full/path/image-hd.png" (in case the -hd file exists)
|
||||
|
||||
If an iPad file is found, it will set resolution type to kCCResolutioniPad
|
||||
If a RetinaDisplay file is found, it will set resolution type to kCCResolutionRetinaDisplay
|
||||
|
||||
*/
|
||||
const char* fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType);
|
||||
|
||||
/// @cond
|
||||
const char* fullPathFromRelativeFile(const char *pszFilename, const char *pszRelativeFile);
|
||||
/// @endcond
|
||||
|
||||
/** Sets the iPhone RetinaDisplay suffix to load resources.
|
||||
By default it is "-hd".
|
||||
Only valid on iOS. Not valid for OS X.
|
||||
|
||||
@since v1.1
|
||||
*/
|
||||
void setiPhoneRetinaDisplaySuffix(const char *suffix);
|
||||
|
||||
/** Sets the iPad suffix to load resources.
|
||||
By default it is "".
|
||||
Only valid on iOS. Not valid for OS X.
|
||||
|
||||
|
||||
*/
|
||||
void setiPadSuffix(const char *suffix);
|
||||
|
||||
/** Sets the iPad Retina Display suffix to load resources.
|
||||
By default it is "-ipadhd".
|
||||
Only valid on iOS. Not valid for OS X.
|
||||
|
||||
@since v1.1
|
||||
*/
|
||||
void setiPadRetinaDisplaySuffix(const char *suffix);
|
||||
|
||||
/** Returns whether or not a given filename exists with the iPad suffix.
|
||||
Only available on iOS. Not supported on OS X.
|
||||
@since v1.1
|
||||
*/
|
||||
bool iPadFileExistsAtPath(const char *filename);
|
||||
|
||||
/** Returns whether or not a given filename exists with the iPad RetinaDisplay suffix.
|
||||
Only available on iOS. Not supported on OS X.
|
||||
@since v2.0
|
||||
*/
|
||||
bool iPadRetinaDisplayFileExistsAtPath(const char *filename);
|
||||
|
||||
/** Returns whether or not a given path exists with the iPhone RetinaDisplay suffix.
|
||||
Only available on iOS. Not supported on OS X.
|
||||
@since v1.1
|
||||
*/
|
||||
bool iPhoneRetinaDisplayFileExistsAtPath(const char *filename);
|
||||
|
||||
/**
|
||||
@brief Set the ResourcePath,we will find resource in this path
|
||||
@param pszResourcePath The absolute resource path
|
||||
@warning Don't call this function in android and iOS, it has not effect.
|
||||
In android, if you want to read file other than apk, you shoud use invoke getFileData(), and pass the
|
||||
absolute path.
|
||||
@brief Set the ResourcePath,we will find resource relative to this path
|
||||
@param pszResourcePath Relative path to root
|
||||
*/
|
||||
void setResourcePath(const char *pszResourcePath);
|
||||
void setResourceDirectory(const char *pszDirectoryName);
|
||||
|
||||
/**
|
||||
@brief Get the writeable path
|
||||
|
@ -164,6 +93,9 @@ public:
|
|||
*/
|
||||
void setPopupNotify(bool bNotify);
|
||||
bool isPopupNotify();
|
||||
|
||||
protected:
|
||||
std::string m_obDirectory;
|
||||
};
|
||||
|
||||
// end of platform group
|
||||
|
|
|
@ -42,10 +42,6 @@ THE SOFTWARE.
|
|||
|
||||
NS_CC_BEGIN
|
||||
|
||||
static const char *__suffixiPhoneRetinaDisplay = "-hd";
|
||||
static const char *__suffixiPad = "-ipad";
|
||||
static const char *__suffixiPadRetinaDisplay = "-ipadhd";
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SAX_NONE = 0,
|
||||
|
@ -322,27 +318,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
std::string& CCFileUtils::removeSuffixFromFile(std::string& path)
|
||||
{
|
||||
// XXX win32 now can only support iphone retina, because
|
||||
// we don't know it is ipad retina or iphone retina.
|
||||
// fixe me later
|
||||
if( CC_CONTENT_SCALE_FACTOR() == 2 )
|
||||
{
|
||||
std::string::size_type pos = path.rfind("/") + 1; // the begin index of last part of path
|
||||
|
||||
std::string::size_type suffixPos = path.rfind(__suffixiPhoneRetinaDisplay);
|
||||
if (std::string::npos != suffixPos && suffixPos > pos)
|
||||
{
|
||||
CCLog("cocos2d: FilePath(%s) contains suffix(%s), remove it.", path.c_str(),
|
||||
__suffixiPhoneRetinaDisplay);
|
||||
path.replace(suffixPos, strlen(__suffixiPhoneRetinaDisplay), "");
|
||||
}
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
CCDictionary* ccFileUtils_dictionaryWithContentsOfFileThreadSafe(const char *pFileName)
|
||||
{
|
||||
CCDictMaker tMaker;
|
||||
|
@ -397,45 +372,13 @@ unsigned char* CCFileUtils::getFileDataFromZip(const char* pszZipFilePath, const
|
|||
return pBuffer;
|
||||
}
|
||||
|
||||
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath)
|
||||
void CCFileUtils::setResourceDirectory(const char* pszResourceDirectory)
|
||||
{
|
||||
ccResolutionType ignore;
|
||||
return fullPathFromRelativePath(pszRelativePath, &ignore);
|
||||
}
|
||||
|
||||
/// functions iOS specific
|
||||
void CCFileUtils::setiPhoneRetinaDisplaySuffix(const char *suffix)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
}
|
||||
|
||||
void CCFileUtils::setiPadSuffix(const char *suffix)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
}
|
||||
|
||||
void CCFileUtils::setiPadRetinaDisplaySuffix(const char *suffix)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPadFileExistsAtPath(const char *filename)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPadRetinaDisplayFileExistsAtPath(const char *filename)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPhoneRetinaDisplayFileExistsAtPath(const char *filename)
|
||||
{
|
||||
CCAssert(0, "not implement");
|
||||
return false;
|
||||
m_obDirectory = pszResourceDirectory;
|
||||
if (m_obDirectory.size() > 0 && m_obDirectory[m_obDirectory.size() - 1] != '/')
|
||||
{
|
||||
m_obDirectory.append("/");
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -64,7 +64,7 @@ CCEGLView::~CCEGLView()
|
|||
|
||||
bool CCEGLView::isOpenGLReady()
|
||||
{
|
||||
return (m_sSizeInPixel.width != 0 && m_sSizeInPixel.height != 0);
|
||||
return (m_obScreenSize.width != 0 && m_obScreenSize.height != 0);
|
||||
}
|
||||
|
||||
void CCEGLView::end()
|
||||
|
|
|
@ -31,6 +31,7 @@ NS_CC_BEGIN
|
|||
|
||||
#include "platform/CCCommon.h"
|
||||
#include "jni/SystemInfoJni.h"
|
||||
#include "jni/MessageJni.h"
|
||||
|
||||
// record the resource path
|
||||
static string s_strResourcePath = "";
|
||||
|
@ -42,6 +43,7 @@ CCFileUtils* CCFileUtils::sharedFileUtils()
|
|||
if (s_pFileUtils == NULL)
|
||||
{
|
||||
s_pFileUtils = new CCFileUtils();
|
||||
s_strResourcePath = getApkPath();
|
||||
}
|
||||
return s_pFileUtils;
|
||||
}
|
||||
|
@ -61,25 +63,7 @@ void CCFileUtils::purgeCachedEntries()
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is implemented for jni to set apk path.
|
||||
*/
|
||||
void CCFileUtils::setResourcePath(const char* pszResourcePath)
|
||||
{
|
||||
CCAssert(pszResourcePath != NULL, "[FileUtils setRelativePath] -- wrong relative path");
|
||||
|
||||
string tmp(pszResourcePath);
|
||||
|
||||
if ((! pszResourcePath) || tmp.find(".apk") == string::npos)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
s_strResourcePath = pszResourcePath;
|
||||
}
|
||||
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath,
|
||||
ccResolutionType *pResolutionType)
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath)
|
||||
{
|
||||
return pszRelativePath;
|
||||
}
|
||||
|
@ -107,8 +91,18 @@ unsigned char* CCFileUtils::getFileData(const char* pszFileName, const char* psz
|
|||
if (pszFileName[0] != '/')
|
||||
{
|
||||
// read from apk
|
||||
string pathWithoutDirectory = fullPath;
|
||||
|
||||
fullPath.insert(0, m_obDirectory.c_str());
|
||||
fullPath.insert(0, "assets/");
|
||||
pData = CCFileUtils::getFileDataFromZip(s_strResourcePath.c_str(), fullPath.c_str(), pSize);
|
||||
|
||||
if (! pData && m_obDirectory.size() > 0)
|
||||
{
|
||||
// search from root
|
||||
pathWithoutDirectory.insert(0, "assets/");
|
||||
pData = CCFileUtils::getFileDataFromZip(s_strResourcePath.c_str(), pathWithoutDirectory.c_str(), pSize);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -44,6 +44,8 @@ using namespace cocos2d;
|
|||
|
||||
extern "C"
|
||||
{
|
||||
char *g_pApkPath;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// native renderer
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
@ -127,8 +129,13 @@ extern "C"
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
void Java_org_cocos2dx_lib_Cocos2dxActivity_nativeSetPaths(JNIEnv* env, jobject thiz, jstring apkPath)
|
||||
{
|
||||
const char* str = env->GetStringUTFChars(apkPath, NULL);
|
||||
cocos2d::CCFileUtils::sharedFileUtils()->setResourcePath(str);
|
||||
env->ReleaseStringUTFChars(apkPath, str);
|
||||
g_pApkPath = (char*)env->GetStringUTFChars(apkPath, NULL);
|
||||
// don't release it, we will use it later
|
||||
//env->ReleaseStringUTFChars(apkPath, str);
|
||||
}
|
||||
|
||||
char* getApkPath()
|
||||
{
|
||||
return g_pApkPath;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ extern "C"
|
|||
{
|
||||
extern void showMessageBoxJNI(const char * pszMsg, const char * pszTitle);
|
||||
extern void terminateProcessJNI();
|
||||
extern char* getApkPath();
|
||||
}
|
||||
|
||||
#endif // __ANDROID_MESSAGE_JNI_H__
|
||||
|
|
|
@ -49,12 +49,6 @@ extern "C"
|
|||
void Java_org_cocos2dx_lib_Cocos2dxAccelerometer_onSensorChanged(JNIEnv* env, jobject thiz, jfloat x, jfloat y, jfloat z, jlong timeStamp)
|
||||
{
|
||||
// We need to invert to make it compatible with iOS.
|
||||
CCRect rcRect = CCEGLView::sharedOpenGLView().getViewPort();
|
||||
float fScreenScaleFactor = CCEGLView::sharedOpenGLView().getScreenScaleFactor();
|
||||
// cocos2d::CCAccelerometer::sharedAccelerometer()->update((x - rcRect.origin.x) / fScreenScaleFactor,
|
||||
// (y - rcRect.origin.y) / fScreenScaleFactor,
|
||||
// z,
|
||||
// timeStamp);
|
||||
CCDirector* pDirector = CCDirector::sharedDirector();
|
||||
pDirector->getAccelerometer()->update(x, y, z, timeStamp);
|
||||
}
|
||||
|
|
|
@ -81,6 +81,7 @@ public:
|
|||
virtual ccLanguageType getCurrentLanguage();
|
||||
|
||||
virtual bool isIpad();
|
||||
virtual bool isIos();
|
||||
|
||||
protected:
|
||||
static CCApplication * sm_pSharedApplication;
|
||||
|
|
|
@ -155,4 +155,9 @@ bool CCApplication::isIpad()
|
|||
return false;
|
||||
}
|
||||
|
||||
bool CCApplication::isIos()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
NS_CC_END
|
||||
|
|
|
@ -38,21 +38,17 @@ public:
|
|||
CCEGLView();
|
||||
~CCEGLView();
|
||||
|
||||
CCSize getSize();
|
||||
bool isOpenGLReady();
|
||||
bool canSetContentScaleFactor();
|
||||
bool isIpad();
|
||||
void setContentScaleFactor(float contentScaleFactor);
|
||||
virtual bool isOpenGLReady();
|
||||
virtual bool isIpad();
|
||||
virtual bool setContentScaleFactor(float contentScaleFactor);
|
||||
virtual CCSize getFrameSize();
|
||||
virtual bool enableRetina();
|
||||
|
||||
// keep compatible
|
||||
void end();
|
||||
void swapBuffers();
|
||||
|
||||
virtual void end();
|
||||
virtual void swapBuffers();
|
||||
|
||||
float getMainScreenScale();
|
||||
|
||||
void setIMEKeyboardState(bool bOpen);
|
||||
virtual void setIMEKeyboardState(bool bOpen);
|
||||
|
||||
static CCEGLView& sharedOpenGLView();
|
||||
|
||||
|
|
|
@ -32,7 +32,8 @@ NS_CC_BEGIN
|
|||
|
||||
CCEGLView::CCEGLView()
|
||||
{
|
||||
|
||||
m_obScreenSize.width = m_obDesignResolutionSize.width = [[EAGLView sharedEGLView] getWidth];
|
||||
m_obScreenSize.height = m_obDesignResolutionSize.height = [[EAGLView sharedEGLView] getHeight];
|
||||
}
|
||||
|
||||
CCEGLView::~CCEGLView()
|
||||
|
@ -40,13 +41,6 @@ CCEGLView::~CCEGLView()
|
|||
|
||||
}
|
||||
|
||||
CCSize CCEGLView::getSize()
|
||||
{
|
||||
cocos2d::CCSize size([[EAGLView sharedEGLView] getWidth], [[EAGLView sharedEGLView] getHeight]);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
bool CCEGLView::isIpad()
|
||||
{
|
||||
return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
|
||||
|
@ -57,16 +51,38 @@ bool CCEGLView::isOpenGLReady()
|
|||
return [EAGLView sharedEGLView] != NULL;
|
||||
}
|
||||
|
||||
bool CCEGLView::canSetContentScaleFactor()
|
||||
bool CCEGLView::setContentScaleFactor(float contentScaleFactor)
|
||||
{
|
||||
return [[EAGLView sharedEGLView] respondsToSelector:@selector(setContentScaleFactor:)];
|
||||
}
|
||||
// can not enable retina because have used resolution policy
|
||||
assert(m_eResolutionPolicy == kResolutionUnKnown);
|
||||
|
||||
void CCEGLView::setContentScaleFactor(float contentScaleFactor)
|
||||
if ([[EAGLView sharedEGLView] respondsToSelector:@selector(setContentScaleFactor:)])
|
||||
{
|
||||
UIView * view = [EAGLView sharedEGLView];
|
||||
view.contentScaleFactor = contentScaleFactor;
|
||||
[view setNeedsLayout];
|
||||
|
||||
m_fXScale = m_fYScale = contentScaleFactor;
|
||||
m_bIsRetinaEnabled = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool CCEGLView::enableRetina()
|
||||
{
|
||||
UIView * view = [EAGLView sharedEGLView];
|
||||
view.contentScaleFactor = contentScaleFactor;
|
||||
[view setNeedsLayout];
|
||||
bool ret = true;
|
||||
|
||||
// can set content scale factor?
|
||||
ret &= [[EAGLView sharedEGLView] respondsToSelector:@selector(setContentScaleFactor:)];
|
||||
// SD device?
|
||||
ret &= ([[UIScreen mainScreen] scale] != 1.0f);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CCEGLView::end()
|
||||
|
@ -107,10 +123,5 @@ CCEGLView& CCEGLView::sharedOpenGLView()
|
|||
return instance;
|
||||
}
|
||||
|
||||
float CCEGLView::getMainScreenScale()
|
||||
{
|
||||
return [[UIScreen mainScreen] scale];
|
||||
}
|
||||
|
||||
NS_CC_END
|
||||
|
||||
|
|
|
@ -44,9 +44,7 @@ USING_NS_CC;
|
|||
static void static_addValueToCCDict(id key, id value, CCDictionary* pDict);
|
||||
static void static_addItemToCCArray(id item, CCArray* pArray);
|
||||
|
||||
static NSString *__suffixiPhoneRetinaDisplay =@"-hd";
|
||||
static NSString *__suffixiPad =@"-ipad";
|
||||
static NSString *__suffixiPadRetinaDisplay =@"-ipadhd";
|
||||
|
||||
static NSFileManager *__localFileManager= [[NSFileManager alloc] init];
|
||||
|
||||
static NSString* removeSuffixFromPath(NSString *suffix, NSString *path)
|
||||
|
@ -238,60 +236,9 @@ void CCFileUtils::purgeCachedEntries()
|
|||
|
||||
}
|
||||
|
||||
void CCFileUtils::setResourcePath(const char *pszResourcePath)
|
||||
void CCFileUtils::setResourceDirectory(const char *pszDirectoryName)
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
std::string& CCFileUtils::removeSuffixFromFile(std::string& cpath )
|
||||
{
|
||||
NSString *ret = nil;
|
||||
NSString *path = [NSString stringWithUTF8String:cpath.c_str()];
|
||||
|
||||
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
|
||||
{
|
||||
if( CC_CONTENT_SCALE_FACTOR() == 2 )
|
||||
{
|
||||
ret = removeSuffixFromPath(__suffixiPadRetinaDisplay, path);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = removeSuffixFromPath(__suffixiPad, path);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( CC_CONTENT_SCALE_FACTOR() == 2 )
|
||||
{
|
||||
ret = removeSuffixFromPath(__suffixiPhoneRetinaDisplay, [NSString stringWithUTF8String:cpath.c_str()]);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = path;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cpath = [ret UTF8String];
|
||||
return cpath;
|
||||
}
|
||||
|
||||
void CCFileUtils::setiPhoneRetinaDisplaySuffix(const char *suffix)
|
||||
{
|
||||
[__suffixiPhoneRetinaDisplay release];
|
||||
__suffixiPhoneRetinaDisplay = [[NSString stringWithUTF8String:suffix] retain];
|
||||
}
|
||||
|
||||
void CCFileUtils::setiPadSuffix(const char *suffix)
|
||||
{
|
||||
[__suffixiPad release];
|
||||
__suffixiPad = [[NSString stringWithUTF8String:suffix] retain];
|
||||
}
|
||||
|
||||
void CCFileUtils::setiPadRetinaDisplaySuffix(const char *suffix)
|
||||
{
|
||||
[__suffixiPadRetinaDisplay release];
|
||||
__suffixiPadRetinaDisplay = [[NSString stringWithUTF8String:suffix] retain];
|
||||
m_obDirectory = pszDirectoryName;
|
||||
}
|
||||
|
||||
bool fileExistsAtPath(const char *cpath, const char *csuffix)
|
||||
|
@ -320,87 +267,42 @@ bool fileExistsAtPath(const char *cpath, const char *csuffix)
|
|||
return ( path != nil );
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPhoneRetinaDisplayFileExistsAtPath(const char *cpath)
|
||||
{
|
||||
return fileExistsAtPath(cpath, [__suffixiPhoneRetinaDisplay UTF8String]);
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPadFileExistsAtPath(const char *cpath)
|
||||
{
|
||||
return fileExistsAtPath(cpath, [__suffixiPad UTF8String]);
|
||||
}
|
||||
|
||||
bool CCFileUtils::iPadRetinaDisplayFileExistsAtPath(const char *cpath)
|
||||
{
|
||||
return fileExistsAtPath(cpath, [__suffixiPadRetinaDisplay UTF8String]);
|
||||
}
|
||||
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath)
|
||||
{
|
||||
ccResolutionType ignore;
|
||||
return fullPathFromRelativePath(pszRelativePath, &ignore);
|
||||
}
|
||||
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType)
|
||||
{
|
||||
CCAssert(pszRelativePath != NULL, "CCFileUtils: Invalid path");
|
||||
|
||||
|
||||
NSString *fullpath = nil;
|
||||
NSString *relPath = [NSString stringWithUTF8String:pszRelativePath];
|
||||
|
||||
|
||||
// only if it is not an absolute path
|
||||
if( ! [relPath isAbsolutePath] ) {
|
||||
|
||||
|
||||
// pathForResource also searches in .lproj directories. issue #1230
|
||||
NSString *file = [relPath lastPathComponent];
|
||||
NSString *imageDirectory = [relPath stringByDeletingLastPathComponent];
|
||||
|
||||
|
||||
NSMutableString *imageDirectory = [NSMutableString stringWithUTF8String:m_obDirectory.c_str()];
|
||||
NSMutableString *imageDirectoryWithDirectory = imageDirectory;
|
||||
[imageDirectoryWithDirectory appendString:[relPath stringByDeletingLastPathComponent]];
|
||||
|
||||
// search path from directory set by setResourceDirectory
|
||||
fullpath = [[NSBundle mainBundle] pathForResource:file
|
||||
ofType:nil
|
||||
inDirectory:imageDirectory];
|
||||
|
||||
|
||||
ofType:nil
|
||||
inDirectory:imageDirectoryWithDirectory];
|
||||
if (fullpath == nil)
|
||||
{
|
||||
// search from root directory
|
||||
fullpath = [[NSBundle mainBundle] pathForResource:file
|
||||
ofType:nil
|
||||
inDirectory:imageDirectory];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (fullpath == nil)
|
||||
{
|
||||
fullpath = relPath;
|
||||
}
|
||||
|
||||
NSString *ret = nil;
|
||||
|
||||
// iPad?
|
||||
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
|
||||
{
|
||||
// Retina Display ?
|
||||
if( CC_CONTENT_SCALE_FACTOR() == 2 ) {
|
||||
ret = getPathForSuffix(fullpath, __suffixiPadRetinaDisplay);
|
||||
*pResolutionType = kCCResolutioniPadRetinaDisplay;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = getPathForSuffix(fullpath, __suffixiPad);
|
||||
*pResolutionType = kCCResolutioniPad;
|
||||
}
|
||||
}
|
||||
// iPhone ?
|
||||
else
|
||||
{
|
||||
// Retina Display ?
|
||||
if( CC_CONTENT_SCALE_FACTOR() == 2 ) {
|
||||
ret = getPathForSuffix(fullpath, __suffixiPhoneRetinaDisplay);
|
||||
*pResolutionType = kCCResolutioniPhoneRetinaDisplay;
|
||||
}
|
||||
}
|
||||
|
||||
// If it is iPhone Non RetinaDisplay, or if the previous "getPath" failed, then use iPhone images.
|
||||
if( ret == nil )
|
||||
{
|
||||
*pResolutionType = kCCResolutioniPhone;
|
||||
ret = fullpath;
|
||||
}
|
||||
|
||||
return [ret UTF8String];
|
||||
|
||||
return [fullpath UTF8String];
|
||||
}
|
||||
|
||||
const char *CCFileUtils::fullPathFromRelativeFile(const char *pszFilename, const char *pszRelativeFile)
|
||||
|
|
|
@ -397,7 +397,7 @@ void CCEGLView::resize(int width, int height)
|
|||
rcClient.bottom - rcClient.top, SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER);
|
||||
}
|
||||
|
||||
void CCEGLView::setFrameSize(float width, float height)
|
||||
void CCEGLView::setSize(float width, float height)
|
||||
{
|
||||
Create((LPCTSTR)m_szViewName, (int)width, (int)height);
|
||||
CCEGLViewProtocol::setFrameSize(width, height);
|
||||
|
@ -435,16 +435,13 @@ void CCEGLView::centerWindow()
|
|||
SetWindowPos(m_hWnd, 0, offsetX, offsetY, 0, 0, SWP_NOCOPYBITS | SWP_NOSIZE | SWP_NOOWNERZORDER | SWP_NOZORDER);
|
||||
}
|
||||
|
||||
bool CCEGLView::canSetContentScaleFactor()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void CCEGLView::setContentScaleFactor(float contentScaleFactor)
|
||||
bool CCEGLView::setContentScaleFactor(float contentScaleFactor)
|
||||
{
|
||||
CCEGLViewProtocol::setContentScaleFactor(contentScaleFactor);
|
||||
resize((int)(m_sSizeInPixel.width * contentScaleFactor), (int)(m_sSizeInPixel.height * contentScaleFactor));
|
||||
centerWindow();
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
CCEGLView& CCEGLView::sharedOpenGLView()
|
||||
|
|
|
@ -44,9 +44,8 @@ public:
|
|||
virtual bool isOpenGLReady();
|
||||
virtual void end();
|
||||
virtual void swapBuffers();
|
||||
virtual bool canSetContentScaleFactor();
|
||||
virtual void setContentScaleFactor(float contentScaleFactor);
|
||||
virtual void setFrameSize(float width, float height);
|
||||
virtual bool setContentScaleFactor(float contentScaleFactor);
|
||||
virtual void setSize(float width, float height);
|
||||
virtual void setIMEKeyboardState(bool bOpen);
|
||||
|
||||
private:
|
||||
|
|
|
@ -83,7 +83,7 @@ void CCFileUtils::setResourcePath(const char *pszResourcePath)
|
|||
strcpy(s_pszResourcePath, pszResourcePath);
|
||||
}
|
||||
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType)
|
||||
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath)
|
||||
{
|
||||
_CheckPath();
|
||||
|
||||
|
|
|
@ -235,7 +235,6 @@ bool CCTexture2D::initWithData(const void *data, CCTexture2DPixelFormat pixelFor
|
|||
m_bHasPremultipliedAlpha = false;
|
||||
m_bHasMipmaps = false;
|
||||
|
||||
m_eResolutionType = kCCResolutionUnknown;
|
||||
setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTexture));
|
||||
|
||||
return true;
|
||||
|
@ -250,11 +249,6 @@ const char* CCTexture2D::description(void)
|
|||
// implementation CCTexture2D (Image)
|
||||
|
||||
bool CCTexture2D::initWithImage(CCImage *uiImage)
|
||||
{
|
||||
return initWithImage(uiImage, kCCResolutionUnknown);
|
||||
}
|
||||
|
||||
bool CCTexture2D::initWithImage(CCImage * uiImage, ccResolutionType resolution)
|
||||
{
|
||||
if (uiImage == NULL)
|
||||
{
|
||||
|
@ -267,7 +261,7 @@ bool CCTexture2D::initWithImage(CCImage * uiImage, ccResolutionType resolution)
|
|||
unsigned int imageHeight = uiImage->getHeight();
|
||||
|
||||
CCConfiguration *conf = CCConfiguration::sharedConfiguration();
|
||||
|
||||
|
||||
unsigned maxTextureSize = conf->getMaxTextureSize();
|
||||
if (imageWidth > maxTextureSize || imageHeight > maxTextureSize)
|
||||
{
|
||||
|
@ -275,12 +269,11 @@ bool CCTexture2D::initWithImage(CCImage * uiImage, ccResolutionType resolution)
|
|||
this->release();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
m_eResolutionType = resolution;
|
||||
|
||||
|
||||
// always load premultiplied images
|
||||
return initPremultipliedATextureWithImage(uiImage, imageWidth, imageHeight);
|
||||
}
|
||||
|
||||
bool CCTexture2D::initPremultipliedATextureWithImage(CCImage *image, unsigned int width, unsigned int height)
|
||||
{
|
||||
unsigned char* tempData = image->getData();
|
||||
|
|
|
@ -134,8 +134,6 @@ public:
|
|||
|
||||
bool initWithImage(CCImage * uiImage);
|
||||
|
||||
bool initWithImage(CCImage *uiImage, ccResolutionType resolution);
|
||||
|
||||
/** Initializes a texture from a string with dimensions, alignment, font name and font size */
|
||||
bool initWithString(const char *text, const CCSize& dimensions, CCTextAlignment hAlignment, CCVerticalTextAlignment vAlignment, const char *fontName, float fontSize);
|
||||
/** Initializes a texture from a string with font name and font size */
|
||||
|
@ -273,17 +271,6 @@ private:
|
|||
|
||||
/** shader program used by drawAtPoint and drawInRect */
|
||||
CC_PROPERTY(CCGLProgram*, m_pShaderProgram, ShaderProgram);
|
||||
|
||||
|
||||
/** Returns the resolution type of the texture.
|
||||
Is it a RetinaDisplay texture, an iPad texture or an standard texture ?
|
||||
Only valid on iOS. Not valid on OS X.
|
||||
|
||||
Should be a readonly property. It is readwrite as a hack.
|
||||
|
||||
@since v1.1
|
||||
*/
|
||||
CC_SYNTHESIZE(ccResolutionType, m_eResolutionType, ResolutionType);
|
||||
};
|
||||
|
||||
// end of textures group
|
||||
|
|
|
@ -257,7 +257,6 @@ void CCTextureCache::addImageAsync(const char *path, CCObject *target, SEL_CallF
|
|||
// optimization
|
||||
|
||||
std::string pathKey = path;
|
||||
CCFileUtils::sharedFileUtils()->removeSuffixFromFile(pathKey);
|
||||
|
||||
pathKey = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(pathKey.c_str());
|
||||
texture = (CCTexture2D*)m_pTextures->objectForKey(pathKey.c_str());
|
||||
|
@ -400,8 +399,6 @@ CCTexture2D * CCTextureCache::addImage(const char * path)
|
|||
|
||||
// remove possible -HD suffix to prevent caching the same image twice (issue #1040)
|
||||
std::string pathKey = path;
|
||||
ccResolutionType resolution = kCCResolutionUnknown;
|
||||
CCFileUtils::sharedFileUtils()->removeSuffixFromFile(pathKey);
|
||||
|
||||
pathKey = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(pathKey.c_str());
|
||||
texture = (CCTexture2D*)m_pTextures->objectForKey(pathKey.c_str());
|
||||
|
@ -446,7 +443,7 @@ CCTexture2D * CCTextureCache::addImage(const char * path)
|
|||
texture = new CCTexture2D();
|
||||
|
||||
if( texture &&
|
||||
texture->initWithImage(&image, resolution) )
|
||||
texture->initWithImage(&image) )
|
||||
{
|
||||
#if CC_ENABLE_CACHE_TEXTURE_DATA
|
||||
// cache the texture file name
|
||||
|
@ -477,7 +474,6 @@ CCTexture2D* CCTextureCache::addPVRTCImage(const char* path, int bpp, bool hasAl
|
|||
CCTexture2D * texture;
|
||||
|
||||
std::string temp(path);
|
||||
CCFileUtils::sharedFileUtils()->removeSuffixFromFile(temp);
|
||||
|
||||
if ( (texture = (CCTexture2D*)m_pTextures->objectForKey(temp.c_str())) )
|
||||
{
|
||||
|
@ -514,8 +510,6 @@ CCTexture2D * CCTextureCache::addPVRImage(const char* path)
|
|||
|
||||
CCTexture2D* texture = NULL;
|
||||
std::string key(path);
|
||||
// remove possible -HD suffix to prevent caching the same image twice (issue #1040)
|
||||
CCFileUtils::sharedFileUtils()->removeSuffixFromFile(key);
|
||||
|
||||
if( (texture = (CCTexture2D*)m_pTextures->objectForKey(key.c_str())) )
|
||||
{
|
||||
|
@ -568,7 +562,7 @@ CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key)
|
|||
|
||||
// prevents overloading the autorelease pool
|
||||
texture = new CCTexture2D();
|
||||
texture->initWithImage(image, kCCResolutionUnknown);
|
||||
texture->initWithImage(image);
|
||||
|
||||
if(key && texture)
|
||||
{
|
||||
|
@ -890,8 +884,7 @@ void VolatileTexture::reloadAllTextures()
|
|||
break;
|
||||
case kImage:
|
||||
{
|
||||
vt->texture->initWithImage(vt->uiImage,
|
||||
kCCResolutionUnknown);
|
||||
vt->texture->initWithImage(vt->uiImage);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -16,9 +16,41 @@ bool AppDelegate::applicationDidFinishLaunching() {
|
|||
CCDirector *pDirector = CCDirector::sharedDirector();
|
||||
|
||||
pDirector->setOpenGLView(&CCEGLView::sharedOpenGLView());
|
||||
|
||||
// enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices.
|
||||
// pDirector->enableRetinaDisplay(true);
|
||||
|
||||
if (isIpad())
|
||||
{
|
||||
// ipad
|
||||
|
||||
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
|
||||
|
||||
// don't enable retina because we don't have ipad hd resource
|
||||
CCEGLView::sharedOpenGLView().setDesignResolutionSize(960, 640, kCCResolutionNoBorder);
|
||||
}
|
||||
else
|
||||
{
|
||||
// iphone or other platforms
|
||||
|
||||
if (pDirector->enableRetinaDisplay(true))
|
||||
{
|
||||
// iphone hd
|
||||
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isIos())
|
||||
{
|
||||
// iphone
|
||||
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphone");
|
||||
}
|
||||
else
|
||||
{
|
||||
// android or other platform, use hd resource
|
||||
|
||||
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
|
||||
CCEGLView::sharedOpenGLView().setDesignResolutionSize(960, 640, kCCResolutionNoBorder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// turn on display FPS
|
||||
pDirector->setDisplayStats(true);
|
||||
|
|
|
@ -26,6 +26,9 @@ bool HelloWorld::init()
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
|
||||
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
|
||||
|
||||
/////////////////////////////
|
||||
// 2. add a menu item with "X" image, which is clicked to quit the program
|
||||
|
@ -36,12 +39,19 @@ bool HelloWorld::init()
|
|||
"CloseNormal.png",
|
||||
"CloseSelected.png",
|
||||
this,
|
||||
menu_selector(HelloWorld::menuCloseCallback) );
|
||||
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
|
||||
menu_selector(HelloWorld::menuCloseCallback));
|
||||
if (CCApplication::sharedApplication().isIos() && !CCApplication::sharedApplication().isIpad())
|
||||
{
|
||||
pCloseItem->setPosition(ccp(visibleSize.width - 20 + origin.x, 20 + origin.y));
|
||||
}
|
||||
else
|
||||
{
|
||||
pCloseItem->setPosition(ccp(visibleSize.width - 40 + origin.x, 40 + origin.y));
|
||||
}
|
||||
|
||||
// create menu, it's an autorelease object
|
||||
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
|
||||
pMenu->setPosition( CCPointZero );
|
||||
pMenu->setPosition(CCPointZero);
|
||||
this->addChild(pMenu, 1);
|
||||
|
||||
/////////////////////////////
|
||||
|
@ -50,11 +60,9 @@ bool HelloWorld::init()
|
|||
// add a label shows "Hello World"
|
||||
// create and initialize a label
|
||||
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
|
||||
// ask director the window size
|
||||
CCSize size = CCDirector::sharedDirector()->getWinSize();
|
||||
|
||||
// position the label on the center of the screen
|
||||
pLabel->setPosition( ccp(size.width / 2, size.height - 50) );
|
||||
pLabel->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height - 50 + origin.y));
|
||||
|
||||
// add the label as a child to this layer
|
||||
this->addChild(pLabel, 1);
|
||||
|
@ -63,7 +71,7 @@ bool HelloWorld::init()
|
|||
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
|
||||
|
||||
// position the sprite on the center of the screen
|
||||
pSprite->setPosition( ccp(size.width/2, size.height/2) );
|
||||
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
|
||||
|
||||
// add the sprite as a child to this layer
|
||||
this->addChild(pSprite, 0);
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
e35126a63c774b4967e6b0e31082d7a32f58ed02
|
|
@ -25,9 +25,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
if (!CCDirector::sharedDirector()->getOpenGLView())
|
||||
{
|
||||
CCEGLView *view = &CCEGLView::sharedOpenGLView();
|
||||
view->setFrameSize(w, h);
|
||||
// set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.
|
||||
// view->setDesignResolutionSize(480, 320);
|
||||
view->setSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
CCApplication::sharedApplication().run();
|
||||
|
|
|
@ -7,17 +7,13 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
15003FA315D2601D00B6775A /* iphone in Resources */ = {isa = PBXBuildFile; fileRef = 15003FA215D2601D00B6775A /* iphone */; };
|
||||
15003FA515D2602400B6775A /* iphonehd in Resources */ = {isa = PBXBuildFile; fileRef = 15003FA415D2602400B6775A /* iphonehd */; };
|
||||
154269EB15B5669E00712A7F /* libcocos2dx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154269D015B5644500712A7F /* libcocos2dx.a */; };
|
||||
15DD6D7A156DD120003E7567 /* fps_images.png in Resources */ = {isa = PBXBuildFile; fileRef = 15DD6D78156DD120003E7567 /* fps_images.png */; };
|
||||
15F990B5159C0DAF00848A44 /* fps_images-hd.png in Resources */ = {isa = PBXBuildFile; fileRef = 15F990B3159C0DAF00848A44 /* fps_images-hd.png */; };
|
||||
15F990B6159C0DAF00848A44 /* fps_images-ipadhd.png in Resources */ = {isa = PBXBuildFile; fileRef = 15F990B4159C0DAF00848A44 /* fps_images-ipadhd.png */; };
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
|
||||
288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
|
||||
782F4619153FEDF0009FC2E5 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 782F4617153FEDF0009FC2E5 /* Default.png */; };
|
||||
784521CE14EBA449009D533B /* CloseNormal.png in Resources */ = {isa = PBXBuildFile; fileRef = 784521C514EBA449009D533B /* CloseNormal.png */; };
|
||||
784521CF14EBA449009D533B /* CloseSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 784521C614EBA449009D533B /* CloseSelected.png */; };
|
||||
784521D214EBA449009D533B /* HelloWorld.png in Resources */ = {isa = PBXBuildFile; fileRef = 784521CA14EBA449009D533B /* HelloWorld.png */; };
|
||||
BF1373EF128A898400D9F789 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492D4B1289302400A09262 /* OpenGLES.framework */; };
|
||||
BF1373F0128A899500D9F789 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492C21128924A800A09262 /* libxml2.dylib */; };
|
||||
BF1373F1128A899E00D9F789 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492B6912891AC600A09262 /* libz.dylib */; };
|
||||
|
@ -51,10 +47,9 @@
|
|||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
15003FA215D2601D00B6775A /* iphone */ = {isa = PBXFileReference; lastKnownFileType = folder; path = iphone; sourceTree = "<group>"; };
|
||||
15003FA415D2602400B6775A /* iphonehd */ = {isa = PBXFileReference; lastKnownFileType = folder; path = iphonehd; sourceTree = "<group>"; };
|
||||
154269C815B5644500712A7F /* cocos2dx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2dx.xcodeproj; path = ../../../cocos2dx/proj.ios/cocos2dx.xcodeproj; sourceTree = "<group>"; };
|
||||
15DD6D78156DD120003E7567 /* fps_images.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fps_images.png; sourceTree = "<group>"; };
|
||||
15F990B3159C0DAF00848A44 /* fps_images-hd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fps_images-hd.png"; sourceTree = "<group>"; };
|
||||
15F990B4159C0DAF00848A44 /* fps_images-ipadhd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fps_images-ipadhd.png"; sourceTree = "<group>"; };
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D6058910D05DD3D006BFB54 /* HelloCpp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloCpp.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
|
@ -63,9 +58,6 @@
|
|||
781C33B31547F06B00633F88 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
781C33B51547F06B00633F88 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
782F4617153FEDF0009FC2E5 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = SOURCE_ROOT; };
|
||||
784521C514EBA449009D533B /* CloseNormal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CloseNormal.png; sourceTree = "<group>"; };
|
||||
784521C614EBA449009D533B /* CloseSelected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CloseSelected.png; sourceTree = "<group>"; };
|
||||
784521CA14EBA449009D533B /* HelloWorld.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HelloWorld.png; sourceTree = "<group>"; };
|
||||
BF137426128A8E4600D9F789 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
BF23D4E3143315EB00657E08 /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = "<group>"; };
|
||||
BF23D4E4143315EB00657E08 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
|
@ -153,17 +145,13 @@
|
|||
784521C214EBA449009D533B /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
15003FA415D2602400B6775A /* iphonehd */,
|
||||
15003FA215D2601D00B6775A /* iphone */,
|
||||
D4EF94ED15BD319D00D803EB /* Icon-144.png */,
|
||||
D4EF94EB15BD319B00D803EB /* Icon-72.png */,
|
||||
D4EF94E915BD319500D803EB /* Icon-114.png */,
|
||||
D4EF94E715BD319200D803EB /* Icon-57.png */,
|
||||
15F990B3159C0DAF00848A44 /* fps_images-hd.png */,
|
||||
15F990B4159C0DAF00848A44 /* fps_images-ipadhd.png */,
|
||||
15DD6D78156DD120003E7567 /* fps_images.png */,
|
||||
782F4617153FEDF0009FC2E5 /* Default.png */,
|
||||
784521C514EBA449009D533B /* CloseNormal.png */,
|
||||
784521C614EBA449009D533B /* CloseSelected.png */,
|
||||
784521CA14EBA449009D533B /* HelloWorld.png */,
|
||||
);
|
||||
name = Resources;
|
||||
path = ../Resources;
|
||||
|
@ -259,17 +247,13 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
784521CE14EBA449009D533B /* CloseNormal.png in Resources */,
|
||||
784521CF14EBA449009D533B /* CloseSelected.png in Resources */,
|
||||
784521D214EBA449009D533B /* HelloWorld.png in Resources */,
|
||||
782F4619153FEDF0009FC2E5 /* Default.png in Resources */,
|
||||
15DD6D7A156DD120003E7567 /* fps_images.png in Resources */,
|
||||
15F990B5159C0DAF00848A44 /* fps_images-hd.png in Resources */,
|
||||
15F990B6159C0DAF00848A44 /* fps_images-ipadhd.png in Resources */,
|
||||
D4EF94E815BD319200D803EB /* Icon-57.png in Resources */,
|
||||
D4EF94EA15BD319500D803EB /* Icon-114.png in Resources */,
|
||||
D4EF94EC15BD319B00D803EB /* Icon-72.png in Resources */,
|
||||
D4EF94EE15BD319D00D803EB /* Icon-144.png in Resources */,
|
||||
15003FA315D2601D00B6775A /* iphone in Resources */,
|
||||
15003FA515D2602400B6775A /* iphonehd in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -24,9 +24,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
if (!CCDirector::sharedDirector()->getOpenGLView())
|
||||
{
|
||||
CCEGLView *view = &CCEGLView::sharedOpenGLView();
|
||||
view->setFrameSize(w, h);
|
||||
// set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.
|
||||
view->setDesignResolutionSize(480, 320);
|
||||
view->setSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
CCApplication::sharedApplication().run();
|
||||
|
|
|
@ -25,9 +25,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
if (!CCDirector::sharedDirector()->getOpenGLView())
|
||||
{
|
||||
CCEGLView *view = &CCEGLView::sharedOpenGLView();
|
||||
view->setFrameSize(w, h);
|
||||
// set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.
|
||||
// view->setDesignResolutionSize(480, 320);
|
||||
view->setSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
CCApplication::sharedApplication().run();
|
||||
|
|
|
@ -25,9 +25,7 @@ void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thi
|
|||
if (!CCDirector::sharedDirector()->getOpenGLView())
|
||||
{
|
||||
CCEGLView *view = &CCEGLView::sharedOpenGLView();
|
||||
view->setFrameSize(w, h);
|
||||
// set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line.
|
||||
// view->setDesignResolutionSize(480, 320);
|
||||
view->setSize(w, h);
|
||||
|
||||
AppDelegate *pAppDelegate = new AppDelegate();
|
||||
CCApplication::sharedApplication().run();
|
||||
|
|
Loading…
Reference in New Issue