! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.libraries alien.syntax combinators kernel
-system
-gir glib gobject glib.ffi ;
-
-<<
-"atk" {
- { [ os winnt? ] [ "libatk-1.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libatk-1.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: atk.ffi
-
-TYPEDEF: guint64 AtkState
-TYPEDEF: GSList AtkAttributeSet
-
-IN-GIR: atk vocab:atk/Atk-1.0.gir
+USING: atk.ffi ;
+IN: atk
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries alien.syntax combinators kernel
+system
+gir glib.ffi gobject.ffi ;
+IN: atk.ffi
+
+<<
+"atk" {
+ { [ os winnt? ] [ "libatk-1.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libatk-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: guint64 AtkState
+TYPEDEF: GSList AtkAttributeSet
+
+GIR: vocab:atk/Atk-1.0.gir
+
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.destructors alien.syntax
+alien.libraries cairo.ffi combinators kernel system
+gir gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi gobject.ffi
+pango.ffi ;
+IN: gdk.ffi
+
+<<
+"gdk" {
+ { [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgdk-x11-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: guint32 GdkNativeWindow
+TYPEDEF: guint32 GdkWChar
+
+IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
+GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
+GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
+GdkEventSelection GdkEventDND GdkEventProximity GdkEventClient
+GdkEventNoExpose GdkEventWindowState GdkEventSetting
+GdkEventOwnerChange GdkEventGrabBroken ;
+
+GIR: vocab:gdk/Gdk-2.0.gir
+
+DESTRUCTOR: gdk_cursor_unref
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.destructors alien.syntax alien.libraries cairo.ffi
-combinators kernel system
-gir glib gobject gio gmodule gdk.pixbuf glib.ffi ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gdk" {
- { [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgdk-x11-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: gdk.ffi
-
-TYPEDEF: guint32 GdkNativeWindow
-TYPEDEF: guint32 GdkWChar
-
-IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
-GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
-GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
-GdkEventSelection GdkEventDND GdkEventProximity GdkEventClient
-GdkEventNoExpose GdkEventWindowState GdkEventSetting
-GdkEventOwnerChange GdkEventGrabBroken ;
-
-IN-GIR: gdk vocab:gdk/Gdk-2.0.gir
-
-IN: gdk.ffi
-
-DESTRUCTOR: gdk_cursor_unref
+USING: gdk.ffi ;
+IN: gdk
--- /dev/null
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries combinators kernel
+system vocabs.parser words
+gir gdk.ffi gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi
+gobject.ffi pango.ffi ;
+IN: gdk.gl.ffi
+
+<<
+"gdk.gl" {
+ { [ os winnt? ] [ drop ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgdkglext-x11-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+<< ulong "unsigned long" current-vocab create typedef >>
+
+GIR: vocab:gdk/gl/GdkGL-1.0.gir
+
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.libraries combinators kernel
-system vocabs.parser words
-gir glib gobject gio gmodule gdk gdk.ffi gdk.pixbuf ;
-
-<<
-"gdk.gl" {
- { [ os winnt? ] [ drop ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgdkglext-x11-1.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: gdk.gl.ffi
-
-<< ulong "unsigned long" current-vocab create typedef >>
-
-IN-GIR: gdk.gl vocab:gdk/gl/GdkGL-1.0.gir
+USING: gdk.gl.ffi ;
+IN: gdk.gl
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gir gio.ffi glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gdk.pixbuf.ffi
+
+<<
+"gdk.pixbuf" {
+ { [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgdk_pixbuf-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gdk/pixbuf/GdkPixbuf-2.0.gir
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.libraries combinators kernel system
-gir glib gobject gio gmodule ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gdk.pixbuf" {
- { [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgdk_pixbuf-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN-GIR: gdk.pixbuf vocab:gdk/pixbuf/GdkPixbuf-2.0.gir
+USING: gdk.pixbuf.ffi ;
+IN: gdk.pixbuf
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gir glib.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gio.ffi
+
+<<
+"gio" {
+ { [ os winnt? ] [ "libgio-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgio-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gio/Gio-2.0.gir
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.libraries combinators kernel system
-gir glib gobject ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gio" {
- { [ os winnt? ] [ "libgio-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgio-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN-GIR: gio vocab:gio/Gio-2.0.gir
+USING: gio.ffi ;
+IN: gio
SYMBOL: current-lib
-SYMBOL: lib-aliases
-lib-aliases [ H{ } ] initialize
-
SYMBOL: type-infos
type-infos [ H{ } ] initialize
SYMBOL: implement-structs
-: get-lib-alias ( lib -- alias )
- lib-aliases get-global at ;
-
: ffi-invoker ( func -- quot )
{
[ return>> c-type>> string>c-type ]
- [ drop current-lib get ]
+ [ drop current-lib get-global ]
[ identifier>> ]
[ parameters>> [ c-type>> string>c-type ] map ]
[ varargs?>> [ void* suffix ] when ]
[ void* swap typedef ] keep dup
] keep
[ signal-ffi-effect "callback-effect" set-word-prop ]
- [ drop current-lib get "callback-library" set-word-prop ]
+ [ drop current-lib get-global "callback-library" set-word-prop ]
[ signal-ffi-invoker (( quot -- alien )) define-inline ] 2tri ;
: define-ffi-signals ( signals class -- )
[ define-ffi-interface-content ] each ;
: get-type-invoker ( name -- quot )
- [ "GType" current-lib get ] dip
+ [ "GType" current-lib get-global ] dip
{ } \ alien-invoke 5 narray >quotation ;
: define-ffi-class ( class -- word )
: define-ffi-aliases ( aliases -- )
[ define-ffi-alias ] each ;
-: prepare-vocab ( repository -- )
- includes>> lib-aliases get '[ _ at ] map sift
- [ ffi-vocab "." glue ] map
- [ dup using-vocab? [ drop ] [ use-vocab ] if ] each ;
-
: define-ffi-namespace ( namespace -- )
{
[ aliases>> define-ffi-aliases ]
} cleave ;
: define-ffi-repository ( repository -- )
- [ prepare-vocab ]
- [ namespace>> define-ffi-namespace ] bi ;
+ namespace>> define-ffi-namespace ;
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs combinators gir.common gir.ffi gir.loader
-kernel lexer locals namespaces sequences vocabs.parser xml ;
+kernel lexer locals math namespaces sequences vocabs.parser xml ;
IN: gir
: with-child-vocab ( name quot -- )
[ swap "." glue set-current-vocab call ] keep
set-current-vocab ; inline
-:: define-gir-vocab ( vocab-name file-name -- )
+:: define-gir-vocab ( file-name -- )
file-name file>xml xml>repository
- vocab-name [ set-current-vocab ] [ current-lib set ] bi
+ current-vocab name>> dup ffi-vocab tail?
+ [ ffi-vocab length 1 + head* current-lib set-global ]
+ [ drop ] if ! throw the error
{
- [
- namespace>> name>> vocab-name swap
- lib-aliases get set-at
- ]
- [ ffi-vocab [ define-ffi-repository ] with-child-vocab ]
+ [ define-ffi-repository ]
} cleave
f implement-structs set-global ;
-SYNTAX: IN-GIR: scan scan define-gir-vocab ;
+SYNTAX: GIR: scan define-gir-vocab ;
SYNTAX: IMPLEMENT-STRUCTS:
";" parse-tokens implement-structs set-global ;
: full-type-name>type ( name -- type )
[ type new ] dip
camel>factor "." split1 dup [ swap ] unless
- [ get-lib-alias >>namespace ] [ >>name ] bi* absolute-type ;
+ [ >>namespace ] [ >>name ] bi* absolute-type ;
: node>type ( xml -- type )
"name" attr full-type-name>type ;
: xml>namespace ( xml -- namespace )
[ namespace new ] dip {
- [ "name" attr camel>factor dup current-lib set >>name ]
+ [ "name" attr camel>factor >>name ]
[ "prefix" attr [ set-prefix ] keep >>prefix ]
[ "alias" tags-named [ xml>alias ] map >>aliases ]
[ "record" tags-named [ xml>record ] map >>records ]
[ "constant" tags-named [ xml>const ] map >>consts ]
[ "enumeration" tags-named [ xml>enum ] map >>enums ]
[ "bitfield" tags-named [ xml>enum ] map >>bitfields ]
- [ "function" load-functions >>functions
- ]
+ [ "function" load-functions >>functions ]
} cleave ;
: xml>repository ( xml -- repository )
dup {
[ namespace>> ] [ simple-type? ]
[ utf8-type? ] [ none-type? ]
- } 1|| [ current-lib get >>namespace ] unless ;
+ } 1|| [ current-lib get-global >>namespace ] unless ;
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.c-types alien.libraries alien.syntax
+combinators compiler.units gir kernel system vocabs.parser words ;
+IN: glib.ffi
+
+<<
+"glib" {
+ { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
+ { [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+<< double "long double" current-vocab create typedef >>
+
+TYPEDEF: char gchar
+TYPEDEF: uchar guchar
+TYPEDEF: short gshort
+TYPEDEF: ushort gushort
+TYPEDEF: long glong
+TYPEDEF: ulong gulong
+TYPEDEF: int gint
+TYPEDEF: uint guint
+
+<<
+int c-type clone
+ [ >c-bool ] >>unboxer-quot
+ [ c-bool> ] >>boxer-quot
+ object >>boxed-class
+"gboolean" current-vocab create typedef
+>>
+
+TYPEDEF: char gint8
+TYPEDEF: uchar guint8
+TYPEDEF: short gint16
+TYPEDEF: ushort guint16
+TYPEDEF: int gint32
+TYPEDEF: uint guint32
+TYPEDEF: longlong gint64
+TYPEDEF: ulonglong guint64
+
+TYPEDEF: float gfloat
+TYPEDEF: double gdouble
+
+TYPEDEF: long ssize_t
+TYPEDEF: long time_t
+TYPEDEF: size_t gsize
+TYPEDEF: ssize_t gssize
+TYPEDEF: size_t GType
+
+TYPEDEF: void* gpointer
+TYPEDEF: void* gconstpointer
+
+TYPEDEF: guint8 GDateDay
+TYPEDEF: guint16 GDateYear
+TYPEDEF: gint GPid
+TYPEDEF: guint32 GQuark
+TYPEDEF: gint32 GTime
+TYPEDEF: glong gintptr
+TYPEDEF: gint64 goffset
+TYPEDEF: gulong guintptr
+TYPEDEF: guint32 gunichar
+TYPEDEF: guint16 gunichar2
+
+TYPEDEF: gpointer pointer
+TYPEDEF: gpointer any
+
+GIR: vocab:glib/GLib-2.0.gir
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.c-types alien.libraries alien.syntax
-combinators compiler.units gir kernel system vocabs.parser words ;
-
-<<
-"glib" {
- { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
- { [ os unix? ] [ "libglib-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: glib.ffi
-
-<< double "long double" current-vocab create typedef >>
-
-TYPEDEF: char gchar
-TYPEDEF: uchar guchar
-TYPEDEF: short gshort
-TYPEDEF: ushort gushort
-TYPEDEF: long glong
-TYPEDEF: ulong gulong
-TYPEDEF: int gint
-TYPEDEF: uint guint
-
-SYMBOL: gboolean
-<<
-gint c-type clone
- [ >c-bool ] >>unboxer-quot
- [ c-bool> ] >>boxer-quot
- object >>boxed-class
-gboolean typedef
->>
-
-TYPEDEF: char gint8
-TYPEDEF: uchar guint8
-TYPEDEF: short gint16
-TYPEDEF: ushort guint16
-TYPEDEF: int gint32
-TYPEDEF: uint guint32
-TYPEDEF: longlong gint64
-TYPEDEF: ulonglong guint64
-
-TYPEDEF: float gfloat
-TYPEDEF: double gdouble
-
-TYPEDEF: long ssize_t
-TYPEDEF: long time_t
-TYPEDEF: size_t gsize
-TYPEDEF: ssize_t gssize
-TYPEDEF: size_t GType
-
-TYPEDEF: void* gpointer
-TYPEDEF: void* gconstpointer
-
-TYPEDEF: guint8 GDateDay
-TYPEDEF: guint16 GDateYear
-TYPEDEF: gint GPid
-TYPEDEF: guint32 GQuark
-TYPEDEF: gint32 GTime
-TYPEDEF: glong gintptr
-TYPEDEF: gint64 goffset
-TYPEDEF: gulong guintptr
-TYPEDEF: guint32 gunichar
-TYPEDEF: guint16 gunichar2
-
-! Разобраться, почему в .gir есть такие типы
-TYPEDEF: gpointer pointer
-TYPEDEF: gpointer any
-
-IN-GIR: glib vocab:glib/GLib-2.0.gir
+USING: glib.ffi ;
+IN: glib
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gir glib.ffi ;
+IN: gmodule.ffi
+
+<<
+"gmodule" {
+ { [ os winnt? ] [ "libgmodule-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgmodule-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gmodule/GModule-2.0.gir
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.libraries combinators kernel system
-gir glib ;
-
-<<
-"gmodule" {
- { [ os winnt? ] [ "libgmodule-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgmodule-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN-GIR: gmodule vocab:gmodule/GModule-2.0.gir
+USING: gmodule.ffi ;
+IN: gmodule
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.destructors alien.libraries
+combinators kernel literals math system
+gir glib.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gobject.ffi
+
+<<
+"gobject" {
+ { [ os winnt? ] [ "libobject-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
+ { [ os unix? ] [ "libgobject-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: void* GSignalCMarshaller
+TYPEDEF: void GStrv
+TYPEDEF: gchar* gchararray
+
+IMPLEMENT-STRUCTS: GValue ;
+
+GIR: vocab:gobject/GObject-2.0.gir
+
+IN: gobject.ffi
+
+FORGET: GIOCondition
+
+FUNCTION: void g_object_unref ( GObject* self ) ;
+
+DESTRUCTOR: g_object_unref
+
+TYPEDEF: GParamSpec GParam
+
+CONSTANT: G_TYPE_INVALID $[ 0 2 shift ]
+CONSTANT: G_TYPE_NONE $[ 1 2 shift ]
+CONSTANT: G_TYPE_INTERFACE $[ 2 2 shift ]
+CONSTANT: G_TYPE_CHAR $[ 3 2 shift ]
+CONSTANT: G_TYPE_UCHAR $[ 4 2 shift ]
+CONSTANT: G_TYPE_BOOLEAN $[ 5 2 shift ]
+CONSTANT: G_TYPE_INT $[ 6 2 shift ]
+CONSTANT: G_TYPE_UINT $[ 7 2 shift ]
+CONSTANT: G_TYPE_LONG $[ 8 2 shift ]
+CONSTANT: G_TYPE_ULONG $[ 9 2 shift ]
+CONSTANT: G_TYPE_INT64 $[ 10 2 shift ]
+CONSTANT: G_TYPE_UINT64 $[ 11 2 shift ]
+CONSTANT: G_TYPE_ENUM $[ 12 2 shift ]
+CONSTANT: G_TYPE_FLAGS $[ 13 2 shift ]
+CONSTANT: G_TYPE_FLOAT $[ 14 2 shift ]
+CONSTANT: G_TYPE_DOUBLE $[ 15 2 shift ]
+CONSTANT: G_TYPE_STRING $[ 16 2 shift ]
+CONSTANT: G_TYPE_POINTER $[ 17 2 shift ]
+CONSTANT: G_TYPE_BOXED $[ 18 2 shift ]
+CONSTANT: G_TYPE_PARAM $[ 19 2 shift ]
+CONSTANT: G_TYPE_OBJECT $[ 20 2 shift ]
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.destructors
-alien.libraries combinators kernel literals math system
-gir glib glib.ffi ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gobject" {
- { [ os winnt? ] [ "libobject-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
- { [ os unix? ] [ "libgobject-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: gobject.ffi
-
-TYPEDEF: void* GSignalCMarshaller
-TYPEDEF: void GStrv
-! есть alias
-TYPEDEF: gchar* gchararray
-
-IMPLEMENT-STRUCTS: GValue ;
-
-IN-GIR: gobject vocab:gobject/GObject-2.0.gir
-
-IN: gobject.ffi
-
-FORGET: GIOCondition
-
-FUNCTION: void g_object_unref ( GObject* self ) ;
-
-DESTRUCTOR: g_object_unref
-
-! Исправление неправильного типа параметра для GtkWidget-child-notify
-! (разобраться)
-TYPEDEF: GParamSpec GParam
-
-CONSTANT: G_TYPE_INVALID $[ 0 2 shift ]
-CONSTANT: G_TYPE_NONE $[ 1 2 shift ]
-CONSTANT: G_TYPE_INTERFACE $[ 2 2 shift ]
-CONSTANT: G_TYPE_CHAR $[ 3 2 shift ]
-CONSTANT: G_TYPE_UCHAR $[ 4 2 shift ]
-CONSTANT: G_TYPE_BOOLEAN $[ 5 2 shift ]
-CONSTANT: G_TYPE_INT $[ 6 2 shift ]
-CONSTANT: G_TYPE_UINT $[ 7 2 shift ]
-CONSTANT: G_TYPE_LONG $[ 8 2 shift ]
-CONSTANT: G_TYPE_ULONG $[ 9 2 shift ]
-CONSTANT: G_TYPE_INT64 $[ 10 2 shift ]
-CONSTANT: G_TYPE_UINT64 $[ 11 2 shift ]
-CONSTANT: G_TYPE_ENUM $[ 12 2 shift ]
-CONSTANT: G_TYPE_FLAGS $[ 13 2 shift ]
-CONSTANT: G_TYPE_FLOAT $[ 14 2 shift ]
-CONSTANT: G_TYPE_DOUBLE $[ 15 2 shift ]
-CONSTANT: G_TYPE_STRING $[ 16 2 shift ]
-CONSTANT: G_TYPE_POINTER $[ 17 2 shift ]
-CONSTANT: G_TYPE_BOXED $[ 18 2 shift ]
-CONSTANT: G_TYPE_PARAM $[ 19 2 shift ]
-CONSTANT: G_TYPE_OBJECT $[ 20 2 shift ]
+USING: gobject.ffi ;
+IN: gobject
--- /dev/null
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gir glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gst.ffi
+
+<<
+"gst" {
+ { [ os winnt? ] [ drop ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! Временное исправление отсутвующих типов libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gst/Gst-0.10.gir
+
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.libraries combinators
-kernel system
-gir glib glib.ffi gobject gmodule ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gst" {
- { [ os winnt? ] [ drop ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
-} cond
->>
-
-IN: gst.ffi
-
-TYPEDEF: gpointer GstClockID
-TYPEDEF: guint64 GstClockTime
-TYPEDEF: gint64 GstClockTimeDiff
-
-! Временное исправление отсутвующих типов libxml2
-TYPEDEF: void* xmlNodePtr
-TYPEDEF: void* xmlDocPtr
-TYPEDEF: void* xmlNsPtr
-
-IN-GIR: gst vocab:gst/Gst-0.10.gir
+USING: gst.ffi ;
+IN: gst
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries cairo.ffi combinators
+kernel system
+gir atk.ffi gdk.ffi gdk.pixbuf.ffi gio.ffi glib.ffi gmodule.ffi
+gobject.ffi pango.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gtk.ffi
+
+<<
+"gtk" {
+ { [ os winnt? ] [ "libgtk-win32-2.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgtk-x11-2.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: void GtkAllocation
+TYPEDEF: void GtkEnumValue
+TYPEDEF: void GtkFlagValue
+TYPEDEF: GType GtkType
+
+IMPLEMENT-STRUCTS: GtkTreeIter ;
+
+GIR: vocab:gtk/Gtk-2.0.gir
+
--- /dev/null
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.libraries combinators kernel system
+gir gdk.ffi gdk.pixbuf.ffi gdk.gl.ffi gio.ffi glib.ffi
+gmodule.ffi gobject.ffi gtk.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gtk.gl.ffi
+
+<<
+"gtk.gl" {
+ { [ os winnt? ] [ drop ] }
+ { [ os macosx? ] [ drop ] }
+ { [ os unix? ] [ "libgtkglext-x11-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:gtk/gl/GtkGL-1.0.gir
+
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.libraries combinators kernel system
-gir glib gobject gio gmodule gdk.pixbuf gdk gdk.gl gtk gtk.ffi ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gtk.gl" {
- { [ os winnt? ] [ drop ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgtkglext-x11-1.0.so" cdecl add-library ] }
-} cond
->>
-
-IN-GIR: gtk.gl vocab:gtk/gl/GtkGL-1.0.gir
+USING: gtk.gl.ffi ;
+IN: gtk.gl
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.libraries cairo.ffi combinators
-kernel system
-gir glib glib.ffi gobject gio gmodule gdk.pixbuf gdk atk ;
-EXCLUDE: alien.c-types => pointer ;
-
-<<
-"gtk" {
- { [ os winnt? ] [ "libgtk-win32-2.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ drop ] }
- { [ os unix? ] [ "libgtk-x11-2.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: gtk.ffi
-
-TYPEDEF: void GtkAllocation
-TYPEDEF: void GtkEnumValue
-TYPEDEF: void GtkFlagValue
-TYPEDEF: GType GtkType
-
-IMPLEMENT-STRUCTS: GtkTreeIter ;
-
-IN-GIR: gtk vocab:gtk/Gtk-2.0.gir
+USING: gtk.ffi ;
+IN: gtk
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.strings io.encodings.ascii
-gdk.gl gdk.gl.ffi ;
+gdk.gl.ffi ;
IN: opengl.gl.gtk
: gl-function-context ( -- context )
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.data alien.libraries
-alien.syntax cairo.ffi combinators kernel system
-gir pango pango.ffi ;
-
-<<
-"pango.cairo" {
- { [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
- { [ os unix? ] [ "libpangocairo-1.0.so" cdecl add-library ] }
-} cond
->>
-
-IN-GIR: pango.cairo vocab:pango/cairo/PangoCairo-1.0.gir
-
-IN: pango.cairo.ffi
-
-FUNCTION: void
-pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
-
-FUNCTION: void
-pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
-
-FUNCTION: PangoLayout*
-pango_cairo_create_layout ( cairo_t* cr ) ;
+USING: cairo.pango.ffi ;
+IN: pango.cairo
--- /dev/null
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.libraries alien.syntax cairo.ffi
+combinators kernel system
+gir pango.ffi ;
+IN: pango.cairo.ffi
+
+<<
+"pango.cairo" {
+ { [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
+ { [ os unix? ] [ "libpangocairo-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+GIR: vocab:pango/cairo/PangoCairo-1.0.gir
+
+FUNCTION: void
+pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
+
+FUNCTION: void
+pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
+
+FUNCTION: PangoLayout*
+pango_cairo_create_layout ( cairo_t* cr ) ;
+
--- /dev/null
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax combinators kernel system
+gir glib.ffi ;
+IN: pango.ffi
+
+<<
+"pango" {
+ { [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
+ { [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
+ { [ os unix? ] [ "libpango-1.0.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: void PangoLayoutRun ! не совсем верно
+TYPEDEF: guint32 PangoGlyph
+
+IMPLEMENT-STRUCTS: PangoRectangle ;
+
+GIR: vocab:pango/Pango-1.0.gir
+
+DESTRUCTOR: pango_font_description_free
+DESTRUCTOR: pango_layout_iter_free
+
! Copyright (C) 2009 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.destructors alien.libraries
-alien.syntax combinators kernel system
-gir glib glib.ffi ;
-
-<<
-"pango" {
- { [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
- { [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
- { [ os unix? ] [ "libpango-1.0.so" cdecl add-library ] }
-} cond
->>
-
-IN: pango.ffi
-
-TYPEDEF: void PangoLayoutRun ! не совсем верно
-TYPEDEF: guint32 PangoGlyph
-
-IMPLEMENT-STRUCTS: PangoRectangle ;
-
-IN-GIR: pango vocab:pango/Pango-1.0.gir
-
-IN: pango.ffi
-
-DESTRUCTOR: pango_font_description_free
-DESTRUCTOR: pango_layout_iter_free
+USING: pango.ffi ;
+IN: pango
io.encodings.utf8 kernel literals locals math math.bitwise
namespaces sequences strings ui ui.backend ui.clipboards ui.event-loop
ui.gadgets ui.gadgets.private ui.gadgets.worlds ui.gestures ui.private
-glib glib.ffi gobject gobject.ffi gtk gtk.ffi gdk gdk.ffi
-gdk.gl gtk.gl gdk.gl.ffi gtk.gl.ffi ;
+glib.ffi gobject.ffi gtk.ffi gdk.ffi gdk.gl.ffi gtk.gl.ffi ;
IN: ui.backend.gtk
SINGLETON: gtk-ui-backend
GTK_WINDOW_TOPLEVEL gtk_window_new :> win
world [ window-loc>> win swap first2 gtk_window_move ]
[ dim>> win swap first2 gtk_window_set_default_size ] bi
-
+
win enable-gl drop ! сделать проверку на доступность OpenGL
-
+
win connect-signals
win gtk_widget_realize
win world window-controls>> configure-window-controls
-
+
win <window-handle> world handle<<
world win register-window
cairo.ffi classes.struct combinators destructors fonts fry
init io.encodings.utf8 kernel math math.rectangles math.vectors
memoize namespaces sequences ui.text ui.text.private
-gobject gobject.ffi pango pango.ffi pango.cairo pango.cairo.ffi ;
+gobject.ffi pango.ffi pango.cairo.ffi ;
IN: ui.text.pango
: pango>float ( n -- x ) PANGO_SCALE /f ; inline
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.strings fry byte-arrays classes.struct
io.encodings.utf8 kernel locals math prettyprint
-gst gst.ffi glib.ffi gobject.ffi gtk gtk.ffi ;
+gst.ffi glib.ffi gobject.ffi gtk.ffi ;
IN: gir.samples.lowlevel.gstreamer
! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.strings gtk gobject.ffi gtk.ffi io.encodings.utf8
+USING: alien.strings gobject.ffi gtk.ffi io.encodings.utf8
kernel locals ;
IN: gir.samples.lowlevel.hello-world
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.strings byte-arrays classes.struct
-gtk glib.ffi gobject.ffi gtk.ffi io.encodings.utf8 kernel
+glib.ffi gobject.ffi gtk.ffi io.encodings.utf8 kernel
literals locals make math prettyprint sequences specialized-arrays
gir.samples.lowlevel.hello-world
gir.samples.lowlevel.opengl
! Copyright (C) 2010 Anton Gorenko.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.enums alien.strings gtk gobject.ffi gtk.ffi gdk.gl gtk.gl gdk.gl.ffi
+USING: alien.enums alien.strings gobject.ffi gtk.ffi gdk.gl.ffi
gtk.gl.ffi io.encodings.utf8 kernel locals math opengl.gl prettyprint ;
IN: gir.samples.lowlevel.opengl