init
This commit is contained in:
310
src/EterPythonLib/PythonGraphicImageModule.cpp
Normal file
310
src/EterPythonLib/PythonGraphicImageModule.cpp
Normal file
@@ -0,0 +1,310 @@
|
||||
#include "StdAfx.h"
|
||||
|
||||
bool PyTuple_GetImageInstance(PyObject* poArgs, int pos, CGraphicImageInstance** ppRetImageInstance)
|
||||
{
|
||||
int handle;
|
||||
|
||||
if (!PyTuple_GetInteger(poArgs, pos, &handle))
|
||||
return false;
|
||||
|
||||
if (!handle)
|
||||
return false;
|
||||
|
||||
*ppRetImageInstance = (CGraphicImageInstance*)handle;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PyTuple_GetExpandedImageInstance(PyObject* poArgs, int pos, CGraphicExpandedImageInstance ** ppRetImageInstance)
|
||||
{
|
||||
int handle;
|
||||
|
||||
if (!PyTuple_GetInteger(poArgs, pos, &handle))
|
||||
return false;
|
||||
|
||||
if (!handle)
|
||||
return false;
|
||||
|
||||
if (!((CGraphicImageInstance*)handle)->IsType(CGraphicExpandedImageInstance::Type()))
|
||||
return false;
|
||||
|
||||
*ppRetImageInstance = (CGraphicExpandedImageInstance*)handle;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
PyObject* grpImageGenerate(PyObject * poSelf, PyObject* poArgs)
|
||||
{
|
||||
char * szFileName;
|
||||
|
||||
if (!PyTuple_GetString(poArgs, 0, &szFileName))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (!*szFileName)
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
CResource * pResource = CResourceManager::Instance().GetResourcePointer(szFileName);
|
||||
|
||||
if (!pResource->IsType(CGraphicImage::Type()))
|
||||
return Py_BuildException("Resource is not an image (filename: %s)", szFileName);
|
||||
|
||||
CGraphicImageInstance * pImageInstance = CGraphicImageInstance::New();
|
||||
pImageInstance->SetImagePointer(static_cast<CGraphicImage*>(pResource));
|
||||
|
||||
if (pImageInstance->IsEmpty())
|
||||
return Py_BuildException("Cannot load image (filename: %s)", szFileName);
|
||||
|
||||
return Py_BuildValue("i", pImageInstance);
|
||||
}
|
||||
|
||||
PyObject* grpImageGenerateExpanded(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
char * szFileName;
|
||||
|
||||
if (!PyTuple_GetString(poArgs, 0, &szFileName))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (strlen(szFileName) <= 0)
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
CResource* pResource = CResourceManager::Instance().GetResourcePointer(szFileName);
|
||||
|
||||
if (!pResource->IsType(CGraphicImage::Type()))
|
||||
return Py_BuildException("Resource is not an image (filename: %s)", szFileName);
|
||||
|
||||
CGraphicExpandedImageInstance * pImageInstance = CGraphicExpandedImageInstance::New();
|
||||
pImageInstance->SetImagePointer(static_cast<CGraphicImage*>(pResource));
|
||||
|
||||
if (pImageInstance->IsEmpty())
|
||||
return Py_BuildException("Cannot load image (filename: %s)", szFileName);
|
||||
|
||||
return Py_BuildValue("i", pImageInstance);
|
||||
}
|
||||
|
||||
PyObject* grpImageGenerateFromHandle(PyObject * poSelf, PyObject* poArgs)
|
||||
{
|
||||
int iHandle;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iHandle))
|
||||
return Py_BadArgument();
|
||||
|
||||
CGraphicImageInstance * pImageInstance = CGraphicImageInstance::New();
|
||||
pImageInstance->SetImagePointer((CGraphicImage *)iHandle);
|
||||
|
||||
return Py_BuildValue("i", pImageInstance);
|
||||
}
|
||||
|
||||
PyObject* grpImageDelete(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicImageInstance * pImageInstance;
|
||||
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (!pImageInstance)
|
||||
return Py_BuildNone();
|
||||
|
||||
CGraphicImageInstance::Delete(pImageInstance);
|
||||
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpImageDeleteExpanded(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicExpandedImageInstance * pExpandedImageInstance;
|
||||
if (!PyTuple_GetExpandedImageInstance(poArgs, 0, &pExpandedImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
CGraphicExpandedImageInstance::Delete(pExpandedImageInstance);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpImageSetFileName(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicImageInstance * pImageInstance;
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
char * szFileName;
|
||||
if (!PyTuple_GetString(poArgs, 1, &szFileName))
|
||||
return Py_BadArgument();
|
||||
|
||||
CResource * pResource = CResourceManager::Instance().GetResourcePointer(szFileName);
|
||||
|
||||
if (!pResource->IsType(CGraphicImage::Type()))
|
||||
return Py_BuildException("Resource is not an image (filename: %s)", szFileName);
|
||||
|
||||
pImageInstance->SetImagePointer(static_cast<CGraphicImage*>(pResource));
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject* grpImageRender(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CGraphicImageInstance* pImageInstance;
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->Render();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetImagePosition(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicImageInstance* pImageInstance;
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float x;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &x))
|
||||
return Py_BadArgument();
|
||||
|
||||
float y;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &y))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetPosition(x, y);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetImageOrigin(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicExpandedImageInstance * pImageInstance;
|
||||
if (!PyTuple_GetExpandedImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float x;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &x))
|
||||
return Py_BadArgument();
|
||||
float y;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &y))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetOrigin(x, y);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetImageRotation(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicExpandedImageInstance * pImageInstance;
|
||||
if (!PyTuple_GetExpandedImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float Degree;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &Degree))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetRotation(Degree);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetImageScale(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicExpandedImageInstance * pImageInstance;
|
||||
if (!PyTuple_GetExpandedImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float x;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &x))
|
||||
return Py_BadArgument();
|
||||
float y;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &y))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetScale(x, y);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetRenderingRect(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicExpandedImageInstance * pImageInstance;
|
||||
if (!PyTuple_GetExpandedImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float fLeft;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &fLeft))
|
||||
return Py_BadArgument();
|
||||
float fTop;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &fTop))
|
||||
return Py_BadArgument();
|
||||
float fRight;
|
||||
if (!PyTuple_GetFloat(poArgs, 3, &fRight))
|
||||
return Py_BadArgument();
|
||||
float fBottom;
|
||||
if (!PyTuple_GetFloat(poArgs, 4, &fBottom))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetRenderingRect(fLeft, fTop, fRight, fBottom);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpSetImageDiffuseColor(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicImageInstance* pImageInstance;
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
float r;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &r))
|
||||
return Py_BadArgument();
|
||||
float g;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &g))
|
||||
return Py_BadArgument();
|
||||
float b;
|
||||
if (!PyTuple_GetFloat(poArgs, 3, &b))
|
||||
return Py_BadArgument();
|
||||
float a;
|
||||
if (!PyTuple_GetFloat(poArgs, 4, &a))
|
||||
return Py_BadArgument();
|
||||
|
||||
pImageInstance->SetDiffuseColor(r, g, b, a);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * grpGetWidth(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicImageInstance * pImageInstance;
|
||||
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (pImageInstance->IsEmpty())
|
||||
return Py_BuildException("Image is empty");
|
||||
|
||||
return Py_BuildValue("i", pImageInstance->GetWidth());
|
||||
}
|
||||
|
||||
PyObject * grpGetHeight(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CGraphicImageInstance * pImageInstance;
|
||||
|
||||
if (!PyTuple_GetImageInstance(poArgs, 0, &pImageInstance))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (pImageInstance->IsEmpty())
|
||||
return Py_BuildException("Image is empty");
|
||||
|
||||
return Py_BuildValue("i", pImageInstance->GetHeight());
|
||||
}
|
||||
|
||||
void initgrpImage()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
{ "Render", grpImageRender, METH_VARARGS },
|
||||
{ "SetPosition", grpSetImagePosition, METH_VARARGS },
|
||||
{ "Generate", grpImageGenerate, METH_VARARGS },
|
||||
{ "GenerateExpanded", grpImageGenerateExpanded, METH_VARARGS },
|
||||
{ "GenerateFromHandle", grpImageGenerateFromHandle, METH_VARARGS },
|
||||
{ "Delete", grpImageDelete, METH_VARARGS },
|
||||
{ "DeleteExpanded", grpImageDeleteExpanded, METH_VARARGS },
|
||||
{ "SetFileName", grpImageSetFileName, METH_VARARGS },
|
||||
{ "SetOrigin", grpSetImageOrigin, METH_VARARGS },
|
||||
{ "SetRotation", grpSetImageRotation, METH_VARARGS },
|
||||
{ "SetScale", grpSetImageScale, METH_VARARGS },
|
||||
{ "SetRenderingRect", grpSetRenderingRect, METH_VARARGS },
|
||||
{ "SetDiffuseColor", grpSetImageDiffuseColor, METH_VARARGS },
|
||||
{ "GetWidth", grpGetWidth, METH_VARARGS },
|
||||
{ "GetHeight", grpGetHeight, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
Py_InitModule("grpImage", s_methods);
|
||||
}
|
||||
Reference in New Issue
Block a user