Cairo__GraphicsContext.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 17 Jun 2012 14:49:30 +0000
changeset 16 a810555a635c
parent 15 c1db2c8aa2ed
child 17 5f943c05c028
permissions -rw-r--r--
- Cairo::Surface class definition added:6 methods changed: #update:with:from: - Cairo::ClockView changed: #redraw - extensions ...

"{ Package: 'stx:goodies/libcairo' }"

"{ NameSpace: Cairo }"

RefCountedStructure subclass:#GraphicsContext
	instanceVariableNames:'surface gcId'
	classVariableNames:''
	poolDictionaries:''
	category:'Cairo-Objects'
!


!GraphicsContext class methodsFor:'instance creation'!

on: surface

    | cr |

    self 
        assert: (surface isKindOf: Cairo::Surface)
        message: 'surface is not valid Cairo surface'.

    cr := self primCreate: surface.
    cr setSurface: surface.
    ^cr

    "Created: / 10-07-2008 / 09:37:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
    "Modified: / 10-09-2008 / 19:03:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
    "Modified: / 16-06-2012 / 08:36:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GraphicsContext 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:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

structSize

	^0

    "Modified: / 10-09-2008 / 18:19:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext class methodsFor:'examples'!

rectangleOnTranscript

    "
        Cairo::GraphicsContext rectangleOnTranscript
    "


    | gc |
    gc := Transcript cairo.
    gc paint: Color black.
    gc moveToX: 30 y: 50.
    gc paint: (Color red alpha: 0.5).
    gc rectangleX: 10 y: 15 width: 150 height: 60.
    gc fill.
    gc paint: (Color red alpha: 0.75).
    gc rectangleX: 10 y: 15 width: 150 height: 60.
    gc stroke.

    "Created: / 23-04-2009 / 17:33:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext class methodsFor:'primitives'!

primAppendPath: cr path: path 

	<cdecl: void "cairo_append_path" ( Cairo::GraphicsContext Cairo::Path ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primArc: cr xc: xc yc: yc radius: radius angle1: angle1 angle2: angle2 

	<cdecl: void "cairo_arc" ( Cairo::GraphicsContext double double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primArcNegative: cr xc: xc yc: yc radius: radius angle1: angle1 angle2: angle2 

	<cdecl: void "cairo_arc_negative" ( Cairo::GraphicsContext double double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primClip: cr 

	<cdecl: void "cairo_clip" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primClipExtents: cr x1: x1 y1: y1 x2: x2 y2: y2 

	<cdecl: void "cairo_clip_extents" ( Cairo::GraphicsContext pointer pointer pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primClipPreserve: cr 

	<cdecl: void "cairo_clip_preserve" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primClosePath: cr 

	<cdecl: void "cairo_close_path" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCopyClipRectangleList: cr 

	<cdecl: Cairo::RectangleList "cairo_copy_clip_rectangle_list" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCopyPage: cr 

	<cdecl: void "cairo_copy_page" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCopyPath: cr 

	<cdecl: Cairo::Path "cairo_copy_path" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCopyPathFlat: cr 

	<cdecl: Cairo::Path "cairo_copy_path_flat" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCreate: target 

	<cdecl: Cairo::GraphicsContext "cairo_create" ( Cairo::Surface ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primCurveTo: cr x1: x1 y1: y1 x2: x2 y2: y2 x3: x3 y3: y3 

	<cdecl: void "cairo_curve_to" ( Cairo::GraphicsContext double double double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primDestroy: cr 

	<cdecl: void "cairo_destroy" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primDeviceToUser: cr x: x y: y 

	<cdecl: void "cairo_device_to_user" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primDeviceToUserDistance: cr dx: dx dy: dy 

	<cdecl: void "cairo_device_to_user_distance" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primFill: cr 

	<cdecl: void "cairo_fill" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primFillExtents: cr x1: x1 y1: y1 x2: x2 y2: y2 

	<cdecl: void "cairo_fill_extents" ( Cairo::GraphicsContext pointer pointer pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primFillPreserve: cr 

	<cdecl: void "cairo_fill_preserve" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primFontExtents: cr extents: extents 

	<cdecl: void "cairo_font_extents" ( Cairo::GraphicsContext Cairo::FontExtents ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetAntialias: cr 

	<cdecl: int32 "cairo_get_antialias" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetCurrentPoint: cr x: x y: y 

	<cdecl: void "cairo_get_current_point" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetDash: cr dashes: dashes offset: offset 

	<cdecl: void "cairo_get_dash" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetDashCount: cr 

	<cdecl: int32 "cairo_get_dash_count" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetFillRule: cr 

	<cdecl: int32 "cairo_get_fill_rule" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetFontFace: cr 

	<cdecl: Cairo::FontFace "cairo_get_font_face" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetFontMatrix: cr matrix: matrix 

	<cdecl: void "cairo_get_font_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetFontOptions: cr options: options 

	<cdecl: void "cairo_get_font_options" ( Cairo::GraphicsContext Cairo::FontOptions ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetGroupTarget: cr 

	<cdecl: Cairo::Surface "cairo_get_group_target" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetLineCap: cr 

	<cdecl: int32 "cairo_get_line_cap" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetLineJoin: cr 

	<cdecl: int32 "cairo_get_line_join" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetLineWidth: cr 

	<cdecl: double "cairo_get_line_width" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetMatrix: cr matrix: matrix 

	<cdecl: void "cairo_get_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetMiterLimit: cr 

	<cdecl: double "cairo_get_miter_limit" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetOperator: cr 

	<cdecl: int32 "cairo_get_operator" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetReferenceCount: cr 

	<cdecl: uint32 "cairo_get_reference_count" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetScaledFont: cr 

	<cdecl: Cairo::ScaledFont "cairo_get_scaled_font" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetSource: cr 

	<cdecl: Cairo::Pattern "cairo_get_source" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetTarget: cr 

	<cdecl: Cairo::Surface "cairo_get_target" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetTolerance: cr 

	<cdecl: double "cairo_get_tolerance" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGetUserData: cr key: key 

	<cdecl: pointer "cairo_get_user_data" ( Cairo::GraphicsContext Cairo::UserDataKey ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGlyphExtents: cr glyphs: glyphs numGlyphs: num_glyphs extents: extents 

	<cdecl: void "cairo_glyph_extents" ( Cairo::GraphicsContext Cairo::Glyph int32 Cairo::TextExtents ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primGlyphPath: cr glyphs: glyphs numGlyphs: num_glyphs 

	<cdecl: void "cairo_glyph_path" ( Cairo::GraphicsContext Cairo::Glyph int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primHasCurrentPoint: cr 

	<cdecl: int32 "cairo_has_current_point" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primIdentityMatrix: cr 

	<cdecl: void "cairo_identity_matrix" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primInFill: cr x: x y: y 

	<cdecl: int32 "cairo_in_fill" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primInStroke: cr x: x y: y 

	<cdecl: int32 "cairo_in_stroke" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primLineTo: cr x: x y: y 

	<cdecl: void "cairo_line_to" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primMask: cr pattern: pattern 

	<cdecl: void "cairo_mask" ( Cairo::GraphicsContext Cairo::Pattern ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primMaskSurface: cr surface: surface surfaceX: surface_x surfaceY: surface_y 

	<cdecl: void "cairo_mask_surface" ( Cairo::GraphicsContext Cairo::Surface double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primMoveTo: cr x: x y: y 

	<cdecl: void "cairo_move_to" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primNewPath: cr 

	<cdecl: void "cairo_new_path" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primNewSubPath: cr 

	<cdecl: void "cairo_new_sub_path" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPaint: cr 

	<cdecl: void "cairo_paint" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPaintWithAlpha: cr alpha: alpha 

	<cdecl: void "cairo_paint_with_alpha" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPathExtents: cr x1: x1 y1: y1 x2: x2 y2: y2 

	<cdecl: void "cairo_path_extents" ( Cairo::GraphicsContext pointer pointer pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPopGroup: cr 

	<cdecl: Cairo::Pattern "cairo_pop_group" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPopGroupToSource: cr 

	<cdecl: void "cairo_pop_group_to_source" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPushGroup: cr 

	<cdecl: void "cairo_push_group" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primPushGroupWithContent: cr content: content 

	<cdecl: void "cairo_push_group_with_content" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRectangle: cr x: x y: y width: width height: height 

	<cdecl: void "cairo_rectangle" ( Cairo::GraphicsContext double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primReference: cr 

	<cdecl: Cairo::GraphicsContext "cairo_reference" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRelCurveTo: cr dx1: dx1 dy1: dy1 dx2: dx2 dy2: dy2 dx3: dx3 dy3: dy3 

	<cdecl: void "cairo_rel_curve_to" ( Cairo::GraphicsContext double double double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRelLineTo: cr dx: dx dy: dy 

	<cdecl: void "cairo_rel_line_to" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRelMoveTo: cr dx: dx dy: dy 

	<cdecl: void "cairo_rel_move_to" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primResetClip: cr 

	<cdecl: void "cairo_reset_clip" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRestore: cr 

	<cdecl: void "cairo_restore" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primRotate: cr angle: angle 

	<cdecl: void "cairo_rotate" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSave: cr 

	<cdecl: void "cairo_save" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primScale: cr sx: sx sy: sy 

	<cdecl: void "cairo_scale" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSelectFontFace: cr family: family slant: slant weight: weight 

	<cdecl: void "cairo_select_font_face" ( Cairo::GraphicsContext charPointer int32 int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetAntialias: cr antialias: antialias 

	<cdecl: void "cairo_set_antialias" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetDash: cr dashes: dashes numDashes: num_dashes offset: offset 

	<cdecl: void "cairo_set_dash" ( Cairo::GraphicsContext pointer int32 double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetFillRule: cr fillRule: fill_rule 

	<cdecl: void "cairo_set_fill_rule" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetFontFace: cr fontFace: font_face 

	<cdecl: void "cairo_set_font_face" ( Cairo::GraphicsContext Cairo::FontFace ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetFontMatrix: cr matrix: matrix 

	<cdecl: void "cairo_set_font_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetFontOptions: cr options: options 

	<cdecl: void "cairo_set_font_options" ( Cairo::GraphicsContext Cairo::FontOptions ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetFontSize: cr size: size 

	<cdecl: void "cairo_set_font_size" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetLineCap: cr lineCap: line_cap 

	<cdecl: void "cairo_set_line_cap" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetLineJoin: cr lineJoin: line_join 

	<cdecl: void "cairo_set_line_join" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetLineWidth: cr width: width 

	<cdecl: void "cairo_set_line_width" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetMatrix: cr matrix: matrix 

	<cdecl: void "cairo_set_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetMiterLimit: cr limit: limit 

	<cdecl: void "cairo_set_miter_limit" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetOperator: cr op: op 

	<cdecl: void "cairo_set_operator" ( Cairo::GraphicsContext int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetScaledFont: cr scaledFont: scaled_font 

	<cdecl: void "cairo_set_scaled_font" ( Cairo::GraphicsContext Cairo::ScaledFont ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetSource: cr source: source 

	<cdecl: void "cairo_set_source" ( Cairo::GraphicsContext Cairo::Pattern ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetSourceRgb: cr red: red green: green blue: blue 

	<cdecl: void "cairo_set_source_rgb" ( Cairo::GraphicsContext double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetSourceRgba: cr red: red green: green blue: blue alpha: alpha 

	<cdecl: void "cairo_set_source_rgba" ( Cairo::GraphicsContext double double double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetSourceSurface: cr surface: surface x: x y: y 

	<cdecl: void "cairo_set_source_surface" ( Cairo::GraphicsContext Cairo::Surface double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetTolerance: cr tolerance: tolerance 

	<cdecl: void "cairo_set_tolerance" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primSetUserData: cr key: key userData: user_data destroy: destroy 

	<cdecl: int32 "cairo_set_user_data" ( Cairo::GraphicsContext Cairo::UserDataKey pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primShowGlyphs: cr glyphs: glyphs numGlyphs: num_glyphs 

	<cdecl: void "cairo_show_glyphs" ( Cairo::GraphicsContext Cairo::Glyph int32 ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primShowPage: cr 

	<cdecl: void "cairo_show_page" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primShowText: cr utf8: utf8 

	<cdecl: void "cairo_show_text" ( Cairo::GraphicsContext charPointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primStatus: cr 

	<cdecl: int32 "cairo_status" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primStroke: cr 

	<cdecl: void "cairo_stroke" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primStrokeExtents: cr x1: x1 y1: y1 x2: x2 y2: y2 

	<cdecl: void "cairo_stroke_extents" ( Cairo::GraphicsContext pointer pointer pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primStrokePreserve: cr 

	<cdecl: void "cairo_stroke_preserve" ( Cairo::GraphicsContext ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primTextExtents: cr utf8: utf8 extents: extents 

	<cdecl: void "cairo_text_extents" ( Cairo::GraphicsContext charPointer Cairo::TextExtents ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primTextPath: cr utf8: utf8 

	<cdecl: void "cairo_text_path" ( Cairo::GraphicsContext charPointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primTransform: cr matrix: matrix 

	<cdecl: void "cairo_transform" ( Cairo::GraphicsContext Cairo::Matrix ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primTranslate: cr tx: tx ty: ty 

	<cdecl: void "cairo_translate" ( Cairo::GraphicsContext double double ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primUserToDevice: cr x: x y: y 

	<cdecl: void "cairo_user_to_device" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

primUserToDeviceDistance: cr dx: dx dy: dy 

	<cdecl: void "cairo_user_to_device_distance" ( Cairo::GraphicsContext pointer pointer ) >
	self primitiveFailed

    "Modified: / 10-09-2008 / 18:19:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'accessing'!

gcId

    gcId ifNil:[gcId := self surface gcId].
    ^gcId

    "Created: / 10-09-2008 / 20:52:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

paint: aColor

    ^self 
        paintRed:   (aColor red / 100) asDouble
        green:      (aColor green / 100) asDouble
        blue:       (aColor blue / 100) asDouble
        alpha:      aColor alpha asDouble

    "Created: / 10-07-2008 / 11:18:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
    "Modified: / 23-04-2009 / 17:31:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

surface

    surface ifNil:[surface := self class primGetTarget: self].
    ^surface

    "Created: / 10-07-2008 / 10:33:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
    "Modified: / 10-09-2008 / 20:53:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'cairo - font'!

fontFaceFamily: family slant: slant weight: weight

    ^self class primSelectFontFace: self
        family: family asString
        slant: slant asInteger
        weight: weight asInteger

    "Created: / 23-04-2009 / 17:23:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

fontSize: sz

    ^self class primSetFontSize: self size: sz

    "Created: / 23-04-2009 / 17:24:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'cairo - paints'!

paintRed: red green: green blue: blue alpha: alpha

    ^self class 
        primSetSourceRgba: self red: red green: green blue: blue alpha: alpha

    "Created: / 10-07-2008 / 11:10:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'cairo - paths'!

moveToX: x y: y

    ^self class primMoveTo: self x: x asFloat y: y asFloat

    "Created: / 23-04-2009 / 17:21:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

rectangleX: x y: y width: width height: height 

    ^self class 
        primRectangle: self 
        x: x asDouble 
        y: y asDouble 
        width: width asDouble 
        height: height asDouble

    "Created: / 10-07-2008 / 09:41:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

showText: aString

    ^self class primShowText: self utf8: aString utf8Encoded

    "Created: / 23-04-2009 / 17:25:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'cairo - stroke & fill'!

fill

    ^self class primFill: self

    "Created: / 10-07-2008 / 09:42:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

showPage
    "Makes sense only for PDF surfaces"

    ^self class primShowPage: self.

    "Created: / 17-06-2012 / 08:44:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

stroke

    ^self class primStroke: self

    "Created: / 10-07-2008 / 09:42:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext methodsFor:'private accessing'!

setSurface: aSurface

    surface := aSurface

    "Created: / 10-09-2008 / 19:02:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!GraphicsContext class methodsFor:'documentation'!

version
    ^'$Id$'
!

version_SVN
    ^ '$Id::                                                                                                                        $'
! !