"{ 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'!
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$'
! !