mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-17 06:36:11 +02:00
102 lines
3.2 KiB
PHP
102 lines
3.2 KiB
PHP
{%MainUnit ../osprinters.pas}
|
|
uses
|
|
MacOSAll,
|
|
Classes, SysUtils, Printers, LCLType, CarbonCanvas, CarbonPrinting, ppdresolution;
|
|
|
|
type
|
|
{ TCarbonPrinterContext }
|
|
|
|
TCarbonPrinterContext = class(TCarbonDeviceContext)
|
|
protected
|
|
function GetSize: TPoint; override;
|
|
public
|
|
procedure Release;
|
|
procedure Reset; override;
|
|
end;
|
|
|
|
TPrinterResolution = record
|
|
Valid: boolean;
|
|
HorzRes, VertRes: Integer;
|
|
end;
|
|
|
|
{ TCarbonPrinter }
|
|
|
|
TCarbonPrinter = class(TPrinter)
|
|
private
|
|
FPrintSession: PMPrintSession;
|
|
FPrintSettings: PMPrintSettings;
|
|
FPageFormat: PMPageFormat;
|
|
FBeginDocumentStatus: OSStatus;
|
|
FNewPageStatus: OSStatus;
|
|
FPrinterContext: TCarbonPrinterContext;
|
|
FPrinterArray: CFArrayRef;
|
|
FPaperArray: CFArrayRef;
|
|
FDefaultPrinter: String;
|
|
FDefaultResolution: TPrinterResolution;
|
|
|
|
procedure CreatePrintSession;
|
|
procedure CreatePrintSettings;
|
|
function GetCurrentPrinter: PMPrinter;
|
|
function GetCurrentPrinterName: String;
|
|
|
|
function CreatePageFormat(APaper: String): PMPageFormat;
|
|
|
|
function ValidatePageFormat: Boolean;
|
|
function ValidatePrintSettings: Boolean;
|
|
|
|
procedure BeginPage;
|
|
procedure EndPage;
|
|
|
|
procedure FindDefaultPrinter;
|
|
procedure BeginEnumPrinters(Lst: TStrings);
|
|
procedure EndEnumPrinters;
|
|
procedure BeginEnumPapers(Lst: TStrings);
|
|
procedure EndEnumPapers;
|
|
function GetOutputResolution: PMResolution;
|
|
|
|
protected
|
|
procedure DoBeginDoc; override;
|
|
procedure DoNewPage; override;
|
|
procedure DoEndDoc(aAborted : Boolean); override;
|
|
procedure DoAbort; override;
|
|
|
|
procedure DoEnumPrinters(Lst : TStrings); override;
|
|
procedure DoResetPrintersList; override;
|
|
|
|
procedure DoEnumPapers(Lst : TStrings); override;
|
|
function DoGetPaperName: string; override;
|
|
function DoGetDefaultPaperName: string; override;
|
|
procedure DoSetPaperName(aName : string); override;
|
|
function DoGetPaperRect(aName : string; Var aPaperRc : TPaperRect) : Integer; override;
|
|
|
|
function DoSetPrinter(aName : string): Integer; override;
|
|
|
|
function DoGetCopies : Integer; override;
|
|
procedure DoSetCopies(aValue : Integer); override;
|
|
function DoGetOrientation: TPrinterOrientation; override;
|
|
procedure DoSetOrientation(aValue : TPrinterOrientation); override;
|
|
|
|
function GetXDPI: Integer; override;
|
|
function GetYDPI: Integer; override;
|
|
function GetPrinterType: TPrinterType;override;
|
|
function DoGetPrinterState: TPrinterState;override;
|
|
function GetCanPrint: Boolean;override;
|
|
function GetCanRenderCopies : Boolean;override;
|
|
procedure RawModeChanging; override;
|
|
procedure DoDestroy; override;
|
|
public
|
|
procedure Validate;
|
|
procedure UpdatePrinter;
|
|
public
|
|
constructor Create; override;
|
|
function Write(const {%H-}Buffer; {%H-}Count:Integer; out Written: Integer): Boolean; override;
|
|
// Warning not portable functions here
|
|
property CurrentPrinterName: String read GetCurrentPrinterName;
|
|
property PrintSession: PMPrintSession read FPrintSession;
|
|
property PrintSettings: PMPrintSettings read FPrintSettings;
|
|
property PageFormat: PMPageFormat read FPageFormat;
|
|
// Warning it is a not portable property
|
|
property Handle: TCarbonPrinterContext read FPrinterContext;
|
|
end;
|
|
|