mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-06 02:57:59 +02:00
138 lines
3.6 KiB
ObjectPascal
138 lines
3.6 KiB
ObjectPascal
{ $Id$}
|
|
{
|
|
*****************************************************************************
|
|
* wsreferences.pp *
|
|
* --------------- *
|
|
* *
|
|
* *
|
|
*****************************************************************************
|
|
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
}
|
|
unit WSReferences;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$I lcl_defines.inc}
|
|
|
|
interface
|
|
|
|
//uses
|
|
// Types;
|
|
|
|
|
|
type
|
|
// use TLCLHandle instead of THandle since THandle = longint under 64bit linux
|
|
TLCLHandle = PtrUInt;
|
|
PLCLHandle = ^TLCLHandle;
|
|
|
|
{ TWSReference }
|
|
{
|
|
Abstract (temporary) base object for all references to WS classes.
|
|
This reference replaces the functionality of a Handle.
|
|
An object is choosen to disallow assignments of different types of handles
|
|
}
|
|
PWSReference = ^TWSReference;
|
|
TWSReference = object
|
|
private
|
|
function GetAllocated: Boolean; inline;
|
|
protected
|
|
FRef: record
|
|
case Byte of
|
|
0: (Ptr: Pointer);
|
|
1: (Handle: TLCLHandle);
|
|
end;
|
|
public
|
|
// NOTE: These _Methods are temporary and for widgetset use only.
|
|
// They can be removed anytime, without notice
|
|
procedure _Clear;
|
|
procedure _Init(APtr: Pointer);
|
|
procedure _Init(AHandle: TLCLHandle);
|
|
property _Handle: TLCLHandle read FRef.Handle;
|
|
//----
|
|
|
|
property Allocated: Boolean read GetAllocated;
|
|
property Ptr: Pointer read FRef.Ptr;
|
|
end;
|
|
|
|
// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
|
|
// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
|
|
// NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
|
|
//
|
|
// All properties with _ are temporary and for lcl use only.
|
|
// They can be removed anytime, without notice
|
|
//
|
|
// (don't complain that I didn't warn you)
|
|
|
|
TWSCustomImageListReference = object(TWSReference)
|
|
public
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSGDIObjReference = object(TWSReference)
|
|
end;
|
|
|
|
TWSBitmapReference = object(TWSGDIObjReference)
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSBrushReference = object(TWSGDIObjReference)
|
|
property _lclHandle: TLCLHandle write FRef.Handle;
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSPenReference = object(TWSGDIObjReference)
|
|
property _lclHandle: TLCLHandle write FRef.Handle;
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSFontReference = object(TWSGDIObjReference)
|
|
property _lclHandle: TLCLHandle write FRef.Handle;
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSRegionReference = object(TWSGDIObjReference)
|
|
property _lclHandle: TLCLHandle write FRef.Handle;
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSDeviceContextReference = object(TWSReference)
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
TWSIconReference = object(TWSReference)
|
|
property Handle: TLCLHandle read FRef.Handle;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TWSReference }
|
|
|
|
procedure TWSReference._Clear;
|
|
begin
|
|
FRef.Ptr := nil;
|
|
end;
|
|
|
|
procedure TWSReference._Init(APtr: Pointer);
|
|
begin
|
|
FRef.Ptr := APtr;
|
|
end;
|
|
|
|
procedure TWSReference._Init(AHandle: TLCLHandle);
|
|
begin
|
|
FRef.Handle := AHandle;
|
|
end;
|
|
|
|
function TWSReference.GetAllocated: Boolean;
|
|
begin
|
|
Result := FRef.Ptr <> nil;
|
|
end;
|
|
|
|
|
|
end.
|
|
|