Update of /cvsroot/freevo/kaa/display/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4976/display/src

Added Files:
        display.c display.h display.py sdl.c sdl.h 
Log Message:
create basic display module

--- NEW FILE: sdl.h ---
PyObject *image_to_surface(PyObject *self, PyObject *args);

--- NEW FILE: display.h ---
extern PyTypeObject *Image_PyObject_Type;
extern Imlib_Image (*imlib_image_from_pyobject)(PyObject *pyimg);

--- NEW FILE: display.c ---
#include <Python.h>
#define X_DISPLAY_MISSING
#include <Imlib2.h>
#include "sdl.h"

PyTypeObject *Image_PyObject_Type;
Imlib_Image (*imlib_image_from_pyobject)(PyObject *pyimg);

PyMethodDef Imlib2_methods[] = {
    { "image_to_surface", image_to_surface, METH_VARARGS }, 
    { NULL }
};

void init_display()
{
    PyObject *m, *pyimlib2_module, *c_api;
    void **api_ptrs;
    m = Py_InitModule("_display", Imlib2_methods);

    pyimlib2_module = PyImport_ImportModule("kaa._Imlib2");
    if (pyimlib2_module == NULL)
       return;

    c_api = PyObject_GetAttrString(pyimlib2_module, "_C_API");
    if (c_api == NULL || !PyCObject_Check(c_api))
           return;
    api_ptrs = (void **)PyCObject_AsVoidPtr(c_api);
    Py_DECREF(c_api);
    imlib_image_from_pyobject = api_ptrs[0];
    Image_PyObject_Type = api_ptrs[1];
}

--- NEW FILE: sdl.c ---
#include <Python.h>
#define X_DISPLAY_MISSING
#include <Imlib2.h>
#include "config.h"

#ifdef USE_PYGAME
#include <pygame.h>
#endif

PyTypeObject *Image_PyObject_Type;
Imlib_Image (*imlib_image_from_pyobject)(PyObject *pyimg);

PyObject *image_to_surface(PyObject *self, PyObject *args)
{

#ifdef USE_PYGAME
    PyObject *pyimg;
    Imlib_Image *img;
    PySurfaceObject *pysurf;
    unsigned char *pixels;
    
    static int init = 0;

    if (init == 0) {
        import_pygame_surface();
        init = 1;
    }

    if (!PyArg_ParseTuple(args, "O!O!", Image_PyObject_Type, &pyimg, 
                          &PySurface_Type, &pysurf))
        return NULL;

    img  = imlib_image_from_pyobject(pyimg);
    imlib_context_set_image(img);
    pixels = (unsigned char *)imlib_image_get_data_for_reading_only();
    memcpy(pysurf->surf->pixels, pixels, imlib_image_get_width() * 
           imlib_image_get_height() * 4);
    
    Py_INCREF(Py_None);
    return Py_None;

#else
    PyErr_Format(PyExc_SystemError, "kaa-display compiled without pygame");
    return NULL;
#endif

}

--- NEW FILE: display.py ---
import _display

# pygame stuff
image_to_surface = _display.image_to_surface



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to