mirror of https://github.com/axmolengine/axmol.git
parent
c7a999335c
commit
13aa3ad2b5
|
@ -151,6 +151,14 @@ void GLViewProtocol::setFrameSize(float width, float height)
|
||||||
_designResolutionSize = _screenSize = Size(width, height);
|
_designResolutionSize = _screenSize = Size(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rect GLViewProtocol::getVisibleRect() const
|
||||||
|
{
|
||||||
|
Rect ret;
|
||||||
|
ret.size = getVisibleSize();
|
||||||
|
ret.origin = getVisibleOrigin();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
Size GLViewProtocol::getVisibleSize() const
|
Size GLViewProtocol::getVisibleSize() const
|
||||||
{
|
{
|
||||||
if (_resolutionPolicy == ResolutionPolicy::NO_BORDER)
|
if (_resolutionPolicy == ResolutionPolicy::NO_BORDER)
|
||||||
|
|
|
@ -117,6 +117,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual Point getVisibleOrigin() const;
|
virtual Point getVisibleOrigin() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the visible rectangle of opengl viewport.
|
||||||
|
*/
|
||||||
|
virtual Rect getVisibleRect() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the design resolution size.
|
* Set the design resolution size.
|
||||||
* @param width Design resolution width.
|
* @param width Design resolution width.
|
||||||
|
@ -177,6 +182,8 @@ public:
|
||||||
*/
|
*/
|
||||||
float getScaleY() const;
|
float getScaleY() const;
|
||||||
|
|
||||||
|
/** returns the current Resolution policy */
|
||||||
|
ResolutionPolicy getResolutionPolicy() const { return _resolutionPolicy; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void handleTouchesOfEndOrCancel(EventTouch::EventCode eventCode, int num, int ids[], float xs[], float ys[]);
|
void handleTouchesOfEndOrCancel(EventTouch::EventCode eventCode, int num, int ids[], float xs[], float ys[]);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -56,6 +57,7 @@
|
||||||
#include "platform/CCFileUtils.h"
|
#include "platform/CCFileUtils.h"
|
||||||
#include "CCConfiguration.h"
|
#include "CCConfiguration.h"
|
||||||
#include "CCTextureCache.h"
|
#include "CCTextureCache.h"
|
||||||
|
#include "CCGLView.h"
|
||||||
|
|
||||||
NS_CC_BEGIN
|
NS_CC_BEGIN
|
||||||
|
|
||||||
|
@ -246,6 +248,8 @@ Console::Console()
|
||||||
}
|
}
|
||||||
} },
|
} },
|
||||||
{ "help", "Print this message", std::bind(&Console::commandHelp, this, std::placeholders::_1, std::placeholders::_2) },
|
{ "help", "Print this message", std::bind(&Console::commandHelp, this, std::placeholders::_1, std::placeholders::_2) },
|
||||||
|
{ "projection", "[2d | 3d] Changes or print the current projection", std::bind(&Console::commandProjection, this, std::placeholders::_1, std::placeholders::_2) },
|
||||||
|
{ "resolution", "[width height | ] Changes or print the window resolution", std::bind(&Console::commandResolution, this, std::placeholders::_1, std::placeholders::_2) },
|
||||||
{ "scene graph", "Print the scene graph", std::bind(&Console::commandSceneGraph, this, std::placeholders::_1, std::placeholders::_2) },
|
{ "scene graph", "Print the scene graph", std::bind(&Console::commandSceneGraph, this, std::placeholders::_1, std::placeholders::_2) },
|
||||||
{ "texture", "[flush | ] Flush or print the TextureCache info", std::bind(&Console::commandTextures, this, std::placeholders::_1, std::placeholders::_2) },
|
{ "texture", "[flush | ] Flush or print the TextureCache info", std::bind(&Console::commandTextures, this, std::placeholders::_1, std::placeholders::_2) },
|
||||||
};
|
};
|
||||||
|
@ -422,6 +426,90 @@ void Console::commandConfig(int fd, const std::string& args)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Console::commandResolution(int fd, const std::string& args)
|
||||||
|
{
|
||||||
|
if(args.length()==0) {
|
||||||
|
auto director = Director::getInstance();
|
||||||
|
Size points = director->getWinSize();
|
||||||
|
Size pixels = director->getWinSizeInPixels();
|
||||||
|
auto glview = director->getOpenGLView();
|
||||||
|
Size design = glview->getDesignResolutionSize();
|
||||||
|
ResolutionPolicy res = glview->getResolutionPolicy();
|
||||||
|
Rect visibleRect = glview->getVisibleRect();
|
||||||
|
|
||||||
|
mydprintf(fd, "Window Size:\n"
|
||||||
|
"\t%d x %d (points)\n"
|
||||||
|
"\t%d x %d (pixels)\n"
|
||||||
|
"\t%d x %d (design resolution)\n"
|
||||||
|
"Resolution Policy: %d\n"
|
||||||
|
"Visible Rect:\n"
|
||||||
|
"\torigin: %d x %d\n"
|
||||||
|
"\tsize: %d x %d",
|
||||||
|
(int)points.width, (int)points.height,
|
||||||
|
(int)pixels.width, (int)pixels.height,
|
||||||
|
(int)design.width, (int)design.height,
|
||||||
|
(int)res,
|
||||||
|
(int)visibleRect.origin.x, (int)visibleRect.origin.y,
|
||||||
|
(int)visibleRect.size.width, (int)visibleRect.size.height
|
||||||
|
);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
int width, height, policy;
|
||||||
|
|
||||||
|
std::istringstream stream( args );
|
||||||
|
stream >> width >> height>> policy;
|
||||||
|
|
||||||
|
Scheduler *sched = Director::getInstance()->getScheduler();
|
||||||
|
sched->performFunctionInCocosThread( [&](){
|
||||||
|
Director::getInstance()->getOpenGLView()->setDesignResolutionSize(width, height, static_cast<ResolutionPolicy>(policy));
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Console::commandProjection(int fd, const std::string& args)
|
||||||
|
{
|
||||||
|
auto director = Director::getInstance();
|
||||||
|
Scheduler *sched = director->getScheduler();
|
||||||
|
|
||||||
|
if(args.length()==0)
|
||||||
|
{
|
||||||
|
char buf[20];
|
||||||
|
auto proj = director->getProjection();
|
||||||
|
switch (proj) {
|
||||||
|
case cocos2d::Director::Projection::_2D:
|
||||||
|
sprintf(buf,"2d");
|
||||||
|
break;
|
||||||
|
case cocos2d::Director::Projection::_3D:
|
||||||
|
sprintf(buf,"3d");
|
||||||
|
break;
|
||||||
|
case cocos2d::Director::Projection::CUSTOM:
|
||||||
|
sprintf(buf,"custom");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
sprintf(buf,"unknown");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mydprintf(fd, "Current projection: %s", buf);
|
||||||
|
}
|
||||||
|
else if( args.compare("2d") == 0)
|
||||||
|
{
|
||||||
|
sched->performFunctionInCocosThread( [&](){
|
||||||
|
director->setProjection(Director::Projection::_2D);
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if( args.compare("3d") == 0)
|
||||||
|
{
|
||||||
|
sched->performFunctionInCocosThread( [&](){
|
||||||
|
director->setProjection(Director::Projection::_3D);
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mydprintf(fd, "Unsupported argument: '%s'. Supported arguments: '2d' or '3d'", args.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Console::commandTextures(int fd, const std::string& args)
|
void Console::commandTextures(int fd, const std::string& args)
|
||||||
{
|
{
|
||||||
Scheduler *sched = Director::getInstance()->getScheduler();
|
Scheduler *sched = Director::getInstance()->getScheduler();
|
||||||
|
|
|
@ -112,6 +112,8 @@ protected:
|
||||||
void commandFileUtils(int fd, const std::string &args);
|
void commandFileUtils(int fd, const std::string &args);
|
||||||
void commandConfig(int fd, const std::string &args);
|
void commandConfig(int fd, const std::string &args);
|
||||||
void commandTextures(int fd, const std::string &args);
|
void commandTextures(int fd, const std::string &args);
|
||||||
|
void commandResolution(int fd, const std::string &args);
|
||||||
|
void commandProjection(int fd, const std::string &args);
|
||||||
|
|
||||||
// file descriptor: socket, console, etc.
|
// file descriptor: socket, console, etc.
|
||||||
int _listenfd;
|
int _listenfd;
|
||||||
|
|
|
@ -1,21 +1,44 @@
|
||||||
|
/****************************************************************************
|
||||||
|
Copyright (c) 2008-2010 Ricardo Quesada
|
||||||
|
Copyright (c) 2010-2012 cocos2d-x.org
|
||||||
|
Copyright (c) 2011 Zynga Inc.
|
||||||
|
Copyright (c) 2013-2014 Chukong Technologies Inc.
|
||||||
|
|
||||||
|
http://www.cocos2d-x.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
#include "VisibleRect.h"
|
#include "VisibleRect.h"
|
||||||
|
|
||||||
Rect VisibleRect::s_visibleRect;
|
Rect VisibleRect::s_visibleRect;
|
||||||
|
|
||||||
void VisibleRect::lazyInit()
|
void VisibleRect::lazyInit()
|
||||||
{
|
{
|
||||||
if (s_visibleRect.size.width == 0.0f && s_visibleRect.size.height == 0.0f)
|
// if (s_visibleRect.size.width == 0.0f && s_visibleRect.size.height == 0.0f)
|
||||||
{
|
s_visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect();
|
||||||
auto glView = Director::getInstance()->getOpenGLView();
|
|
||||||
s_visibleRect.origin = glView->getVisibleOrigin();
|
|
||||||
s_visibleRect.size = glView->getVisibleSize();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect VisibleRect::getVisibleRect()
|
Rect VisibleRect::getVisibleRect()
|
||||||
{
|
{
|
||||||
lazyInit();
|
lazyInit();
|
||||||
return Rect(s_visibleRect.origin.x, s_visibleRect.origin.y, s_visibleRect.size.width, s_visibleRect.size.height);
|
return s_visibleRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point VisibleRect::left()
|
Point VisibleRect::left()
|
||||||
|
|
Loading…
Reference in New Issue