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