Path: blob/master/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.h
41155 views
/*1* Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425#ifdef HEADLESS26#error This file should not be included in headless library27#endif2829#ifndef _GTK_INTERFACE_H30#define _GTK_INTERFACE_H3132#include <X11/X.h>33#include <jni.h>3435#ifndef FALSE36#define FALSE (0)37#define TRUE (!FALSE)38#endif3940#define GTHREAD_LIB_VERSIONED VERSIONED_JNI_LIB_NAME("gthread-2.0", "0")41#define GTHREAD_LIB JNI_LIB_NAME("gthread-2.0")4243#define _G_TYPE_CIC(ip, gt, ct) ((ct*) ip)44#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) \45(_G_TYPE_CIC ((instance), (g_type), c_type))46#define GTK_TYPE_FILE_CHOOSER (fp_gtk_file_chooser_get_type ())47#define GTK_FILE_CHOOSER(obj) \48(G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser))49#define G_CALLBACK(f) ((GCallback) (f))50#define G_TYPE_FUNDAMENTAL_SHIFT (2)51#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))52#define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20)53#define GTK_STOCK_CANCEL "gtk-cancel"54#define GTK_STOCK_SAVE "gtk-save"55#define GTK_STOCK_OPEN "gtk-open"56#define GDK_CURRENT_TIME 0L5758#define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0)59#define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1)60#define G_TYPE_INTERFACE G_TYPE_MAKE_FUNDAMENTAL (2)61#define G_TYPE_CHAR G_TYPE_MAKE_FUNDAMENTAL (3)62#define G_TYPE_UCHAR G_TYPE_MAKE_FUNDAMENTAL (4)63#define G_TYPE_BOOLEAN G_TYPE_MAKE_FUNDAMENTAL (5)64#define G_TYPE_INT G_TYPE_MAKE_FUNDAMENTAL (6)65#define G_TYPE_UINT G_TYPE_MAKE_FUNDAMENTAL (7)66#define G_TYPE_LONG G_TYPE_MAKE_FUNDAMENTAL (8)67#define G_TYPE_ULONG G_TYPE_MAKE_FUNDAMENTAL (9)68#define G_TYPE_INT64 G_TYPE_MAKE_FUNDAMENTAL (10)69#define G_TYPE_UINT64 G_TYPE_MAKE_FUNDAMENTAL (11)70#define G_TYPE_ENUM G_TYPE_MAKE_FUNDAMENTAL (12)71#define G_TYPE_FLAGS G_TYPE_MAKE_FUNDAMENTAL (13)72#define G_TYPE_FLOAT G_TYPE_MAKE_FUNDAMENTAL (14)73#define G_TYPE_DOUBLE G_TYPE_MAKE_FUNDAMENTAL (15)74#define G_TYPE_STRING G_TYPE_MAKE_FUNDAMENTAL (16)75#define G_TYPE_POINTER G_TYPE_MAKE_FUNDAMENTAL (17)76#define G_TYPE_BOXED G_TYPE_MAKE_FUNDAMENTAL (18)77#define G_TYPE_PARAM G_TYPE_MAKE_FUNDAMENTAL (19)78#define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20)7980#define GTK_TYPE_BORDER ((*fp_gtk_border_get_type)())8182#define G_TYPE_FUNDAMENTAL_SHIFT (2)83#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))8485#ifndef MIN86#define MIN(a, b) (((a) < (b)) ? (a) : (b))87#endif8889#define CONV_BUFFER_SIZE 12890#define NO_SYMBOL_EXCEPTION 19192/* basic types */93typedef char gchar;94typedef short gshort;95typedef int gint;96typedef long glong;97typedef float gfloat;98typedef double gdouble;99typedef void* gpointer;100typedef gint gboolean;101typedef signed char gint8;102typedef signed short gint16;103typedef signed int gint32;104typedef unsigned char guchar;105typedef unsigned char guint8;106typedef unsigned short gushort;107typedef unsigned short guint16;108typedef unsigned int guint;109typedef unsigned int guint32;110typedef unsigned int gsize;111typedef unsigned long gulong;112typedef signed long long gint64;113typedef unsigned long long guint64;114typedef gulong GType;115116typedef struct _GList GList;117struct _GList118{119gpointer data;120GList *next;121GList *prev;122};123124typedef struct _GSList GSList;125struct _GSList {126gpointer data;127GSList *next;128};129130typedef enum {131BUTTON, /* GtkButton */132CHECK_BOX, /* GtkCheckButton */133CHECK_BOX_MENU_ITEM, /* GtkCheckMenuItem */134COLOR_CHOOSER, /* GtkColorSelectionDialog */135COMBO_BOX, /* GtkComboBox */136COMBO_BOX_ARROW_BUTTON, /* GtkComboBoxEntry */137COMBO_BOX_TEXT_FIELD, /* GtkComboBoxEntry */138DESKTOP_ICON, /* GtkLabel */139DESKTOP_PANE, /* GtkContainer */140EDITOR_PANE, /* GtkTextView */141FORMATTED_TEXT_FIELD, /* GtkEntry */142HANDLE_BOX, /* GtkHandleBox */143HPROGRESS_BAR, /* GtkProgressBar */144HSCROLL_BAR, /* GtkHScrollbar */145HSCROLL_BAR_BUTTON_LEFT, /* GtkHScrollbar */146HSCROLL_BAR_BUTTON_RIGHT, /* GtkHScrollbar */147HSCROLL_BAR_TRACK, /* GtkHScrollbar */148HSCROLL_BAR_THUMB, /* GtkHScrollbar */149HSEPARATOR, /* GtkHSeparator */150HSLIDER, /* GtkHScale */151HSLIDER_TRACK, /* GtkHScale */152HSLIDER_THUMB, /* GtkHScale */153HSPLIT_PANE_DIVIDER, /* GtkHPaned */154INTERNAL_FRAME, /* GtkWindow */155INTERNAL_FRAME_TITLE_PANE, /* GtkLabel */156IMAGE, /* GtkImage */157LABEL, /* GtkLabel */158LIST, /* GtkTreeView */159MENU, /* GtkMenu */160MENU_BAR, /* GtkMenuBar */161MENU_ITEM, /* GtkMenuItem */162MENU_ITEM_ACCELERATOR, /* GtkLabel */163OPTION_PANE, /* GtkMessageDialog */164PANEL, /* GtkContainer */165PASSWORD_FIELD, /* GtkEntry */166POPUP_MENU, /* GtkMenu */167POPUP_MENU_SEPARATOR, /* GtkSeparatorMenuItem */168RADIO_BUTTON, /* GtkRadioButton */169RADIO_BUTTON_MENU_ITEM, /* GtkRadioMenuItem */170ROOT_PANE, /* GtkContainer */171SCROLL_PANE, /* GtkScrolledWindow */172SPINNER, /* GtkSpinButton */173SPINNER_ARROW_BUTTON, /* GtkSpinButton */174SPINNER_TEXT_FIELD, /* GtkSpinButton */175SPLIT_PANE, /* GtkPaned */176TABBED_PANE, /* GtkNotebook */177TABBED_PANE_TAB_AREA, /* GtkNotebook */178TABBED_PANE_CONTENT, /* GtkNotebook */179TABBED_PANE_TAB, /* GtkNotebook */180TABLE, /* GtkTreeView */181TABLE_HEADER, /* GtkButton */182TEXT_AREA, /* GtkTextView */183TEXT_FIELD, /* GtkEntry */184TEXT_PANE, /* GtkTextView */185TITLED_BORDER, /* GtkFrame */186TOGGLE_BUTTON, /* GtkToggleButton */187TOOL_BAR, /* GtkToolbar */188TOOL_BAR_DRAG_WINDOW, /* GtkToolbar */189TOOL_BAR_SEPARATOR, /* GtkSeparatorToolItem */190TOOL_TIP, /* GtkWindow */191TREE, /* GtkTreeView */192TREE_CELL, /* GtkTreeView */193VIEWPORT, /* GtkViewport */194VPROGRESS_BAR, /* GtkProgressBar */195VSCROLL_BAR, /* GtkVScrollbar */196VSCROLL_BAR_BUTTON_UP, /* GtkVScrollbar */197VSCROLL_BAR_BUTTON_DOWN, /* GtkVScrollbar */198VSCROLL_BAR_TRACK, /* GtkVScrollbar */199VSCROLL_BAR_THUMB, /* GtkVScrollbar */200VSEPARATOR, /* GtkVSeparator */201VSLIDER, /* GtkVScale */202VSLIDER_TRACK, /* GtkVScale */203VSLIDER_THUMB, /* GtkVScale */204VSPLIT_PANE_DIVIDER, /* GtkVPaned */205WIDGET_TYPE_SIZE206} WidgetType;207208typedef enum209{210_GTK_ARROW_TYPE,211_GTK_BUTTON_TYPE,212_GTK_CHECK_BUTTON_TYPE,213_GTK_CHECK_MENU_ITEM_TYPE,214_GTK_COLOR_SELECTION_DIALOG_TYPE,215_GTK_COMBO_BOX_TYPE,216_GTK_COMBO_BOX_ARROW_BUTTON_TYPE,217_GTK_COMBO_BOX_TEXT_FIELD_TYPE,218_GTK_CONTAINER_TYPE,219_GTK_ENTRY_TYPE,220_GTK_FRAME_TYPE,221_GTK_HANDLE_BOX_TYPE,222_GTK_HPANED_TYPE,223_GTK_HPROGRESS_BAR_TYPE,224_GTK_HSCALE_TYPE,225_GTK_HSCROLLBAR_TYPE,226_GTK_HSEPARATOR_TYPE,227_GTK_IMAGE_TYPE,228_GTK_MENU_TYPE,229_GTK_MENU_BAR_TYPE,230_GTK_MENU_ITEM_TYPE,231_GTK_NOTEBOOK_TYPE,232_GTK_LABEL_TYPE,233_GTK_RADIO_BUTTON_TYPE,234_GTK_RADIO_MENU_ITEM_TYPE,235_GTK_SCROLLED_WINDOW_TYPE,236_GTK_SEPARATOR_MENU_ITEM_TYPE,237_GTK_SEPARATOR_TOOL_ITEM_TYPE,238_GTK_SPIN_BUTTON_TYPE,239_GTK_TEXT_VIEW_TYPE,240_GTK_TOGGLE_BUTTON_TYPE,241_GTK_TOOLBAR_TYPE,242_GTK_TOOLTIP_TYPE,243_GTK_TREE_VIEW_TYPE,244_GTK_VIEWPORT_TYPE,245_GTK_VPANED_TYPE,246_GTK_VPROGRESS_BAR_TYPE,247_GTK_VSCALE_TYPE,248_GTK_VSCROLLBAR_TYPE,249_GTK_VSEPARATOR_TYPE,250_GTK_WINDOW_TYPE,251_GTK_DIALOG_TYPE,252_GTK_WIDGET_TYPE_SIZE253} GtkWidgetType;254255typedef enum256{257GTK_STATE_NORMAL,258GTK_STATE_ACTIVE,259GTK_STATE_PRELIGHT,260GTK_STATE_SELECTED,261GTK_STATE_INSENSITIVE,262GTK_STATE_INCONSISTENT,263GTK_STATE_FOCUSED264} GtkStateType;265266typedef enum267{268GTK_SHADOW_NONE,269GTK_SHADOW_IN,270GTK_SHADOW_OUT,271GTK_SHADOW_ETCHED_IN,272GTK_SHADOW_ETCHED_OUT273} GtkShadowType;274275typedef enum276{277GTK_EXPANDER_COLLAPSED,278GTK_EXPANDER_SEMI_COLLAPSED,279GTK_EXPANDER_SEMI_EXPANDED,280GTK_EXPANDER_EXPANDED281} GtkExpanderStyle;282283typedef enum284{285GTK_ICON_SIZE_INVALID,286GTK_ICON_SIZE_MENU,287GTK_ICON_SIZE_SMALL_TOOLBAR,288GTK_ICON_SIZE_LARGE_TOOLBAR,289GTK_ICON_SIZE_BUTTON,290GTK_ICON_SIZE_DND,291GTK_ICON_SIZE_DIALOG292} GtkIconSize;293294typedef enum295{296GTK_ORIENTATION_HORIZONTAL,297GTK_ORIENTATION_VERTICAL298} GtkOrientation;299300typedef enum301{302FOREGROUND,303BACKGROUND,304TEXT_FOREGROUND,305TEXT_BACKGROUND,306FOCUS,307LIGHT,308DARK,309MID,310BLACK,311WHITE312} ColorType;313314typedef enum315{316GTK_FONT_NAME,317GTK_ICON_SIZES,318GTK_CURSOR_BLINK,319GTK_CURSOR_BLINK_TIME320} Setting;321322typedef enum323{324GTK_ARROW_UP,325GTK_ARROW_DOWN,326GTK_ARROW_LEFT,327GTK_ARROW_RIGHT,328GTK_ARROW_NONE329} GtkArrowType;330331typedef enum332{333GTK_TEXT_DIR_NONE,334GTK_TEXT_DIR_LTR,335GTK_TEXT_DIR_RTL336} GtkTextDirection;337338typedef enum339{340GTK_POS_LEFT,341GTK_POS_RIGHT,342GTK_POS_TOP,343GTK_POS_BOTTOM344} GtkPositionType;345346/* SynthConstants */347static const gint ENABLED = 1 << 0;348static const gint MOUSE_OVER = 1 << 1;349static const gint PRESSED = 1 << 2;350static const gint DISABLED = 1 << 3;351static const gint FOCUSED = 1 << 8;352static const gint SELECTED = 1 << 9;353static const gint DEFAULT = 1 << 10;354355typedef enum356{357GTK_ANY,358GTK_1,359GTK_2,360GTK_3361} GtkVersion;362363//------------------------------364365366367typedef enum {368GTK_RESPONSE_NONE = -1,369GTK_RESPONSE_REJECT = -2,370GTK_RESPONSE_ACCEPT = -3,371GTK_RESPONSE_DELETE_EVENT = -4,372GTK_RESPONSE_OK = -5,373GTK_RESPONSE_CANCEL = -6,374GTK_RESPONSE_CLOSE = -7,375GTK_RESPONSE_YES = -8,376GTK_RESPONSE_NO = -9,377GTK_RESPONSE_APPLY = -10,378GTK_RESPONSE_HELP = -11379} GtkResponseType;380381typedef enum {382GTK_FILE_CHOOSER_ACTION_OPEN,383GTK_FILE_CHOOSER_ACTION_SAVE,384GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,385GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER386} GtkFileChooserAction;387388typedef enum {389GTK_FILE_FILTER_FILENAME = 1 << 0,390GTK_FILE_FILTER_URI = 1 << 1,391GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2,392GTK_FILE_FILTER_MIME_TYPE = 1 << 3393} GtkFileFilterFlags;394395typedef enum {396GDK_COLORSPACE_RGB397} GdkColorspace;398399typedef enum {400GDK_INTERP_NEAREST,401GDK_INTERP_TILES,402GDK_INTERP_BILINEAR,403GDK_INTERP_HYPER404} GdkInterpType;405406typedef enum {407G_CONNECT_AFTER = 1 << 0, G_CONNECT_SWAPPED = 1 << 1408} GConnectFlags;409//------------------------------410411412typedef void GError;413typedef void GdkScreen;414typedef void GtkWindow;415typedef void GdkWindow;416typedef void GClosure;417typedef void GtkFileChooser;418typedef void GtkFileFilter;419typedef struct {420GtkFileFilterFlags contains;421const gchar *filename;422const gchar *uri;423const gchar *display_name;424const gchar *mime_type;425} GtkFileFilterInfo;426typedef gboolean (*GtkFileFilterFunc)(const GtkFileFilterInfo *filter_info,427gpointer data);428typedef void (*GClosureNotify)(gpointer data, GClosure *closure);429typedef void (*GDestroyNotify)(gpointer data);430typedef void (*GCallback)(void);431432433typedef struct GtkApi {434int version;435gboolean (*show_uri_load)(JNIEnv *env);436gboolean (*unload)();437void (*flush_event_loop)();438gchar* (*gtk_check_version)(guint required_major, guint required_minor,439guint required_micro);440jobject (*get_setting)(JNIEnv *env, Setting property);441442void (*paint_arrow)(WidgetType widget_type, GtkStateType state_type,443GtkShadowType shadow_type, const gchar *detail,444gint x, gint y, gint width, gint height,445GtkArrowType arrow_type, gboolean fill);446void (*paint_box)(WidgetType widget_type, GtkStateType state_type,447GtkShadowType shadow_type, const gchar *detail,448gint x, gint y, gint width, gint height,449gint synth_state, GtkTextDirection dir);450void (*paint_box_gap)(WidgetType widget_type, GtkStateType state_type,451GtkShadowType shadow_type, const gchar *detail,452gint x, gint y, gint width, gint height,453GtkPositionType gap_side, gint gap_x, gint gap_width);454void (*paint_expander)(WidgetType widget_type, GtkStateType state_type,455const gchar *detail, gint x, gint y, gint width, gint height,456GtkExpanderStyle expander_style);457void (*paint_extension)(WidgetType widget_type, GtkStateType state_type,458GtkShadowType shadow_type, const gchar *detail,459gint x, gint y, gint width, gint height, GtkPositionType gap_side);460void (*paint_flat_box)(WidgetType widget_type, GtkStateType state_type,461GtkShadowType shadow_type, const gchar *detail,462gint x, gint y, gint width, gint height, gboolean has_focus);463void (*paint_focus)(WidgetType widget_type, GtkStateType state_type,464const char *detail, gint x, gint y, gint width, gint height);465void (*paint_handle)(WidgetType widget_type, GtkStateType state_type,466GtkShadowType shadow_type, const gchar *detail,467gint x, gint y, gint width, gint height, GtkOrientation orientation);468void (*paint_hline)(WidgetType widget_type, GtkStateType state_type,469const gchar *detail, gint x, gint y, gint width, gint height);470void (*paint_vline)(WidgetType widget_type, GtkStateType state_type,471const gchar *detail, gint x, gint y, gint width, gint height);472void (*paint_option)(WidgetType widget_type, gint synth_state,473const gchar *detail, gint x, gint y, gint width, gint height);474void (*paint_shadow)(WidgetType widget_type, GtkStateType state_type,475GtkShadowType shadow_type, const gchar *detail,476gint x, gint y, gint width, gint height,477gint synth_state, GtkTextDirection dir);478void (*paint_slider)(WidgetType widget_type, GtkStateType state_type,479GtkShadowType shadow_type, const gchar *detail,480gint x, gint y, gint width, gint height, GtkOrientation orientation,481gboolean has_focus);482void (*paint_background)(WidgetType widget_type, GtkStateType state_type,483gint x, gint y, gint width, gint height);484void (*paint_check)(WidgetType widget_type, gint synth_state,485const gchar *detail, gint x, gint y, gint width, gint height);486void (*set_range_value)(WidgetType widget_type, jdouble value,487jdouble min, jdouble max, jdouble visible);488489void (*init_painting)(JNIEnv *env, gint w, gint h);490gint (*copy_image)(gint *dest, gint width, gint height);491492gint (*get_xthickness)(JNIEnv *env, WidgetType widget_type);493gint (*get_ythickness)(JNIEnv *env, WidgetType widget_type);494gint (*get_color_for_state)(JNIEnv *env, WidgetType widget_type,495GtkStateType state_type, ColorType color_type);496jobject (*get_class_value)(JNIEnv *env, WidgetType widget_type,497const char* key);498499jstring (*get_pango_font_name)(JNIEnv *env, WidgetType widget_type);500jboolean (*get_icon_data)(JNIEnv *env, gint widget_type,501const gchar *stock_id, GtkIconSize size,502GtkTextDirection direction, const char *detail,503jmethodID icon_upcall_method, jobject this);504jboolean (*get_file_icon_data)(JNIEnv *env, const char *filename,505GError **error, jmethodID icon_upcall_method, jobject this);506void (*gdk_threads_enter)(void);507void (*gdk_threads_leave)(void);508gboolean (*gtk_show_uri)(GdkScreen *screen, const gchar *uri,509guint32 timestamp, GError **error);510gboolean (*get_drawable_data)(JNIEnv *env, jintArray pixelArray,511jint x, jint y, jint width, jint height,512jint jwidth, int dx, int dy, jint scale);513void (*g_free)(gpointer mem);514515516gchar* (*gtk_file_chooser_get_filename)(GtkFileChooser *chooser);517void (*gtk_widget_hide)(void* widget);518void (*gtk_main_quit)(void);519void* (*gtk_file_chooser_dialog_new)(const gchar *title,520GtkWindow *parent, GtkFileChooserAction action,521const gchar *first_button_text, ...);522gboolean (*gtk_file_chooser_set_current_folder)(GtkFileChooser *chooser,523const gchar *filename);524gboolean (*gtk_file_chooser_set_filename)(GtkFileChooser *chooser,525const char *filename);526void (*gtk_file_chooser_set_current_name)(GtkFileChooser *chooser,527const gchar *name);528void (*gtk_file_filter_add_custom)(GtkFileFilter *filter,529GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data,530GDestroyNotify notify);531void (*gtk_file_chooser_set_filter)(GtkFileChooser *chooser,532GtkFileFilter *filter);533GType (*gtk_file_chooser_get_type)(void);534GtkFileFilter* (*gtk_file_filter_new)(void);535void (*gtk_file_chooser_set_do_overwrite_confirmation)(536GtkFileChooser *chooser, gboolean do_overwrite_confirmation);537void (*gtk_file_chooser_set_select_multiple)(538GtkFileChooser *chooser, gboolean select_multiple);539gchar* (*gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser);540GSList* (*gtk_file_chooser_get_filenames)(GtkFileChooser *chooser);541guint (*gtk_g_slist_length)(GSList *list);542gulong (*g_signal_connect_data)(gpointer instance,543const gchar *detailed_signal, GCallback c_handler, gpointer data,544GClosureNotify destroy_data, GConnectFlags connect_flags);545void (*gtk_widget_show)(void *widget);546void (*gtk_main)(void);547guint (*gtk_main_level)(void);548gchar* (*g_path_get_dirname) (const gchar *file_name);549XID (*gdk_x11_drawable_get_xid) (void *drawable);550void (*gtk_widget_destroy)(void *widget);551void (*gtk_window_present)(void *window);552void (*gtk_window_move)(void *window, gint x, gint y);553void (*gtk_window_resize)(void *window, gint width, gint height);554GdkWindow *(*get_window)(void *widget);555556void (*g_object_unref)(gpointer object);557GList* (*g_list_append) (GList *list, gpointer data);558void (*g_list_free) (GList *list);559void (*g_list_free_full) (GList *list, GDestroyNotify free_func);560} GtkApi;561562gboolean gtk_load(JNIEnv *env, GtkVersion version, gboolean verbose);563gboolean gtk_check_version(GtkVersion version);564565typedef struct _GThreadFunctions GThreadFunctions;566static gboolean (*fp_g_thread_get_initialized)(void);567static void (*fp_g_thread_init)(GThreadFunctions *vtable);568static void (*fp_gdk_threads_init)(void);569static void (*fp_gdk_threads_enter)(void);570static void (*fp_gdk_threads_leave)(void);571572extern GtkApi* gtk;573574#endif /* !_GTK_INTERFACE_H */575576577