WinPrinterContext.st
author Claus Gittinger <cg@exept.de>
Mon, 16 Apr 2007 12:40:02 +0200
changeset 2299 b0576a106d03
child 2301 135f21a3d127
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2299
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libview2' }"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
GraphicsMedium subclass:#WinPrinterContext
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:'name abort jobid printerInfo textAlign'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Interface-Printing'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!WinPrinterContext class methodsFor:'documentation'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
copyright
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 2006 by eXept Software AG
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 hereby transferred.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    I am the mediator between the smalltalk printing protocol 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    (which is the same as the graphics drawing protocol) and the
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    windows printer.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    When youopena printer, you will typically talk to me, and I will
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    forward the graphics commands to my printer.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    [author:]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
        Felix Madrid (fm@exept.de)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!WinPrinterContext class methodsFor:'instance creation'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
fromPrinterInfo: aPrinterInfo
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    | aPrinter hDC|     
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    hDC := aPrinterInfo createDC.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    hDC = 0 ifTrue: [ ^self error: 'Error while opening printer.' ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    aPrinter := self new.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    aPrinter printerInfo: aPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    aPrinter setDevice:(WinPrinter on: aPrinterInfo) id:nil gcId:hDC.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    aPrinter initExtent.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    ^aPrinter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    "Created: / 03-08-2006 / 12:53:52 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    "Modified: / 04-08-2006 / 12:55:01 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    "Modified: / 16-04-2007 / 12:36:26 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!WinPrinterContext class methodsFor:'accessing'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
default
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "Answer the default Printer, or nil if none."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    |defaultName|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    ^ (defaultName := self defaultPrinterName) isNil 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
        ifTrue:[ nil ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
        ifFalse:[ self named:defaultName ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
     self default
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "Created: / 27-07-2006 / 17:51:43 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    "Modified: / 02-08-2006 / 17:27:09 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    "Modified: / 10-10-2006 / 17:30:31 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
defaultMargins
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    "Private - answer aPoint containing the default horizontal and vertical
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
     margins for a page (units in inches)."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    ^ 0.5 @ 0.75
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "Created: / 01-08-2006 / 16:09:31 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "Modified: / 10-10-2006 / 17:30:49 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
defaultPrinterName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    "Answer the name of the default printer, or nil if none."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    |printerInfo printerName|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    printerInfo := OperatingSystem getDefaultPrinterName.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    printerName := (printerInfo copyFrom:1 to:(printerInfo indexOf:$,) - 1) trimBlanks.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ^ printerName size == 0 ifTrue:[ nil ] ifFalse:[ printerName ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
     PrinterContext defaultPrinterName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    "Modified: / 02-08-2006 / 17:26:09 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    "Modified: / 10-10-2006 / 17:32:45 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
getPrinterInformation:printerNameString 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    " Answer the printer information for the printer named printerNameString.  If no name is specified,
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
      answer the information for the default printer."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    |h|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    h := OperatingSystem openPrinter:printerNameString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    ^ OperatingSystem 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
        getDocumentProperties:nil
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        hPrinter:h
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
        pDeviceName:printerNameString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "Created: / 27-07-2006 / 10:22:32 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    "Modified: / 01-08-2006 / 16:01:44 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    "Modified: / 10-10-2006 / 18:57:45 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
named: aName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    "Answer a new instance of Printer which represents
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
     the printer named aName as specified in the host
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
     Control Panel."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    aName isNil ifTrue: [ ^self default ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    ^self new printerInfoWithName: aName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    "Created: / 27-07-2006 / 17:51:27 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    "Modified: / 02-08-2006 / 17:26:29 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    "Modified: / 10-10-2006 / 17:33:29 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
printerNames
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    "Answer a collection of all known printer names."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    ^ OperatingSystem getPrintersNames
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "Created: / 27-07-2006 / 17:54:45 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    "Modified: / 10-10-2006 / 18:57:51 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!WinPrinterContext class methodsFor:'testing & examples'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
print: aString font: aFont title: aTitle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    "Open a print dialog to allow printing of the given string
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
     using the given title & font."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    self print: aString font: aFont title: aTitle wordWrap: false     
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
   "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    PrinterContext print: 'Holaaaa!! (from:  PrinterContext>>print:aString font:aFont title:aTitle)' font: nil title: 'Printing Test'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    PrinterContext print: self printingTestString font: nil title: 'Printing Test String'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    PrinterContext print: self printingTestString font: (Font family:'Arial' face:'medium' size:8) title: 'Printing Test String'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
   "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "Created: / 27-07-2006 / 17:52:33 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    "Modified: / 03-08-2006 / 18:52:31 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    "Modified: / 10-10-2006 / 17:37:49 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
print: aString font: aFont title: aTitle wordWrap: wordWrap
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "Open a print dialog to allow printing of the given string
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
     using the given title & font."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
        printer
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
            print: aString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
            font: aFont
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
            title: aTitle 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
            wordWrap: wordWrap
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
            marginsRect: nil 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
     PrinterContext print: 'Holaaaa!! (from:  PrinterContext>>print:aString font:aFont title:aTitle)' font: nil title: 'Printing Test' wordWrap: true
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
     PrinterContext print: (PrinterContext class sourceCodeAt:#'print:font:title:wordWrap:') font:nil title:'Printing Test String' wordWrap:true
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
     PrinterContext print: (PrinterContext class sourceCodeAt:#'print:font:title:wordWrap:') font: (Font family:'Arial' face:'medium' size:8) title: 'Printing Test String' wordWrap: true
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    "Created: / 03-08-2006 / 18:51:53 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "Modified: / 10-10-2006 / 17:42:06 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
printCircles: arrayOfPointsAndRadius
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    "Opens a print dialog and prints the given circles"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
        printer startPrintJob: 'Circles'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
        arrayOfPointsAndRadius
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
            do:[:pointAndRadius |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
                printer displayCircle:(pointAndRadius at:1) 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
                        radius:(pointAndRadius at:2).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
        printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
     PrinterContext printCircles:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
        (Array with: (Array with: 800@800 with: 600)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
               with: (Array with: 1500@1500 with: 1000)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
               with: (Array with: 4000@2500 with: 2000))
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    "Created: / 07-08-2006 / 11:46:52 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    "Modified: / 10-10-2006 / 17:36:23 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
printCirclesIn: rectangles
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    "Opens a print dialog and prints the given circles"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
        printer startPrintJob: 'Circles In Rectangles'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
        rectangles
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
           do:[:rectangle |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
               printer displayCircleIn: rectangle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
           ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
       printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
     PrinterContext printCirclesIn:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
        (Array with: (Rectangle left:20 top:20 width:400 height:600)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
               with: (Rectangle left:40 top:40 width:600 height:400)    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
        )
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    "Created: / 07-08-2006 / 11:48:46 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "Modified: / 10-10-2006 / 17:38:28 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
printLines: pairOfPointsArray
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    "Opens a print dialog and prints the given lines"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
        printer startPrintJob: 'Lines'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
        printer foreground:Color black background:Color white.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
        pairOfPointsArray
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
            do:[:pairOfPoints |                 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
                 printer displayLineFrom: (pairOfPoints at:1)  to: (pairOfPoints at:2).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
        printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
     PrinterContext printLines:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
        (Array with: (Array with:10@10 with:100@10)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
               with: (Array with:10@10 with:35@200))
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    "Created: / 07-08-2006 / 12:09:48 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    "Modified: / 07-08-2006 / 14:11:17 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    "Modified: / 10-10-2006 / 17:38:44 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
printPolygons: polygons
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    "Opens a print dialog and prints the given polygons"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
        printer startPrintJob: 'Polygons'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
        printer foreground:Color black background:Color white.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
        polygons
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
            do:[:aPolygon |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
                 aPolygon displayStrokedOn: printer.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
        printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
     PrinterContext printPolygons:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
        (Array with: (Polygon vertices:(
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
                                Array
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
                                    with:10@10
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
                                    with:60@10
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
                                    with:35@60)))
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    "Created: / 07-08-2006 / 12:09:48 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    "Modified: / 07-08-2006 / 14:11:17 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
    "Modified: / 10-10-2006 / 17:39:23 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
printRectangles: rectangles
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
    "Opens a print dialog and prints the given rectangles"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
        printer startPrintJob: 'Rectangles'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
        rectangles 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
            do:[:rectangle |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
                printer displayRectangleX: rectangle origin x 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
                        y: rectangle origin y 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
                        width: rectangle width 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
                        height: rectangle height.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
        printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
     PrinterContext printRectangles:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
        (Array with: (Rectangle left:20 top:20 width:400 height:600)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
               with: (Rectangle left:40 top:40 width:600 height:400)    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
        )
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    "Created: / 07-08-2006 / 11:40:48 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
    "Modified: / 10-10-2006 / 17:39:51 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
printStrings: stringAndPositionsArray
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    "Opens a print dialog and prints the given strings"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
    | printerInfo printer |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    printerInfo := PrintingDialog getPrinterInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
    printerInfo isNil ifTrue:[^self].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
    printer := self fromPrinterInfo: printerInfo.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    [ 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
        printer startPrintJob: 'Strings with Position'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
        printer foreground:Color black background:Color white.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
        stringAndPositionsArray
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
            do:[:pairOfPointsAndPosition |                 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
                 printer displayString:(pairOfPointsAndPosition at: 1) 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
                            x:(pairOfPointsAndPosition at: 2) x
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
                            y:(pairOfPointsAndPosition at: 2) y
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
        printer endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    ] forkAt: 3
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
     PrinterContext printStrings:  
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
        (Array with: (Array with:'Testing printing with standart method' with:10@10)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
               with: (Array with:'Another test string to print' with:80@200))
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    "
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    "Created: / 07-08-2006 / 12:09:48 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
    "Modified: / 07-08-2006 / 14:11:17 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
    "Modified: / 10-10-2006 / 17:40:07 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
!WinPrinterContext methodsFor:'abort handling'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
abortPrintJob
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
    "Abort the current print job."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    abort := true.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
    jobid := nil.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
    "Modified: / 02-08-2006 / 15:40:26 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    "Modified: / 10-10-2006 / 18:13:45 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
aborted
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    "Answer whether the user aborted from PrintAbortDialog."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
    ^ abort
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
    "Created: / 27-07-2006 / 10:20:10 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
    "Modified: / 10-10-2006 / 18:13:50 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
!WinPrinterContext methodsFor:'accessing'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
container
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    ^self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
getCharHeight
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    "Private - answer the height of the font selected in the receiver's
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
     device context."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
    |textMetrics answer|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
    textMetrics := Win32OperatingSystem::TextMetricsStructure new.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
"/    (OperatingSystem getTextMetrics:gcId lpMetrics:textMetrics) ifFalse:[ ^ self error ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
"/    Transcript showCR: 'CHAR HEIGHT PRIM ******* ', '   ',  (textMetrics tmHeight + textMetrics tmExternalLeading) printString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
"/    Transcript showCR: 'CHAR HEIGHT DEVICE ***** ', '   ', (self font heightOf:'PQWEXCZ' on:self device) printString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
    answer := (self font heightOf:'PQWEXCZ' on:self device).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
"/    answer := textMetrics tmHeight + textMetrics tmExternalLeading.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    ^answer 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
    "Created: / 02-08-2006 / 17:47:20 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
    "Modified: / 03-08-2006 / 10:09:01 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
    "Modified: / 10-10-2006 / 18:15:17 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
horizontalPixelsPerMeter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
        "Answer horizontal pixels per meter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
        on the screen."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
    ^self pixelsPerInchOfScreenWidth  * 39.3700787
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
name
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    "Answer the receiver's name from the current printerInfo."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
    ^ self printerInfo printerName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
    "Modified: / 02-08-2006 / 16:55:03 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    "Modified: / 10-10-2006 / 18:15:33 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
name:aName 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
    "Set the receiver's printer name to aName."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    self printerInfo:(self class getPrinterInformation:aName)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
    "Modified: / 10-10-2006 / 18:15:36 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
numberOfColorBitsPerPixel
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
    ^ OperatingSystem getDeviceCaps:gcId index:12 "Bitspixel"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
    "Created: / 03-08-2006 / 09:58:18 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
    "Modified: / 10-10-2006 / 18:15:40 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
physicalOffsetX
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
        "Papierhöhe in Pixels"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
       "Changed by K3/EEZ3-Mg, 02.03.99"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
    ^ OperatingSystem getDeviceCaps:gcId index:112 "PhysicalOffsetX"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
    "Created: / 01-08-2006 / 16:28:34 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
physicalOffsetY
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
        "Papierhöhe in Pixels"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
       "Changed by K3/EEZ3-Mg, 02.03.99"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    ^ OperatingSystem getDeviceCaps:gcId index:113 "PhysicalOffsetY"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    "Created: / 01-08-2006 / 16:28:34 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
pixelsPerInchOfScreenHeight
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    ^ OperatingSystem getDeviceCaps:gcId index:90 "Logpixelsy"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
    "Created: / 01-08-2006 / 16:29:16 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
pixelsPerInchOfScreenWidth
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    ^ OperatingSystem getDeviceCaps:gcId index:88 "Logpixelsx"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    "Created: / 01-08-2006 / 16:28:34 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
printerHeightArea
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
    ^ (OperatingSystem getDeviceCaps:gcId index:10)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
    "Modified: / 10-10-2006 / 18:18:31 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
printerInfo
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
    "Answer the receiver's name from the current printerInfo."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
    ^ printerInfo
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
    "Created: / 02-08-2006 / 16:55:17 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
    "Modified: / 10-10-2006 / 18:18:34 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
printerInfo:aPrinterInfo 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
    "Sets the receiver's printerInfo."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
    printerInfo := aPrinterInfo
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
    "Created: / 02-08-2006 / 16:55:34 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
    "Modified: / 03-08-2006 / 13:11:19 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
    "Modified: / 10-10-2006 / 18:18:37 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
printerInfoWithName:aName 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    "Set the receiver's printer name to aName."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
    self printerInfo:(self class getPrinterInformation:aName).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
    ^ self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
    "Created: / 02-08-2006 / 16:55:52 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
    "Modified: / 10-10-2006 / 18:18:41 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
printerPhysicalHeight
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    ^ OperatingSystem getDeviceCaps:gcId "deviceContext" index:111 "PhysicalHeight"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
    "Created: / 01-08-2006 / 16:14:08 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
printerPhysicalWidth
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
    ^ OperatingSystem getDeviceCaps:gcId "deviceContext" index:110 "PhysicalWidth"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
    "Created: / 01-08-2006 / 16:14:08 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
printerUserFriendlyName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
    "Answer the receiver's name from the current printerInfo."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
    ^ self printerInfo userFriendlyName
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
    "Created: / 03-08-2006 / 12:55:57 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
    "Modified: / 10-10-2006 / 18:18:55 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
printerWidthArea
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
    ^ OperatingSystem getDeviceCaps:gcId "deviceContext" index:8 "Horzres"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
    "Created: / 01-08-2006 / 16:14:08 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
setPrinterFont:aFont 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
    self font: aFont
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
    "Created: / 27-11-2006 / 14:50:55 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
setTextAlign:aNumber
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   570
"/    OperatingSystem setTextAlign: aNumber to: gcId.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
    textAlign :=aNumber.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   572
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
setViewportOrg: aPoint
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
    ^ OperatingSystem 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
            setViewportOrg: gcId "deviceContext"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
            x: aPoint x
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
            y: aPoint y
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
            oldOrigin: nil 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
    "Created: / 01-08-2006 / 16:14:08 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
verticalPixelsPerMeter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
        "Answer vertical pixels per inch
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
        on the screen."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
    ^self pixelsPerInchOfScreenHeight * 39.3700787
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
!WinPrinterContext methodsFor:'initialization & release'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
buildPrinter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
    "Private - create all the operating system resources needed."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
    self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
        createDC;
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
        initExtent
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
    "Created: / 27-07-2006 / 10:20:36 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    "Modified: / 01-08-2006 / 15:57:49 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    "Modified: / 10-10-2006 / 18:14:04 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
createDC
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    "Private - Create a device context for the receiver"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   609
    gcId := printerInfo createDC
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   611
    "Created: / 27-07-2006 / 10:21:05 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
    "Modified: / 02-08-2006 / 17:30:47 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
    "Modified: / 10-10-2006 / 18:14:28 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
executor
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
    |aCopy|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
    aCopy := WinWorkstation::PrinterDeviceContextHandle basicNew.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
    aCopy setDevice:device id:nil gcId:gcId.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
    ^ aCopy
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   622
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
    "Created: / 16-04-2007 / 12:39:02 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   625
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   626
initExtent
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
    "Private - init the width and height of GraphicsTool for the receiver."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   628
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   629
    width := self printerWidthArea.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   630
    height := self printerHeightArea.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   631
    device
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   632
        width:width;
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   633
        height:height.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   634
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   636
    "Modified: / 01-08-2006 / 16:14:49 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
!WinPrinterContext methodsFor:'printing'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   640
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   641
print:aString font:aFont title:aTitle wordWrap:wordWrapBoolean marginsRect:aMarginsRect 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   642
    "Answer the receiver.  Output the receiver string to
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   643
     the printer using aFont.  A Print abort dialog box will be opened
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   644
     with aTitle.  If collateBoolean is true, collate output, otherwise
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
     do not.  Print copiesInteger copies of the specified string.  If
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
     wordWrapBoolean is true, word wrap the lines, otherwise do not.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
     Left, top, right & bottom margins are specified in inches in
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   648
     aMarginsRect."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
    |lines linesPerPage totalPage marginsRect firstPage abortDialog|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
    jobid isNil ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
        self startPrintJob:aTitle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
    abortDialog := PrintAbortDialog new open:aTitle printer:self.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
    self font:aFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
    marginsRect := self marginsRectangleFor:aMarginsRect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
    lines := self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   659
                asArrayOfStringLines:aString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   660
                in:marginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   661
                wordWrap:wordWrapBoolean.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   662
    linesPerPage := self linesPerPageFor: marginsRect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   663
    totalPage := (lines size + linesPerPage - 1) // linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   664
    firstPage := true.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
"/    collateBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
"/        ifTrue: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
"/            copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
    1 to:totalPage do:[:page | 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
        abort ifTrue:[ ^ self ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
        firstPage ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
            self formFeed
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   675
        abortDialog 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
            updatePrintingPageInfo:(self class classResources
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
                                    string:'Page %1/%2'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
                                    with:page printString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   679
                                    with:totalPage printString).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
        
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
"/      self device font: printerFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
        
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
        self font:aFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   684
        self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
            printPage:page
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
            in:marginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
            lines:lines
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   688
            linesPerPage:linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
        firstPage := false
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   690
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
"/            ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   693
"/        ] ifFalse: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   694
"/            1 to: totalPage do: [ :page |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   695
"/                copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
"/                    abort ifTrue: [ ^self endPrintJob ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
"/                    firstPage ifFalse: [ self formFeed ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
"/                    self device font: printerFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   699
"/                    self printPage: page in: marginsRect lines: lines linesPerPage: linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   700
"/                    firstPage := false 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   701
"/                 ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   702
"/            ]   
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
"/        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
    jobid notNil ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
        self endPrintJob.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
        abortDialog close.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   710
    "/    abort ifFalse: [ abortDialog close ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   711
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
    "Created: / 03-08-2006 / 16:13:33 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   713
    "Modified: / 04-08-2006 / 13:40:02 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   714
    "Modified: / 10-10-2006 / 18:16:54 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   715
    "Modified: / 12-10-2006 / 11:50:37 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   716
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   717
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   718
print: aString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   719
    pageHeader: aString2
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
    font: aFont
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
    title: aTitle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
    collate: collateBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
    copies: copiesInteger
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
    wordWrap: wordWrapBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
    marginsRect: aMarginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
        "Private - Answer the receiver.  Output the receiver string to
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
        the printer using aFont.  A Print abort dialog box will be opened
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
        with aTitle.  If collateBoolean is true, collate output, otherwise
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
        do not.  Print copiesInteger copies of the specified string.  If
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
        wordWrapBoolean is true, word wrap the lines, otherwise do not.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
        Left, top, right & bottom margins are specified in inches in
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
        aMarginsRect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
        Mg: Erweitert um pageHeader"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   735
       "Changed by K3/EES5-Mg, 08.01.96"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
    | lines linesPerPage totalPage marginsRect firstPage charHeight  printerFont headerLines|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
    printerFont := self setPrinterFont: aFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   740
    charHeight := self "pen" getCharHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   741
    marginsRect := self marginsRectangleFor: aMarginsRect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
    lines := self "pen" asArrayOfStringLines: aString in: marginsRect wordWrap: wordWrapBoolean.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
    headerLines := self "pen" asArrayOfStringLines: aString2 in: marginsRect wordWrap: wordWrapBoolean.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   744
    linesPerPage := marginsRect bottom - marginsRect top // charHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   746
    linesPerPage > headerLines size
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   747
        ifFalse:
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   748
          [Dialog information: 'Der Dokumentenkopf ist zu groß; wird ignoriert!!'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
           headerLines := #().
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   750
          ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   751
        ifTrue: [linesPerPage := linesPerPage - headerLines size].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   752
    totalPage := lines size + linesPerPage - 1 // linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   753
    firstPage := true.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   754
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   755
"/    collateBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   756
"/        ifTrue: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   757
"/            copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   758
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   759
                1 to: totalPage do: [ :page |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   760
                    abort ifTrue: [ ^self endPrintJob ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   761
                    firstPage ifFalse: [ self formFeed ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   762
                    self "pen" font: aFont "printerFont".
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   763
                    self printPage: page in: marginsRect lines: lines headerLines: headerLines linesPerPage: linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   764
                    firstPage := false ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   765
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   766
"/              ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   767
"/          ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   768
"/        ifFalse: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   769
"/            1 to: totalPage do: [ :page |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   770
"/                copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   771
"/                    abort ifTrue: [ ^self endPrintJob ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   772
"/                    firstPage ifFalse: [ self formFeed ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   773
"/                    self "pen" font: printerFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   774
"/                    self printPage: page in: marginsRect lines: lines headerLines: headerLines linesPerPage: linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   775
"/                    firstPage := false ] ] ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   776
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   777
    "Created: / 30-11-2006 / 13:19:06 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   778
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   779
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   780
print:aString pageHeader:aString2 font:aFont title:aTitle wordWrap:wordWrapBoolean marginsRect:aMarginsRect 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   781
    "Private - Answer the receiver.  Output the receiver string to
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   782
     the printer using aFont.  A Print abort dialog box will be opened
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   783
     with aTitle.  If collateBoolean is true, collate output, otherwise
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   784
     do not.  Print copiesInteger copies of the specified string.  If
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   785
     wordWrapBoolean is true, word wrap the lines, otherwise do not.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   786
     Left, top, right & bottom margins are specified in inches in
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   787
     aMarginsRect."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   788
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   789
    |lines linesPerPage totalPage marginsRect firstPage charHeight printerFont headerLines|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   790
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   791
    self font:aFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   792
    charHeight := self getCharHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   793
    marginsRect := self marginsRectangleFor:aMarginsRect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   794
    lines := self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   795
                asArrayOfStringLines:aString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   796
                in:marginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   797
                wordWrap:wordWrapBoolean.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   798
    headerLines := self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   799
                asArrayOfStringLines:aString2
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   800
                in:marginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   801
                wordWrap:wordWrapBoolean.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   802
    linesPerPage := (marginsRect bottom - marginsRect top) // charHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   803
    linesPerPage > headerLines size ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   804
        Dialog information:(self class classResources 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   805
                                string:'The header is too large - ignored!!').
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
        headerLines := #().
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   807
    ] ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   808
        linesPerPage := linesPerPage - headerLines size
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   809
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   810
    totalPage := (lines size + linesPerPage - 1) // linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   811
    firstPage := true.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   812
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   813
"/    collateBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   814
"/        ifTrue: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
"/            copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   816
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   817
    1 to:totalPage do:[:page | 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   818
        abort ifTrue:[ ^ self ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   819
        firstPage ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   820
            self formFeed
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   821
        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   822
        self font:printerFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   823
        self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   824
            printPage:page
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   825
            in:marginsRect
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   826
            lines:lines
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   827
            headerLines:headerLines
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
            linesPerPage:linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
        firstPage := false
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   830
    ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   831
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   832
    "/            ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   833
    "/        ] ifFalse: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   834
    "/            1 to: totalPage do: [ :page |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   835
    "/                copiesInteger timesRepeat: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   836
    "/                    abort ifTrue: [ ^self endPrintJob ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   837
    "/                    firstPage ifFalse: [ self formFeed ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   838
    "/                    self device font: printerFont.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   839
    "/                    self printPage: page in: marginsRect lines: lines headerLines: headerLines linesPerPage: linesPerPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   840
    "/                    firstPage := false 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   841
    "/                ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   842
    "/            ] 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   843
    "/        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   844
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   845
    "Created: / 03-08-2006 / 16:14:10 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   846
    "Modified: / 10-10-2006 / 18:18:03 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   847
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   848
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   849
!WinPrinterContext methodsFor:'printing process'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   850
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   851
endPage
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   852
    "Informs device that we are finished writing to a page."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   853
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   854
    (OperatingSystem endPage:gcId) > 0 ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   855
        self error
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   856
    ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   857
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   858
    "Created: / 27-07-2006 / 18:20:48 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   859
    "Modified: / 01-08-2006 / 16:01:34 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   860
    "Modified: / 10-10-2006 / 18:14:44 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   861
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   862
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   863
endPrintJob
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   864
    "End the print job.  Everything drawn between startPrintJob
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   865
     and endPrintJob will become one entry in the print queue."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   866
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   867
    |result|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   868
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
    self endPage.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
    result := OperatingSystem endDoc:gcId.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
    device close.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   872
    gcId := nil.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   873
    jobid := nil.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   874
    result >= 0 ifFalse:[ self error ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
    "Created: / 27-07-2006 / 18:21:04 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   877
    "Modified: / 01-08-2006 / 16:01:38 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   878
    "Modified: / 10-10-2006 / 18:50:43 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   879
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   880
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   881
formFeed
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   882
    "Send a form feed to the printer."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   884
    self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
        endPage;
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   886
        startPage
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   888
    "Created: / 27-07-2006 / 18:25:40 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   889
    "Modified: / 10-10-2006 / 18:15:07 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   890
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   892
startPage
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   893
    "Starts a page."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   894
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   895
    (OperatingSystem startPage:gcId) > 0 ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   896
        ^ self error
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   897
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   898
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   899
    "Created: / 27-07-2006 / 18:25:55 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   900
    "Modified: / 28-07-2006 / 18:19:04 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
    "Modified: / 10-10-2006 / 18:19:02 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   902
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   903
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   904
startPrintJob
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   905
    "Start a print job.  Everything drawn between startPrintJob
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
     and endPrintJob will become one entry in the print queue."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
    self startPrintJob:nil
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   909
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   910
    "Created: / 27-07-2006 / 18:18:52 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   911
    "Modified: / 10-10-2006 / 18:19:05 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   912
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
startPrintJob:aString 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
    "Start a print job, using aString as the job title; everything
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   916
     drawn between startPrintJob and endPrintJob will become
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   917
     one entry in the print queue."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   918
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   919
    ^ self startPrintJob:aString fileName:nil
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   920
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   921
    "Created: / 27-07-2006 / 18:19:09 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   922
    "Modified: / 10-10-2006 / 18:19:12 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   923
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
startPrintJob:aString fileName:aFileName 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
    "Start a print job, using aString as the job title; everything
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   927
     drawn between startPrintJob and endPrintJob will become
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
     one entry in the print queue."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   929
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   930
    |docInfoStruct nameAddress title fileNameAddress|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   931
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
    gcId isNil ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   933
        self buildPrinter
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   934
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   935
    abort := false.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   936
    title := aString ? 'Smalltalk/X'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   937
    nameAddress := title asExternalBytes unprotectFromGC.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   938
    aFileName isNil ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   939
        fileNameAddress := aFileName pathName asExternalBytes unprotectFromGC
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   940
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   941
    docInfoStruct := Win32OperatingSystem::DocInfoStructure new.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   942
    docInfoStruct
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   943
        cbSize:docInfoStruct sizeInBytes;
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   944
        lpszDocName:nameAddress address.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   945
    fileNameAddress isNil ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   946
        docInfoStruct lpszOutput:fileNameAddress address
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   947
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   948
    jobid := OperatingSystem startDoc:gcId docInfo:docInfoStruct.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   949
    jobid > 0 ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   950
        jobid = -1 ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   951
            abort := true.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   952
            ^ nil
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   953
        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   954
        ^ self error
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   955
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   956
    self startPage
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   957
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   958
    "Created: / 27-07-2006 / 18:19:31 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   959
    "Modified: / 03-08-2006 / 15:11:19 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   960
    "Modified: / 10-10-2006 / 18:20:01 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   961
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   962
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
!WinPrinterContext methodsFor:'queries'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   964
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   965
supportsColor
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   966
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
"/    | retVal info |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   968
"/
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   969
"/    info := (self class getPrinterInformation: self name) asUppercase.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   970
"/    (info includesSubstring: ',PSCRIPT,')
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   971
"/    ifTrue: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   972
"/        retVal := (DAPASX::DapasSystemInfo getYesNoInfoApp: 'Printer' profile: 'PostScriptBlackWhite') not.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   973
"/    ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   974
"/    ifFalse: [
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   975
"/        retVal := (info includesSubstring: 'PDF')
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   976
"/            ifTrue: [true]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   977
"/            ifFalse: [self numberOfColorBitsPerPixel > 1].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   978
"/    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   979
"/
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
"/    ^retVal
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   982
    ^ false.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   983
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   984
    "Created: / 03-08-2006 / 09:55:26 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   985
    "Modified: / 04-08-2006 / 13:20:40 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   986
    "Modified: / 10-10-2006 / 18:21:07 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   987
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   988
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   989
supportsGraphics
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   990
    ^(OperatingSystem getDeviceCaps: gcId "asParameter" index: 2 "Technology") ~= 4
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   991
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   992
    "Created: / 03-08-2006 / 10:07:43 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   993
    "Modified: / 10-10-2006 / 18:21:14 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   994
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   995
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   996
!WinPrinterContext methodsFor:'text printing'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   997
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   998
asArrayOfStringLines:aString in:aRectangle wordWrap:wordWrapBoolean 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   999
    "Private - convert aString into an array of lines; if wordWrapBoolean
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1000
     is true, also perform word wrapping on the lines, within aRectangle."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1001
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1002
    |line lines stream x0 x1 partialLine leftMargin rightMargin partialLineWidth index|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1003
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1004
    stream := ReadStream on:aString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1005
    lines := OrderedCollection new.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1006
    wordWrapBoolean ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1007
        leftMargin := aRectangle left.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1008
        rightMargin := aRectangle right
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1009
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1010
    [ stream atEnd ] whileFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1011
        line := stream nextLine.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1012
        wordWrapBoolean ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1013
            lines add:line
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1014
        ] ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1015
            x0 := x1 := 1.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1016
            1 to:line size do:[:i | 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1017
                ((line at:i) = Character space "32" 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1018
                    and:[ (partialLine := line copyFrom:x0 to:i) trimBlanks notEmpty ]) 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1019
                        ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1020
                            partialLineWidth := self stringWidthOf:partialLine.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1021
                            (leftMargin + partialLineWidth) > rightMargin ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1022
                                partialLine := line copyFrom:x0 to:x1.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1023
                                lines add:partialLine.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1024
                                x0 := x1 + 1
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1025
                            ] ifFalse:[ x1 := i ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1026
                        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1027
                index := i
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1028
            ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1029
            line isEmpty ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1030
                lines add:line
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1031
            ] ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1032
                partialLine := line copyFrom:x0 to:index.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1033
                partialLineWidth := self stringWidthOf:partialLine.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1034
                (leftMargin + partialLineWidth) > rightMargin ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1035
                    partialLine := line copyFrom:x0 to:x1.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1036
                    lines add:partialLine.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1037
                    partialLine := line copyFrom:x1 + 1 to:index
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1038
                ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1039
                lines add:partialLine
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1040
            ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1041
        ]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1042
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1043
    ^ lines asArray
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1044
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1045
    "Created: / 02-08-2006 / 17:56:51 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1046
    "Modified: / 04-08-2006 / 13:39:50 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1047
    "Modified: / 10-10-2006 / 18:14:00 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1048
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1049
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1050
displayString:aString at:aPoint in:aRect options:ignoredForNow adx:unknownForNow
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1051
    |x y|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1052
    x := aPoint x.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1053
    y := aPoint y.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1054
    (textAlign isNil or:[textAlign == 0 ]) ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1055
        self displayString:aString at:aPoint.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1056
        ^ self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1057
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1058
    (textAlign == 8 "TaBottom") ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1059
        y := aPoint y - (self container font ascent) "container font ascent".
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1060
    ] ifFalse:[ (textAlign == 6 "TaCenter") ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1061
        #TODO.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1062
"/        x := aRect left + ((aRect width-(container font widthOf:aString))//2).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1063
    ] ifFalse:[ (textAlign == 2 "TaRight") ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1064
        x := aRect right - (self "container font widthof:" stringWidthOf:aString).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1065
        y := self "container font ascent" getCharHeight + aPoint y .
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1066
    ] ifFalse:[ (textAlign == 14 "TaCenterBottom") ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1067
        y := aRect bottom - self getCharHeight "container font ascent".
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1068
        x := aRect left + ((aRect width-(self "container font widthOf:" stringWidthOf:aString))//2).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1069
    ] ifFalse:[ (textAlign == 10) ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1070
        x := aRect right - (self "container font widthof:" stringWidthOf:aString).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1071
        y := aRect bottom "aPoint y - (self container font ascent)" - self getCharHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1072
    ]]]]].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1073
"/    Transcript showCR: 'Original Pos: ', aPoint x printString, '@', aPoint y printString,
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1074
"/                       ' Pos: ', x printString, '@', y printString,
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1075
"/                       ' Text: ', aString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1076
    self displayString:aString at:(x@y).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1077
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1078
    "Modified: / 14-12-2006 / 12:29:13 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1079
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1080
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1081
displayStringLines:anIndexedCollection from:startIndex to:endIndex in:aRectangle 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1082
    "Private - display Strings in anIndexedCollection starting at startIndex and
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1083
     ending at endIndex, clipped within the bounds of aRectangle."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1084
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1085
    |charHeight ta region ascent|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1086
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1087
    charHeight := self getCharHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1088
    ascent := self font ascentOn:self device.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1089
    startIndex to:endIndex do:[:i | 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1090
        |lineToPrint|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1091
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1092
        lineToPrint := (anIndexedCollection at:i).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1093
        self device 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1094
            displayString:lineToPrint
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1095
            from:1
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1096
            to:lineToPrint size
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1097
            x:aRectangle left
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1098
            y:(aRectangle top + ((i - startIndex) * charHeight))
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1099
            in:nil
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1100
            with:gcId
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1101
            opaque:false
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1102
            fontAscent:ascent.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1103
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1104
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1105
    "/    region := self setClipRect: aRectangle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1106
    "/    ta := self getTextAlign.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1107
    "/    self setTextAlign: TaTop.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1108
    "/    startIndex to: endIndex do: [ :i |
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1109
    "/        self
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1110
    "/            displayText: ( anIndexedCollection at: i )
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1111
    "/            at: aRectangle left @ ( aRectangle top + ( i - startIndex * charHeight ) ) ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1112
    "/    self setTextAlign: ta.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1113
    "/    self destroyRegion: region
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1114
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1115
    "Created: / 03-08-2006 / 11:37:52 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1116
    "Modified: / 03-08-2006 / 12:38:43 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1117
    "Modified: / 10-10-2006 / 18:14:36 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1118
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1119
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1120
displayStringLines:anIndexedCollection in:aRectangle 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1121
    "Private - display anIndexedCollection of Strings clipped within
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1122
     the bounds of aRectangle."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1123
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1124
    self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1125
        displayStringLines:anIndexedCollection
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1126
        from:1
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1127
        to:anIndexedCollection size
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1128
        in:aRectangle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1129
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1130
    "Created: / 03-08-2006 / 16:03:07 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1131
    "Modified: / 10-10-2006 / 18:14:40 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1132
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1133
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1134
displayText: aString at: aPoint
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1135
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1136
self displayString:aString x:aPoint x y:aPoint y
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1137
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1138
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1139
linesPerPageFor: aRectangle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1140
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1141
|marginsRect charHeight|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1142
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1143
    marginsRect := aRectangle isNil 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1144
        ifTrue:[self marginsRectangleFor: nil]
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1145
        ifFalse:[aRectangle].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1146
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1147
    charHeight := self getCharHeight.                   
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1148
    ^(marginsRect bottom - marginsRect top) // charHeight
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1149
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1150
    "Created: / 12-10-2006 / 11:52:57 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1151
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1152
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1153
marginsRectangleFor:aRectangle 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1154
    "Private - Answer a Rectangle defining margins based on aRectangle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1155
     Units for aRectangle are in inches, returned margins rectangle is
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1156
     in device units (pixels)."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1157
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1158
    |left top right bottom pixelsPerInchX pixelsPerInchY horzRes vertRes inset rectangle|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1159
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1160
    pixelsPerInchX := self pixelsPerInchOfScreenWidth.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1161
pixelsPerInchX == 0 ifTrue:[self halt].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1162
    pixelsPerInchY := self pixelsPerInchOfScreenHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1163
    aRectangle isNil ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1164
        horzRes := self printerWidthArea.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1165
        vertRes := self printerHeightArea.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1166
        inset := self class defaultMargins.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1167
        left := (inset x * pixelsPerInchX) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1168
        top := (inset y * pixelsPerInchY) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1169
        right := horzRes - (inset x * pixelsPerInchX) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1170
        bottom := vertRes - (inset y * pixelsPerInchY) asInteger
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1171
    ] ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1172
        left := (aRectangle left * pixelsPerInchX) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1173
        top := (aRectangle top * pixelsPerInchY) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1174
        right := (aRectangle right * pixelsPerInchX) asInteger.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1175
        bottom := (aRectangle bottom * pixelsPerInchY) asInteger
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1176
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1177
    rectangle := left @ top corner:right @ bottom.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1178
    ^ rectangle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1179
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1180
    "Created: / 27-07-2006 / 18:22:57 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1181
    "Modified: / 04-08-2006 / 13:39:45 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1182
    "Modified: / 16-04-2007 / 11:57:21 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1183
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1184
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1185
printPage:pageIndex in:aRectangle lines:lines headerLines:headerLines linesPerPage:linesPerPage 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1186
    "Private - print page # pageIndex from lines, assuming
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1187
     the given number of linesPerPage."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1188
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1189
    |firstLine lastLine l indexString p cHeight rect hLines|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1190
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1191
    firstLine := (pageIndex - 1) * linesPerPage + 1.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1192
    lastLine := (firstLine + linesPerPage - 1) min:lines size.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1193
    rect := aRectangle deepCopy.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1194
    hLines := headerLines deepCopy.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1195
    headerLines size > 0 ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1196
        l := hLines first.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1197
        p := l indexOfSubCollection: "indexOfString:"'#P'.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1198
        p = 0 ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1199
            indexString := pageIndex printString , ' '.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1200
            l := (l copyFrom:1 to:p - 1) , indexString , (l copyFrom:p + 2 to:l size).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1201
            hLines at:1 put:l.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1202
        ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1203
        cHeight := self getCharHeight.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1204
        rect top:rect top + (hLines size * cHeight).
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1205
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1206
    self displayStringLines:hLines in:aRectangle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1207
    self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1208
        displayStringLines:lines
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1209
        from:firstLine
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1210
        to:lastLine
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1211
        in:rect.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1212
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1213
    "Created: / 27-07-2006 / 18:28:00 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1214
    "Modified: / 03-08-2006 / 16:03:15 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1215
    "Modified: / 10-10-2006 / 18:18:15 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1216
    "Modified: / 30-11-2006 / 13:34:44 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1217
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1218
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1219
printPage:pageIndex in:aRectangle lines:lines linesPerPage:linesPerPage 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1220
    "Private - print page # pageIndex from lines, assuming
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1221
     the given number of linesPerPage."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1222
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1223
    |firstLine lastLine|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1224
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1225
    firstLine := (pageIndex - 1) * linesPerPage + 1.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1226
    lastLine := (firstLine + linesPerPage - 1) min:lines size.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1227
    self 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1228
        displayStringLines:lines
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1229
        from:firstLine
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1230
        to:lastLine
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1231
        in:aRectangle
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1232
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1233
    "Created: / 27-07-2006 / 18:24:59 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1234
    "Modified: / 03-08-2006 / 12:47:24 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1235
    "Modified: / 10-10-2006 / 18:18:22 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1236
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1237
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1238
stringWidthOf:aString 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1239
    "Return the width of aString
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1240
     when written using the current font."
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1241
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1242
    ^ self stringWidthOf:aString at:aString size.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1243
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1244
    "Modified: / 03-08-2006 / 10:18:23 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1245
    "Modified: / 10-10-2006 / 18:20:08 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1246
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1247
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1248
stringWidthOf:aString at:index 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1249
    "Return the width of aString up to index
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1250
     when written using the current font; expand tabs out
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1251
     to 4 spaces for calculations"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1252
    
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1253
    |answer str size spaceWidth|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1254
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1255
    index <= 0 ifTrue:[ ^ 0 ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1256
    str := index >= aString size ifTrue:[ aString ] ifFalse:[ aString copyFrom:1 to:index ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1257
    true "self font isNil" ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1258
        "if font not set yet, calculate based on default font"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1259
        "/            extString := str asExternalString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1260
        size := Win32OperatingSystem::WinPointStructure new.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1261
        (OperatingSystem 
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1262
            getTextExtentPoint:gcId
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1263
            string:str
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1264
            size:size) ifFalse:[ ^ self error ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1265
        answer := size x.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1266
"/        Transcript showCR: 'FROM PRIM ******* ', str, '   ',  answer printString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1267
"/        Transcript showCR: 'FROM DEVICE ***** ', str, '   ',(self font widthOf:str on:self device) printString.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1268
        #TODO.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1269
    ] ifFalse:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1270
        answer := self font widthOf:str on:self device
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1271
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1272
    index > aString size ifTrue:[
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1273
        spaceWidth := self font widthOf:Character space on:self device.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1274
        answer := answer + ((index - aString size) * spaceWidth)
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1275
    ].
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1276
    ^ answer.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1277
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1278
    "Created: / 03-08-2006 / 10:27:20 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1279
    "Modified: / 04-08-2006 / 12:27:26 / fm"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1280
    "Modified: / 10-10-2006 / 18:20:43 / cg"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1281
!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1282
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1283
withLineStyle:aSymbol lineWidth:lw paint:paintColor do:aBlock
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1284
    |savStyle savWidth savPaint|
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1285
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1286
    savStyle := self lineStyle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1287
    savWidth := self lineWidth.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1288
    savPaint := self paint.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1289
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1290
    self lineStyle:aSymbol.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1291
    self lineWidth:lw.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1292
    self paint:paintColor.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1293
    aBlock value.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1294
    self paint:savPaint.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1295
    self lineWidth:savWidth.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1296
    self lineStyle:savStyle.
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1297
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1298
    "Created: / 13-09-2006 / 15:38:56 / User"
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1299
! !
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1300
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1301
!WinPrinterContext class methodsFor:'documentation'!
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1302
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1303
version
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1304
    ^ '$Header: /cvs/stx/stx/libview2/WinPrinterContext.st,v 1.1 2007-04-16 10:40:02 cg Exp $'
b0576a106d03 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1305
! !