extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 17 Jul 2018 19:50:23 +0200
changeset 86 e434bd07e403
parent 82 258ecb13cecd
child 90 b808c338d5c3
permissions -rw-r--r--
Refactored `CairoGraphicsContext` finalization to avoid code duplication
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
     1
"{ Package: 'stx:goodies/libcairo' }"!
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
     2
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     3
!Depth1Image methodsFor:'accessing'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     4
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     5
bitsA1
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     6
    | bitsA1 |
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     7
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     8
    bitsA1 := ByteArray new: ((width + 31) // 32) * 4 * height.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
     9
    self bitsA1Into: bitsA1.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    10
    ^ bitsA1
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    11
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    12
    "Created: / 07-03-2016 / 17:57:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    13
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    14
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    15
!Depth1Image methodsFor:'accessing'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    16
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    17
bitsA1Into: buffer
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    18
    self bitsA1Into: buffer startingAt: 1
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    19
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    20
    "Created: / 07-03-2016 / 17:57:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    21
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    22
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    23
!Depth1Image methodsFor:'accessing'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    24
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    25
bitsA1Into: buffer startingAt: first
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    26
    self bitsA1Into: buffer startingAt: first stride: ((width + 31) // 32) * 4
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    27
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    28
    "Created: / 07-03-2016 / 18:02:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    29
    "Modified: / 07-03-2016 / 20:08:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    30
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    31
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    32
!Depth1Image methodsFor:'accessing'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    33
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    34
bitsA1Into: buffer startingAt: first stride: stride
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    35
    "Store each pixel is a 1-bit quantity holding an alpha value. Pixels are 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    36
     packed together into 32-bit quantities. The ordering of the bits matches 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    37
     the endianess of the platform. On a big-endian machine, the first pixel 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    38
     is in the uppermost bit, on a little-endian machine the first pixel is 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    39
     in the least-significant bit.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    40
    "
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    41
    | widthInBytes baseInBuffer baseInPixelStore reverseBits  |
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    42
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    43
    widthInBytes := (width + 7) // 8.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    44
    ExternalBytes isBigEndian ifTrue:[
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    45
        self breakPoint: #jv. "/ Untested code
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    46
        0 to: height - 1 do:[:y | 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    47
            baseInBuffer := (stride * y) + first.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    48
            baseInPixelStore  := (widthInBytes * y) + 1.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    49
            buffer replaceBytesFrom: baseInBuffer to: baseInBuffer + widthInBytes - 1 with: bytes startingAt: baseInPixelStore.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    50
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    51
    ] ifFalse:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    52
        reverseBits := ImageReader reverseBits.    
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    53
        "/reverseBits := (0 to: 255) asArray.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    54
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    55
        0 to: height - 1 do:[:y |  
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    56
            | x4 |
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    57
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    58
            baseInBuffer := (stride * y) + first.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    59
            baseInPixelStore  := (widthInBytes * y) + 1.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    60
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    61
            x4 := 0.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    62
            [ x4 < widthInBytes ] whileTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    63
                                               buffer at: baseInBuffer + x4 + "3"0 put: (reverseBits at: (bytes at: baseInPixelStore + x4 + 0) + 1).
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    64
                x4 + 1 < widthInBytes ifTrue:[ buffer at: baseInBuffer + x4 + "2"1 put: (reverseBits at: (bytes at: baseInPixelStore + x4 + 1) + 1) ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    65
                x4 + 2 < widthInBytes ifTrue:[ buffer at: baseInBuffer + x4 + "1"2 put: (reverseBits at: (bytes at: baseInPixelStore + x4 + 2) + 1) ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    66
                x4 + 3 < widthInBytes ifTrue:[ buffer at: baseInBuffer + x4 + "0"3 put: (reverseBits at: (bytes at: baseInPixelStore + x4 + 3) + 1) ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    67
                x4 := x4 + 4.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    68
            ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    69
        ]
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    70
    ]
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    71
.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    72
    "
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    73
    (ImageMask width: 3 height: 3)
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    74
        createPixelStore;
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    75
        pixelAtX: 0 y:0 put: 1;
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    76
        pixelAtX: 2 y:0 put: 1;
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    77
        bitsA1.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    78
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    79
    "
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    80
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    81
    "Created: / 07-03-2016 / 18:03:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    82
    "Modified (comment): / 08-03-2016 / 14:13:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    83
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
    84
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    85
!DeviceGraphicsContext methodsFor:'accessing'!
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    86
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    87
cairo
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    88
    "Return a Cairo context for drawing onto this GC" 
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    89
    | cr |
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    90
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    91
    cr := Cairo::GraphicsContext onSurface: self cairoSurface.
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    92
    ^ cr.
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    93
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    94
    "Created: / 26-12-2014 / 23:28:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    95
    "Modified: / 25-02-2016 / 11:05:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    96
! !
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    97
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    98
!DeviceGraphicsContext methodsFor:'accessing'!
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    99
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   100
cairoSurface
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   101
    | surface |
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   102
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   103
    device isX11Platform ifTrue:[ 
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   104
        | view width height |
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   105
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   106
        drawableType == #window ifTrue:[
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   107
            view := device viewFromId:drawableId.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   108
            width := view width.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   109
            height := view height.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   110
        ] ifFalse:[ 
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   111
            | extent |
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   112
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   113
            extent := (device getGeometryOf: drawableId) at: #extent.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   114
            width := extent x.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   115
            height := extent y.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   116
        ].
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   117
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   118
        surface := Cairo::Surface newXlibWithDisplay: device displayId
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   119
                                            drawable: drawableId address
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   120
                                              visual: device queryDefaultVisual
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   121
                                               width: width
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   122
                                              height: height.  
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   123
        surface setView: view.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   124
        ^ surface
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   125
    ].
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   126
    device isWindowsPlatform ifTrue:[ 
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   127
        | view |
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   128
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   129
        drawableType == #window ifTrue:[
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   130
            view := device viewFromId:drawableId.
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   131
        ].
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   132
        gcId isNil ifTrue:[ 
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   133
            self initGC
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   134
        ].
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   135
        surface := Cairo::Surface newWin32WithDC: (device dcLockForGC: gcId).
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   136
        surface setView: view.
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   137
        ^ surface
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   138
    ].
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   139
    self error: '(Yet) unsupported device type'
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   140
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   141
    "Modified: / 25-02-2016 / 11:13:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   142
    "Modified (format): / 29-03-2016 / 23:56:46 / jv"
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   143
! !
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   144
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   145
!GraphicsContext methodsFor:'drawing in device coordinates'!
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   146
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   147
displayDeviceLineFromX:x1 y:y1 toX:x2 y:y2
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   148
    "draw a line in device coordinates"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   149
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   150
    |sav|
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   151
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   152
    sav := transformation.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   153
    self transformation: nil.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   154
    self displayLineFromX:x1 y:y1 toX:x2 y:y2.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   155
    self transformation: sav
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   156
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   157
    "Created: / 01-01-2015 / 22:50:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   158
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   159
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   160
!GraphicsContext methodsFor:'drawing in device coordinates'!
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   161
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   162
displayDeviceRectangleX:x y:y width:w height:h
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   163
    "draw a rectangle in device coordinates"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   164
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   165
    |sav|
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   166
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   167
    sav := transformation.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   168
    self transformation: nil.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   169
    self displayRectangleX:x y:y width:w height:h.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   170
    self transformation: sav
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   171
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   172
    "Created: / 01-01-2015 / 22:51:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   173
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   174
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   175
!GraphicsContext methodsFor:'drawing in device coordinates'!
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   176
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   177
fillDeviceRectangleX:x y:y width:w height:h
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   178
    "fill a rectangle with current paint color (device coordinates)"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   179
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   180
    |sav|
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   181
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   182
    sav := transformation.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   183
    self transformation: nil.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   184
    self fillRectangleX:x y:y width:w height:h.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   185
    self transformation: sav
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   186
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   187
    "Created: / 01-01-2015 / 22:51:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   188
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   189
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
!GraphicsDevice methodsFor:'cairo support'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
cairoSurfaceFor: view
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    self error:'Graphics device not supported'
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    "Created: / 10-07-2008 / 10:16:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
! !
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   198
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
!GraphicsDevice methodsFor:'accessing'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
displayId
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    ^ displayId
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    "Created: / 04-07-2008 / 12:58:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
! !
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   206
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   207
!GraphicsMedium methodsFor:'misc'!
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   208
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   209
cairoify
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   210
    "Change to use Cairo for rendering"
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   211
    gc class == CairoGraphicsContext ifFalse:[
86
e434bd07e403 Refactored `CairoGraphicsContext` finalization to avoid code duplication
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   212
        gc device unregisterGraphicsContext: gc.  
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   213
        gc := CairoGraphicsContext onDeviceGraphicsContext:gc.
86
e434bd07e403 Refactored `CairoGraphicsContext` finalization to avoid code duplication
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   214
        gc device registerGraphicsContext: gc.
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   215
    ].
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   216
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   217
    "Created: / 15-02-2016 / 21:24:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
86
e434bd07e403 Refactored `CairoGraphicsContext` finalization to avoid code duplication
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   218
    "Modified: / 17-07-2018 / 22:55:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   219
! !
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   220
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   221
!Image methodsFor:'converting'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   222
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   223
asSurfaceWithFormat: format similarTo: surface
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   224
    "Returns the receiver as Cairo::Surface (image) with given `format`. If `surface` is not
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   225
     nil, then the new surface is made as compatible as possible for uploading to 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   226
     and the use in conjunction with an `surface`.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   227
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   228
     CAVEAT: For now, only ARB32 and A1 formats are supported
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   229
    "
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   230
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   231
    | image |
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   232
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   233
    surface notNil ifTrue:[
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   234
        image := Cairo::Surface newImageWithFormat: format  width: width height: height similarTo: surface.   
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   235
    ] ifFalse:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   236
        image := Cairo::Surface newImageWithFormat: format  width: width height: height.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   237
    ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   238
    format == Cairo::Format CAIRO_FORMAT_ARGB32 ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   239
        self bitsARGB32Into: image data startingAt: 1 stride: image stride 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   240
    ] ifFalse:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   241
        format == Cairo::Format CAIRO_FORMAT_A1 ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   242
            self bitsA1Into: image data startingAt: 1 stride: image stride.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   243
        ] ifFalse:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   244
            self error: 'Unsupported format'.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   245
            ^ nil.    
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   246
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   247
    ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   248
    " 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   249
    image data asByteArray
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   250
    "  
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   251
    image markDirty.         
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   252
    ^ image
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   253
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   254
    "Created: / 07-03-2016 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   255
    "Modified (comment): / 08-03-2016 / 14:13:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   256
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   257
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   258
!Image methodsFor:'inspecting'!
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   259
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   260
inspector2TabImageCairo
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   261
    <inspector2Tab>
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   262
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   263
    | view |
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   264
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   265
    view := PluggableView new.
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   266
    view cairoify.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   267
    view redrawAction:[ self displayOn: view ].
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   268
    ^self newInspector2Tab
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   269
        label: 'Image (Cairo)';
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   270
        priority: 49;
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   271
        view: (HVScrollableView forView: view);
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   272
        yourself
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   273
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   274
    "Created: / 31-12-2014 / 12:01:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   275
    "Modified: / 07-03-2016 / 22:25:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   276
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   277
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   278
!SimpleView methodsFor:'accessing - cairo'!
2
c2f163833877 Xlib surfaces are dependents of associated view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   279
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   280
cairo
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   281
    "Return a Cairo context for drawing onto this view"           
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   282
    ^ gc cairo
2
c2f163833877 Xlib surfaces are dependents of associated view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   283
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   284
    "Created: / 10-09-2008 / 18:23:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   285
    "Modified (comment): / 26-12-2014 / 23:29:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   286
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   287
50
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   288
!SimpleView methodsFor:'accessing - cairo'!
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   289
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   290
cairoSurface
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   291
    "Return a Cairo Surface representing the receiver."
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   292
    ^ gc cairoSurface
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   293
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   294
    "Created: / 26-02-2016 / 22:24:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   295
! !
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   296
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   297
!SimpleView methodsFor:'misc'!
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   298
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   299
cairoify
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   300
    super cairoify.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   301
    self subViews do:[:each | each cairoify ].
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   302
    self invalidate.
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   303
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   304
    "Created: / 18-02-2016 / 22:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   305
    "Modified: / 25-02-2016 / 11:12:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   306
! !
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   307
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   308
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   309
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   310
redrawWithCairo
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   311
    | cr |
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   312
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   313
    cr := self cairo.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   314
    [  
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   315
        self redrawWithCairo: cr
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   316
    ] ensure:[
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   317
        cr ~~ gc ifTrue:[ cr release ].
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   318
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   319
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   320
    "Created: / 27-12-2014 / 00:30:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   321
    "Modified: / 12-02-2016 / 16:38:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   322
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   323
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   324
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   325
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   326
redrawWithCairo: cr x: x y: y width: w height: h
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   327
    cr rectangleX: x  y: y width: w height: h. 
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   328
    cr clip.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   329
    self redrawWithCairo: cr
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   330
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   331
    "Created: / 27-12-2014 / 00:29:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   332
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   333
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   334
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   335
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   336
redrawWithCairoBuffered
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   337
    | cr |
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   338
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   339
    cr := self cairo.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   340
    [  
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   341
        self redrawWithCairoBuffered: cr
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   342
    ] ensure:[ 
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   343
        cr ~~ gc ifTrue:[ cr release ].
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   344
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   345
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   346
    "Created: / 27-12-2014 / 00:30:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   347
    "Modified: / 12-02-2016 / 16:38:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   348
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   349
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   350
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   351
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   352
redrawWithCairoBuffered: view_cr
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   353
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   354
    | image_surface image_cr |
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   355
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   356
    [     
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   357
        image_surface := Cairo::Surface newImageWithFormat: Cairo::Format CAIRO_FORMAT_ARGB32 width:self width
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   358
                               height:self height.
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   359
        image_cr := Cairo::GraphicsContext onSurface: image_surface. 
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   360
        self redrawWithCairo: image_cr.  
69
e05fa6c6fdf1 Fixed SimpleView>>redrawWithCairoBuffered:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   361
        view_cr sourceSurface: image_surface x: 0 y: 0.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   362
        view_cr draw.
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   363
    ] ensure:[ 
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   364
        image_surface notNil ifTrue:[ image_surface release ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   365
        image_cr notNil ifTrue:[ image_cr release ]
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   366
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   367
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   368
    "Created: / 27-12-2014 / 00:13:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   369
    "Modified: / 27-02-2016 / 16:01:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
c2f163833877 Xlib surfaces are dependents of associated view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   370
! !
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   371
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   372
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   373
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   374
redrawWithCairoBuffered: view_cr x: x y: y width: w height: h
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   375
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   376
    | image_surface image_cr |
2
c2f163833877 Xlib surfaces are dependents of associated view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   377
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   378
    [     
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   379
        image_surface := Cairo::Surface newImageWithFormat: Cairo::Format CAIRO_FORMAT_ARGB32 width:self width
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   380
                               height:self height.
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   381
        image_cr := Cairo::GraphicsContext onSurface: image_surface. 
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   382
        image_cr rectangleX: x  y: y width: w height: h. 
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   383
        image_cr clip.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   384
        self redrawWithCairo: image_cr x: x y: y width: w height: h.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   385
        view_cr rectangleX: x  y: y width: w height: h. 
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   386
        view_cr clip.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   387
        view_cr setSourceSurface: image_surface. 
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   388
        view_cr paint.
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   389
    ] ensure:[ 
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   390
        image_surface notNil ifTrue:[ image_surface release ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   391
        image_cr notNil ifTrue:[ image_cr release ]
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   392
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   393
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   394
    "Created: / 27-12-2014 / 00:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   395
    "Modified: / 27-02-2016 / 16:01:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   396
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   397
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   398
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   399
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   400
redrawWithCairoBufferedX: x y: y width: w height: h     
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   401
    | cr |
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   402
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   403
    cr := self cairo.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   404
    [  
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   405
        self redrawWithCairoBuffered: cr x: x y: y width: w height: h     
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   406
    ] ensure:[ 
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   407
        cr ~~ gc ifTrue:[ cr release ].
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   408
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   409
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   410
    "Created: / 27-12-2014 / 00:31:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   411
    "Modified: / 12-02-2016 / 16:38:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   412
! !
2
c2f163833877 Xlib surfaces are dependents of associated view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   413
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   414
!SimpleView methodsFor:'redrawing - cairo'!
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   415
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   416
redrawWithCairoX: x y: y width: w height: h     
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   417
    | cr |
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   418
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   419
    cr := self cairo.
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   420
    [  
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   421
        self redrawWithCairo: cr x: x y: y width: w height: h     
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   422
    ] ensure:[ 
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   423
        cr ~~ gc ifTrue:[ cr release ].
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   424
    ].
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   425
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   426
    "Created: / 27-12-2014 / 00:31:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   427
    "Modified: / 12-02-2016 / 16:38:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   428
! !
1bd3d147cd77 Added utility methods to SimpleView...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 22
diff changeset
   429
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   430
!stx_goodies_libcairo class methodsFor:'documentation'!
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   431
21
34bf952f3f60 Fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   432
extensionsVersion_HG
34bf952f3f60 Fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   433
34bf952f3f60 Fixes for recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   434
    ^ '$Changeset: <not expanded> $'
20
18a3e6b5f310 Added const modifier to FFI specs (required by recent STX)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   435
! !