{ ***************************************************************************** * 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.