{ $Id$ ------------------------------ gtkdef.pp - Type definitions ------------------------------ @created(Wed Jan 24st WET 2001) @lastmod($Date$) @author(Marc Weustink ) This unit contains type definitions needed in the GTK <-> LCL interface ***************************************************************************** * * * This file is part of the Lazarus Component Library (LCL) * * * * See the file COPYING.LCL, included in this distribution, * * for details about the copyright. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * * ***************************************************************************** } unit GtkDef; {$mode objfpc} {$LONGSTRINGS ON} interface uses gtk, gdk, LCLLinux, LCLType, VclGlobals, Classes; type TGDIType = (gdiBitmap, gdiBrush, gdiFont, gdiPen, gdiRegion); TGDIBitmapType = (gbBitmap, gbPixmap, gbImage); PGDIRGB = ^TGDIRGB; TGDIRGB = record Red, Green, Blue: Byte; end; PGDIRawImage = ^TGDIRawImage; TGDIRawImage = record Height, Width: Integer; Depth: Byte; Data: array[0..0] of TGDIRGB; end; PGDIObject = ^TGDIObject; TGDIObject = record case GDIType: TGDIType of gdiBitmap: ( GDIBitmapMaskObject: PGdkPixmap; case GDIBitmapType: TGDIBitmapType of gbBitmap: (GDIBitmapObject: PGdkBitmap); // pixmap with depth 1 gbPixmap: (GDIPixmapObject: PGdkPixmap); // normal pixmap gbImage : (GDIRawImageObject: PGDIRawImage); ); gdiBrush: ( // ToDo: add bitmap mask GDIBrushColor: TGdkColor; GDIBrushFill: TGdkFill; GDIBrushPixMap: PGdkPixmap; ); gdiFont: ( GDIFontObject: PGdkFont; LogFont: TLogFont;// for now font info is stored as well, later query font params ); gdiPen: ( GDIPenColor: TGdkColor; GDIPenWidth: Integer; GDIPenStyle: Word; ); gdiRegion: ( GDIRegionObject: PGdkRegion; ); end; // move to class ?? PDeviceContext = ^TDeviceContext; TDeviceContext = record hWnd: HWND; GC: pgdkGC; Drawable: PGDKDrawable; PenPos: TPoint; CurrentBitmap: PGdiObject; CurrentFont: PGdiObject; CurrentPen: PGdiObject; CurrentBrush: PGdiObject; CurrentTextColor: TGdkColor; CurrentBackColor: TGdkColor; ClipRegion : hRGN; SavedContext: PDeviceContext; // linked list of saved DCs end; // Info needed by the API of a HWND (=Widget) PWinWidgetInfo = ^TWinWidgetInfo; TWinWidgetInfo = record ImplementationWidget: PGTKWidget; // used to be "fixed" or "core-child" UpdateRect: TRect; // used by LM_Paint, beginpaint etc WndProc: Integer; // window data Style: Integer; ExStyle: Integer; UserData: Integer; EventMask: TGdkEventMask; end; // clipboard type TClipboardEventData = record TimeID: Cardinal; Data: TGtkSelectionData; end; PClipboardEventData = ^TClipboardEventData; TGtkClipboardFormat = ( gfCLASS, gfCOMPOUND_TEXT, gfDELETE, gfFILE_NAME, gfHOST_NAME, gfLENGTH, gfMULTIPLE, gfNAME, gfOWNER_OS, gfPROCESS, gfSTRING, gfTARGETS, gfTEXT, gfTIMESTAMP, gfUSER); TGtkClipboardFormats = set of TGtkClipboardFormat; const GtkClipboardFormatName: array[TGtkClipboardFormat] of string = ( 'CLASS', 'COMPOUND_TEXT', 'DELETE', 'FILE_NAME', 'HOST_NAME', 'LENGTH', 'MULTIPLE', 'NAME', 'OWNER_OS', 'PROCESS', 'STRING', 'TARGETS', 'TEXT', 'TIMESTAMP', 'USER' ); implementation end. { ============================================================================= $Log$ Revision 1.10 2002/08/15 15:46:49 lazarus MG: added changes from Andrew (Clipping) Revision 1.9 2002/06/09 14:00:41 lazarus MG: fixed persistent caret and implemented Form.BorderStyle=bsNone Revision 1.8 2002/06/04 15:17:23 lazarus MG: improved TFont for XLFD font names Revision 1.7 2002/06/01 08:41:28 lazarus MG: DrawFramControl now uses gtk style, transparent STrechBlt Revision 1.6 2002/05/10 06:05:56 lazarus MG: changed license to LGPL Revision 1.5 2002/02/03 00:24:01 lazarus TPanel implemented. Basic graphic primitives split into GraphType package, so that we can reference it from interface (GTK, Win32) units. New Frame3d canvas method that uses native (themed) drawing (GTK only). New overloaded Canvas.TextRect method. LCLLinux and Graphics was split, so a bunch of files had to be modified. Revision 1.4 2001/11/12 16:56:08 lazarus MG: CLIPBOARD Revision 1.3 2001/03/27 21:12:54 lazarus MWE: + Turned on longstrings + modified memotest to add lines Revision 1.2 2001/01/25 21:38:57 lazarus MWE: * fixed lil bug I commetted yesterday (listbox crash) Revision 1.1 2001/01/24 23:26:40 lazarus MWE: = moved some types to gtkdef + added WinWidgetInfo + added some initialization to Application.Create }