Cairo__CObject.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 17 Feb 2016 06:43:31 +0000
changeset 40 28dfc583beb5
parent 36 9b680e54aa94
child 43 1006839761af
permissions -rw-r--r--
#displayString: in CairoGraphicsContext revamped Introduced a CairoScaledFont, a kind of FontDescription for Cairo fonts (Cairo::ScaledFont / cairo_scaled_font_t). CairoScaledFont provides a bridge between Smalltalk/X font API and Cairo the same way CairoGraphicsContext provides a bridge bewtween Smalltalk/X drawing API and Cairo. Don't use Cairo's "toy" text API to select font. Under X11, use FontConfig to select a proper font. However, for actual text rendering and measurements, Cairo's "toy" API is still used - it seems to be good enough, certainly as good as Core X11 / Xft text rendering for Latin-based left-to-right languages. At this point a TextEditView can be rendered using Cairo.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/libcairo' }"
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Cairo }"
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
     5
ExternalAddress subclass:#CObject
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
     7
	classVariableNames:'Lobby'
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
     9
	category:'Cairo-Objects'
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    12
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    13
!CObject class methodsFor:'initialization'!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    14
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    15
initialize
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    16
    "Invoked at system start or when the class is dynamically loaded."
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    17
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    18
    "/ please change as required (and remove this comment)
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    19
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    20
    Lobby := Registry new
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    21
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    22
    "Modified: / 09-01-2015 / 11:22:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    23
! !
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    24
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    25
!CObject class methodsFor:'instance creation'!
25
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    26
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    27
fromExternalAddress: anExternalAddress
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    28
    ^ self new fromExternalAddress: anExternalAddress
25
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    29
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    30
    "Created: / 24-12-2014 / 22:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    31
    "Modified: / 25-12-2014 / 10:33:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
25
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    32
! !
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    33
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    34
!CObject methodsFor:'accessing'!
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
referenceCount
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    37
    "Return value or reference counter"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    39
    ^ self subclassResponsibility
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    "Created: / 09-09-2008 / 20:33:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    42
    "Modified: / 28-12-2014 / 22:09:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
! !
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    45
!CObject methodsFor:'finalization'!
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    46
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    47
executor
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    48
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    49
    ^self class basicNew
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    50
        setAddress: self address;
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    51
        yourself
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    52
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    53
    "Created: / 10-09-2008 / 18:57:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    54
    "Modified: / 25-12-2014 / 10:36:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    55
!
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
finalize
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    58
    self infoPrintCR:'Instance destroyed'.
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    59
    self destroy
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    "Created: / 09-09-2008 / 20:30:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    62
    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    63
    "Modified: / 28-12-2014 / 21:39:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    64
! !
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    65
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    66
!CObject methodsFor:'initialization & release'!
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    68
release
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    69
    self unregisterForFinalization.
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    70
    ^self destroy
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    71
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    72
    "Created: / 25-12-2014 / 10:34:30 / 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: 30
diff changeset
    73
    "Modified: / 13-02-2016 / 16:10:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
! !
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    76
!CObject methodsFor:'private'!
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    78
destroy
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    79
    "Tell Cairo library to destroy the corresponding C object.
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    80
     Remember that object is physically destroyed only if internal
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    81
     refcounter goes to zero. However, after calling destroy, 
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    82
     this instance should be treated as invalid."
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    83
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    84
    ^ self subclassResponsibility
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    85
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    86
    "Created: / 28-12-2014 / 21:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    87
!
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 27
diff changeset
    88
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    89
fromExternalAddress:anExternalAddress 
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    90
    self setAddress: anExternalAddress address.  
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    self registerForFinalization.
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    92
    self infoPrintCR:'Instance created'.
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "Created: / 09-09-2008 / 20:35:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    95
    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
27
2e706dda4895 Fixes for firnalization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    96
    "Modified: / 25-12-2014 / 10:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
!
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    99
infoPrintCR:aString 
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   100
    Stdout
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   101
        nextPutAll:'Cairo [info] (';
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   102
        nextPutAll:self class nameWithoutPrefix;
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   103
        nextPutAll:' @ 0x';
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   104
        nextPutAll:(self address printStringRadix:16);
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   105
        nextPutAll:' @ ';
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   106
        nextPutAll:(self referenceCount printString);
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   107
        nextPutAll:': ';
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   108
        nextPutAll:aString;
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   109
        cr
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   111
    "Created: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
! !
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   114
!CObject class methodsFor:'documentation'!
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   115
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   116
version
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   117
    ^'$Id$'
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   118
!
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   119
23
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   120
version_HG
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   121
    ^ '$Changeset: <not expanded> $'
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   122
! !
25
643d03d21ddf Fixes to make it working under recent Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   123
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   124
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   125
CObject initialize!