On Tue, 06 Feb 2007 13:29:21 -0200
Luiz Americo Pereira Camara <[EMAIL PROTECTED]> wrote:
> Mattias Gaertner wrote:
> > On Mon, 05 Feb 2007 09:52:50 -0300
> > Luiz Americo Pereira Camara <[EMAIL PROTECTED]> wrote:
> >
> >
> >> Mattias Gaertner wrote:
> >>
> >>>> - Should i implement GetCurrentObject?
> >>>>
> >>>>
> >>> IMO it would be better to improve TBitmap.
> >>>
> >>>
> >> Currently TBitmap uses GetObject, so implementing it will also
> >> benefit TBitmap. I'll take a look and keep you informed.
> >>
> >
> > It uses it, but contrary to the VCL the LCL TBitmap leaves all
> > implementation details to the widgetset. It uses only parts of the
> > header information like width and height - the minimum set that
> > works on all platforms.
> > We have to extend the tagBitmap record, or replace the GetObject
> > call in TBitmap with a more platform independent one. IMO the
> > latter would be better.
> >
> I did some research in gtk side and found that is not viable to
> implement GetObject for Bitmaps in a crossplatform way.
> I found that gtk1 does not provides a direct pointer for a bitmap
> since it fetches the data from the X server (not surprise due to its
> design). I dont know if gtk2, qt does some buffering or whatever
>
> Currently, GetRawImage does copy a image in a buffer.
Yes, it should be extended to optionally return the direct pointer if
available.
> To minimize
> this i think in introduce some functions (the names are dummy) to get
> the direct pointer or the nearest possible:
>
> TBitmapRecord: Info of the Bitmap necessary to process the image +
> Bitmap Data Pointer + Pointer To Private Resource
>
> function GetBitmapData(HBITMAP;var TBitMapRecord, Whatever);
> function ReleaseBitmapData(TBitMapRecord);
The parameters will probably look like TRawImageDescription. Maybe we
don't need a new function, just extend the RawImageXXX functions.
> Under Win32:
> GetBitmapData: will get the Direct pointer through GetObject
> ReleaseBitmapData: Does nothing
>
> Under Gtk
> GetBitmapData: will get the Data Pointer from a PGdKImage created
> through gdk_image_get (No copy to buffer here). Stores the GdkImage
> in Private Resource Field
> ReleaseBitmapData: Releases the GdkImage
Beware: gdk_image_get does not always return a direct pointer. Not even
the format of putting and getting is the same. At the moment the gtk
intf auto converts if it spots a difference.
> With this abstraction we avoid the current copy in gtk (the possible)
> and get a direct pointer in win32 in a transparent way.
>
> Is necessary to define what informations should be fetched (the
> minimal necessary to process the image and also common between the
> interfaces), the functions parameters, returnvalues, see the other
> interfaces, etc.
>
> BTW: I found a way to simplify/optimize the code of GetRawImage*
> under win32. I will do some testing and post a patch later.
Great.
Mattias
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives