client/EterPythonLib/PythonGraphicModule.cpp

1006 lines
25 KiB
C++

#include "StdAfx.h"
#include "../eterlib/Camera.h"
#include "../EterLib/TextBar.h"
#include <shlobj.h>
PyObject* grpCreateTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iWidth;
if (!PyTuple_GetInteger(poArgs, 0, &iWidth))
return Py_BuildException();
int iHeight;
if (!PyTuple_GetInteger(poArgs, 1, &iHeight))
return Py_BuildException();
CTextBar * pTextBar = new CTextBar(12, false);
if (!pTextBar->Create(NULL, iWidth, iHeight))
{
delete pTextBar;
return Py_BuildValue("i", NULL);
}
return Py_BuildValue("i", pTextBar);
}
PyObject* grpCreateBigTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iWidth;
if (!PyTuple_GetInteger(poArgs, 0, &iWidth))
return Py_BuildException();
int iHeight;
if (!PyTuple_GetInteger(poArgs, 1, &iHeight))
return Py_BuildException();
int iFontSize;
if (!PyTuple_GetInteger(poArgs, 2, &iFontSize))
return Py_BuildException();
CTextBar * pTextBar = new CTextBar(iFontSize, true);
if (!pTextBar->Create(NULL, iWidth, iHeight))
{
delete pTextBar;
return Py_BuildValue("i", NULL);
}
return Py_BuildValue("i", pTextBar);
}
PyObject* grpDestroyTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
delete pTextBar;
return Py_BuildNone();
}
PyObject* grpRenderTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
int ix;
if (!PyTuple_GetInteger(poArgs, 1, &ix))
return Py_BuildException();
int iy;
if (!PyTuple_GetInteger(poArgs, 2, &iy))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
pTextBar->Render(ix, iy);
return Py_BuildNone();
}
PyObject* grpTextBarSetTextColor(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
int r;
if (!PyTuple_GetInteger(poArgs, 1, &r))
return Py_BuildException();
int g;
if (!PyTuple_GetInteger(poArgs, 2, &g))
return Py_BuildException();
int b;
if (!PyTuple_GetInteger(poArgs, 3, &b))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
pTextBar->SetTextColor(r, g, b);
return Py_BuildNone();
}
PyObject* grpTextBarGetTextExtent(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
char * szText;
if (!PyTuple_GetString(poArgs, 1, &szText))
return Py_BuildException();
SIZE size = {0, 0};
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
pTextBar->GetTextExtent(szText, &size);
return Py_BuildValue("ii", size.cx, size.cy);
}
PyObject* grpTextBarTextOut(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
int ix;
if (!PyTuple_GetInteger(poArgs, 1, &ix))
return Py_BuildException();
int iy;
if (!PyTuple_GetInteger(poArgs, 2, &iy))
return Py_BuildException();
char * szText;
if (!PyTuple_GetString(poArgs, 3, &szText))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
pTextBar->TextOut(ix, iy, szText);
return Py_BuildNone();
}
PyObject* grpClearTextBar(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
pTextBar->ClearBar();
return Py_BuildNone();
}
PyObject* grpSetTextBarClipRect(PyObject* poSelf, PyObject* poArgs)
{
int iHandle;
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
return Py_BuildException();
int isx;
if (!PyTuple_GetInteger(poArgs, 1, &isx))
return Py_BuildException();
int isy;
if (!PyTuple_GetInteger(poArgs, 2, &isy))
return Py_BuildException();
int iex;
if (!PyTuple_GetInteger(poArgs, 3, &iex))
return Py_BuildException();
int iey;
if (!PyTuple_GetInteger(poArgs, 4, &iey))
return Py_BuildException();
CTextBar * pTextBar = (CTextBar *)iHandle;
if (pTextBar)
{
RECT rect;
rect.left = isx;
rect.top = isy;
rect.right = iex;
rect.bottom = iey;
pTextBar->SetClipRect(rect);
}
return Py_BuildNone();
}
PyObject* grpCulling(PyObject* poSelf, PyObject* poArgs)
{
CCullingManager::Instance().Process();
return Py_BuildNone();
}
PyObject* grpInitScreenEffect(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().InitScreenEffect();
return Py_BuildNone();
}
PyObject* grpClearDepthBuffer(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().ClearDepthBuffer();
return Py_BuildNone();
}
PyObject* grpPushState(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().PushState();
return Py_BuildNone();
}
PyObject* grpPopState(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().PopState();
return Py_BuildNone();
}
PyObject* grpPushMatrix(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().PushMatrix();
return Py_BuildNone();
}
PyObject* grpPopMatrix(PyObject* poSelf, PyObject* poArgs)
{
CPythonGraphic::Instance().PopMatrix();
return Py_BuildNone();
}
PyObject* grpTranslate(PyObject* poSelf, PyObject* poArgs)
{
float x;
if (!PyTuple_GetFloat(poArgs, 0, &x))
return Py_BuildException("grp.Translate:Wrong X");
float y;
if (!PyTuple_GetFloat(poArgs, 1, &y))
return Py_BuildException("grp.Translate:Wrong Y");
float z;
if (!PyTuple_GetFloat(poArgs, 2, &z))
return Py_BuildException("grp.Translate:Wrong Z");
CPythonGraphic::Instance().Translate(x, y, z);
return Py_BuildNone();
}
PyObject* grpRotate(PyObject* poSelf, PyObject* poArgs)
{
float Degree;
if (!PyTuple_GetFloat(poArgs, 0, &Degree))
return Py_BuildException();
float x;
if (!PyTuple_GetFloat(poArgs, 1, &x))
return Py_BuildException();
float y;
if (!PyTuple_GetFloat(poArgs, 2, &y))
return Py_BuildException();
float z;
if (!PyTuple_GetFloat(poArgs, 3, &z))
return Py_BuildException();
CPythonGraphic::Instance().Rotate(Degree, x, y, z);
return Py_BuildNone();
}
PyObject * grpSetColorRenderState(PyObject* poSelf, PyObject* poArgs)
{
return Py_BuildNone();
}
PyObject* grpSetAroundCamera(PyObject* poSelf, PyObject* poArgs)
{
float distance;
if (!PyTuple_GetFloat(poArgs, 0, &distance))
return Py_BuildException();
float pitch;
if (!PyTuple_GetFloat(poArgs, 1, &pitch))
return Py_BuildException();
float roll;
if (!PyTuple_GetFloat(poArgs, 2, &roll))
return Py_BuildException();
float lookAtZ;
if (!PyTuple_GetFloat(poArgs, 3, &lookAtZ))
return Py_BuildException();
CPythonGraphic::Instance().SetAroundCamera(distance, pitch, roll, lookAtZ);
return Py_BuildNone();
}
PyObject* grpSetPositionCamera(PyObject* poSelf, PyObject* poArgs)
{
float fx;
if (!PyTuple_GetFloat(poArgs, 0, &fx))
return Py_BuildException();
float fy;
if (!PyTuple_GetFloat(poArgs, 1, &fy))
return Py_BuildException();
float fz;
if (!PyTuple_GetFloat(poArgs, 2, &fz))
return Py_BuildException();
float distance;
if (!PyTuple_GetFloat(poArgs, 3, &distance))
return Py_BuildException();
float pitch;
if (!PyTuple_GetFloat(poArgs, 4, &pitch))
return Py_BuildException();
float roll;
if (!PyTuple_GetFloat(poArgs, 5, &roll))
return Py_BuildException();
CPythonGraphic::Instance().SetPositionCamera(fx, fy, fz, distance, pitch, roll);
return Py_BuildNone();
}
PyObject* grpSetEyeCamera(PyObject* poSelf, PyObject* poArgs)
{
float xEye;
if (!PyTuple_GetFloat(poArgs, 0, &xEye))
return Py_BuildException();
float yEye;
if (!PyTuple_GetFloat(poArgs, 1, &yEye))
return Py_BuildException();
float zEye;
if (!PyTuple_GetFloat(poArgs, 2, &zEye))
return Py_BuildException();
float xCenter;
if (!PyTuple_GetFloat(poArgs, 3, &xCenter))
return Py_BuildException();
float yCenter;
if (!PyTuple_GetFloat(poArgs, 4, &yCenter))
return Py_BuildException();
float zCenter;
if (!PyTuple_GetFloat(poArgs, 5, &zCenter))
return Py_BuildException();
float xUp;
if (!PyTuple_GetFloat(poArgs, 6, &xUp))
return Py_BuildException();
float yUp;
if (!PyTuple_GetFloat(poArgs, 7, &yUp))
return Py_BuildException();
float zUp;
if (!PyTuple_GetFloat(poArgs, 8, &zUp))
return Py_BuildException();
CPythonGraphic::Instance().SetEyeCamera(xEye, yEye, zEye, xCenter, yCenter, zCenter, xUp, yUp, zUp);
return Py_BuildNone();
}
PyObject* grpSetPerspective(PyObject* poSelf, PyObject* poArgs)
{
float fov;
if (!PyTuple_GetFloat(poArgs, 0, &fov))
return Py_BuildException();
float aspect;
if (!PyTuple_GetFloat(poArgs, 1, &aspect))
return Py_BuildException();
float zNear;
if (!PyTuple_GetFloat(poArgs, 2, &zNear))
return Py_BuildException();
float zFar;
if (!PyTuple_GetFloat(poArgs, 3, &zFar))
return Py_BuildException();
CPythonGraphic::Instance().SetPerspective(fov, aspect, zNear, zFar);
return Py_BuildNone();
}
PyObject* grpSetOrtho2D(PyObject* poSelf, PyObject* poArgs)
{
float width;
if (!PyTuple_GetFloat(poArgs, 0, &width))
return Py_BuildException();
float height;
if (!PyTuple_GetFloat(poArgs, 1, &height))
return Py_BuildException();
float length;
if (!PyTuple_GetFloat(poArgs, 2, &length))
return Py_BuildException();
CPythonGraphic::Instance().SetOrtho2D(width, height, length);
return Py_BuildNone();
}
PyObject* grpSetOrtho3D(PyObject* poSelf, PyObject* poArgs)
{
float width;
if (!PyTuple_GetFloat(poArgs, 0, &width))
return Py_BuildException();
float height;
if (!PyTuple_GetFloat(poArgs, 1, &height))
return Py_BuildException();
float zmin;
if (!PyTuple_GetFloat(poArgs, 2, &zmin))
return Py_BuildException();
float zmax;
if (!PyTuple_GetFloat(poArgs, 3, &zmax))
return Py_BuildException();
CPythonGraphic::Instance().SetOrtho3D(width, height, zmin, zmax);
return Py_BuildNone();
}
PyObject* grpGenerateColor(PyObject* poSelf, PyObject* poArgs)
{
float r;
if (!PyTuple_GetFloat(poArgs, 0, &r))
return Py_BuildException();
float g;
if (!PyTuple_GetFloat(poArgs, 1, &g))
return Py_BuildException();
float b;
if (!PyTuple_GetFloat(poArgs, 2, &b))
return Py_BuildException();
float a;
if (!PyTuple_GetFloat(poArgs, 3, &a))
return Py_BuildException();
return Py_BuildValue("l", CPythonGraphic::Instance().GenerateColor(r, g, b, a));
}
PyObject* grpSetColor(PyObject* poSelf, PyObject* poArgs)
{
int color;
if (!PyTuple_GetInteger(poArgs, 0, &color))
return Py_BuildException();
CPythonGraphic::Instance().SetDiffuseColor(DWORD(color));
return Py_BuildNone();
}
PyObject* grpSetAlpha(PyObject* poSelf, PyObject* poArgs)
{
float Alpha;
if (!PyTuple_GetFloat(poArgs, 0, &Alpha))
return Py_BuildException();
//CPythonGraphic::Instance().SetAlpha(Alpha);
return Py_BuildNone();
}
PyObject* grpGetCursorPosition3d(PyObject * poSelf, PyObject * poArgs)
{
float x, y, z;
CPythonGraphic::Instance().GetCursorPosition(&x, &y, &z);
return Py_BuildValue("(fff)", x, y, z);
}
PyObject* grpSetCursorPosition(PyObject * poSelf, PyObject * poArgs)
{
int ix;
if (!PyTuple_GetInteger(poArgs, 0, &ix))
return Py_BuildException();
int iy;
if (!PyTuple_GetInteger(poArgs, 1, &iy))
return Py_BuildException();
CPythonGraphic::Instance().SetCursorPosition(ix, iy);
return Py_BuildNone();
}
PyObject* grpRenderLine(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
CPythonGraphic::Instance().RenderLine2d((float) x, (float) y, (float) x+width, (float) y+height);
return Py_BuildNone();
}
PyObject* grpRenderRoundBox(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
float fx = float(x);
float fy = float(y);
float fWidth = float(width);
float fHeight = float(height);
CPythonGraphic::Instance().RenderLine2d(fx+2.0f, fy, fx+2.0f + (fWidth-3.0f), fy);
CPythonGraphic::Instance().RenderLine2d(fx+2.0f, fy+fHeight, fx+2.0f + (fWidth-3.0f), fy+fHeight);
CPythonGraphic::Instance().RenderLine2d(fx, fy+2.0f, fx, fy+2.0f + fHeight-4.0f);
CPythonGraphic::Instance().RenderLine2d(fx+fWidth, fy+1.0f, fx+fWidth, fy+1.0f + fHeight-3.0f);
CPythonGraphic::Instance().RenderLine2d(fx, fy+2.0f, fx+2.0f, fy);
CPythonGraphic::Instance().RenderLine2d(fx, fy+fHeight-2.0f, fx+2.0f, fy+fHeight);
CPythonGraphic::Instance().RenderLine2d(fx+fWidth-2.0f, fy, fx+fWidth, fy+2.0f);
CPythonGraphic::Instance().RenderLine2d(fx+fWidth-2.0f, fy+fHeight, fx+fWidth, fy+fHeight-2.0f);
return Py_BuildNone();
}
PyObject* grpRenderBox(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
CPythonGraphic::Instance().RenderBox2d((float) x, (float) y, (float) x+width, (float) y+height);
return Py_BuildNone();
}
PyObject* grpRenderBar(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
CPythonGraphic::Instance().RenderBar2d((float) x, (float) y, (float) x+width, (float) y+height);
return Py_BuildNone();
}
PyObject* grpRenderCube(PyObject* poSelf, PyObject* poArgs)
{
float sx;
if (!PyTuple_GetFloat(poArgs, 0, &sx))
return Py_BuildException();
float sy;
if (!PyTuple_GetFloat(poArgs, 1, &sy))
return Py_BuildException();
float sz;
if (!PyTuple_GetFloat(poArgs, 2, &sz))
return Py_BuildException();
float ex;
if (!PyTuple_GetFloat(poArgs, 3, &ex))
return Py_BuildException();
float ey;
if (!PyTuple_GetFloat(poArgs, 4, &ey))
return Py_BuildException();
float ez;
if (!PyTuple_GetFloat(poArgs, 5, &ez))
return Py_BuildException();
CPythonGraphic::Instance().RenderCube(sx, sy, sz, ex, ey, ez);
return Py_BuildNone();
}
PyObject* grpRenderBar3d(PyObject* poSelf, PyObject* poArgs)
{
int sx;
if (!PyTuple_GetInteger(poArgs, 0, &sx))
return Py_BuildException();
int sy;
if (!PyTuple_GetInteger(poArgs, 1, &sy))
return Py_BuildException();
int sz;
if (!PyTuple_GetInteger(poArgs, 2, &sz))
return Py_BuildException();
int ex;
if (!PyTuple_GetInteger(poArgs, 3, &ex))
return Py_BuildException();
int ey;
if (!PyTuple_GetInteger(poArgs, 4, &ey))
return Py_BuildException();
int ez;
if (!PyTuple_GetInteger(poArgs, 5, &ez))
return Py_BuildException();
CPythonGraphic::Instance().RenderBar3d(sx, sy, sz, ex, ey, ez);
return Py_BuildNone();
}
PyObject * grpRenderGradationBar(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BadArgument();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BadArgument();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BadArgument();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BadArgument();
int iStartColor;
if (!PyTuple_GetInteger(poArgs, 4, &iStartColor))
return Py_BadArgument();
int iEndColor;
if (!PyTuple_GetInteger(poArgs, 5, &iEndColor))
return Py_BadArgument();
CPythonGraphic::Instance().RenderGradationBar2d((float)x, (float)y, (float)x+width, (float)y+height, iStartColor, iEndColor);
return Py_BuildNone();
}
PyObject* grpRenderDownButton(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
CPythonGraphic::Instance().RenderDownButton((float) x, (float) y, (float) x+width, (float) y+height);
return Py_BuildNone();
}
PyObject* grpRenderUpButton(PyObject* poSelf, PyObject* poArgs)
{
int x;
if (!PyTuple_GetInteger(poArgs, 0, &x))
return Py_BuildException();
int y;
if (!PyTuple_GetInteger(poArgs, 1, &y))
return Py_BuildException();
int width;
if (!PyTuple_GetInteger(poArgs, 2, &width))
return Py_BuildException();
int height;
if (!PyTuple_GetInteger(poArgs, 3, &height))
return Py_BuildException();
CPythonGraphic::Instance().RenderUpButton((float) x, (float) y, (float) x+width, (float) y+height);
return Py_BuildNone();
}
PyObject* grpRenderBox3d(PyObject* poSelf, PyObject* poArgs)
{
float sx;
if (!PyTuple_GetFloat(poArgs, 0, &sx))
return Py_BuildException();
float sy;
if (!PyTuple_GetFloat(poArgs, 1, &sy))
return Py_BuildException();
float sz;
if (!PyTuple_GetFloat(poArgs, 2, &sz))
return Py_BuildException();
float ex;
if (!PyTuple_GetFloat(poArgs, 3, &ex))
return Py_BuildException();
float ey;
if (!PyTuple_GetFloat(poArgs, 4, &ey))
return Py_BuildException();
float ez;
if (!PyTuple_GetFloat(poArgs, 5, &ez))
return Py_BuildException();
CPythonGraphic::Instance().RenderBox3d((float) sx, (float) sy, (float) sz, (float) ex, (float) ey, (float) ez);
return Py_BuildNone();
}
PyObject * grpSetClearColor(PyObject * poSelf, PyObject * poArgs)
{
float fr;
if (!PyTuple_GetFloat(poArgs, 0, &fr))
return Py_BuildException();
float fg;
if (!PyTuple_GetFloat(poArgs, 1, &fg))
return Py_BuildException();
float fb;
if (!PyTuple_GetFloat(poArgs, 2, &fb))
return Py_BuildException();
CPythonGraphic::Instance().SetClearColor(fr, fg, fb, 1.0f);
return Py_BuildNone();
}
PyObject * grpSetDiffuseColor(PyObject * poSelf, PyObject * poArgs)
{
float r;
if (!PyTuple_GetFloat(poArgs, 0, &r))
return Py_BuildException();
float g;
if (!PyTuple_GetFloat(poArgs, 1, &g))
return Py_BuildException();
float b;
if (!PyTuple_GetFloat(poArgs, 2, &b))
return Py_BuildException();
float a;
if (!PyTuple_GetFloat(poArgs, 3, &a))
return Py_BuildException();
CPythonGraphic::Instance().SetDiffuseColor(r, g, b, a);
return Py_BuildNone();
}
PyObject * grpIdentity(PyObject * poSelf, PyObject * poArgs)
{
CPythonGraphic::Instance().Identity();
return Py_BuildNone();
}
PyObject * grpGetAvailableMemory(PyObject * poSelf, PyObject * poArgs)
{
int iValue = CPythonGraphic::Instance().GetAvailableMemory();
return Py_BuildValue("i", iValue);
}
// SCREENSHOT_CWDSAVE
PyObject * grpSaveScreenShotToPath(PyObject * poSelf, PyObject * poArgs)
{
char * szBasePath;
if (!PyTuple_GetString(poArgs, 0, &szBasePath))
return Py_BuildException();
struct tm * tmNow;
time_t ct;
ct = time(0);
tmNow = localtime(&ct);
char szPath[MAX_PATH + 256];
snprintf(szPath, sizeof(szPath), "%s%02d%02d_%02d%02d%02d.jpg",
szBasePath,
tmNow->tm_mon + 1,
tmNow->tm_mday,
tmNow->tm_hour,
tmNow->tm_min,
tmNow->tm_sec);
BOOL bResult = CPythonGraphic::Instance().SaveScreenShot(szPath);
return Py_BuildValue("(is)", bResult, szPath);
}
// END_OF_SCREENSHOT_CWDSAVE
PyObject * grpSaveScreenShot(PyObject * poSelf, PyObject * poArgs)
{
struct tm * tmNow;
time_t ct;
ct = time(0);
tmNow = localtime(&ct);
char szPath[MAX_PATH + 256];
SHGetSpecialFolderPath(NULL, szPath, CSIDL_PERSONAL, TRUE);
//GetTempPath();
strcat(szPath, "\\METIN2\\");
if (-1 == _access(szPath, 0))
if (!CreateDirectory(szPath, NULL))
{
TraceError("Failed to create directory [%s]\n", szPath);
return Py_BuildValue("(is)", FALSE, "");
}
sprintf(szPath + strlen(szPath), "%02d%02d_%02d%02d%02d.jpg",
tmNow->tm_mon + 1,
tmNow->tm_mday,
tmNow->tm_hour,
tmNow->tm_min,
tmNow->tm_sec);
BOOL bResult = CPythonGraphic::Instance().SaveScreenShot(szPath);
return Py_BuildValue("(is)", bResult, szPath);
}
PyObject * grpSetGamma(PyObject * poSelf, PyObject * poArgs)
{
float gamma;
if (!PyTuple_GetFloat(poArgs, 0, &gamma))
return Py_BuildException();
CPythonGraphic::Instance().SetGamma(gamma);
return Py_BuildNone();
}
PyObject * grpSetInterfaceRenderState(PyObject * poSelf, PyObject * poArgs)
{
CPythonGraphic::Instance().SetInterfaceRenderState();
return Py_BuildNone();
}
PyObject * grpSetGameRenderState(PyObject * poSelf, PyObject * poArgs)
{
CPythonGraphic::Instance().SetGameRenderState();
return Py_BuildNone();
}
PyObject * grpSetViewport(PyObject * poSelf, PyObject * poArgs)
{
float fx;
if (!PyTuple_GetFloat(poArgs, 0, &fx))
return Py_BuildException();
float fy;
if (!PyTuple_GetFloat(poArgs, 1, &fy))
return Py_BuildException();
float fWidth;
if (!PyTuple_GetFloat(poArgs, 2, &fWidth))
return Py_BuildException();
float fHeight;
if (!PyTuple_GetFloat(poArgs, 3, &fHeight))
return Py_BuildException();
UINT uWidth;
UINT uHeight;
CPythonGraphic::Instance().GetBackBufferSize(&uWidth, &uHeight);
CPythonGraphic::Instance().SetViewport(fx*uWidth, fy*uHeight, fWidth*uWidth, fHeight*uHeight);
return Py_BuildNone();
}
PyObject * grpRestoreViewport(PyObject * poSelf, PyObject * poArgs)
{
CPythonGraphic::Instance().RestoreViewport();
return Py_BuildNone();
}
PyObject * grpSetOmniLight(PyObject * poSelf, PyObject * poArgs)
{
CPythonGraphic::Instance().SetOmniLight();
return Py_BuildNone();
}
PyObject * grpGetCameraPosition(PyObject * poSelf, PyObject * poArgs)
{
D3DXVECTOR3 v3Eye = CCameraManager::Instance().GetCurrentCamera()->GetEye();
return Py_BuildValue("fff", v3Eye.x, v3Eye.y, v3Eye.z);
}
PyObject * grpGetTargetPosition(PyObject * poSelf, PyObject * poArgs)
{
D3DXVECTOR3 v3Target = CCameraManager::Instance().GetCurrentCamera()->GetTarget();
return Py_BuildValue("fff", v3Target.x, v3Target.y, v3Target.z);
}
void initgrp()
{
static PyMethodDef s_methods[] =
{
{ "InitScreenEffect", grpInitScreenEffect, METH_VARARGS },
{ "Culling", grpCulling, METH_VARARGS },
{ "ClearDepthBuffer", grpClearDepthBuffer, METH_VARARGS },
{ "Identity", grpIdentity, METH_VARARGS },
{ "GenerateColor", grpGenerateColor, METH_VARARGS },
{ "PopState", grpPopState, METH_VARARGS },
{ "PushState", grpPushState, METH_VARARGS },
{ "PushMatrix", grpPushMatrix, METH_VARARGS },
{ "PopMatrix", grpPopMatrix, METH_VARARGS },
{ "Translate", grpTranslate, METH_VARARGS },
{ "Rotate", grpRotate, METH_VARARGS },
{ "SetColorRenderState", grpSetColorRenderState, METH_VARARGS },
{ "SetAroundCamera", grpSetAroundCamera, METH_VARARGS },
{ "SetPositionCamera", grpSetPositionCamera, METH_VARARGS },
{ "SetEyeCamera", grpSetEyeCamera, METH_VARARGS },
{ "SetPerspective", grpSetPerspective, METH_VARARGS },
{ "SetOrtho2d", grpSetOrtho2D, METH_VARARGS },
{ "SetOrtho3d", grpSetOrtho3D, METH_VARARGS },
{ "SetColor", grpSetColor, METH_VARARGS },
{ "SetAlpha", grpSetAlpha, METH_VARARGS },
{ "SetDiffuseColor", grpSetDiffuseColor, METH_VARARGS },
{ "SetClearColor", grpSetClearColor, METH_VARARGS },
{ "GetCursorPosition3d", grpGetCursorPosition3d, METH_VARARGS },
{ "SetCursorPosition", grpSetCursorPosition, METH_VARARGS },
{ "RenderLine", grpRenderLine, METH_VARARGS },
{ "RenderBox", grpRenderBox, METH_VARARGS },
{ "RenderRoundBox", grpRenderRoundBox, METH_VARARGS },
{ "RenderBox3d", grpRenderBox3d, METH_VARARGS },
{ "RenderBar", grpRenderBar, METH_VARARGS },
{ "RenderBar3d", grpRenderBar3d, METH_VARARGS },
{ "RenderGradationBar", grpRenderGradationBar, METH_VARARGS },
{ "RenderCube", grpRenderCube, METH_VARARGS },
{ "RenderDownButton", grpRenderDownButton, METH_VARARGS },
{ "RenderUpButton", grpRenderUpButton, METH_VARARGS },
{ "GetAvailableMemory", grpGetAvailableMemory, METH_VARARGS },
{ "SaveScreenShot", grpSaveScreenShot, METH_VARARGS },
{ "SaveScreenShotToPath", grpSaveScreenShotToPath, METH_VARARGS },
{ "SetGamma", grpSetGamma, METH_VARARGS },
{ "SetInterfaceRenderState", grpSetInterfaceRenderState, METH_VARARGS },
{ "SetGameRenderState", grpSetGameRenderState, METH_VARARGS },
{ "SetViewport", grpSetViewport, METH_VARARGS },
{ "RestoreViewport", grpRestoreViewport, METH_VARARGS },
{ "SetOmniLight", grpSetOmniLight, METH_VARARGS },
{ "GetCameraPosition", grpGetCameraPosition, METH_VARARGS },
{ "GetTargetPosition", grpGetTargetPosition, METH_VARARGS },
{ "CreateTextBar", grpCreateTextBar, METH_VARARGS },
{ "CreateBigTextBar", grpCreateBigTextBar, METH_VARARGS },
{ "DestroyTextBar", grpDestroyTextBar, METH_VARARGS },
{ "RenderTextBar", grpRenderTextBar, METH_VARARGS },
{ "TextBarTextOut", grpTextBarTextOut, METH_VARARGS },
{ "TextBarSetTextColor", grpTextBarSetTextColor, METH_VARARGS },
{ "TextBarGetTextExtent", grpTextBarGetTextExtent, METH_VARARGS },
{ "ClearTextBar", grpClearTextBar, METH_VARARGS },
{ "SetTextBarClipRect", grpSetTextBarClipRect, METH_VARARGS },
{ NULL, NULL, NULL },
};
Py_InitModule("grp", s_methods);
}