PrinterContext.st
author Claus Gittinger <cg@exept.de>
Tue, 10 Oct 2006 17:55:30 +0200
changeset 2235 0df6bda4b353
parent 2184 c108f1291023
child 2236 76291d984db9
permissions -rw-r--r--
pretty printed & added some documentation and examples
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2184
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     1
"
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     3
              All Rights Reserved
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     4
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     5
 This software is furnished under a license and may be used
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     6
 only in accordance with the terms of that license and with the
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
     9
 other person.  No title to or ownership of the software is
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    10
 hereby transferred.
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    11
"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    12
"{ Package: 'stx:libview2' }"
8f5996be6907 initial checkin
fm
parents:
diff changeset
    13
8f5996be6907 initial checkin
fm
parents:
diff changeset
    14
GraphicsMedium subclass:#PrinterContext
8f5996be6907 initial checkin
fm
parents:
diff changeset
    15
	instanceVariableNames:'name abort jobid printerInfo'
8f5996be6907 initial checkin
fm
parents:
diff changeset
    16
	classVariableNames:''
8f5996be6907 initial checkin
fm
parents:
diff changeset
    17
	poolDictionaries:''
8f5996be6907 initial checkin
fm
parents:
diff changeset
    18
	category:'Interface-Printing'
8f5996be6907 initial checkin
fm
parents:
diff changeset
    19
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
    20
2184
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    21
!PrinterContext class methodsFor:'documentation'!
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    22
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    23
copyright
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    24
"
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    25
 COPYRIGHT (c) 2006 by eXept Software AG
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    26
              All Rights Reserved
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    27
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    28
 This software is furnished under a license and may be used
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    29
 only in accordance with the terms of that license and with the
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    31
 be provided or otherwise made available to, or used by, any
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    32
 other person.  No title to or ownership of the software is
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    33
 hereby transferred.
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    34
"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    35
!
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    36
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    37
documentation
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    38
"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    39
    I am the mediator between the smalltalk printing protocol 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    40
    (which is the same as the graphics drawing protocol) and the
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    41
    windows printer.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    42
    When youopena printer, you will typically talk to me, and I will
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    43
    forward the graphics commands to my printer.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    44
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    45
    [author:]
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    46
        Felix Madrid (fm@exept.de)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    47
"
2184
c108f1291023 copyright methods
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
    48
! !
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    49
8f5996be6907 initial checkin
fm
parents:
diff changeset
    50
!PrinterContext class methodsFor:'instance creation'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
    51
8f5996be6907 initial checkin
fm
parents:
diff changeset
    52
fromPrinterInfo: aPrinterInfo
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    53
    "Private - Answer a Printer object given an hDC"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    54
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    55
    | aPrinter hDC|     
8f5996be6907 initial checkin
fm
parents:
diff changeset
    56
8f5996be6907 initial checkin
fm
parents:
diff changeset
    57
    hDC := aPrinterInfo createDC.
8f5996be6907 initial checkin
fm
parents:
diff changeset
    58
    hDC = 0 ifTrue: [ ^self error: 'Error while opening printer.' ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
    59
    aPrinter := self new.
8f5996be6907 initial checkin
fm
parents:
diff changeset
    60
    aPrinter printerInfo: aPrinterInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
    61
    aPrinter setDevice:(WinPrinter on: aPrinterInfo) id:nil gcId:hDC.
8f5996be6907 initial checkin
fm
parents:
diff changeset
    62
    aPrinter initExtent.
8f5996be6907 initial checkin
fm
parents:
diff changeset
    63
    ^aPrinter
8f5996be6907 initial checkin
fm
parents:
diff changeset
    64
8f5996be6907 initial checkin
fm
parents:
diff changeset
    65
    "Created: / 03-08-2006 / 12:53:52 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
    66
    "Modified: / 04-08-2006 / 12:55:01 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    67
    "Modified: / 10-10-2006 / 17:32:59 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    68
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
    69
8f5996be6907 initial checkin
fm
parents:
diff changeset
    70
printWith: aRecordingPen
8f5996be6907 initial checkin
fm
parents:
diff changeset
    71
        "Print the contents of aRecordingPen on
8f5996be6907 initial checkin
fm
parents:
diff changeset
    72
         the system printer."
8f5996be6907 initial checkin
fm
parents:
diff changeset
    73
    self new drawUsing: aRecordingPen
8f5996be6907 initial checkin
fm
parents:
diff changeset
    74
8f5996be6907 initial checkin
fm
parents:
diff changeset
    75
    "Created: / 27-07-2006 / 17:53:59 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
    76
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
    77
8f5996be6907 initial checkin
fm
parents:
diff changeset
    78
!PrinterContext class methodsFor:'accessing'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
    79
8f5996be6907 initial checkin
fm
parents:
diff changeset
    80
default
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    81
    "Answer the default Printer, or nil if none."
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    82
    
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    83
    |defaultName|
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    84
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    85
    ^ (defaultName := self defaultPrinterName) isNil 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    86
        ifTrue:[ nil ]
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    87
        ifFalse:[ self named:defaultName ]
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    88
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    89
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    90
     self default
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    91
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    92
8f5996be6907 initial checkin
fm
parents:
diff changeset
    93
    "Created: / 27-07-2006 / 17:51:43 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
    94
    "Modified: / 02-08-2006 / 17:27:09 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    95
    "Modified: / 10-10-2006 / 17:30:31 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
    96
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
    97
8f5996be6907 initial checkin
fm
parents:
diff changeset
    98
defaultMargins
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
    99
    "Private - answer aPoint containing the default horizontal and vertical
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   100
     margins for a page (units in inches)."
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   101
    
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   102
    ^ 0.5 @ 0.75
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   103
8f5996be6907 initial checkin
fm
parents:
diff changeset
   104
    "Created: / 01-08-2006 / 16:09:31 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   105
    "Modified: / 10-10-2006 / 17:30:49 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   106
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   107
8f5996be6907 initial checkin
fm
parents:
diff changeset
   108
defaultPrinterName
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   109
    "Answer the name of the default printer, or nil if none."
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   110
    
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   111
    |printerInfo printerName|
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   112
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   113
    printerInfo := OperatingSystem getDefaultPrinterName.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   114
    printerName := (printerInfo copyFrom:1 to:(printerInfo indexOf:$,) - 1) trimBlanks.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   115
    ^ printerName size == 0 ifTrue:[ nil ] ifFalse:[ printerName ]
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   116
8f5996be6907 initial checkin
fm
parents:
diff changeset
   117
    "
8f5996be6907 initial checkin
fm
parents:
diff changeset
   118
     PrinterContext defaultPrinterName
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   119
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   120
8f5996be6907 initial checkin
fm
parents:
diff changeset
   121
    "Modified: / 02-08-2006 / 17:26:09 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   122
    "Modified: / 10-10-2006 / 17:32:45 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   123
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   124
8f5996be6907 initial checkin
fm
parents:
diff changeset
   125
getPrinterInformation: printerNameString
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   126
    " Answer the printer information for the printer named printerNameString.  If no name is specified,
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   127
      answer the information for the default printer. "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   128
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   129
    | h |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   130
8f5996be6907 initial checkin
fm
parents:
diff changeset
   131
     h := OperatingSystem openPrinter: printerNameString.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   132
     ^OperatingSystem getDocumentProperties:nil hPrinter:h pDeviceName: printerNameString .
8f5996be6907 initial checkin
fm
parents:
diff changeset
   133
8f5996be6907 initial checkin
fm
parents:
diff changeset
   134
    "Created: / 27-07-2006 / 10:22:32 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   135
    "Modified: / 01-08-2006 / 16:01:44 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   136
    "Modified: / 10-10-2006 / 17:33:07 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   137
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   138
8f5996be6907 initial checkin
fm
parents:
diff changeset
   139
named: aName
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   140
    "Answer a new instance of Printer which represents
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   141
     the printer named aName as specified in the host
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   142
     Control Panel."
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   143
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   144
    aName isNil ifTrue: [ ^self default ].
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   145
    ^self new printerInfoWithName: aName
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   146
8f5996be6907 initial checkin
fm
parents:
diff changeset
   147
    "Created: / 27-07-2006 / 17:51:27 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   148
    "Modified: / 02-08-2006 / 17:26:29 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   149
    "Modified: / 10-10-2006 / 17:33:29 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   150
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   151
8f5996be6907 initial checkin
fm
parents:
diff changeset
   152
printerNames
8f5996be6907 initial checkin
fm
parents:
diff changeset
   153
        "Answer a collection of all known printer names."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   154
8f5996be6907 initial checkin
fm
parents:
diff changeset
   155
    ^OperatingSystem getPrintersNames
8f5996be6907 initial checkin
fm
parents:
diff changeset
   156
8f5996be6907 initial checkin
fm
parents:
diff changeset
   157
    "Created: / 27-07-2006 / 17:54:45 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   158
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   159
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   160
!PrinterContext class methodsFor:'testing & examples'!
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   161
8f5996be6907 initial checkin
fm
parents:
diff changeset
   162
print: aString font: aFont title: aTitle
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   163
    "Open a print dialog to allow printing of the given string
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   164
     using the given title & font."
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   165
8f5996be6907 initial checkin
fm
parents:
diff changeset
   166
    self print: aString font: aFont title: aTitle wordWrap: false     
8f5996be6907 initial checkin
fm
parents:
diff changeset
   167
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   168
   "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   169
    PrinterContext print: 'Holaaaa!! (from:  PrinterContext>>print:aString font:aFont title:aTitle)' font: nil title: 'Printing Test'
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   170
    PrinterContext print: self printingTestString font: nil title: 'Printing Test String'
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   171
    PrinterContext print: self printingTestString font: (Font family:'Arial' face:'medium' size:8) title: 'Printing Test String'
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   172
   "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   173
8f5996be6907 initial checkin
fm
parents:
diff changeset
   174
    "Created: / 27-07-2006 / 17:52:33 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   175
    "Modified: / 03-08-2006 / 18:52:31 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   176
    "Modified: / 10-10-2006 / 17:37:49 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   177
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   178
8f5996be6907 initial checkin
fm
parents:
diff changeset
   179
print: aString font: aFont title: aTitle wordWrap: wordWrap
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   180
    "Open a print dialog to allow printing of the given string
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   181
     using the given title & font."
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   182
8f5996be6907 initial checkin
fm
parents:
diff changeset
   183
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   184
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   185
    printerInfo := PrintingDialog getPrinterInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   186
    printerInfo isNil ifTrue:[^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   187
8f5996be6907 initial checkin
fm
parents:
diff changeset
   188
    printer := self fromPrinterInfo: printerInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   189
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   190
        printer
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   191
            print: aString
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   192
            font: aFont
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   193
            title: aTitle 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   194
            wordWrap: wordWrap
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   195
            marginsRect: nil 
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   196
    ] forkAt: 3
8f5996be6907 initial checkin
fm
parents:
diff changeset
   197
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   198
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   199
     PrinterContext print: 'Holaaaa!! (from:  PrinterContext>>print:aString font:aFont title:aTitle)' font: nil title: 'Printing Test' wordWrap: true
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   200
     PrinterContext print: (PrinterContext class sourceCodeAt:#'print:font:title:wordWrap:') font:nil title:'Printing Test String' wordWrap:true
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   201
     PrinterContext print: (PrinterContext class sourceCodeAt:#'print:font:title:wordWrap:') font: (Font family:'Arial' face:'medium' size:8) title: 'Printing Test String' wordWrap: true
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   202
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   203
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   204
    "Created: / 03-08-2006 / 18:51:53 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   205
    "Modified: / 10-10-2006 / 17:42:06 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   206
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   207
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   208
printCircles: arrayOfPointsAndRadius
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   209
    "Opens a print dialog and prints the given circles"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   210
8f5996be6907 initial checkin
fm
parents:
diff changeset
   211
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   212
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   213
    printerInfo := PrintingDialog getPrinterInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   214
    printerInfo isNil ifTrue:[^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   215
8f5996be6907 initial checkin
fm
parents:
diff changeset
   216
    printer := self fromPrinterInfo: printerInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   217
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   218
        printer startPrintJob: 'Circles'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   219
        arrayOfPointsAndRadius
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   220
            do:[:pointAndRadius |
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   221
                printer displayCircle:(pointAndRadius at:1) 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   222
                        radius:(pointAndRadius at:2).
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   223
            ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   224
        printer endPrintJob.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   225
    ] forkAt: 3
8f5996be6907 initial checkin
fm
parents:
diff changeset
   226
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   227
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   228
     PrinterContext printCircles:  
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   229
        (Array with: (Array with: 800@800 with: 600)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   230
               with: (Array with: 1500@1500 with: 1000)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   231
               with: (Array with: 4000@2500 with: 2000))
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   232
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   233
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   234
    "Created: / 07-08-2006 / 11:46:52 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   235
    "Modified: / 10-10-2006 / 17:36:23 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   236
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   237
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   238
printCirclesIn: rectangles
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   239
    "Opens a print dialog and prints the given circles"
2146
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   240
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   241
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   242
2146
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   243
    printerInfo := PrintingDialog getPrinterInfo.
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   244
    printerInfo isNil ifTrue:[^self].
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   245
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   246
    printer := self fromPrinterInfo: printerInfo.
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   247
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   248
        printer startPrintJob: 'Circles In Rectangles'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   249
        rectangles
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   250
           do:[:rectangle |
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   251
               printer displayCircleIn: rectangle.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   252
           ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   253
       printer endPrintJob.
2146
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   254
    ] forkAt: 3
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   255
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   256
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   257
     PrinterContext printCirclesIn:  
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   258
        (Array with: (Rectangle left:20 top:20 width:400 height:600)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   259
               with: (Rectangle left:40 top:40 width:600 height:400)    
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   260
        )
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   261
    "
2146
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   262
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   263
    "Created: / 07-08-2006 / 11:48:46 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   264
    "Modified: / 10-10-2006 / 17:38:28 / cg"
2146
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   265
!
61291b6cc0f7 add line printing support
fm
parents: 2143
diff changeset
   266
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   267
printLines: pairOfPointsArray
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   268
    "Opens a print dialog and prints the given lines"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   269
8f5996be6907 initial checkin
fm
parents:
diff changeset
   270
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   271
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   272
    printerInfo := PrintingDialog getPrinterInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   273
    printerInfo isNil ifTrue:[^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   274
8f5996be6907 initial checkin
fm
parents:
diff changeset
   275
    printer := self fromPrinterInfo: printerInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   276
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   277
        printer startPrintJob: 'Lines'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   278
        printer foreground:Color black background:Color white.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   279
        pairOfPointsArray
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   280
            do:[:pairOfPoints |                 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   281
                 printer displayLineFrom: (pairOfPoints at:1)  to: (pairOfPoints at:2).
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   282
            ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   283
        printer endPrintJob.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   284
    ] forkAt: 3
8f5996be6907 initial checkin
fm
parents:
diff changeset
   285
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   286
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   287
     PrinterContext printLines:  
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   288
        (Array with: (Array with:10@10 with:100@10)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   289
               with: (Array with:10@10 with:35@200))
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   290
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   291
8f5996be6907 initial checkin
fm
parents:
diff changeset
   292
    "Created: / 07-08-2006 / 12:09:48 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   293
    "Modified: / 07-08-2006 / 14:11:17 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   294
    "Modified: / 10-10-2006 / 17:38:44 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   295
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   296
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   297
printPolygons: polygons
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   298
    "Opens a print dialog and prints the given polygons"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   299
8f5996be6907 initial checkin
fm
parents:
diff changeset
   300
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   301
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   302
    printerInfo := PrintingDialog getPrinterInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   303
    printerInfo isNil ifTrue:[^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   304
8f5996be6907 initial checkin
fm
parents:
diff changeset
   305
    printer := self fromPrinterInfo: printerInfo.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   306
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   307
        printer startPrintJob: 'Polygons'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   308
        printer foreground:Color black background:Color white.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   309
        polygons
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   310
            do:[:aPolygon |
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   311
                 aPolygon displayStrokedOn: printer.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   312
            ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   313
        printer endPrintJob.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   314
    ] forkAt: 3
8f5996be6907 initial checkin
fm
parents:
diff changeset
   315
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   316
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   317
     PrinterContext printPolygons:  
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   318
        (Array with: (Polygon vertices:(
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   319
                                Array
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   320
                                    with:10@10
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   321
                                    with:60@10
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   322
                                    with:35@60)))
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   323
    "
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   324
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   325
    "Created: / 07-08-2006 / 12:09:48 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   326
    "Modified: / 07-08-2006 / 14:11:17 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   327
    "Modified: / 10-10-2006 / 17:39:23 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   328
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   329
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   330
printRectangles: rectangles
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   331
    "Opens a print dialog and prints the given rectangles"
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   332
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   333
    | printerInfo printer |
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   334
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   335
    printerInfo := PrintingDialog getPrinterInfo.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   336
    printerInfo isNil ifTrue:[^self].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   337
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   338
    printer := self fromPrinterInfo: printerInfo.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   339
    [ 
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   340
        printer startPrintJob: 'Rectangles'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   341
        rectangles 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   342
            do:[:rectangle |
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   343
                printer displayRectangleX: rectangle origin x 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   344
                        y: rectangle origin y 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   345
                        width: rectangle width 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   346
                        height: rectangle height.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   347
            ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   348
        printer endPrintJob.
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   349
    ] forkAt: 3
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   350
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   351
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   352
     PrinterContext printRectangles:  
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   353
        (Array with: (Rectangle left:20 top:20 width:400 height:600)
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   354
               with: (Rectangle left:40 top:40 width:600 height:400)    
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   355
        )
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   356
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   357
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   358
    "Created: / 07-08-2006 / 11:40:48 / fm"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   359
    "Modified: / 10-10-2006 / 17:39:51 / cg"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   360
!
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   361
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   362
printStrings: stringAndPositionsArray
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   363
    "Opens a print dialog and prints the given strings"
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   364
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   365
    | printerInfo printer |
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   366
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   367
    printerInfo := PrintingDialog getPrinterInfo.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   368
    printerInfo isNil ifTrue:[^self].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   369
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   370
    printer := self fromPrinterInfo: printerInfo.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   371
    [ 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   372
        printer startPrintJob: 'Strings with Position'.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   373
        printer foreground:Color black background:Color white.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   374
        stringAndPositionsArray
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   375
            do:[:pairOfPointsAndPosition |                 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   376
                 printer displayString:(pairOfPointsAndPosition at: 1) 
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   377
                            x:(pairOfPointsAndPosition at: 2) x
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   378
                            y:(pairOfPointsAndPosition at: 2) y
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   379
            ].
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   380
        printer endPrintJob.
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   381
    ] forkAt: 3
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   382
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   383
    "
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   384
     PrinterContext printStrings:  
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   385
        (Array with: (Array with:'Testing printing with standart method' with:10@10)
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   386
               with: (Array with:'Another test string to print' with:80@200))
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   387
    "
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   388
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   389
    "Created: / 07-08-2006 / 12:09:48 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   390
    "Modified: / 07-08-2006 / 14:11:17 / fm"
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
   391
    "Modified: / 10-10-2006 / 17:40:07 / cg"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   392
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   393
8f5996be6907 initial checkin
fm
parents:
diff changeset
   394
!PrinterContext methodsFor:'abort handling'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   395
8f5996be6907 initial checkin
fm
parents:
diff changeset
   396
abortPrintJob
8f5996be6907 initial checkin
fm
parents:
diff changeset
   397
        "Abort the current print job."  
8f5996be6907 initial checkin
fm
parents:
diff changeset
   398
8f5996be6907 initial checkin
fm
parents:
diff changeset
   399
    abort := true.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   400
    jobid := nil.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   401
8f5996be6907 initial checkin
fm
parents:
diff changeset
   402
    "Modified: / 02-08-2006 / 15:40:26 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   403
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   404
8f5996be6907 initial checkin
fm
parents:
diff changeset
   405
aborted
8f5996be6907 initial checkin
fm
parents:
diff changeset
   406
        "Answer whether the user aborted from PrintAbortDialog."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   407
    ^abort
8f5996be6907 initial checkin
fm
parents:
diff changeset
   408
8f5996be6907 initial checkin
fm
parents:
diff changeset
   409
    "Created: / 27-07-2006 / 10:20:10 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   410
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   411
8f5996be6907 initial checkin
fm
parents:
diff changeset
   412
!PrinterContext methodsFor:'accessing'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   413
8f5996be6907 initial checkin
fm
parents:
diff changeset
   414
getCharHeight
8f5996be6907 initial checkin
fm
parents:
diff changeset
   415
        "Private - answer the height of the font selected in the receiver's
8f5996be6907 initial checkin
fm
parents:
diff changeset
   416
        device context."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   417
8f5996be6907 initial checkin
fm
parents:
diff changeset
   418
    | textMetrics |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   419
    textMetrics := Win32OperatingSystem::TextMetricsStructure new.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   420
    ( OperatingSystem 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   421
        getTextMetrics: gcId "deviceContext" 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   422
        lpMetrics: textMetrics "asParameter" )
8f5996be6907 initial checkin
fm
parents:
diff changeset
   423
            ifFalse: [ ^self error ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   424
    ^textMetrics tmHeight + textMetrics tmExternalLeading
8f5996be6907 initial checkin
fm
parents:
diff changeset
   425
8f5996be6907 initial checkin
fm
parents:
diff changeset
   426
    "Created: / 02-08-2006 / 17:47:20 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   427
    "Modified: / 03-08-2006 / 10:09:01 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   428
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   429
8f5996be6907 initial checkin
fm
parents:
diff changeset
   430
name                                   
8f5996be6907 initial checkin
fm
parents:
diff changeset
   431
        "Answer the receiver's name from the current printerInfo."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   432
8f5996be6907 initial checkin
fm
parents:
diff changeset
   433
    ^self printerInfo printerName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   434
8f5996be6907 initial checkin
fm
parents:
diff changeset
   435
    "Modified: / 02-08-2006 / 16:55:03 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   436
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   437
8f5996be6907 initial checkin
fm
parents:
diff changeset
   438
name: aName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   439
        "Set the receiver's printer name to aName."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   440
8f5996be6907 initial checkin
fm
parents:
diff changeset
   441
    self printerInfo: (self class getPrinterInformation: aName)
8f5996be6907 initial checkin
fm
parents:
diff changeset
   442
8f5996be6907 initial checkin
fm
parents:
diff changeset
   443
    "Created: / 27-07-2006 / 10:33:04 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   444
    "Modified: / 02-08-2006 / 16:54:46 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   445
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   446
8f5996be6907 initial checkin
fm
parents:
diff changeset
   447
numberOfColorBitsPerPixel
8f5996be6907 initial checkin
fm
parents:
diff changeset
   448
8f5996be6907 initial checkin
fm
parents:
diff changeset
   449
    ^ OperatingSystem getDeviceCaps:gcId index:12 "Bitspixel"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   450
8f5996be6907 initial checkin
fm
parents:
diff changeset
   451
    "Created: / 03-08-2006 / 09:58:18 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   452
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   453
8f5996be6907 initial checkin
fm
parents:
diff changeset
   454
pixelsPerInchOfScreenHeight
8f5996be6907 initial checkin
fm
parents:
diff changeset
   455
    ^ OperatingSystem getDeviceCaps:gcId index:90 "Logpixelsy"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   456
8f5996be6907 initial checkin
fm
parents:
diff changeset
   457
    "Created: / 01-08-2006 / 16:29:16 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   458
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   459
8f5996be6907 initial checkin
fm
parents:
diff changeset
   460
pixelsPerInchOfScreenWidth
8f5996be6907 initial checkin
fm
parents:
diff changeset
   461
    ^ OperatingSystem getDeviceCaps:gcId index:88 "Logpixelsx"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   462
8f5996be6907 initial checkin
fm
parents:
diff changeset
   463
    "Created: / 01-08-2006 / 16:28:34 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   464
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   465
8f5996be6907 initial checkin
fm
parents:
diff changeset
   466
printerInfo
8f5996be6907 initial checkin
fm
parents:
diff changeset
   467
        "Answer the receiver's name from the current printerInfo."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   468
8f5996be6907 initial checkin
fm
parents:
diff changeset
   469
    ^printerInfo
8f5996be6907 initial checkin
fm
parents:
diff changeset
   470
8f5996be6907 initial checkin
fm
parents:
diff changeset
   471
    "Created: / 02-08-2006 / 16:55:17 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   472
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   473
8f5996be6907 initial checkin
fm
parents:
diff changeset
   474
printerInfo: aPrinterInfo
8f5996be6907 initial checkin
fm
parents:
diff changeset
   475
        "Sets the receiver's printerInfo."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   476
8f5996be6907 initial checkin
fm
parents:
diff changeset
   477
    printerInfo := aPrinterInfo
8f5996be6907 initial checkin
fm
parents:
diff changeset
   478
8f5996be6907 initial checkin
fm
parents:
diff changeset
   479
    "Created: / 02-08-2006 / 16:55:34 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   480
    "Modified: / 03-08-2006 / 13:11:19 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   481
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   482
8f5996be6907 initial checkin
fm
parents:
diff changeset
   483
printerInfoWithName: aName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   484
        "Set the receiver's printer name to aName."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   485
8f5996be6907 initial checkin
fm
parents:
diff changeset
   486
    self printerInfo: (self class getPrinterInformation: aName).
8f5996be6907 initial checkin
fm
parents:
diff changeset
   487
    ^self
8f5996be6907 initial checkin
fm
parents:
diff changeset
   488
8f5996be6907 initial checkin
fm
parents:
diff changeset
   489
    "Created: / 02-08-2006 / 16:55:52 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   490
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   491
8f5996be6907 initial checkin
fm
parents:
diff changeset
   492
printerUserFriendlyName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   493
        "Answer the receiver's name from the current printerInfo."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   494
8f5996be6907 initial checkin
fm
parents:
diff changeset
   495
    ^self printerInfo userFriendlyName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   496
8f5996be6907 initial checkin
fm
parents:
diff changeset
   497
    "Created: / 03-08-2006 / 12:55:57 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   498
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   499
8f5996be6907 initial checkin
fm
parents:
diff changeset
   500
!PrinterContext methodsFor:'initialization & release'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   501
8f5996be6907 initial checkin
fm
parents:
diff changeset
   502
buildPrinter
8f5996be6907 initial checkin
fm
parents:
diff changeset
   503
        "Private - create all the operating system resources needed."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   504
    self 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   505
        createDC;       
8f5996be6907 initial checkin
fm
parents:
diff changeset
   506
        initExtent
8f5996be6907 initial checkin
fm
parents:
diff changeset
   507
8f5996be6907 initial checkin
fm
parents:
diff changeset
   508
    "Created: / 27-07-2006 / 10:20:36 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   509
    "Modified: / 01-08-2006 / 15:57:49 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   510
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   511
8f5996be6907 initial checkin
fm
parents:
diff changeset
   512
createDC
8f5996be6907 initial checkin
fm
parents:
diff changeset
   513
        "Private - Create a device context for the receiver"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   514
8f5996be6907 initial checkin
fm
parents:
diff changeset
   515
 gcId := printerInfo createDC
8f5996be6907 initial checkin
fm
parents:
diff changeset
   516
8f5996be6907 initial checkin
fm
parents:
diff changeset
   517
"/    | printerInfo driverNm mediumNm deviceNm hPrinter driverData|
8f5996be6907 initial checkin
fm
parents:
diff changeset
   518
"/    printerInfo := self class getPrinterInformation: self name.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   519
"/     driverNm := printerInfo driverName.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   520
"/     mediumNm := printerInfo medium.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   521
"/     deviceNm := printerInfo printerName.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   522
"/
8f5996be6907 initial checkin
fm
parents:
diff changeset
   523
"/     hPrinter := OperatingSystem openPrinter:deviceNm.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   524
"/     driverData := OperatingSystem getDocumentProperties:nil hPrinter:hPrinter pDeviceName:deviceNm.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   525
"/     Win32OperatingSystem primClosePrinter:hPrinter.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   526
"/
8f5996be6907 initial checkin
fm
parents:
diff changeset
   527
"/     "deviceContext" gcId := OperatingSystem createPrinterDC:driverNm device:deviceNm output:mediumNm initData:driverData.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   528
8f5996be6907 initial checkin
fm
parents:
diff changeset
   529
"/    ( deviceContext := GDILibrary
8f5996be6907 initial checkin
fm
parents:
diff changeset
   530
"/        createDC: driverName asParameter
8f5996be6907 initial checkin
fm
parents:
diff changeset
   531
"/        deviceName: deviceName asParameter
8f5996be6907 initial checkin
fm
parents:
diff changeset
   532
"/        output: printerPort asParameter
8f5996be6907 initial checkin
fm
parents:
diff changeset
   533
"/        initData: nil ) = 0
8f5996be6907 initial checkin
fm
parents:
diff changeset
   534
"/            ifTrue: [ ^self osError ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   535
8f5996be6907 initial checkin
fm
parents:
diff changeset
   536
    "Created: / 27-07-2006 / 10:21:05 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   537
    "Modified: / 02-08-2006 / 17:30:47 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   538
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   539
8f5996be6907 initial checkin
fm
parents:
diff changeset
   540
initExtent
8f5996be6907 initial checkin
fm
parents:
diff changeset
   541
    "Private - init the width and height of GraphicsTool for the receiver."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   542
    
8f5996be6907 initial checkin
fm
parents:
diff changeset
   543
    device
8f5996be6907 initial checkin
fm
parents:
diff changeset
   544
        width:self printerWidthArea;
8f5996be6907 initial checkin
fm
parents:
diff changeset
   545
        height:self printerHeightArea
8f5996be6907 initial checkin
fm
parents:
diff changeset
   546
8f5996be6907 initial checkin
fm
parents:
diff changeset
   547
    "Modified: / 01-08-2006 / 16:14:49 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   548
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   549
8f5996be6907 initial checkin
fm
parents:
diff changeset
   550
printerHeightArea
8f5996be6907 initial checkin
fm
parents:
diff changeset
   551
    ^ (OperatingSystem getDeviceCaps:gcId index:10 "Vertres")
8f5996be6907 initial checkin
fm
parents:
diff changeset
   552
8f5996be6907 initial checkin
fm
parents:
diff changeset
   553
    "Created: / 01-08-2006 / 16:14:49 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   554
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   555
8f5996be6907 initial checkin
fm
parents:
diff changeset
   556
printerWidthArea
8f5996be6907 initial checkin
fm
parents:
diff changeset
   557
    ^ OperatingSystem getDeviceCaps:gcId "deviceContext" index:8 "Horzres"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   558
8f5996be6907 initial checkin
fm
parents:
diff changeset
   559
    "Created: / 01-08-2006 / 16:14:08 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   560
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   561
8f5996be6907 initial checkin
fm
parents:
diff changeset
   562
!PrinterContext methodsFor:'printing'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   563
8f5996be6907 initial checkin
fm
parents:
diff changeset
   564
print: aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
   565
    font: aFont
8f5996be6907 initial checkin
fm
parents:
diff changeset
   566
    title: aTitle  
8f5996be6907 initial checkin
fm
parents:
diff changeset
   567
    wordWrap: wordWrapBoolean
8f5996be6907 initial checkin
fm
parents:
diff changeset
   568
    marginsRect: aMarginsRect
8f5996be6907 initial checkin
fm
parents:
diff changeset
   569
        "Answer the receiver.  Output the receiver string to
8f5996be6907 initial checkin
fm
parents:
diff changeset
   570
        the printer using aFont.  A Print abort dialog box will be opened
8f5996be6907 initial checkin
fm
parents:
diff changeset
   571
        with aTitle.  If collateBoolean is true, collate output, otherwise
8f5996be6907 initial checkin
fm
parents:
diff changeset
   572
        do not.  Print copiesInteger copies of the specified string.  If
8f5996be6907 initial checkin
fm
parents:
diff changeset
   573
        wordWrapBoolean is true, word wrap the lines, otherwise do not.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   574
        Left, top, right & bottom margins are specified in inches in
8f5996be6907 initial checkin
fm
parents:
diff changeset
   575
        aMarginsRect."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   576
    | lines linesPerPage totalPage marginsRect firstPage charHeight abortDialog |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   577
8f5996be6907 initial checkin
fm
parents:
diff changeset
   578
    jobid isNil
8f5996be6907 initial checkin
fm
parents:
diff changeset
   579
        ifTrue: [ self startPrintJob: aTitle ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   580
    abortDialog := PrintAbortDialog new open: aTitle printer: self.
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   581
    self font: aFont.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   582
    marginsRect := self marginsRectangleFor: aMarginsRect.
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   583
    lines := self asArrayOfStringLines: aString in: marginsRect wordWrap: wordWrapBoolean.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   584
    charHeight := self getCharHeight. 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   585
    linesPerPage := marginsRect bottom - marginsRect top // charHeight.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   586
    totalPage := lines size + linesPerPage - 1 // linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   587
    firstPage := true.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   588
8f5996be6907 initial checkin
fm
parents:
diff changeset
   589
"/    collateBoolean
8f5996be6907 initial checkin
fm
parents:
diff changeset
   590
"/        ifTrue: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   591
"/            copiesInteger timesRepeat: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   592
    1 to: totalPage do: [ :page |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   593
        abort ifTrue: [^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   594
        firstPage ifFalse: [ self formFeed ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   595
        abortDialog updatePrintingPageInfo: 'Page ', page printString, '/', totalPage printString.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   596
"/      self device font: printerFont.
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   597
        self font: aFont.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   598
        self printPage: page in: marginsRect lines: lines linesPerPage: linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   599
        firstPage := false ]. 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   600
8f5996be6907 initial checkin
fm
parents:
diff changeset
   601
"/            ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   602
"/        ] ifFalse: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   603
"/            1 to: totalPage do: [ :page |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   604
"/                copiesInteger timesRepeat: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   605
"/                    abort ifTrue: [ ^self endPrintJob ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   606
"/                    firstPage ifFalse: [ self formFeed ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   607
"/                    self device font: printerFont.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   608
"/                    self printPage: page in: marginsRect lines: lines linesPerPage: linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   609
"/                    firstPage := false 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   610
"/                 ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   611
"/            ]   
8f5996be6907 initial checkin
fm
parents:
diff changeset
   612
"/        ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   613
8f5996be6907 initial checkin
fm
parents:
diff changeset
   614
    jobid notNil
8f5996be6907 initial checkin
fm
parents:
diff changeset
   615
        ifTrue: [ self endPrintJob.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   616
                  abortDialog close.].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   617
8f5996be6907 initial checkin
fm
parents:
diff changeset
   618
"/    abort ifFalse: [ abortDialog close ]
8f5996be6907 initial checkin
fm
parents:
diff changeset
   619
8f5996be6907 initial checkin
fm
parents:
diff changeset
   620
    "Created: / 03-08-2006 / 16:13:33 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   621
    "Modified: / 04-08-2006 / 13:40:02 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   622
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   623
8f5996be6907 initial checkin
fm
parents:
diff changeset
   624
print: aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
   625
    pageHeader: aString2
8f5996be6907 initial checkin
fm
parents:
diff changeset
   626
    font: aFont
8f5996be6907 initial checkin
fm
parents:
diff changeset
   627
    title: aTitle 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   628
    wordWrap: wordWrapBoolean
8f5996be6907 initial checkin
fm
parents:
diff changeset
   629
    marginsRect: aMarginsRect
8f5996be6907 initial checkin
fm
parents:
diff changeset
   630
8f5996be6907 initial checkin
fm
parents:
diff changeset
   631
        "Private - Answer the receiver.  Output the receiver string to
8f5996be6907 initial checkin
fm
parents:
diff changeset
   632
        the printer using aFont.  A Print abort dialog box will be opened
8f5996be6907 initial checkin
fm
parents:
diff changeset
   633
        with aTitle.  If collateBoolean is true, collate output, otherwise
8f5996be6907 initial checkin
fm
parents:
diff changeset
   634
        do not.  Print copiesInteger copies of the specified string.  If
8f5996be6907 initial checkin
fm
parents:
diff changeset
   635
        wordWrapBoolean is true, word wrap the lines, otherwise do not.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   636
        Left, top, right & bottom margins are specified in inches in
8f5996be6907 initial checkin
fm
parents:
diff changeset
   637
        aMarginsRect.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   638
        Mg: Erweitert um pageHeader"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   639
       "Changed by K3/EES5-Mg, 08.01.96"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   640
8f5996be6907 initial checkin
fm
parents:
diff changeset
   641
    | lines linesPerPage totalPage marginsRect firstPage charHeight  printerFont headerLines|
8f5996be6907 initial checkin
fm
parents:
diff changeset
   642
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   643
    self font: aFont.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   644
    charHeight := self getCharHeight.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   645
    marginsRect := self marginsRectangleFor: aMarginsRect.
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   646
    lines := self asArrayOfStringLines: aString in: marginsRect wordWrap: wordWrapBoolean.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   647
    headerLines := self asArrayOfStringLines: aString2 in: marginsRect wordWrap: wordWrapBoolean.
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   648
    linesPerPage := marginsRect bottom - marginsRect top // charHeight.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   649
8f5996be6907 initial checkin
fm
parents:
diff changeset
   650
    linesPerPage > headerLines size
8f5996be6907 initial checkin
fm
parents:
diff changeset
   651
        ifFalse:
8f5996be6907 initial checkin
fm
parents:
diff changeset
   652
          [Dialog information: 'Der Dokumentenkopf ist zu groß; wird ignoriert!!'.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   653
           headerLines := #().
8f5996be6907 initial checkin
fm
parents:
diff changeset
   654
          ]
8f5996be6907 initial checkin
fm
parents:
diff changeset
   655
        ifTrue: [linesPerPage := linesPerPage - headerLines size].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   656
    totalPage := lines size + linesPerPage - 1 // linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   657
    firstPage := true.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   658
8f5996be6907 initial checkin
fm
parents:
diff changeset
   659
"/    collateBoolean
8f5996be6907 initial checkin
fm
parents:
diff changeset
   660
"/        ifTrue: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   661
"/            copiesInteger timesRepeat: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   662
8f5996be6907 initial checkin
fm
parents:
diff changeset
   663
     1 to: totalPage do: [ :page |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   664
                    abort ifTrue: [ ^self].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   665
                    firstPage ifFalse: [ self formFeed ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   666
                    self font: printerFont.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   667
                    self printPage: page in: marginsRect lines: lines headerLines: headerLines linesPerPage: linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   668
                    firstPage := false 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   669
     ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   670
8f5996be6907 initial checkin
fm
parents:
diff changeset
   671
"/            ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   672
"/        ] ifFalse: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   673
"/            1 to: totalPage do: [ :page |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   674
"/                copiesInteger timesRepeat: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
   675
"/                    abort ifTrue: [ ^self endPrintJob ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   676
"/                    firstPage ifFalse: [ self formFeed ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   677
"/                    self device font: printerFont.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   678
"/                    self printPage: page in: marginsRect lines: lines headerLines: headerLines linesPerPage: linesPerPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   679
"/                    firstPage := false 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   680
"/                ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   681
"/            ] 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   682
"/        ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   683
8f5996be6907 initial checkin
fm
parents:
diff changeset
   684
    "Created: / 03-08-2006 / 16:14:10 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   685
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
   686
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   687
!PrinterContext methodsFor:'printing process'!
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
   688
8f5996be6907 initial checkin
fm
parents:
diff changeset
   689
endPage
8f5996be6907 initial checkin
fm
parents:
diff changeset
   690
        "Informs device that we are finished writing to a page."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   691
    ( OperatingSystem endPage: gcId ) > 0
8f5996be6907 initial checkin
fm
parents:
diff changeset
   692
        ifFalse: [ self error ]
8f5996be6907 initial checkin
fm
parents:
diff changeset
   693
8f5996be6907 initial checkin
fm
parents:
diff changeset
   694
    "Created: / 27-07-2006 / 18:20:48 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   695
    "Modified: / 01-08-2006 / 16:01:34 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   696
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   697
8f5996be6907 initial checkin
fm
parents:
diff changeset
   698
endPrintJob
8f5996be6907 initial checkin
fm
parents:
diff changeset
   699
8f5996be6907 initial checkin
fm
parents:
diff changeset
   700
        "End the print job.  Everything drawn between startPrintJob
8f5996be6907 initial checkin
fm
parents:
diff changeset
   701
         and endPrintJob will become one entry in the print queue."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   702
       "Changed by K3EES5-Mg, 19.09.97"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   703
8f5996be6907 initial checkin
fm
parents:
diff changeset
   704
    | result |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   705
    self endPage.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   706
    result := OperatingSystem endDoc: gcId "deviceContext".
8f5996be6907 initial checkin
fm
parents:
diff changeset
   707
    "graphicsTool" device close "deleteDC".
8f5996be6907 initial checkin
fm
parents:
diff changeset
   708
    "deviceContext" gcId := nil.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   709
    jobid := nil.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   710
    result  >= 0        "> geändert in >=: Mg 22.6.95"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   711
        ifFalse: [ ^self error "osError" ]
8f5996be6907 initial checkin
fm
parents:
diff changeset
   712
8f5996be6907 initial checkin
fm
parents:
diff changeset
   713
    "Created: / 27-07-2006 / 18:21:04 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   714
    "Modified: / 01-08-2006 / 16:01:38 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   715
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   716
8f5996be6907 initial checkin
fm
parents:
diff changeset
   717
formFeed
8f5996be6907 initial checkin
fm
parents:
diff changeset
   718
        "Send a form feed to the printer."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   719
    self
8f5996be6907 initial checkin
fm
parents:
diff changeset
   720
        endPage;
8f5996be6907 initial checkin
fm
parents:
diff changeset
   721
        startPage
8f5996be6907 initial checkin
fm
parents:
diff changeset
   722
8f5996be6907 initial checkin
fm
parents:
diff changeset
   723
    "Created: / 27-07-2006 / 18:25:40 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   724
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   725
8f5996be6907 initial checkin
fm
parents:
diff changeset
   726
startPage
8f5996be6907 initial checkin
fm
parents:
diff changeset
   727
        "Starts a page."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   728
    ( OperatingSystem startPage: gcId ) > 0
8f5996be6907 initial checkin
fm
parents:
diff changeset
   729
        ifFalse: [ ^self error "osError" ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   730
8f5996be6907 initial checkin
fm
parents:
diff changeset
   731
    "Created: / 27-07-2006 / 18:25:55 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   732
    "Modified: / 28-07-2006 / 18:19:04 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   733
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   734
8f5996be6907 initial checkin
fm
parents:
diff changeset
   735
startPrintJob
8f5996be6907 initial checkin
fm
parents:
diff changeset
   736
        "Start a print job.  Everything drawn between startPrintJob
8f5996be6907 initial checkin
fm
parents:
diff changeset
   737
         and endPrintJob will become one entry in the print queue."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   738
    self startPrintJob: nil
8f5996be6907 initial checkin
fm
parents:
diff changeset
   739
8f5996be6907 initial checkin
fm
parents:
diff changeset
   740
    "Created: / 27-07-2006 / 18:18:52 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   741
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   742
8f5996be6907 initial checkin
fm
parents:
diff changeset
   743
startPrintJob: aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
   744
8f5996be6907 initial checkin
fm
parents:
diff changeset
   745
        "Start a print job, using aString as the job title; everything
8f5996be6907 initial checkin
fm
parents:
diff changeset
   746
         drawn between startPrintJob and endPrintJob will become
8f5996be6907 initial checkin
fm
parents:
diff changeset
   747
         one entry in the print queue.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   748
8f5996be6907 initial checkin
fm
parents:
diff changeset
   749
         Mg: Bei SpUserabort (bei Drucken in Datei) wird abort auf true gesetzt
8f5996be6907 initial checkin
fm
parents:
diff changeset
   750
         und SpUserabort zurückgegeben.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   751
        "
8f5996be6907 initial checkin
fm
parents:
diff changeset
   752
       "Changed by K3/EES5-Mg, 21.07.97"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   753
       "Changed by K3EES5-Mg, 19.09.97"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   754
8f5996be6907 initial checkin
fm
parents:
diff changeset
   755
    ^self startPrintJob: aString fileName: nil
8f5996be6907 initial checkin
fm
parents:
diff changeset
   756
8f5996be6907 initial checkin
fm
parents:
diff changeset
   757
    "Created: / 27-07-2006 / 18:19:09 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   758
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
   759
8f5996be6907 initial checkin
fm
parents:
diff changeset
   760
startPrintJob: aString fileName: aFileName
8f5996be6907 initial checkin
fm
parents:
diff changeset
   761
8f5996be6907 initial checkin
fm
parents:
diff changeset
   762
        "Start a print job, using aString as the job title; everything
8f5996be6907 initial checkin
fm
parents:
diff changeset
   763
         drawn between startPrintJob and endPrintJob will become
8f5996be6907 initial checkin
fm
parents:
diff changeset
   764
         one entry in the print queue."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   765
       "Changed by K3/EES5-Mg, 21.07.97"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   766
       "Changed by K3EES5-Mg, 19.09.97"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   767
       "Changed by GS/EEZ3-Vr, 15.03.02"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   768
8f5996be6907 initial checkin
fm
parents:
diff changeset
   769
    | docInfoStruct nameAddress title fileNameAddress |
8f5996be6907 initial checkin
fm
parents:
diff changeset
   770
8f5996be6907 initial checkin
fm
parents:
diff changeset
   771
    gcId "deviceContext" isNil ifTrue: [ self buildPrinter ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   772
    abort := false.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   773
    "self setAbortProc."
8f5996be6907 initial checkin
fm
parents:
diff changeset
   774
    title := aString isNil ifTrue: [ 'Smalltalk/X' "WindowLabelPrefix" ] ifFalse: [ aString ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   775
8f5996be6907 initial checkin
fm
parents:
diff changeset
   776
    nameAddress := title asExternalBytes unprotectFromGC.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   777
"/    nameAddress := ExternalAddress copyToNonSmalltalkMemory: title.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   778
    aFileName isNil ifFalse: [fileNameAddress := aFileName pathName asExternalBytes unprotectFromGC].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   779
"/    aFileName isNil ifFalse: [fileNameAddress := ExternalAddress copyToNonSmalltalkMemory: aFileName].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   780
8f5996be6907 initial checkin
fm
parents:
diff changeset
   781
    docInfoStruct := Win32OperatingSystem::DocInfoStructure new "some value". 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   782
    docInfoStruct cbSize: docInfoStruct sizeInBytes;
8f5996be6907 initial checkin
fm
parents:
diff changeset
   783
                  lpszDocName: nameAddress address.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   784
"/    ( docInfoStruct := SelfDefinedStructure named: 'DOCINFO' )
8f5996be6907 initial checkin
fm
parents:
diff changeset
   785
"/        cbSize: docInfoStruct sizeInBytes;
8f5996be6907 initial checkin
fm
parents:
diff changeset
   786
"/        lpszDocName: nameAddress "asParameter".
8f5996be6907 initial checkin
fm
parents:
diff changeset
   787
8f5996be6907 initial checkin
fm
parents:
diff changeset
   788
    fileNameAddress isNil ifFalse:[docInfoStruct lpszOutput: fileNameAddress address"asParameter"].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   789
8f5996be6907 initial checkin
fm
parents:
diff changeset
   790
    jobid := OperatingSystem startDoc: gcId "deviceContext"  
8f5996be6907 initial checkin
fm
parents:
diff changeset
   791
                             docInfo: docInfoStruct "asParameter".
8f5996be6907 initial checkin
fm
parents:
diff changeset
   792
"/    nameAddress free.
8f5996be6907 initial checkin
fm
parents:
diff changeset
   793
"/    fileNameAddress isNil ifFalse: [fileNameAddress free].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   794
8f5996be6907 initial checkin
fm
parents:
diff changeset
   795
    jobid  > 0 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   796
        ifFalse: [jobid = -1 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   797
                    ifTrue: [abort := true. ^nil]. 
8f5996be6907 initial checkin
fm
parents:
diff changeset
   798
                  ^self error "osError" ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
   799
    self startPage
8f5996be6907 initial checkin
fm
parents:
diff changeset
   800
8f5996be6907 initial checkin
fm
parents:
diff changeset
   801
    "Created: / 27-07-2006 / 18:19:31 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
   802
    "Modified: / 03-08-2006 / 15:11:19 / fm"
2147
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   803
! !
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   804
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   805
!PrinterContext methodsFor:'queries'!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   806
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   807
supportsColor
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   808
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   809
       "Changed by K3/EES5-Vo, 11.03.98"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   810
       "Changed by GS-EC/EES3-Vo, 06.10.05"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   811
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   812
"/    | retVal info |
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   813
"/
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   814
"/    info := (self class getPrinterInformation: self name) asUppercase.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   815
"/    (info includesSubstring: ',PSCRIPT,')
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   816
"/    ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   817
"/        retVal := (DAPASX::DapasSystemInfo getYesNoInfoApp: 'Printer' profile: 'PostScriptBlackWhite') not.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   818
"/    ]
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   819
"/    ifFalse: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   820
"/        retVal := (info includesSubstring: 'PDF')
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   821
"/            ifTrue: [true]
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   822
"/            ifFalse: [self numberOfColorBitsPerPixel > 1].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   823
"/    ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   824
"/
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   825
"/    ^retVal
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   826
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   827
    "Created: / 03-08-2006 / 09:55:26 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   828
    "Modified: / 04-08-2006 / 13:20:40 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   829
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   830
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   831
supportsGraphics
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   832
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   833
       "Private & DEFAULT!!."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   834
       "Changed by K3/EES5-Mg, 26.01.96"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   835
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   836
    ^(OperatingSystem getDeviceCaps: gcId asParameter index: 2 "Technology") ~= 4
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   837
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   838
    "Created: / 03-08-2006 / 10:07:43 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   839
! !
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   840
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   841
!PrinterContext methodsFor:'text printing'!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   842
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   843
asArrayOfStringLines: aString in: aRectangle wordWrap: wordWrapBoolean
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   844
        "Private - convert aString into an array of lines; if wordWrapBoolean
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   845
        is true, also perform word wrapping on the lines, within aRectangle."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   846
    | line lines stream x0 x1 partialLine leftMargin rightMargin partialLineWidth index |
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   847
    stream := ReadStream on: aString.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   848
    lines := OrderedCollection new.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   849
    wordWrapBoolean ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   850
        leftMargin := aRectangle left.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   851
        rightMargin := aRectangle right ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   852
    [ stream atEnd ] whileFalse: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   853
        line := stream nextLine.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   854
        wordWrapBoolean
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   855
            ifFalse: [ lines add: line ]
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   856
            ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   857
                x0 := x1 := 1.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   858
                1 to: line size do: [ :i | 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   859
                     ( ( line at: i ) = Character space "32"  and: [ (partialLine := line copyFrom: x0 to: i) trimBlanks notEmpty ] ) 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   860
                        ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   861
                            partialLineWidth := self stringWidthOf: partialLine.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   862
                            ( leftMargin + partialLineWidth ) > rightMargin
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   863
                                ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   864
                                    partialLine := line copyFrom: x0 to: x1.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   865
                                    lines add: partialLine.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   866
                                    x0 := x1 + 1 ]
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   867
                                ifFalse: [ x1 := i ] ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   868
                            index := i 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   869
                        ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   870
                line isEmpty
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   871
                    ifTrue: [ lines add: line ]
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   872
                    ifFalse: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   873
                        partialLine := line copyFrom: x0 to: index.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   874
                        partialLineWidth := self stringWidthOf: partialLine.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   875
                        ( leftMargin + partialLineWidth ) > rightMargin 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   876
                                ifTrue: [
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   877
                                    partialLine := line copyFrom: x0 to: x1.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   878
                                    lines add: partialLine.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   879
                                    partialLine := line copyFrom: x1 + 1 to: index 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   880
                                ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   881
                        lines add: partialLine 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   882
                    ] 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   883
            ] 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   884
    ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   885
    ^lines asArray
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   886
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   887
    "Created: / 02-08-2006 / 17:56:51 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   888
    "Modified: / 04-08-2006 / 13:39:50 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   889
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   890
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   891
displayStringLines: anIndexedCollection from: startIndex to: endIndex in: aRectangle
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   892
        "Private - display Strings in anIndexedCollection starting at startIndex and
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   893
        ending at endIndex, clipped within the bounds of aRectangle."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   894
    | charHeight ta region ascent|
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   895
    charHeight := self getCharHeight.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   896
    ascent := self font ascentOn: self device.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   897
    startIndex to: endIndex do: [ :i |
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   898
        |lineToPrint|
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   899
        lineToPrint := ( anIndexedCollection at: i ).
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   900
        self device
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   901
            displayString: lineToPrint 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   902
            from:1 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   903
            to: lineToPrint size 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   904
            x: aRectangle left 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   905
            y: (aRectangle top + ( i - startIndex * charHeight ) )
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   906
            in:nil 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   907
            with: gcId 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   908
            opaque:false 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   909
            fontAscent: ascent.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   910
    ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   911
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   912
"/    region := self setClipRect: aRectangle.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   913
"/    ta := self getTextAlign.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   914
"/    self setTextAlign: TaTop.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   915
"/    startIndex to: endIndex do: [ :i |
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   916
"/        self
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   917
"/            displayText: ( anIndexedCollection at: i )
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   918
"/            at: aRectangle left @ ( aRectangle top + ( i - startIndex * charHeight ) ) ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   919
"/    self setTextAlign: ta.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   920
"/    self destroyRegion: region
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   921
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   922
    "Created: / 03-08-2006 / 11:37:52 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   923
    "Modified: / 03-08-2006 / 12:38:43 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   924
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   925
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   926
displayStringLines: anIndexedCollection in: aRectangle
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   927
        "Private - display anIndexedCollection of Strings clipped within
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   928
        the bounds of aRectangle."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   929
    self
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   930
        displayStringLines: anIndexedCollection
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   931
        from: 1
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   932
        to: anIndexedCollection size
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   933
        in: aRectangle
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   934
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   935
    "Created: / 03-08-2006 / 16:03:07 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   936
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   937
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   938
marginsRectangleFor:aRectangle 
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   939
    "Private - Answer a Rectangle defining margins based on aRectangle.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   940
     Units for aRectangle are in inches, returned margins rectangle is
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   941
     in device units (pixels)."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   942
    
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   943
    |left top right bottom pixelsPerInchX pixelsPerInchY horzRes vertRes inset rectangle|
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   944
    pixelsPerInchX := self pixelsPerInchOfScreenWidth.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   945
    pixelsPerInchY := self pixelsPerInchOfScreenHeight.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   946
    aRectangle isNil ifTrue:[
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   947
        horzRes := self printerWidthArea.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   948
        vertRes := self printerHeightArea.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   949
        inset := self class defaultMargins.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   950
        left := (inset x * pixelsPerInchX) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   951
        top := (inset y * pixelsPerInchY) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   952
        right := horzRes - (inset x * pixelsPerInchX) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   953
        bottom := vertRes - (inset y * pixelsPerInchY) asInteger
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   954
    ] ifFalse:[
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   955
        left := (aRectangle left * pixelsPerInchX) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   956
        top := (aRectangle top * pixelsPerInchY) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   957
        right := (aRectangle right * pixelsPerInchX) asInteger.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   958
        bottom := (aRectangle bottom * pixelsPerInchY) asInteger
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   959
    ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   960
    rectangle := left @ top extent: right @ bottom.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   961
    ^ rectangle
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   962
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   963
    "Created: / 27-07-2006 / 18:22:57 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   964
    "Modified: / 04-08-2006 / 13:39:45 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   965
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   966
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   967
printPage: pageIndex in: aRectangle lines: lines headerLines: headerLines linesPerPage: linesPerPage
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   968
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   969
        "Private - print page # pageIndex from lines, assuming
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   970
        the given number of linesPerPage."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   971
       "Changed by K3/EES5-Mg, 30.07.97"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   972
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   973
    | firstLine lastLine l indexString p cHeight rect hLines|
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   974
    firstLine := ( pageIndex - 1 ) * linesPerPage + 1.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   975
    lastLine := ( firstLine + linesPerPage - 1 ) min: lines size.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   976
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   977
    rect := aRectangle deepCopy.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   978
    hLines := headerLines deepCopy.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   979
    headerLines size > 0 ifTrue:
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   980
      [l := hLines first.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   981
       (p := l indexOfString: '#P') = 0 ifFalse:
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   982
          [indexString := pageIndex printString,' '.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   983
           "l replaceFrom: p to: p + indexString size - 1 with: indexString startingAt: 1."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   984
           l := (l copyFrom: 1 to: p - 1),indexString,(l copyFrom: p + 2 to: l size).
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   985
           hLines at: 1 put: l.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   986
          ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   987
       cHeight := self getCharHeight.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   988
       rect top: rect top + (hLines size * cHeight).
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   989
      ].
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   990
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   991
    self displayStringLines: hLines in: aRectangle.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   992
    self displayStringLines: lines from: firstLine to: lastLine in: rect.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   993
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   994
    "Created: / 27-07-2006 / 18:28:00 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   995
    "Modified: / 03-08-2006 / 16:03:15 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   996
!
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   997
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   998
printPage: pageIndex in: aRectangle lines: lines linesPerPage: linesPerPage
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
   999
        "Private - print page # pageIndex from lines, assuming
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1000
        the given number of linesPerPage."
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1001
    | firstLine lastLine |
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1002
    firstLine := ( pageIndex - 1 ) * linesPerPage + 1.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1003
    lastLine := ( firstLine + linesPerPage - 1 ) min: lines size.
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1004
    self displayStringLines: lines from: firstLine to: lastLine in: aRectangle
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1005
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1006
    "Created: / 27-07-2006 / 18:24:59 / fm"
10c893aa772a *** empty log message ***
fm
parents: 2146
diff changeset
  1007
    "Modified: / 03-08-2006 / 12:47:24 / fm"
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1008
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1009
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1010
stringWidthOf: aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1011
        "Return the width of aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1012
         when written using the current font."
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1013
    ^self
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1014
        stringWidthOf: aString
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1015
        at: aString size.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1016
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1017
    "Modified: / 03-08-2006 / 10:18:23 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1018
!
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1019
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1020
stringWidthOf: aString at: index
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1021
        "Return the width of aString up to index
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1022
         when written using the current font; expand tabs out
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1023
         to 4 spaces for calculations"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1024
    | answer str size spaceWidth|
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1025
    index <= 0 ifTrue: [^0].
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1026
    str :=  index >= aString size
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1027
        ifTrue:[aString]
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1028
        ifFalse:[aString copyFrom: 1 to: index].
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1029
    true "self font isNil"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1030
        ifTrue: [  "if font not set yet, calculate based on default font"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1031
"/            extString := str asExternalString.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1032
            size := Win32OperatingSystem::WinPointStructure new.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1033
            ( OperatingSystem
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1034
                getTextExtentPoint: gcId "self handle"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1035
                string: str 
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1036
                size: size)                  
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1037
                    ifFalse: [ ^self error ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1038
            answer := size x.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1039
#TODO.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1040
        ] ifFalse: [ answer := self font widthOf: str on: self device "self handle" ].
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1041
    index > aString size ifTrue: [
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1042
        spaceWidth:=  self font widthOf: Character space on: self device. 
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1043
        answer := answer + (index - aString size * spaceWidth)].
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1044
    ^answer.
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1045
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1046
    "Created: / 03-08-2006 / 10:27:20 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1047
    "Modified: / 04-08-2006 / 12:27:26 / fm"
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1048
! !
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1049
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1050
!PrinterContext class methodsFor:'documentation'!
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1051
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1052
version
2235
0df6bda4b353 pretty printed & added some documentation and examples
Claus Gittinger <cg@exept.de>
parents: 2184
diff changeset
  1053
    ^ '$Header: /cvs/stx/stx/libview2/PrinterContext.st,v 1.5 2006-10-10 15:55:30 cg Exp $'
2143
8f5996be6907 initial checkin
fm
parents:
diff changeset
  1054
! !