Re: [GD-DEVEL] [proposal] Attach DIB section buffer to gdImage

[email protected] (Mateusz Loskot)
Newsgroups php.gd.devel
Message-ID <[email protected]>
Pierre wrote:
> On 8/13/07, Mateusz Loskot <[email protected]> wrote:
>>
>> Some (quite long) time ago, I was asking about how to use libgd
>> as GDI replacement and how to use it to draw on Windows device-context.
>> Here, I'd like to introduce simple single-function extension to libgd
>> that solves this task.
>>
>> I created new function called gdImageTrueColorAttachBuffer.
>> This function does not use any elements specific to Windows
>> and perhaps it could be used on other purposes, not only under Windows.
>>
>> The idea behind the gdImageTrueColorAttachBuffer is simple.
>> In Windows, CreateDIBSection allocates linear buffer for pixels
>> but libgd uses 2-dim buffer, so my function attaches chunks of the
>> linear buffer as separate rows to gdImage object.
>> It's also possible to control orientation of pixel rows, normal or
>> up-side-down by using negative value of 'stride' parameter.
>>
>>
>> Here is the gdImageTrueColorAttachBuffer function code:
>>
>> //////////////////////////////////////////////////////////////////////
>> BGD_DECLARE(gdImagePtr)
>> gdImageTrueColorAttachBuffer(int* buffer, int sx, int sy, int stride)
>
>
> It is a very good idea. Such function is required for not only windows
> bmp but almost all other upcoming formats like cairo, agg, X or
> whatever we may need.

Pierre,

I'm glad you like it too.
Yes, I believe it isn't single purpose code but would be useful
somewhere else.

> About the implementation, I'm not sure we can accept any format.

Understood.
I intentionally use 32-bit image the idea comes from one of my
project where I don't need any other formats.

> We may need an additional argument to define the buffer format (rgb,
> rgba, argb, etc.). The problem is not how to initialize the buffer but
> how to work with it with the other GD functions (drawing functions,
> load/save, etc.). We will need an efficient way to access it.

Yes.

> It may be better to share the buffer instead of copying it. It'll
> faster and more flexible (the buffer can still be used by another API
> (gdi, dx, gl..).

Hmm, but I don't copy it but I use shared buffer.

> I would also like to have a generic image format. The primitives
> functions can be customized and  used by the other GD functions. It
> will be slow (not much slower that what we have now) but it  can be
> amazingly useful.

Unfortunately, I don't think I'm experienced enough with libgd to give
any better proposal. So, I'd appreciate if we can discuss it here
together or may be you have something in mind already?

> A last solution is to create a Win32 internal format. It can be done
> independently of the other image formats. Would it help for the CE
> platform?

I *suppose* it would help.
Do you have any properties of such format figured out already?

Cheers
-- 
Mateusz Loskot
http://mateusz.loskot.net
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.