mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-25 00:43:14 +02:00
210 lines
9.3 KiB
ObjectPascal
210 lines
9.3 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
* CustomDrawnWSForms.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 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 CustomDrawnWSForms;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
{$I customdrawndefines.inc}
|
|
|
|
interface
|
|
|
|
//{$I qtdefines.inc}
|
|
|
|
uses
|
|
// RTL
|
|
SysUtils, Classes, types, ctypes,
|
|
{$ifdef CD_Windows}Windows, customdrawn_WinProc,{$endif}
|
|
{$ifdef CD_Cocoa}MacOSAll, CocoaAll, CocoaPrivate, CocoaUtils, CocoaGDIObjects,{$endif}
|
|
{$ifdef CD_X11}XShm, X, XLib, XUtil, XAtom, customdrawn_x11proc,{unitxft, Xft font support}{$endif}
|
|
{$ifdef CD_Android}customdrawn_androidproc,{$endif}
|
|
// LazUtils
|
|
lazutf8sysutils,
|
|
// LCL
|
|
Controls, LCLType, Forms, LCLProc, GraphType, IntfGraphics, lazcanvas,
|
|
lazregions, LCLIntf, Lmessages,
|
|
customdrawncontrols,
|
|
// Widgetset
|
|
InterfaceBase, WSForms, WSProc, WSLCLClasses, LCLMessageGlue,
|
|
customdrawnwscontrols, customdrawnint, customdrawnproc, customdrawnprivate;
|
|
|
|
type
|
|
{ TCDWSScrollingWinControl }
|
|
|
|
TCDWSScrollingWinControl = class(TWSScrollingWinControl)
|
|
published
|
|
end;
|
|
|
|
{ TCDWSScrollBox }
|
|
|
|
TCDWSScrollBox = class(TWSScrollBox)
|
|
published
|
|
// class procedure ScrollBy(const AWinControl: TScrollingWinControl;
|
|
// const DeltaX, DeltaY: integer); override;
|
|
end;
|
|
|
|
{ TCDWSCustomFrame }
|
|
|
|
TCDWSCustomFrame = class(TWSCustomFrame)
|
|
published
|
|
// class procedure ScrollBy(const AWinControl: TScrollingWinControl;
|
|
// const DeltaX, DeltaY: integer); override;
|
|
end;
|
|
|
|
{ TCDWSFrame }
|
|
|
|
TCDWSFrame = class(TWSFrame)
|
|
published
|
|
end;
|
|
|
|
{ TCDWSCustomForm }
|
|
|
|
TCDWSCustomForm = class(TWSCustomForm)
|
|
public
|
|
{$ifdef CD_Windows}
|
|
class function CalcBorderIconsFlags(const AForm: TCustomForm): dword;
|
|
class function CalcBorderIconsFlagsEx(const AForm: TCustomForm): DWORD;
|
|
class procedure CalcFormWindowFlags(const AForm: TCustomForm;
|
|
var Flags, FlagsEx: dword);
|
|
//class procedure CalculateDialogPosition(var Params: TCreateWindowExParams;
|
|
//Bounds: TRect; lForm: TCustomForm);
|
|
class function GetDesigningBorderStyle(const AForm: TCustomForm): TFormBorderStyle;
|
|
class function CalcBorderStyleFlags(const AForm: TCustomForm): DWORD;
|
|
class function CalcBorderStyleFlagsEx(const AForm: TCustomForm): DWORD;
|
|
class procedure AdjustFormBounds(const AForm: TCustomForm; out SizeRect: TRect);
|
|
class procedure WSWinControl_SetBounds(const AWinControl: TWinControl;
|
|
const ALeft, ATop, AWidth, AHeight: Integer);
|
|
{$endif}
|
|
{$ifdef CD_X11}
|
|
class procedure UpdateMotifWMHints(const AWinControl: TWinControl; CanMaximize: Boolean);
|
|
class procedure SetPosition(const AWinControl: TWinControl; const APosition: TPoint);
|
|
class procedure SetSize(const AWinControl: TWinControl; const ASize: TSize);
|
|
class procedure SetMinMaxSize(const AWinControl: TWinControl; const AMinSize, AMaxSize: TSize);
|
|
class procedure CreateX11Canvas(AWindowInfo: TX11WindowInfo);
|
|
class procedure DrawRawImageToGC(ARawImage: TRawImage;
|
|
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
|
|
class function alloc_xshm_image(dpy: PDisplay; vis: PVisual;
|
|
width, height, depth: Integer; out shminfo: TXShmSegmentInfo): PXImage;
|
|
class procedure destroy_xshm_image(img: PXImage; var shminfo: TXShmSegmentInfo);
|
|
class procedure DrawRawImageToGC_XShmPutImage(ARawImage: TRawImage;
|
|
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
|
|
class procedure DrawRawImageToGC_XPutImage(ARawImage: TRawImage;
|
|
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
|
|
// Event handling
|
|
class procedure EvKeyPressed(const AWinControl: TWinControl;
|
|
AWindowInfo: TX11WindowInfo; var Event: TXKeyEvent);
|
|
class procedure EvKeyReleased(const AWinControl: TWinControl;
|
|
AWindowInfo: TX11WindowInfo; var Event: TXKeyEvent);
|
|
class procedure EvMousePressed(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
|
|
var Event: TXButtonEvent);
|
|
class procedure EvMouseReleased(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
|
|
var Event: TXButtonEvent);
|
|
class procedure EvMouseEnter(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
|
|
class procedure EvMouseLeave(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
|
|
class procedure EvMouseMove(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
|
|
var Event: TXMotionEvent);
|
|
class procedure EvFocusIn(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
|
|
class procedure EvFocusOut(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
|
|
class procedure EvPaint(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
|
|
class procedure EvConfigureNotify(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
|
|
var Event: TXConfigureEvent);
|
|
class procedure EvClientMessage(const AWinControl: TWinControl;
|
|
AWindowInfo: TX11WindowInfo; var Event: TXClientMessageEvent);
|
|
// Key routines
|
|
class function StartComposing(const Event: TXKeyEvent): TKeySym;
|
|
class function X11KeyToLCLKey(AX11Key: TKeySym): Word;
|
|
{$endif}
|
|
class function DoCreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
class procedure DoShowHide(const AWinControl: TWinControl);
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure DestroyHandle(const AWinControl: TWinControl); override;
|
|
|
|
class procedure SetBounds(const AWinControl: TWinControl;
|
|
const ALeft, ATop, AWidth, AHeight: Integer); override;
|
|
class procedure SetBorderIcons(const AForm: TCustomForm;
|
|
const ABorderIcons: TBorderIcons); override;
|
|
class procedure SetFormBorderStyle(const AForm: TCustomForm;
|
|
const AFormBorderStyle: TFormBorderStyle); override;
|
|
// class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override;
|
|
// class procedure SetPopupParent(const ACustomForm: TCustomForm;
|
|
// const APopupMode: TPopupMode; const APopupParent: TCustomForm); override;
|
|
class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override;
|
|
class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override;
|
|
class procedure ShowModal(const ACustomForm: TCustomForm); override;
|
|
class procedure ShowHide(const AWinControl: TWinControl); override;
|
|
|
|
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
|
|
class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; override;
|
|
class procedure SetText(const AWinControl: TWinControl; const AText: String); override;
|
|
class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override;
|
|
class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override;
|
|
|
|
{ class function CanFocus(const AWinControl: TWinControl): Boolean; override;
|
|
class procedure CloseModal(const ACustomForm: TCustomForm); override;
|
|
class procedure SetAllowDropFiles(const AForm: TCustomForm; AValue: Boolean); override;
|
|
class procedure SetAlphaBlend(const ACustomForm: TCustomForm;
|
|
const AlphaBlend: Boolean; const Alpha: Byte); override;}
|
|
end;
|
|
|
|
{ TCDWSForm }
|
|
|
|
TCDWSForm = class(TWSForm)
|
|
published
|
|
end;
|
|
|
|
{ TCDWSHintWindow }
|
|
|
|
TCDWSHintWindow = class(TWSHintWindow)
|
|
published
|
|
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
{ TCDWSScreen }
|
|
|
|
TCDWSScreen = class(TWSScreen)
|
|
published
|
|
end;
|
|
|
|
{ TCDWSApplicationProperties }
|
|
|
|
TCDWSApplicationProperties = class(TWSApplicationProperties)
|
|
published
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{$ifdef CD_Windows}
|
|
{$include customdrawnwsforms_win.inc}
|
|
{$endif}
|
|
{$ifdef CD_Cocoa}
|
|
{$include customdrawnwsforms_cocoa.inc}
|
|
{$endif}
|
|
{$ifdef CD_X11}
|
|
{$include customdrawnwsforms_x11.inc}
|
|
{$endif}
|
|
{$ifdef CD_Android}
|
|
{$include customdrawnwsforms_android.inc}
|
|
{$endif}
|
|
|
|
end.
|