Cairo__Pattern.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 21 Sep 2014 00:44:10 +0100
changeset 20 18a3e6b5f310
parent 12 e5f0c18af8a9
child 23 38ee47dbd976
permissions -rw-r--r--
Added const modifier to FFI specs (required by recent STX)

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

"{ NameSpace: Cairo }"

RefCountedStructure subclass:#Pattern
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Cairo-Objects'
!


!Pattern 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>"
! !

!Pattern class methodsFor:'primitives'!

primAddColorStopRgb: pattern offset: offset red: red green: green blue: blue 

	<cdecl: const void "cairo_pattern_add_color_stop_rgb" ( Cairo::Pattern double double double double ) >
	self primitiveFailed

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

primAddColorStopRgba: pattern offset: offset red: red green: green blue: blue alpha: alpha 

	<cdecl: const void "cairo_pattern_add_color_stop_rgba" ( Cairo::Pattern double double double double double ) >
	self primitiveFailed

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

primDestroy: pattern 

	<cdecl: const void "cairo_pattern_destroy" ( Cairo::Pattern ) >
	self primitiveFailed

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

primGetColorStopCount: pattern count: count 

	<cdecl: const int32 "cairo_pattern_get_color_stop_count" ( Cairo::Pattern pointer ) >
	self primitiveFailed

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

primGetColorStopRgba: pattern index: index offset: offset red: red green: green blue: blue alpha: alpha 

	<cdecl: const int32 "cairo_pattern_get_color_stop_rgba" ( Cairo::Pattern int32 pointer pointer pointer pointer pointer ) >
	self primitiveFailed

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

primGetExtend: pattern 

	<cdecl: const int32 "cairo_pattern_get_extend" ( Cairo::Pattern ) >
	self primitiveFailed

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

primGetFilter: pattern 

	<cdecl: const int32 "cairo_pattern_get_filter" ( Cairo::Pattern ) >
	self primitiveFailed

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

primGetLinearPoints: pattern x0: x0 y0: y0 x1: x1 y1: y1 

	<cdecl: const int32 "cairo_pattern_get_linear_points" ( Cairo::Pattern pointer pointer pointer pointer ) >
	self primitiveFailed

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

primGetMatrix: pattern matrix: matrix 

	<cdecl: const void "cairo_pattern_get_matrix" ( Cairo::Pattern Cairo::Matrix ) >
	self primitiveFailed

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

primGetRadialCircles: pattern x0: x0 y0: y0 r0: r0 x1: x1 y1: y1 r1: r1 

	<cdecl: const int32 "cairo_pattern_get_radial_circles" ( Cairo::Pattern pointer pointer pointer pointer pointer pointer ) >
	self primitiveFailed

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

primGetReferenceCount: pattern 

	<cdecl: const uint32 "cairo_pattern_get_reference_count" ( Cairo::Pattern ) >
	self primitiveFailed

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

primGetRgba: pattern red: red green: green blue: blue alpha: alpha 

	<cdecl: const int32 "cairo_pattern_get_rgba" ( Cairo::Pattern pointer pointer pointer pointer ) >
	self primitiveFailed

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

primGetSurface: pattern surface: surface 

	<cdecl: const int32 "cairo_pattern_get_surface" ( Cairo::Pattern pointer ) >
	self primitiveFailed

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

primGetType: pattern 

	<cdecl: const int32 "cairo_pattern_get_type" ( Cairo::Pattern ) >
	self primitiveFailed

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

primGetUserData: pattern key: key 

	<cdecl: const pointer "cairo_pattern_get_user_data" ( Cairo::Pattern Cairo::UserDataKey ) >
	self primitiveFailed

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

primPatternCreateForSurface: surface 

	<cdecl: const Cairo::Pattern "cairo_pattern_create_for_surface" ( Cairo::Surface ) >
	self primitiveFailed

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

primPatternCreateLinear: x0 y0: y0 x1: x1 y1: y1 

	<cdecl: const Cairo::Pattern "cairo_pattern_create_linear" ( double double double double ) >
	self primitiveFailed

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

primPatternCreateRadial: cx0 cy0: cy0 radius0: radius0 cx1: cx1 cy1: cy1 radius1: radius1 

	<cdecl: const Cairo::Pattern "cairo_pattern_create_radial" ( double double double double double double ) >
	self primitiveFailed

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

primPatternCreateRgb: red green: green blue: blue 

	<cdecl: const Cairo::Pattern "cairo_pattern_create_rgb" ( double double double ) >
	self primitiveFailed

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

primPatternCreateRgba: red green: green blue: blue alpha: alpha 

	<cdecl: const Cairo::Pattern "cairo_pattern_create_rgba" ( double double double double ) >
	self primitiveFailed

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

primReference: pattern 

	<cdecl: const Cairo::Pattern "cairo_pattern_reference" ( Cairo::Pattern ) >
	self primitiveFailed

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

primSetExtend: pattern extend: extend 

	<cdecl: const void "cairo_pattern_set_extend" ( Cairo::Pattern int32 ) >
	self primitiveFailed

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

primSetFilter: pattern filter: filter 

	<cdecl: const void "cairo_pattern_set_filter" ( Cairo::Pattern int32 ) >
	self primitiveFailed

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

primSetMatrix: pattern matrix: matrix 

	<cdecl: const void "cairo_pattern_set_matrix" ( Cairo::Pattern Cairo::Matrix ) >
	self primitiveFailed

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

primSetUserData: pattern key: key userData: user_data destroy: destroy 

	<cdecl: const int32 "cairo_pattern_set_user_data" ( Cairo::Pattern Cairo::UserDataKey pointer pointer ) >
	self primitiveFailed

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

primStatus: pattern 

	<cdecl: const int32 "cairo_pattern_status" ( Cairo::Pattern ) >
	self primitiveFailed

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

!Pattern class methodsFor:'documentation'!

version
    ^'$Id$'
!

version_SVN
    ^ '$Id::                                                                                                                        $'
! !