BGE: New API method getDisplayDimensions

This patch adds a new API function to get the actual display dimensions in pixels.

Reviewers: dfelinto, sybren, lordloki, moguri

Reviewed By: lordloki, moguri

Differential Revision: https://developer.blender.org/D648
This commit is contained in:
Thomas Szepe 2015-04-07 18:32:25 +02:00
parent f9f3c29a3a
commit e36b0cb8f3
8 changed files with 47 additions and 0 deletions

View File

@ -123,6 +123,12 @@ Functions
:rtype: bool
.. function:: getDisplayDimensions()
Get the actual display dimensions, in pixels, of the physical display (e.g., the monitor).
:type dimension: list [width,heigh]
.. function:: makeScreenshot(filename)
Writes an image file with the current displayed frame.

View File

@ -97,6 +97,11 @@ bool KX_BlenderCanvas::GetSwapInterval(int &intervalOut)
return wm_window_get_swap_interval(m_win, &intervalOut);
}
void KX_BlenderCanvas::GetDisplayDimensions(int &width, int &height)
{
wm_get_screensize(&width, &height);
}
void KX_BlenderCanvas::ResizeWindow(int width, int height)
{
// Not implemented for the embedded player

View File

@ -87,6 +87,8 @@ public:
int &intervalOut
);
void GetDisplayDimensions(int &width, int &height);
void
ResizeWindow(
int width,

View File

@ -71,6 +71,8 @@ public:
virtual void ResizeWindow(int width, int height) {}
virtual void GetDisplayDimensions(int &width, int &height) {}
/**
* \section Methods inherited from abstract base class RAS_ICanvas.
*/

View File

@ -121,6 +121,18 @@ bool GPG_Canvas::GetSwapInterval(int& intervalOut)
return false;
}
void GPG_Canvas::GetDisplayDimensions(int &width, int &height)
{
unsigned int uiwidth;
unsigned int uiheight;
GHOST_ISystem *system = GHOST_ISystem::getSystem();
system->getMainDisplayDimensions(uiwidth, uiheight);
width = uiwidth;
height = uiheight;
}
void GPG_Canvas::ResizeWindow(int width, int height)
{
if (m_window->getState() == GHOST_kWindowStateFullScreen)

View File

@ -63,6 +63,8 @@ public:
virtual float GetMouseNormalizedX(int x);
virtual float GetMouseNormalizedY(int y);
virtual void GetDisplayDimensions(int &width, int &height);
virtual void ResizeWindow(int width, int height);
virtual void SetFullScreen(bool enable);
virtual bool GetFullScreen();

View File

@ -1403,6 +1403,20 @@ static PyObject *gPyClearDebugList(PyObject *)
Py_RETURN_NONE;
}
static PyObject *gPyGetDisplayDimensions(PyObject *)
{
PyObject *list = PyList_New(0);
int width;
int height;
gp_Canvas->GetDisplayDimensions(width, height);
PyList_Append(list, PyLong_FromLong(width));
PyList_Append(list, PyLong_FromLong(height));
return list;
}
PyDoc_STRVAR(Rasterizer_module_documentation,
"This is the Python API for the game engine of Rasterizer"
);
@ -1446,6 +1460,8 @@ static struct PyMethodDef rasterizer_methods[] = {
{"setWindowSize", (PyCFunction) gPySetWindowSize, METH_VARARGS, ""},
{"setFullScreen", (PyCFunction) gPySetFullScreen, METH_O, ""},
{"getFullScreen", (PyCFunction) gPyGetFullScreen, METH_NOARGS, ""},
{"getDisplayDimensions", (PyCFunction) gPyGetDisplayDimensions, METH_NOARGS,
"Get the actual dimensions, in pixels, of the physical display (e.g., the monitor)."},
{"setMipmapping", (PyCFunction) gPySetMipmapping, METH_VARARGS, ""},
{"getMipmapping", (PyCFunction) gPyGetMipmapping, METH_NOARGS, ""},
{"setVsync", (PyCFunction) gPySetVsync, METH_VARARGS, ""},

View File

@ -237,6 +237,8 @@ public:
const char* filename
)=0;
virtual void GetDisplayDimensions(int &width, int &height) = 0;
virtual
void
ResizeWindow(