mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-15 19:42:49 +02:00
189 lines
6.6 KiB
PHP
189 lines
6.6 KiB
PHP
{%MainUnit customdrawnint.pas}
|
|
{******************************************************************************
|
|
All CustomDrawn interface support routines
|
|
Initial Revision : Sat Jan 17 19:00:00 2004
|
|
|
|
!! Keep alphabetical !!
|
|
|
|
******************************************************************************
|
|
Implementation
|
|
******************************************************************************
|
|
|
|
*****************************************************************************
|
|
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.
|
|
*****************************************************************************
|
|
}
|
|
|
|
//##apiwiz##sps## // Do not remove
|
|
|
|
function TCDWidgetSet.AskUser(const DialogCaption, DialogMessage: string;
|
|
DialogType: LongInt; Buttons: TDialogButtons; HelpCtx: Longint): LongInt;
|
|
begin
|
|
end;
|
|
|
|
(*{------------------------------------------------------------------------------
|
|
Function: CreateEmptyRegion
|
|
Params:
|
|
Returns: valid empty region
|
|
------------------------------------------------------------------------------}
|
|
function TQtWidgetSet.CreateEmptyRegion: hRGN;
|
|
begin
|
|
Result:= HRGN(TQtRegion.Create(True));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Function: CreateStandardCursor
|
|
Params:
|
|
Returns:
|
|
------------------------------------------------------------------------------}
|
|
function TQtWidgetSet.CreateStandardCursor(ACursor: SmallInt): HCURSOR;
|
|
var
|
|
CursorShape: QtCursorShape;
|
|
begin
|
|
Result := 0;
|
|
if ACursor < crLow then Exit;
|
|
if ACursor > crHigh then Exit;
|
|
|
|
// TODO: map is better
|
|
case ACursor of
|
|
crNone : CursorShape := QtBlankCursor;
|
|
crArrow : CursorShape := QtArrowCursor;
|
|
crCross : CursorShape := QtCrossCursor;
|
|
crIBeam : CursorShape := QtIBeamCursor;
|
|
crSizeAll : CursorShape := QtSizeAllCursor;
|
|
crSizeNESW : CursorShape := QtSizeBDiagCursor;
|
|
crSizeNS : CursorShape := QtSizeVerCursor;
|
|
crSizeNWSE : CursorShape := QtSizeFDiagCursor;
|
|
crSizeWE : CursorShape := QtSizeHorCursor;
|
|
crSizeNW : CursorShape := QtSizeFDiagCursor;
|
|
crSizeN : CursorShape := QtSizeVerCursor;
|
|
crSizeNE : CursorShape := QtSizeBDiagCursor;
|
|
crSizeW : CursorShape := QtSizeHorCursor;
|
|
crSizeE : CursorShape := QtSizeHorCursor;
|
|
crSizeSW : CursorShape := QtSizeBDiagCursor;
|
|
crSizeS : CursorShape := QtSizeVerCursor;
|
|
crSizeSE : CursorShape := QtSizeFDiagCursor;
|
|
crUpArrow : CursorShape := QtUpArrowCursor;
|
|
crHourGlass : CursorShape := QtWaitCursor;
|
|
crHSplit : CursorShape := QtSplitHCursor;
|
|
crVSplit : CursorShape := QtSplitVCursor;
|
|
crNo : CursorShape := QtForbiddenCursor;
|
|
crAppStart : CursorShape := QtBusyCursor;
|
|
crHelp : CursorShape := QtWhatsThisCursor;
|
|
crHandPoint : CursorShape := QtPointingHandCursor;
|
|
else
|
|
CursorShape := QtCursorShape(-1);
|
|
end;
|
|
if CursorShape <> QtCursorShape(-1) then
|
|
Result := HCURSOR(TQtCursor.Create(CursorShape));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Function: FontIsMonoSpace
|
|
Params:
|
|
Returns:
|
|
------------------------------------------------------------------------------}
|
|
function TQtWidgetSet.FontIsMonoSpace(Font: HFont): Boolean;
|
|
var
|
|
QtFontInfo: QFontInfoH;
|
|
begin
|
|
Result := IsValidGDIObject(Font);
|
|
if Result then
|
|
begin
|
|
QtFontInfo := QFontInfo_create(TQtFont(Font).FHandle);
|
|
try
|
|
Result := QFontInfo_fixedPitch(QtFontInfo);
|
|
finally
|
|
QFontInfo_destroy(QtFontInfo);
|
|
end;
|
|
end;
|
|
end;*)
|
|
|
|
procedure TCDWidgetSet.HideVirtualKeyboard();
|
|
begin
|
|
|
|
end;
|
|
|
|
function TCDWidgetSet.IsMobilePlatform: Boolean;
|
|
begin
|
|
Result := Application.ApplicationType in [atPDA, atKeyPadDevice, atTV, atMobileEmulator];
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Function: PromptUser
|
|
Params:
|
|
Returns:
|
|
------------------------------------------------------------------------------}
|
|
function TCDWidgetSet.PromptUser(const DialogCaption : string;
|
|
const DialogMessage : string;
|
|
DialogType : LongInt;
|
|
Buttons : PLongInt;
|
|
ButtonCount : LongInt;
|
|
DefaultIndex : LongInt;
|
|
EscapeResult : LongInt) : LongInt;
|
|
begin
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Function: RawImage_FromDevice
|
|
Params: ADC:
|
|
ARect:
|
|
ARawImage:
|
|
Returns:
|
|
|
|
This function is utilized when the function TBitmap.LoadFromDevice is called
|
|
|
|
The main use for this function is to get a screenshot. It may have other uses,
|
|
but this is the only one implemented here.
|
|
|
|
MWE: exept for the desktop, there is always a bitmep selected in the DC.
|
|
So get this internal bitmap and pass it to RawImage_FromBitmap
|
|
|
|
Reference documentation:
|
|
|
|
Technical Q&A QA1509 Getting the pixel data from a CGImage object
|
|
http://developer.apple.com/library/mac/#qa/qa1509/_index.html
|
|
|
|
CGDisplayCreateImage
|
|
http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html
|
|
|
|
http://lists.apple.com/archives/cocoa-dev/2011/Feb/msg00704.html
|
|
|
|
CFDataRef
|
|
http://developer.apple.com/library/ios/#DOCUMENTATION/CoreFoundation/Reference/CFDataRef/Reference/reference.html
|
|
------------------------------------------------------------------------------}
|
|
function TCDWidgetSet.RawImage_FromDevice(out ARawImage: TRawImage; ADC: HDC; const ARect: TRect): Boolean;
|
|
var
|
|
screenshotImage: CGImageRef;
|
|
lRect: CGRect;
|
|
lScreenRawImage: TRawImage;
|
|
lDataLength: SizeInt;
|
|
begin
|
|
Result := True;
|
|
|
|
ARawImage.Init;
|
|
ARawImage.Description.Init_BPP32_A8R8G8B8_BIO_TTB(ScreenBitmapWidth, ScreenBitmapHeight);
|
|
|
|
// Take the screenshot
|
|
screenshotImage := CGDisplayCreateImage(CGMainDisplayID()); // Requires 10.6+
|
|
|
|
// Draw it to our screen bitmap
|
|
lRect := CGRectMake(0, 0, ScreenBitmapWidth, ScreenBitmapHeight);
|
|
CGContextDrawImage(ScreenBitmapContext, lRect, screenshotImage);
|
|
|
|
// Now copy the data
|
|
ScreenImage.GetRawImage(lScreenRawImage, False);
|
|
ARawImage.CreateData(False);
|
|
lDataLength := Min(Int64(lScreenRawImage.DataSize), Int64(ARawImage.DataSize));
|
|
System.Move(lScreenRawImage.Data^, ARawImage.Data^, lDataLength);
|
|
end;
|
|
|
|
procedure TCDWidgetset.ShowVirtualKeyboard();
|
|
begin
|
|
end;
|
|
|
|
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
|