BitmapFont.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 06 Sep 2017 10:04:18 +0200
branchjv
changeset 8180 25149dfd68e0
parent 7579 0861654a1257
child 9035 f07b260cf6b5
permissions -rw-r--r--
Build files: removed a bunch of make rules for long-dead unsupported systems ...in order to unify and simplify the build. If a need to support this ancient systems arose, these hacks may ni longer be needed (due to new versions of tools) or the hacks would have to be written again (better) or retrieved from SCM (worse). Time will show.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 This is a demo example:
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
 SUCH DAMAGE.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
3659
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2545
diff changeset
    26
"{ Package: 'stx:libview' }"
26bd2ef5f0ed on -> onDevice
Michael Beyl <mb@exept.de>
parents: 2545
diff changeset
    27
6931
babe431ab64c #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6080
diff changeset
    28
"{ NameSpace: Smalltalk }"
babe431ab64c #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6080
diff changeset
    29
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
FontDescription subclass:#BitmapFont
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
    31
	instanceVariableNames:'characterBitmaps ascent descent maxWidth maxHeight'
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	classVariableNames:''
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	poolDictionaries:''
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	category:'Graphics-Support'
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!BitmapFont class methodsFor:'documentation'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
copyright
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
 COPYRIGHT (c) 1994 by Claus Gittinger
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	      All Rights Reserved
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
 This software is furnished under a license and may be used
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
 only in accordance with the terms of that license and with the
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
 inclusion of the above copyright notice.   This software may not
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
 be provided or otherwise made available to, or used by, any
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
 other person.  No title to or ownership of the software is
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
 hereby transferred.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
 This is a demo example:
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTOR ``AS IS'' AND
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
 ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTOR BE LIABLE
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
 SUCH DAMAGE.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
documentation
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    This class demonstrates, that it is possible to define your own
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    renderers for fonts - you could even write a class which reads 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    a truetype font from a ttf file and display those 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    (maybe someone finds the time to do this 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
     and provides the code to the public domain ?)
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    Here is a simple & sample implementation of private bitmap fonts;
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    Glyphs for each character are stored in the instance variable
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    'characterBitmaps'.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    Some sample glyphs can be created with the class' sampleGlyphs method.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    The required protocol is found in drawing and accessing.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    80
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    81
    [author:]
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    82
        Claus Gittinger
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    83
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    84
    [see also:]
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    85
        Font GraphicsContext
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
examples
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
    91
  a label showing characters in a new bitmap font:
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
    92
                                                                [exBegin]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    |font l|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    font := (BitmapFont new glyphs:(BitmapFont sampleGlyhps)).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    font setAscent:13; setDescent:3.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    l := Label new.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    l font:font.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    l label:'aazzazaz'.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    l open.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   102
                                                                [exEnd]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
  a label showing characters in a new smily font:
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   106
                                                                [exBegin]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    |font l|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    font := (BitmapFont new glyphs:(BitmapFont smilyGlyhps)).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    font setAscent:16; setDescent:0.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    l := Label new.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    l font:font.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    l label:'aabbaaa'.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    l open.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   116
                                                                [exEnd]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   119
  demonstrate, that this font can be used in listViews just as any other font:
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
  (well, missing character glyphs are blanked)
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   121
                                                                [exBegin]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    |font top list|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    font := (BitmapFont new glyphs:(BitmapFont sampleGlyhps)).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    font setAscent:13; setDescent:3.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    top := ScrollableView forView:(list := SelectionInListView new).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    list font:font.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    list list:#('a' 'z' 'aaa' 'zzz' 'azaz' 'zaza' 'aa' 'az' 'za' 'hello' 'abcdef' 'xyz').
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    top extent:200@200.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    top open.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   132
                                                                [exEnd]
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   133
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
  demonstrate, that this font can be used in textViews just as any other font:
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
  (well, missing character glyphs are blanked)
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   137
                                                                [exBegin]
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    |font top list|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    font := (BitmapFont new glyphs:(BitmapFont sampleGlyhps)).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    font setAscent:13; setDescent:3.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    top := ScrollableView forView:(list := EditTextView new).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    list font:font.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    list list:#('a' 'z' 'aaa' 'zzz' 'azaz' 'zaza' 'aa' 'az' 'za' 'hello' 'abcdef' 'xyz').
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    top extent:200@200.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    top open.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   148
                                                                [exEnd]
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   149
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   150
  another clock display:
6931
babe431ab64c #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6080
diff changeset
   151
  defines a font with the 7-segment led bitmaps as glyphs for 0-9,
babe431ab64c #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6080
diff changeset
   152
  then simply displays the time as a string in that font.
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   153
                                                                [exBegin]
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   154
    |glyphs f label|
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   155
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   156
    glyphs := Array new:256.
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   157
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   158
        at:($0 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   159
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led0.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   160
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   161
        at:($1 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   162
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led1.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   163
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   164
        at:($2 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   165
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led2.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   166
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   167
        at:($3 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   168
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led3.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   169
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   170
        at:($4 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   171
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led4.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   172
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   173
        at:($5 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   174
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led5.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   175
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   176
        at:($6 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   177
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led6.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   178
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   179
        at:($7 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   180
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led7.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   181
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   182
        at:($8 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   183
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led8.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   184
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   185
        at:($9 asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   186
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/led9.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   187
    glyphs 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   188
        at:($: asciiValue + 1) 
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   189
        put:(Image fromFile:'../../goodies/bitmaps/xpmBitmaps/misc_numbers/ledCol.xpm').
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   190
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   191
    f := BitmapFont new glyphs:glyphs.
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   192
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   193
    label := Label new label:(Time now printString).
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   194
    label font:f.
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   195
    label open
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   196
                                                                [exEnd]
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   197
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
!BitmapFont class methodsFor:'instance creation'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
new
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    |newFont|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    newFont := super new 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
		  family:'private' 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
		  face:nil
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
		  style:nil
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
		  size:nil
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
		  encoding:nil. 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    ^ newFont
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    "
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
     BitmapFont new glyphs:(self sampleGlyhps).
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    "
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!BitmapFont class methodsFor:'private'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
sampleGlyhps
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    "return the bitmap array for a sample font
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
     (only contains glyphs for $a and $z)"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    |characters|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    characters := Array new:256.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    characters 
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   230
        at:(Character space codePoint + 1) 
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   231
        put:(Form 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   232
                width:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   233
                height:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   234
                fromArray:#[2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   235
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   236
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   237
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   238
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   239
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   240
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   241
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   242
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   243
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   244
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   245
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   246
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   247
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   248
                            2r00000000 2r00000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   249
                            2r00000000 2r00000000]).
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    characters 
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   252
        at:($a codePoint + 1) 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   253
        put:(Form 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   254
                width:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   255
                height:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   256
                fromArray:#[2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   257
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   258
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   259
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   260
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   261
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   262
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   263
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   264
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   265
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   266
                            2r00011000 2r00011000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   267
                            2r00011111 2r11111110
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   268
                            2r00011111 2r11111110
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   269
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   270
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   271
                            2r00000000 2r00000000]).
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   272
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   273
    characters 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   274
        at:($z codePoint + 1) 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   275
        put:(Form 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   276
                width:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   277
                height:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   278
                fromArray:#[2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   279
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   280
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   281
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   282
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   283
                            2r00000000 2r00110000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   284
                            2r00000000 2r01100000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   285
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   286
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   287
                            2r00000110 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   288
                            2r00001100 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   289
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   290
                            2r00011111 2r11111000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   291
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   292
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   293
                            2r00000000 2r00000000]).
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   294
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   295
    ^ characters
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   296
!
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   297
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   298
smilyGlyhps
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   299
    "return the bitmap array for a smily font
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   300
     (only contains glyphs for $a, $b and $c)"
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   301
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   302
    |characters|
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   303
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   304
    characters := Array new:256.
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   305
    characters 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   306
        at:(Character space codePoint + 1) 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   307
        put:(Form 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   308
                width:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   309
                height:16 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   310
                fromArray:#[2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   311
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   312
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   313
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   314
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   315
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   316
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   317
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   318
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   319
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   320
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   321
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   322
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   323
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   324
                            2r00000000 2r00000000
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   325
                            2r00000000 2r00000000]).
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   326
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   327
    characters 
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   328
        at:($a codePoint + 1) 
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   329
        put:(Form 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   330
                width:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   331
                height:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   332
                fromArray:#[2r00000001 2r10000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   333
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   334
                            2r00011000 2r00011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   335
                            2r00100000 2r00000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   336
                            2r01100110 2r01100110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   337
                            2r01000110 2r01100010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   338
                            2r01000000 2r00000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   339
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   340
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   341
                            2r01001000 2r00010010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   342
                            2r01001100 2r00110010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   343
                            2r01100111 2r11100110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   344
                            2r00100001 2r10000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   345
                            2r00011000 2r00011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   346
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   347
                            2r00000001 2r10000000]).
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
    characters 
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   350
        at:($b codePoint + 1) 
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   351
        put:(Form 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   352
                width:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   353
                height:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   354
                fromArray:#[2r00000001 2r10000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   355
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   356
                            2r00011000 2r00011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   357
                            2r00100000 2r00000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   358
                            2r01100110 2r01100110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   359
                            2r01000110 2r01100010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   360
                            2r01000000 2r00000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   361
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   362
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   363
                            2r01000000 2r00000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   364
                            2r01000001 2r10000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   365
                            2r01100010 2r01000110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   366
                            2r00100010 2r01000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   367
                            2r00011000 2r00011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   368
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   369
                            2r00000001 2r10000000]).
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    characters 
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   372
        at:($c codePoint + 1) 
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   373
        put:(Form 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   374
                width:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   375
                height:16 
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   376
                fromArray:#[2r00000001 2r10000000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   377
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   378
                            2r00011000 2r00011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   379
                            2r00100000 2r00000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   380
                            2r01100110 2r01100110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   381
                            2r01000110 2r01100010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   382
                            2r01000000 2r00000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   383
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   384
                            2r10000001 2r00000001
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   385
                            2r01000000 2r00000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   386
                            2r01000001 2r10000010
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   387
                            2r01100011 2r11000110
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   388
                            2r00100011 2r11000100
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   389
                            2r00011001 2r10011000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   390
                            2r00001110 2r01110000
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   391
                            2r00000001 2r10000000]).
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    ^ characters
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
!BitmapFont methodsFor:'accessing'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
glyphs:aGlyphArray
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   399
    "set the glyphs array; that is the collection of
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   400
     bitmaps - one for each character"
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   401
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    characterBitmaps := aGlyphArray.
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   403
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   404
    maxWidth := maxHeight := 0. 
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   405
    aGlyphArray do:[:glyph | glyph notNil ifTrue:[
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   406
                                 maxWidth := maxWidth max:(glyph width).
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   407
                                 maxHeight := maxHeight max:(glyph height).
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   408
                             ]
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   409
                   ].
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   410
    ascent isNil ifTrue:[ascent := maxHeight].
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   411
    descent isNil ifTrue:[descent := 0].
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
setAscent:aNumber
7347
43a15e3e23c4 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6931
diff changeset
   415
    "set the font's ascent; that is the number of pixels
43a15e3e23c4 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6931
diff changeset
   416
     above the baseline"
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   417
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    ascent := aNumber.
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   419
    maxHeight := self maxAscent + (self maxDescent max:0)
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
setDescent:aNumber
7347
43a15e3e23c4 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6931
diff changeset
   423
    "set the font's ascent; that is the number of pixels
43a15e3e23c4 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6931
diff changeset
   424
     below the baseline"
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   425
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
    descent := aNumber.
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   427
    maxHeight := self maxAscent + (self maxDescent max:0).
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
!BitmapFont methodsFor:'drawing'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
3663
d40999d6cd1e refactored
Michael Beyl <mb@exept.de>
parents: 3659
diff changeset
   432
displayString:aString from:index1 to:index2 x:x0 y:y in:aGC opaque:opaque
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   433
    "required protocol for new fonts:
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   434
     - display part of a string, drawing foreground pixels only"
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   435
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    |x|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
    x := x0.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
    index1 to:index2 do:[:index |
4077
ab3991c6a6b0 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 4039
diff changeset
   440
        self drawCharacter:(aString at:index) codePoint in:aGC x:x y:y opaque:opaque.
ab3991c6a6b0 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 4039
diff changeset
   441
        x := x + (self widthOfCharacter:(aString at:index) codePoint)
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    ]
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   443
! !
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   444
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   445
!BitmapFont methodsFor:'private - drawing'!
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
drawCharacter:ascii in:aGC x:x y:y opaque:opaque
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
    |glyph|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   450
    glyph := characterBitmaps at:(ascii + 1) ifAbsent:nil.
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
    glyph isNil ifTrue:[^ self].
3673
49e583135bf2 it works !
Michael Beyl <mb@exept.de>
parents: 3672
diff changeset
   452
    aGC displayForm:glyph x:x y:y-glyph height+descent opaque:opaque
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   455
!BitmapFont methodsFor:'private - queries'!
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   456
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   457
glyphOfCharacter:ascii
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   458
    "return the height of a specific character"
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   459
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   460
    |glyph|
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   461
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   462
    glyph := characterBitmaps at:(ascii + 1) ifAbsent:nil.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   463
    glyph isNil ifTrue:[
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   464
        glyph := characterBitmaps at:(Character space codePoint + 1).
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   465
    ].
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   466
    ^ glyph
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   467
!
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   468
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   469
heightOfCharacter:ascii
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   470
    "return the height of a specific character"
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   471
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   472
    |glyph|
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   473
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   474
    glyph := self glyphOfCharacter:ascii.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   475
    glyph isNil ifTrue:[^ 0].
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   476
    ^ glyph height
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   477
!
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   478
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   479
widthOfCharacter:ascii
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   480
    "return the width of a specific character"
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   481
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   482
    |glyph|
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   483
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   484
    glyph := self glyphOfCharacter:ascii.
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   485
    glyph isNil ifTrue:[^ 0].
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   486
    ^ glyph width
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   487
! !
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   488
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
!BitmapFont methodsFor:'queries'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
ascent
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    "return the ascent - the number of pixels above the baseLine"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    ^ ascent
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
ascentOn:aDevice
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   498
    "return the descent - the number of pixels below the baseLine.
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   499
     Since I am not device dependent, return my pixel ascent."
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   501
    ^ descent
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
descent
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
    "return the descent - the number of pixels below the baseLine"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   507
    ^ descent ? 0
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
descentOn:aDevice
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   511
    "return the descent - the number of pixels below the baseLine.
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   512
     Since I am not device dependent, return my pixel descent."
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
    ^ descent
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
height
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    "return the height - the height in pixels of the highest character"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   520
    ^ self maxHeight
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
heightOf:aString
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
    "return the height - the height in pixels of the highest character"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   526
    ^ self maxHeight.
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
heightOn:aDevice
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
    "return the height - the height in pixels of the highest character"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   532
    ^ self maxHeight.
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
isFixedWidth
7347
43a15e3e23c4 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 6931
diff changeset
   536
    "return true if all of the font's characters are equal in
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
     width."
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
3664
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   539
    |w|
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   540
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   541
    characterBitmaps do:[:glyph | |wHere|
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   542
                                glyph notNil ifTrue:[
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   543
                                    wHere := glyph width.  
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   544
                                    w isNil 
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   545
                                        ifTrue:[ w := wHere ]
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   546
                                        ifFalse:[ w ~~ wHere ifTrue:[^ false]]
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   547
                                ]
85de01ef2853 fixed #isFixedFont
Michael Beyl <mb@exept.de>
parents: 3663
diff changeset
   548
                        ].
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
    ^ true
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
maxAscent
7579
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   553
    "return the maximum ascent; 
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   554
     that's the ascent of the highest character"
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   555
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   556
    ascent isNil ifTrue:[
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   557
        ascent := (self maxHeight - self descent) max:0
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   558
    ].
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
    ^ ascent.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   562
maxDescent
7579
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   563
    "return the maximum descent; 
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   564
     that's the descent of the highest character"
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   565
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   566
    descent isNil ifTrue:[
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   567
        descent := (self maxHeight - ascent) max:0
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   568
    ].
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   569
    ^ descent.
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   570
!
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   571
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   572
maxHeight
7579
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   573
    "return the maximum height; 
0861654a1257 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7347
diff changeset
   574
     that's the height of the highest character"
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   575
4039
e4a7687582d6 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3673
diff changeset
   576
    ^ maxHeight ? 0
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   579
maxWidth 
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   580
    "return the maximum width - the width of the widest character in pixels"
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   581
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   582
    ^ maxWidth
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   583
!
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   584
2545
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   585
onDevice:aDevice
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   586
    "return a device representation of the receiver.
829790f194cc code refactoring & cleanup
Claus Gittinger <cg@exept.de>
parents: 1154
diff changeset
   587
     Since I am device independent, return the receiver."
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
    ^ self
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
width 
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
    "return the width - the average width in pixels"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   595
    ^ self maxWidth
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
widthOf:aString from:start to:stop
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
    "return the width of a substring"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
    |sumW|
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    (stop < start) ifTrue:[^ 0].
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
    sumW := 0.
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
    start to:stop do:[:index |
4077
ab3991c6a6b0 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 4039
diff changeset
   606
        sumW := sumW + (self widthOfCharacter:(aString at:index) codePoint) 
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    ].
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
    ^ sumW
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   609
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   611
widthOf:aString from:startIndex to:endIndex on:aDevice
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   612
    "return the width of a substring"
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
1154
07bc33341696 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1088
diff changeset
   614
    ^ self widthOf:aString from:startIndex to:endIndex
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
widthOn:aDevice
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
    "return the width - the average width in pixels"
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
3672
d627bfa7b9a2 *** empty log message ***
Michael Beyl <mb@exept.de>
parents: 3664
diff changeset
   620
    ^ self maxWidth
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
! !
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   622
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
!BitmapFont class methodsFor:'documentation'!
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   625
version
6931
babe431ab64c #DOCUMENTATION
Claus Gittinger <cg@exept.de>
parents: 6080
diff changeset
   626
    ^ '$Header$'
1088
136b1b7996a0 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
! !
6080
a754f2b9a9ef class: BitmapFont
Claus Gittinger <cg@exept.de>
parents: 4077
diff changeset
   628