Update of /cvsroot/freevo/freevo/WIP/RobShortt/lib/directfb
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18652

Modified Files:
        directfb.c setup.py 
Added Files:
        databuffer.c databuffer.h 
Log Message:
Started working on an IDirectFBDataBuffer interface.


Index: directfb.c
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/RobShortt/lib/directfb/directfb.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** directfb.c  6 Sep 2004 23:34:27 -0000       1.1
--- directfb.c  6 Sep 2004 23:54:11 -0000       1.2
***************
*** 6,9 ****
--- 6,10 ----
  #include "displaylayer.h"
  #include "imageprovider.h"
+ #include "databuffer.h"
  #include "surfacedescription.h"
  #include "window.h"
***************
*** 134,137 ****
--- 135,151 ----
  }
  
+ static PyObject * DirectFB_createdatabuffer(DirectFB* self, PyObject *args, PyObject 
*kwds)
+ {
+       IDirectFBDataBuffer * buffer;
+       DFBResult err;
+       DataBuffer * result;
+       DFBDataBufferDescription  *desc = "Default DFBDataBufferDescription";
+       // PyArg_ParseTuple(args, "s", &filename);
+       DFBCHECK(self->dfb->CreateDataBuffer(self->dfb, &desc, &buffer));
+       result = (DataBuffer*)PyObject_NEW(DataBuffer, &DataBuffer_Type);
+       result->buffer = buffer;
+       return (PyObject*)result;
+ }
+ 
  static PyObject * DirectFB_getDisplayLayer(DirectFB* self, PyObject *args, PyObject 
*kwds)
  {
***************
*** 230,233 ****
--- 244,250 ----
       "Create an image provider for the specified file."
      },
+     {"createDataBuffer", (PyCFunction)DirectFB_createdatabuffer, METH_VARARGS,
+      "Streaming or static data for image or video providers."
+     },
      {"setCooperativeLevel", (PyCFunction)DirectFB_SetCooperativeLevel, METH_VARARGS,
       "Puts the interface into the specified cooperative level"
***************
*** 327,330 ****
--- 344,349 ----
        if (PyType_Ready(&ImageProvider_Type) < 0)
          return;
+       if (PyType_Ready(&DataBuffer_Type) < 0)
+         return;
        if (PyType_Ready(&DisplayLayer_Type) < 0)
          return;
***************
*** 465,469 ****
        PyModule_AddIntConstant(m, "DSPF_LUT8", DSPF_LUT8);
        PyModule_AddIntConstant(m, "DSPF_ALUT44", DSPF_ALUT44);
!       PyModule_AddIntConstant(m, "DSPF_RGB15", DSPF_RGB15);
        PyModule_AddIntConstant(m, "DLOP_NONE", DLOP_NONE); // None of these. 
        PyModule_AddIntConstant(m, "DLOP_ALPHACHANNEL", DLOP_ALPHACHANNEL); // Make 
usage of alpha channel for blending on a pixel per pixel basis. 
--- 484,488 ----
        PyModule_AddIntConstant(m, "DSPF_LUT8", DSPF_LUT8);
        PyModule_AddIntConstant(m, "DSPF_ALUT44", DSPF_ALUT44);
!       PyModule_AddIntConstant(m, "DSPF_ARGB1555", DSPF_ARGB1555);
        PyModule_AddIntConstant(m, "DLOP_NONE", DLOP_NONE); // None of these. 
        PyModule_AddIntConstant(m, "DLOP_ALPHACHANNEL", DLOP_ALPHACHANNEL); // Make 
usage of alpha channel for blending on a pixel per pixel basis. 

--- NEW FILE: databuffer.h ---
#ifndef __databuffer__h
#define __databuffer__h

typedef struct {
        PyObject_HEAD
        IDirectFBDataBuffer * buffer;
} DataBuffer;

extern PyTypeObject DataBuffer_Type;

#endif


Index: setup.py
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/RobShortt/lib/directfb/setup.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** setup.py    6 Sep 2004 23:34:27 -0000       1.1
--- setup.py    6 Sep 2004 23:54:11 -0000       1.2
***************
*** 2,11 ****
  
  dfb = Extension('directfb',
!        include_dirs = ['/usr/include/directfb'],
         libraries = ['directfb'],
         sources=['font.c', 'surface.c', 'imageprovider.c', 'displaylayer.c', 
                  'directfb.c', 'surfacedescription.c', 'window.c', 
                  'inputdevice.c', 'eventbuffer.c', 'userevent.c',
!                 'windowevent.c', 'inputevent.c'],
        )
  
--- 2,11 ----
  
  dfb = Extension('directfb',
!        include_dirs = ['/usr/local/include/directfb'],
         libraries = ['directfb'],
         sources=['font.c', 'surface.c', 'imageprovider.c', 'displaylayer.c', 
                  'directfb.c', 'surfacedescription.c', 'window.c', 
                  'inputdevice.c', 'eventbuffer.c', 'userevent.c',
!                 'windowevent.c', 'inputevent.c', 'databuffer.c'],
        )
  

--- NEW FILE: databuffer.c ---
#include <Python.h>
#include <directfb.h>
#include "databuffer.h"
#include "imageprovider.h"

static PyObject * DataBuffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
    DataBuffer *self;
    self = (DataBuffer *)type->tp_alloc(type, 0);
    if (self != NULL) {
                IDirectFBDataBuffer * pointer = NULL;
                self->buffer = pointer;
    }
    return (PyObject *)self;
}

static int DataBuffer_init(DataBuffer *self, PyObject *kwds)
{
    return 0;
}

static void DataBuffer_dealloc(PyObject * self)
{
    DataBuffer * object = (DataBuffer*) self;
        if (object->buffer != NULL)
        {
                object->buffer->Release(object->buffer);
                object->buffer = NULL;
        }
    PyMem_DEL(self);
}

/*
static PyObject* ImageProvider_surfacedescription(PyObject * self)
{
    ImageProvider* object = (ImageProvider*) self;
    DFBSurfaceDescription description;
        DFBResult err;
    err = object->provider->GetSurfaceDescription(object->provider, &description);
        if (err != DFB_OK)
        {
                return NULL;
        }
        SurfaceDescription* result = 
(SurfaceDescription*)PyObject_NEW(SurfaceDescription, &SurfaceDescription_Type);
        result->description = description;
        return (PyObject*) result;
}

static PyObject* ImageProvider_imagedescription(PyObject * self)
{
    ImageProvider* object = (ImageProvider*) self;
    DFBImageDescription description;
        DFBResult err;
    err = object->provider->GetImageDescription(object->provider, &description);
        if (err != DFB_OK)
        {
                return NULL;
        }
    return Py_BuildValue("iiii", description.caps, 
                description.colorkey_r, 
                description.colorkey_g, 
                description.colorkey_b);
}

static PyObject* ImageProvider_renderto(PyObject * self, PyObject * args)
{
    ImageProvider* object = (ImageProvider*) self;
    DFBImageDescription description;
        DFBResult err;
        DFBRectangle rect;
        memset(&rect, 0, sizeof(rect));
        Surface * surface;
        int ok = PyArg_ParseTuple(args, "O!|(iiii)", &Surface_Type, &surface, &rect.x, 
&rect.y, &rect.w, &rect.h);
        if (!ok) return NULL;
        if ((rect.w != 0) && (rect.h != 0) )
        {
                err = object->provider->RenderTo(object->provider, surface->surface, 
&rect);
        }
        else
        {
                err = object->provider->RenderTo(object->provider, surface->surface, 
NULL);
        }
        if (err != DFB_OK)
        {
                return NULL;
        }
    return Py_None;
}
*/

static PyObject* DataBuffer_flush(PyObject * self)
{
    DataBuffer* object = (DataBuffer*) self;
    DFBResult err;

    err = object->buffer->Flush(object->buffer);
    if (err != DFB_OK)
    {
        return NULL;
    }
    return Py_None;
}

/*
static PyObject* DataBuffer_putdata(PyObject *self, PyObject *args)
{
    DataBuffer* object = (DataBuffer*) self;
    DFBResult err;
    const void *data;

    int ok = PyArg_ParseTuple(args, "s", &data);
    if(!ok) return NULL;

    err = object->buffer->PutData(object->buffer, &data);
    if (err != DFB_OK)
    {
        return NULL;
    }
    return Py_None;
}
*/

static PyObject* DataBuffer_createimageprovider(PyObject * self)
{
    DataBuffer *object = (DataBuffer*) self;
    IDirectFBImageProvider *provider;
    DFBResult err;

    err = object->buffer->CreateImageProvider(object->buffer, &provider);
    if (err != DFB_OK)
    {
        return NULL;
    }
    return (ImageProvider*) provider;
}

static PyMethodDef DataBuffer_methods[] = {
    {"flush", (PyCFunction)DataBuffer_flush, METH_NOARGS,
     "Flushes all data in this buffer."
    },
    /* not yet implimented
    {"seekTo", (PyCFunction)DataBuffer_seekto, METH_VARARGS,
     "Seeks to a given byte position."
    },
    {"getPosition", (PyCFunction)DataBuffer_getposition, METH_NOARGS,
     "Get the current byte position within a static buffer."
    }, 
    {"getLength", (PyCFunction)DataBuffer_getlength, METH_NOARGS,
     "Get the length of a static or streaming buffer in bytes."
    }, 
    {"waitForData", (PyCFunction)DataBuffer_waitfordata, METH_VARARGS,
     "Wait for data to be available. Thread is idle in the meantime."
    }, 
    {"waitForDataWithTimeout", (PyCFunction)DataBuffer_waitfordatawithtimeout, 
METH_VARARGS,
     "Wait for data to be available within an amount of time. Thread is idle in the 
meantime."
    }, 
    {"getData", (PyCFunction)DataBuffer_getdata, METH_VARARGS,
     "Fetch data from a streaming or static buffer."
    }, 
    {"peekData", (PyCFunction)DataBuffer_peekdata, METH_VARARGS,
     "Peek data from a streaming or static buffer."
    }, 
    {"hasData", (PyCFunction)DataBuffer_hasdata, METH_NOARGS,
     "Check if there is data available."
    }, 
    {"putData", (PyCFunction)DataBuffer_putdata, METH_VARARGS,
     "Appends a block of data to a streaming buffer."
    }, 
    */
    {"createImageProvider", (PyCFunction)DataBuffer_createimageprovider, METH_VARARGS,
     "Creates an image provider using the buffers data."
    }, 
    {NULL}  /* Sentinel */
};

PyTypeObject DataBuffer_Type = {
        PyObject_HEAD_INIT(&PyType_Type)
    0,                         /*ob_size*/
    "directfb.DataBuffer",        /*tp_name*/
    sizeof(DataBuffer),           /*tp_basicsize*/
    0,                         /*tp_itemsize*/
    (destructor)DataBuffer_dealloc,           /*tp_dealloc*/
        0,                         /*tp_print*/
    0,                         /*tp_getattr*/
    0,                         /*tp_setattr*/
    0,                         /*tp_compare*/
    0,                         /*tp_repr*/
    0,                         /*tp_as_number*/
    0,                         /*tp_as_sequence*/
    0,                         /*tp_as_mapping*/
    0,                         /*tp_hash */
    0,                         /*tp_call*/
    0,                         /*tp_str*/
    0,                         /*tp_getattro*/
    0,                         /*tp_setattro*/
    0,                         /*tp_as_buffer*/
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
    "DataBuffer objects",           /* tp_doc */
    0,                         /* tp_traverse */
    0,                         /* tp_clear */
    0,                         /* tp_richcompare */
    0,                         /* tp_weaklistoffset */
    0,                         /* tp_iter */
    0,                         /* tp_iternext */
    DataBuffer_methods,             /* tp_methods */
    0,             /* tp_members */
    0,                         /* tp_getset */
    0,                         /* tp_base */
    0,                         /* tp_dict */
    0,                         /* tp_descr_get */
    0,                         /* tp_descr_set */
    0,                         /* tp_dictoffset */
    (initproc)DataBuffer_init,    /* tp_init */
    0,                         /* tp_alloc */
    0,                     /* tp_new */
};




-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to