- Cairo::Format
added: #version_SVN
- Cairo::LineCap
added: #version_SVN
- Cairo::Extend
added: #version_SVN
- Cairo::RefCountedStructure
added:
#dllPath
#version_SVN
- Cairo::Operator
added: #version_SVN
- Cairo::PathData
added:
#dllPath
#version_SVN
- Cairo::SubpixelOrder
added: #version_SVN
- Cairo::ScaledFont
added:
#dllPath
#version_SVN
- Cairo::PathDataType
added: #version_SVN
- Cairo::Surface
added:
#dllPath
#version_SVN
- Cairo::GLXWorkstation
added: #version_SVN
- Cairo::LineJoin
added: #version_SVN
- Cairo::FillRule
added: #version_SVN
- Cairo::Path
added:
#dllPath
#version_SVN
- Cairo::RectangleList
added:
#dllPath
#version_SVN
- Cairo::FontSlant
added: #version_SVN
- Cairo::SurfaceType
added: #version_SVN
- Cairo::PatternType
added: #version_SVN
- stx_goodies_libcairo
added:
#extensionsVersion_SVN
#svnRepositoryUrlString
#svnRevisionNr
#version_SVN
- Cairo::Matrix
added:
#dllPath
#version_SVN
- Cairo::Filter
added: #version_SVN
- Cairo::Glyph
added:
#dllPath
#version_SVN
- Cairo::FontOptions
added:
#dllPath
#version_SVN
- Cairo::GraphicsContext
added:
#dllPath
#version_SVN
- Cairo::FontType
added: #version_SVN
- Cairo::Antialias
added: #version_SVN
- Cairo::SvgVersion
added: #version_SVN
- Cairo::HintMetrics
added: #version_SVN
- Cairo::FontFace
added:
#dllPath
#version_SVN
- Cairo::Rectangle
added:
#dllPath
#version_SVN
- Cairo::Pattern
added:
#dllPath
#version_SVN
- Cairo::FontExtents
added:
#dllPath
#version_SVN
- Cairo::FontWeight
added: #version_SVN
- Cairo::TextExtents
added:
#dllPath
#version_SVN
- Cairo::Content
added: #version_SVN
- Cairo::HintStyle
added: #version_SVN
- Cairo::UserDataKey
added:
#dllPath
#version_SVN
- Cairo::Status
added: #version_SVN
- extensions
...
"{ Package: 'stx:goodies/libcairo' }"
"{ NameSpace: Cairo }"
RefCountedStructure subclass:#Surface
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Cairo-Objects'
!
!Surface class methodsFor:'instance creation'!
forPdfFile: aStringOrFilename width: w height: h
^self
primPdfSurfaceCreate: aStringOrFilename asFilename asString
widthInPoints: w asDouble
heightInPoints: h asDouble
"Created: / 10-07-2008 / 09:35:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
forView: view
^view device cairoSurfaceFor: view
"Created: / 10-07-2008 / 10:15:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
forXlib: dpy drawable: drawable visual: visual width: width height: height
^self primXlibSurfaceCreate: dpy drawable: drawable visual: visual width: width height: height
"Created: / 10-07-2008 / 11:06:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface class methodsFor:'accessing'!
dllPath
OperatingSystem isMSWINDOWSlike ifTrue:[
^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" )
].
OperatingSystem isUNIXlike ifTrue:[
OperatingSystem getSystemType == #linux ifTrue:[
| path |
path := #( '/lib' '/usr/lib' '/usr/local/lib' ).
(OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[
"If the machine is 64bit, prepend standard path for 32bit libs.
Leave standard paths at the end, as the system might be completely
32bit but running on 64bit-capable CPU.
CAVEAT: This is bit dangerous, as on 64bit OS, if ia32 libs are
not installed byt 64bit sqlite libs are, then 64bit libs are found
and when a function is called, segfault will occur!!
Q: Is there a way how to figure out if the OS itself is 32bit,
regardles on CPU?"
path := #( '/lib32' '/usr/lib32' '/usr/local/lib32' ) , path.
].
^path
].
].
self error:'Unsupported operating system'
"
SqliteLibrary dllPath
"
"Created: / 31-08-2011 / 18:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
libraryName
OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2'].
OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll'].
self error:'Library name for host OS is not known'
"Modified: / 10-09-2008 / 18:19:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
structSize
^0
"Modified: / 10-09-2008 / 18:19:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface class methodsFor:'primitives'!
primCopyPage: surface
<cdecl: void "cairo_surface_copy_page" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primCreateSimilar: other content: content width: width height: height
<cdecl: Cairo::Surface "cairo_surface_create_similar" ( Cairo::Surface int32 int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primDestroy: surface
<cdecl: void "cairo_surface_destroy" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primFinish: surface
<cdecl: void "cairo_surface_finish" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primFlush: surface
<cdecl: void "cairo_surface_flush" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetContent: surface
<cdecl: int32 "cairo_surface_get_content" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetDeviceOffset: surface xOffset: x_offset yOffset: y_offset
<cdecl: void "cairo_surface_get_device_offset" ( Cairo::Surface pointer pointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetFontOptions: surface options: options
<cdecl: void "cairo_surface_get_font_options" ( Cairo::Surface Cairo::FontOptions ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetReferenceCount: surface
<cdecl: uint32 "cairo_surface_get_reference_count" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetType: surface
<cdecl: int32 "cairo_surface_get_type" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primGetUserData: surface key: key
<cdecl: pointer "cairo_surface_get_user_data" ( Cairo::Surface Cairo::UserDataKey ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceCreate: format width: width height: height
<cdecl: Cairo::Surface "cairo_image_surface_create" ( int32 int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceCreateForData: data format: format width: width height: height stride: stride
<cdecl: Cairo::Surface "cairo_image_surface_create_for_data" ( pointer int32 int32 int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceCreateFromPng: filename
<cdecl: Cairo::Surface "cairo_image_surface_create_from_png" ( charPointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceCreateFromPngStream: read_func closure: closure
<cdecl: Cairo::Surface "cairo_image_surface_create_from_png_stream" ( pointer pointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceGetData: surface
<cdecl: pointer "cairo_image_surface_get_data" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceGetFormat: surface
<cdecl: int32 "cairo_image_surface_get_format" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceGetHeight: surface
<cdecl: int32 "cairo_image_surface_get_height" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceGetStride: surface
<cdecl: int32 "cairo_image_surface_get_stride" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primImageSurfaceGetWidth: surface
<cdecl: int32 "cairo_image_surface_get_width" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primMarkDirty: surface
<cdecl: void "cairo_surface_mark_dirty" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primMarkDirtyRectangle: surface x: x y: y width: width height: height
<cdecl: void "cairo_surface_mark_dirty_rectangle" ( Cairo::Surface int32 int32 int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primPdfSurfaceCreate: filename widthInPoints: width_in_points heightInPoints: height_in_points
<cdecl: Cairo::Surface "cairo_pdf_surface_create" ( charPointer double double ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primPdfSurfaceCreateForStream: write_func closure: closure widthInPoints: width_in_points heightInPoints: height_in_points
<cdecl: Cairo::Surface "cairo_pdf_surface_create_for_stream" ( pointer pointer double double ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primPdfSurfaceSetSize: surface widthInPoints: width_in_points heightInPoints: height_in_points
<cdecl: void "cairo_pdf_surface_set_size" ( Cairo::Surface double double ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primReference: surface
<cdecl: Cairo::Surface "cairo_surface_reference" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSetDeviceOffset: surface xOffset: x_offset yOffset: y_offset
<cdecl: void "cairo_surface_set_device_offset" ( Cairo::Surface double double ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSetFallbackResolution: surface xPixelsPerInch: x_pixels_per_inch yPixelsPerInch: y_pixels_per_inch
<cdecl: void "cairo_surface_set_fallback_resolution" ( Cairo::Surface double double ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSetUserData: surface key: key userData: user_data destroy: destroy
<cdecl: int32 "cairo_surface_set_user_data" ( Cairo::Surface Cairo::UserDataKey pointer pointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primShowPage: surface
<cdecl: void "cairo_surface_show_page" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primStatus: surface
<cdecl: int32 "cairo_surface_status" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSvgSurfaceCreate: filename widthInPoints: width_in_points heightInPoints: height_in_points
<cdecl: Cairo::Surface "cairo_svg_surface_create" ( charPointer double double ) >
self primitiveFailed
"Modified: / 10-07-2008 / 23:05:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSvgSurfaceCreateForStream: write_func closure: closure widthInPoints: width_in_points heightInPoints: height_in_points
<cdecl: Cairo::Surface "cairo_svg_surface_create_for_stream" ( pointer pointer double double ) >
self primitiveFailed
"Modified: / 10-07-2008 / 23:05:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primSvgSurfaceRestrictToVersion: surface version: version
<cdecl: void "cairo_svg_surface_restrict_to_version" ( Cairo::Surface int32 ) >
self primitiveFailed
"Modified: / 10-07-2008 / 23:05:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primWriteToPng: surface filename: filename
<cdecl: int32 "cairo_surface_write_to_png" ( Cairo::Surface charPointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primWriteToPngStream: surface writeFunc: write_func closure: closure
<cdecl: int32 "cairo_surface_write_to_png_stream" ( Cairo::Surface pointer pointer ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceCreate: dpy drawable: drawable visual: visual width: width height: height
<cdecl: Cairo::Surface "cairo_xlib_surface_create" ( pointer int32 pointer int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceCreateForBitmap: dpy bitmap: bitmap screen: screen width: width height: height
<cdecl: Cairo::Surface "cairo_xlib_surface_create_for_bitmap" ( pointer int32 pointer int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetDepth: surface
<cdecl: int32 "cairo_xlib_surface_get_depth" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetDisplay: surface
<cdecl: pointer "cairo_xlib_surface_get_display" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetDrawable: surface
<cdecl: int32 "cairo_xlib_surface_get_drawable" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetGc: surface
<cdecl: pointer "cairo_xlib_surface_get_gc" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetHeight: surface
<cdecl: int32 "cairo_xlib_surface_get_height" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetScreen: surface
<cdecl: pointer "cairo_xlib_surface_get_screen" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetVisual: surface
<cdecl: pointer "cairo_xlib_surface_get_visual" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceGetWidth: surface
<cdecl: int32 "cairo_xlib_surface_get_width" ( Cairo::Surface ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceSetDrawable: surface drawable: drawable width: width height: height
<cdecl: void "cairo_xlib_surface_set_drawable" ( Cairo::Surface int32 int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
primXlibSurfaceSetSize: surface width: width height: height
<cdecl: void "cairo_xlib_surface_set_size" ( Cairo::Surface int32 int32 ) >
self primitiveFailed
"Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface methodsFor:'accessing'!
gcId
self
assert: (self type == SurfaceType SURFACE_TYPE_XLIB)
message: 'Not a xlib surface!!'.
^self class primXlibSurfaceGetGc: self
"Created: / 09-09-2008 / 22:19:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
type
^self class primGetType: self
"Created: / 10-07-2008 / 10:34:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
width: w height: h
self class primXlibSurfaceSetSize: self width: w height: h
"Created: / 10-07-2008 / 19:36:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface methodsFor:'change & update'!
update: aspect with: param from: sender
(aspect = #sizeOfView and:[self type = SurfaceType SURFACE_TYPE_XLIB])
ifTrue:[^self width: sender width height: sender height].
super update: aspect with: param from: sender
"Created: / 10-07-2008 / 19:33:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface methodsFor:'initialization & release'!
flush
^self class primFlush: self
"Created: / 10-07-2008 / 10:32:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Surface class methodsFor:'documentation'!
version
^'$Id$'
!
version_SVN
^ '$Id:: $'
! !