ImageBackground.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 26 Nov 2016 21:09:32 +0000
branchjv
changeset 7719 c2f802dd340a
parent 6689 01dd66405335
child 7936 32e4649bc185
permissions -rw-r--r--
XFT: Forbid XFT rendering on bitmaps (depth-1 pixmaps) In theory it could work if XFT would just turn gray into either black or white. But XFT doesn't do it and simply draw nothing without failing in any way. To prevent this silent failures, forbid drawing XFT onto bitmaps (depth-1 pixmaps). After all, the while point of XFT is to use anti-aliased fonts.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5462
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     1
"
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     2
 COPYRIGHT (c) 2009 by eXept Software AG
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     3
              All Rights Reserved
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     4
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     5
 This software is furnished under a license and may be used
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     6
 only in accordance with the terms of that license and with the
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     8
 be provided or otherwise made available to, or used by, any
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
     9
 other person.  No title to or ownership of the software is
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    10
 hereby transferred.
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    11
"
5396
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libview' }"
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
AbstractBackground subclass:#ImageBackground
6689
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    15
	instanceVariableNames:'image align cachedMagnifiedImage'
5396
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Graphics-Support'
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
5462
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    21
!ImageBackground class methodsFor:'documentation'!
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    22
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    23
copyright
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    24
"
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    25
 COPYRIGHT (c) 2009 by eXept Software AG
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    26
              All Rights Reserved
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    27
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    28
 This software is furnished under a license and may be used
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    29
 only in accordance with the terms of that license and with the
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    31
 be provided or otherwise made available to, or used by, any
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    32
 other person.  No title to or ownership of the software is
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    33
 hereby transferred.
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    34
"
6689
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    35
!
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    36
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    37
examples
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    38
"
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    39
                                                                                        [exBegin]
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    40
    |v|
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    41
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    42
    v := View new.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    43
    v viewBackground:(ImageBackground new image:(Image fromFile:'~/work/stx/hsv.png')).
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    44
    v open.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    45
                                                                                        [exEnd]
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    46
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    47
                                                                                        [exBegin]
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    48
    |v|
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    49
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    50
    v := View new.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    51
    v viewBackground:(ImageBackground new 
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    52
                            image:(Image fromFile:'~/work/stx/hsv.png');
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    53
                            align:#fit).
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    54
    v open.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    55
                                                                                        [exEnd]
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    56
"
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    57
! !
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    58
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    59
!ImageBackground methodsFor:'accessing'!
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    60
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    61
align:something
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    62
    align := something.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    63
!
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    64
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    65
image:something
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    66
    image := something.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    67
! !
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    68
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    69
!ImageBackground methodsFor:'drawing'!
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    70
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    71
fillRectangleX:x y:y width:w height:h in:aView
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    72
    align == #right ifTrue:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    73
        image displayOn:aView x:(aView right - image width) y:0.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    74
        ^ self
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    75
    ].
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    76
    align == #center ifTrue:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    77
        image displayOn:aView x:(aView right - image width)//2 y:(aView bottom - image height)//2.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    78
        ^ self
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    79
    ].
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    80
    align == #fit ifTrue:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    81
        (cachedMagnifiedImage notNil 
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    82
        and:[ cachedMagnifiedImage width == aView width
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    83
        and:[ cachedMagnifiedImage height == aView height ]]) ifFalse:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    84
            cachedMagnifiedImage := image magnifiedTo:aView extent.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    85
            aView invalidate.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    86
            ^ self.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    87
        ].
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    88
        cachedMagnifiedImage displayOn:aView x:0 y:0.
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    89
        ^ self
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    90
    ].
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    91
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    92
    "/ align == #left
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    93
    x < image width ifTrue:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    94
        y < image height ifTrue:[
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    95
            image displayOn:aView x:0 y:0
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    96
        ]
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
    97
    ]
5462
cea04c9a6ea8 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 5396
diff changeset
    98
! !
5396
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!ImageBackground class methodsFor:'documentation'!
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
version_CVS
6689
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
   103
    ^ '$Header: /cvs/stx/stx/libview/ImageBackground.st,v 1.3 2014-12-21 15:51:43 cg Exp $'
5396
b857d519a90d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
! !
6689
01dd66405335 class: ImageBackground
Claus Gittinger <cg@exept.de>
parents: 5462
diff changeset
   105