2
*****************************************************************************
3
* CustomDrawnWSForms.pp *
7
*****************************************************************************
9
*****************************************************************************
11
* This file is part of the Lazarus Component Library (LCL) *
13
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
14
* for details about the copyright. *
16
* This program is distributed in the hope that it will be useful, *
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
20
*****************************************************************************
22
unit CustomDrawnWSForms;
26
{$I customdrawndefines.inc}
34
SysUtils, Classes, types, ctypes,
35
{$ifdef CD_Windows}Windows, customdrawn_WinProc,{$endif}
36
{$ifdef CD_Cocoa}MacOSAll, CocoaAll, customdrawn_cocoaproc, CocoaUtils, CocoaGDIObjects,{$endif}
37
{$ifdef CD_X11}XShm, X, XLib, XUtil, XAtom, customdrawn_x11proc,{unitxft, Xft font support}{$endif}
38
{$ifdef CD_Android}customdrawn_androidproc,{$endif}
42
Controls, LCLType, Forms, LCLProc, GraphType, IntfGraphics, lazcanvas,
43
lazregions, LCLIntf, Lmessages,
46
InterfaceBase, WSForms, WSProc, WSLCLClasses, LCLMessageGlue,
47
customdrawnwscontrols, customdrawnint, customdrawnproc, customdrawnprivate;
50
{ TCDWSScrollingWinControl }
52
TCDWSScrollingWinControl = class(TWSScrollingWinControl)
58
TCDWSScrollBox = class(TWSScrollBox)
60
// class procedure ScrollBy(const AWinControl: TScrollingWinControl;
61
// const DeltaX, DeltaY: integer); override;
66
TCDWSCustomFrame = class(TWSCustomFrame)
68
// class procedure ScrollBy(const AWinControl: TScrollingWinControl;
69
// const DeltaX, DeltaY: integer); override;
74
TCDWSFrame = class(TWSFrame)
80
TCDWSCustomForm = class(TWSCustomForm)
83
class function CalcBorderIconsFlags(const AForm: TCustomForm): dword;
84
class function CalcBorderIconsFlagsEx(const AForm: TCustomForm): DWORD;
85
class procedure CalcFormWindowFlags(const AForm: TCustomForm;
86
var Flags, FlagsEx: dword);
87
//class procedure CalculateDialogPosition(var Params: TCreateWindowExParams;
88
//Bounds: TRect; lForm: TCustomForm);
89
class function GetDesigningBorderStyle(const AForm: TCustomForm): TFormBorderStyle;
90
class function CalcBorderStyleFlags(const AForm: TCustomForm): DWORD;
91
class function CalcBorderStyleFlagsEx(const AForm: TCustomForm): DWORD;
92
class procedure AdjustFormBounds(const AForm: TCustomForm; out SizeRect: TRect);
93
class procedure WSWinControl_SetBounds(const AWinControl: TWinControl;
94
const ALeft, ATop, AWidth, AHeight: Integer);
97
class procedure UpdateMotifWMHints(const AWinControl: TWinControl; CanMaximize: Boolean);
98
class procedure SetPosition(const AWinControl: TWinControl; const APosition: TPoint);
99
class procedure SetSize(const AWinControl: TWinControl; const ASize: TSize);
100
class procedure SetMinMaxSize(const AWinControl: TWinControl; const AMinSize, AMaxSize: TSize);
101
class procedure CreateX11Canvas(AWindowInfo: TX11WindowInfo);
102
class procedure DrawRawImageToGC(ARawImage: TRawImage;
103
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
104
class function alloc_xshm_image(dpy: PDisplay; vis: PVisual;
105
width, height, depth: Integer; out shminfo: TXShmSegmentInfo): PXImage;
106
class procedure destroy_xshm_image(img: PXImage; var shminfo: TXShmSegmentInfo);
107
class procedure DrawRawImageToGC_XShmPutImage(ARawImage: TRawImage;
108
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
109
class procedure DrawRawImageToGC_XPutImage(ARawImage: TRawImage;
110
ADestWindowInfo: TX11WindowInfo; ADestX, ADestY, ADestWidth, ADestHeight: Integer);
112
class procedure EvKeyPressed(const AWinControl: TWinControl;
113
AWindowInfo: TX11WindowInfo; var Event: TXKeyEvent);
114
class procedure EvKeyReleased(const AWinControl: TWinControl;
115
AWindowInfo: TX11WindowInfo; var Event: TXKeyEvent);
116
class procedure EvMousePressed(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
117
var Event: TXButtonEvent);
118
class procedure EvMouseReleased(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
119
var Event: TXButtonEvent);
120
class procedure EvMouseEnter(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
121
class procedure EvMouseLeave(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
122
class procedure EvMouseMove(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
123
var Event: TXMotionEvent);
124
class procedure EvFocusIn(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
125
class procedure EvFocusOut(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
126
class procedure EvPaint(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
127
class procedure EvPaintEx(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo);
128
class procedure EvConfigureNotify(const AWinControl: TWinControl; AWindowInfo: TX11WindowInfo;
129
var Event: TXConfigureEvent);
130
class procedure EvClientMessage(const AWinControl: TWinControl;
131
AWindowInfo: TX11WindowInfo; var Event: TXClientMessageEvent);
133
class function StartComposing(const Event: TXKeyEvent): TKeySym;
134
class function X11KeyToLCLKey(AX11Key: TKeySym): Word;
136
class function DoCreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
137
class procedure DoShowHide(const AWinControl: TWinControl);
139
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
140
class procedure DestroyHandle(const AWinControl: TWinControl); override;
142
class procedure SetBounds(const AWinControl: TWinControl;
143
const ALeft, ATop, AWidth, AHeight: Integer); override;
144
class procedure SetBorderIcons(const AForm: TCustomForm;
145
const ABorderIcons: TBorderIcons); override;
146
class procedure SetFormBorderStyle(const AForm: TCustomForm;
147
const AFormBorderStyle: TFormBorderStyle); override;
148
// class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override;
149
// class procedure SetPopupParent(const ACustomForm: TCustomForm;
150
// const APopupMode: TPopupMode; const APopupParent: TCustomForm); override;
151
class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override;
152
class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override;
153
class procedure ShowModal(const ACustomForm: TCustomForm); override;
154
class procedure ShowHide(const AWinControl: TWinControl); override;
156
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
157
class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; override;
158
class procedure SetText(const AWinControl: TWinControl; const AText: String); override;
159
class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override;
160
class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override;
162
{ class function CanFocus(const AWinControl: TWinControl): Boolean; override;
163
class procedure CloseModal(const ACustomForm: TCustomForm); override;
164
class procedure SetAllowDropFiles(const AForm: TCustomForm; AValue: Boolean); override;
165
class procedure SetAlphaBlend(const ACustomForm: TCustomForm;
166
const AlphaBlend: Boolean; const Alpha: Byte); override;}
171
TCDWSForm = class(TWSForm)
177
TCDWSHintWindow = class(TWSHintWindow)
179
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
184
TCDWSScreen = class(TWSScreen)
188
{ TCDWSApplicationProperties }
190
TCDWSApplicationProperties = class(TWSApplicationProperties)
198
{$include customdrawnwsforms_win.inc}
201
{$include customdrawnwsforms_cocoa.inc}
204
{$include customdrawnwsforms_x11.inc}
207
{$include customdrawnwsforms_android.inc}