1{%MainUnit ../osprinters.pas}
2{
3  Author: Olivier Guilbaud
4
5 *****************************************************************************
6  This file is part of the Lazarus Component Library (LCL)
7
8  See the file COPYING.modifiedLGPL.txt, included in this distribution,
9  for details about the license.
10 *****************************************************************************
11
12  Abstract:
13    This unit provide an access at Printers for Win32
14
15  History
16    04/03/2005 OG - Fix build (from Jesus)
17                  - Fix select printer dialog.
18    09/03/2005 OG - Includes files for osPrinters
19
20}
21
22uses
23  Classes, SysUtils, LazUTF8, Printers, LCLType, Windows;
24
25
26Type
27  THandleType = (htNone, htIC, htDC);
28
29  { TWinPrinter }
30
31  TWinPrinter = class(TPrinter)
32  private
33    //fDefaultPrinter : String;
34    fLastHandleType : THandleType;
35    fDC             : HDC;
36    fPrinterHandle  : THandle;
37    procedure SetIC;
38    procedure SetDC;
39    procedure ClearDC;
40    procedure FreeDC;
41    function UpdateDevMode(APrinterIndex:Integer): boolean;
42
43  protected
44    function GetDefaultPrinter: string;
45    procedure DoBeginDoc; override;
46    procedure DoNewPage; override;
47    procedure DoBeginPage; override;
48    procedure DoEndPage; override;
49    procedure DoEndDoc(aAborted : Boolean); override;
50    procedure DoAbort; override;
51
52    procedure DoEnumPrinters(Lst : TStrings); override;
53    procedure DoResetPrintersList; override;
54
55    procedure DoEnumPapers(Lst : TStrings); override;
56    function DoGetPaperName: string; override;
57    function DoGetDefaultPaperName: string; override;
58    procedure DoSetPaperName(aName : string); override;
59    function DoGetPaperRect(aName : string; Var aPaperRc : TPaperRect) : Integer; override;
60    function DoSetPaperRect(aPaperRc: TPaperRect):boolean; override;
61
62    procedure DoEnumBins(Lst : TStrings); override;
63    function DoGetDefaultBinName: string; override;
64    function DoGetBinName: string; override;
65    procedure DoSetBinName(aName: string); override;
66    procedure DoEnumFonts(Lst: TStrings); override;
67
68    function DoSetPrinter(aName : string): Integer; override;
69
70    function DoGetCopies : Integer; override;
71    procedure DoSetCopies(aValue : Integer); override;
72    function DoGetOrientation: TPrinterOrientation; override;
73    procedure DoSetOrientation(aValue : TPrinterOrientation); override;
74
75    function GetXDPI: Integer; override;
76    function GetYDPI: Integer; override;
77    function GetPrinterType: TPrinterType;override;
78    function DoGetPrinterState: TPrinterState;override;
79    function GetCanPrint: Boolean;override;
80    function GetCanRenderCopies : Boolean;override;
81    function GetHandlePrinter : HDC;
82    procedure SetHandlePrinter(aValue : HDC);
83    procedure RawModeChanging; override;
84    procedure PrinterSelected; override;
85    procedure DoDestroy; override;
86  public
87    constructor Create; override;
88
89    function Write(const Buffer; Count:Integer; out Written: Integer): Boolean; override;
90
91    //Warning not portable functions here
92    procedure AdvancedProperties;
93    //Warning it is a not potable property
94    property Handle : HDC read GetHandlePrinter write SetHandlePrinter;
95
96  end;
97
98