Cairo__GraphicsContext.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 24 Dec 2014 14:15:10 +0100
changeset 23 38ee47dbd976
parent 20 18a3e6b5f310
child 26 7f07a8c31e6d
permissions -rw-r--r--
Added version_HG to make Mercurial happy

"{ 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: const 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: const 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: const 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: const 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: const 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: const void "cairo_clip_preserve" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primClosePath: cr

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

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

primCopyClipRectangleList: cr

	<cdecl: const 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: const void "cairo_copy_page" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primCopyPath: cr

	<cdecl: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const int32 "cairo_get_operator" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primGetReferenceCount: cr

	<cdecl: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const void "cairo_new_path" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primNewSubPath: cr

	<cdecl: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const void "cairo_reset_clip" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primRestore: cr

	<cdecl: const 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: const void "cairo_rotate" ( Cairo::GraphicsContext double ) >
	self primitiveFailed

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

primSave: cr

	<cdecl: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const int32 "cairo_status" ( Cairo::GraphicsContext ) >
	self primitiveFailed

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

primStroke: cr

	<cdecl: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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: const 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:'accessing-path properties'!

lineCap: lc

    ^self class primSetLineCap: self lineCap: lc

    "Created: / 17-06-2012 / 22:09:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

lineWidth: w

    ^self class primSetLineWidth: self width: w

    "Created: / 17-06-2012 / 21:55:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GraphicsContext methodsFor:'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:'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:'paths'!

arcX: x y: y radius: r from: startAngle to: stopAngle

    ^self class primArc: self xc: x asDouble yc: y asDouble radius: r asDouble angle1: startAngle asDouble angle2: stopAngle asDouble

    "Created: / 17-06-2012 / 21:50:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

lineToX: x y: y

    ^self class primLineTo: self x: x asDouble y: y asDouble

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

moveToX: x y: y

    ^self class primMoveTo: self x: x asDouble y: y asDouble

    "Created: / 23-04-2009 / 17:21:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
    "Modified: / 17-06-2012 / 22:33:53 / Jan Vrany <jan.vrany@fit.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>"
! !

!GraphicsContext methodsFor:'private accessing'!

setSurface: aSurface

    surface := aSurface

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

!GraphicsContext methodsFor:'state'!

restore
    ^self class primRestore: self

    "Created: / 17-06-2012 / 21:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

save
    ^self class primSave: self

    "Created: / 17-06-2012 / 21:51:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GraphicsContext methodsFor:'stroke & fill'!

fill

    ^self class primFill: self

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

fillAndPreserve

    ^self class primFillPreserve: self

    "Created: / 17-06-2012 / 21:52:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

paint
    "Fills whole surface"

    ^self class primPaint: self.

    "Created: / 17-06-2012 / 21:40:33 / Jan Vrany <jan.vrany@fit.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>"
!

strokeAndPreserve

    ^self class primStrokePreserve: self

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

!GraphicsContext methodsFor:'text'!

showText: aString

    ^self class primShowText: self utf8: aString utf8Encoded

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

!GraphicsContext methodsFor:'transformations & clipping'!

clip

    ^self class primClip: self.

    "Created: / 17-06-2012 / 21:56:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

scale: point

    ^self class primScale: self sx: point x sy: point y

    "Created: / 17-06-2012 / 21:45:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

translate: point

    ^self class primTranslate: self tx: point x ty: point y

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

!GraphicsContext class methodsFor:'documentation'!

version
    ^'$Id$'
!

version_HG
    ^ '$Changeset: <not expanded> $'
! !