]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/gdk/ffi/ffi.factor
factor: trim using lists
[factor.git] / basis / gdk / ffi / ffi.factor
index d67f61f585dba138754968973ee322a0ca83a241..b4fb9b94de88ce888c052392cb045b48bc7af154 100644 (file)
-! Copyright (C) 2009 Anton Gorenko.
+! Copyright (C) 2010 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 ;
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax cairo.ffi classes.struct combinators
+gobject-introspection gobject-introspection.standard-types
+kernel system vocabs ;
 IN: gdk.ffi
 
+<<
+"pango.ffi" require
+"gdk.pixbuf.ffi" require
+>>
+
+LIBRARY: gdk
+
 <<
 "gdk" {
-    { [ os winnt? ] [ "libgdk-win32-2.0-0.dll" cdecl add-library ] }
+    { [ os windows? ] [ "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
-C-TYPE: GdkXEvent
+! <workaround these types are from cairo 1.10
+STRUCT: cairo_rectangle_int_t
+    { x int } { y int } { width int } { height int } ;
+
+C-TYPE: cairo_region_t
+! workaround>
 
-IMPLEMENT-STRUCTS: GdkEventAny GdkEventKey GdkEventButton
-GdkEventScroll GdkEventMotion GdkEventExpose GdkEventVisibility
-GdkEventCrossing GdkEventFocus GdkEventConfigure GdkEventProperty
-GdkEventSelection GdkEventDND GdkEventProximity GdkEventClient
-GdkEventNoExpose GdkEventWindowState GdkEventSetting
-GdkEventOwnerChange GdkEventGrabBroken GdkRectangle ;
+FOREIGN-RECORD-TYPE: cairo.RectangleInt cairo_rectangle_int_t
+FOREIGN-RECORD-TYPE: cairo.Region cairo_region_t
+FOREIGN-RECORD-TYPE: cairo.FontOptions cairo_font_options_t
+FOREIGN-RECORD-TYPE: cairo.Surface cairo_surface_t
+FOREIGN-RECORD-TYPE: cairo.Pattern cairo_pattern_t
+FOREIGN-RECORD-TYPE: cairo.Context cairo_t
+FOREIGN-ENUM-TYPE: cairo.Content cairo_content_t
 
-GIR: vocab:gdk/Gdk-2.0.gir
+GIR: vocab:gdk/Gdk-3.0.gir
 
 DESTRUCTOR: gdk_cursor_unref
 
+STRUCT: GdkEventButton
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { axes gdouble* }
+    { state guint }
+    { button guint }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;
+
+STRUCT: GdkEventConfigure
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { x gint }
+    { y gint }
+    { width gint }
+    { height gint } ;
+
+STRUCT: GdkEventKey
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { state guint }
+    { keyval guint }
+    { length gint }
+    { string gchar* }
+    { hardware_keycode guint16 }
+    { group guint8 }
+    { is_modifier uint bits: 1 } ;
+
+STRUCT: GdkEventMotion
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { axes gdouble* }
+    { state guint }
+    { is_hint gint16 }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;
+
+STRUCT: GdkEventScroll
+    { type GdkEventType }
+    { window GdkWindow* }
+    { send_event gint8 }
+    { time guint32 }
+    { x gdouble }
+    { y gdouble }
+    { state guint }
+    { direction GdkScrollDirection }
+    { device GdkDevice* }
+    { x_root gdouble }
+    { y_root gdouble } ;