1 /* 2 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 #ifndef _GTK2_INTERFACE_H 26 #define _GTK2_INTERFACE_H 27 28 #include <stdlib.h> 29 #include <jni.h> 30 31 #define _G_TYPE_CIC(ip, gt, ct) ((ct*) ip) 32 #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) 33 #define GTK_TYPE_FILE_CHOOSER (fp_gtk_file_chooser_get_type ()) 34 #define GTK_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser)) 35 #define fp_g_signal_connect(instance, detailed_signal, c_handler, data) \ 36 fp_g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0) 37 #define G_CALLBACK(f) ((GCallback) (f)) 38 #define G_TYPE_FUNDAMENTAL_SHIFT (2) 39 #define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT)) 40 #define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20) 41 #define G_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject)) 42 #define GTK_STOCK_CANCEL "gtk-cancel" 43 #define GTK_STOCK_SAVE "gtk-save" 44 #define GTK_STOCK_OPEN "gtk-open" 45 #define GDK_CURRENT_TIME 0L 46 47 typedef enum _WidgetType 48 { 49 BUTTON, /* GtkButton */ 50 CHECK_BOX, /* GtkCheckButton */ 51 CHECK_BOX_MENU_ITEM, /* GtkCheckMenuItem */ 52 COLOR_CHOOSER, /* GtkColorSelectionDialog */ 53 COMBO_BOX, /* GtkComboBox */ 54 COMBO_BOX_ARROW_BUTTON, /* GtkComboBoxEntry */ 55 COMBO_BOX_TEXT_FIELD, /* GtkComboBoxEntry */ 56 DESKTOP_ICON, /* GtkLabel */ 57 DESKTOP_PANE, /* GtkContainer */ 58 EDITOR_PANE, /* GtkTextView */ 59 FORMATTED_TEXT_FIELD, /* GtkEntry */ 60 HANDLE_BOX, /* GtkHandleBox */ 61 HPROGRESS_BAR, /* GtkProgressBar */ 62 HSCROLL_BAR, /* GtkHScrollbar */ 63 HSCROLL_BAR_BUTTON_LEFT, /* GtkHScrollbar */ 64 HSCROLL_BAR_BUTTON_RIGHT, /* GtkHScrollbar */ 65 HSCROLL_BAR_TRACK, /* GtkHScrollbar */ 66 HSCROLL_BAR_THUMB, /* GtkHScrollbar */ 67 HSEPARATOR, /* GtkHSeparator */ 68 HSLIDER, /* GtkHScale */ 69 HSLIDER_TRACK, /* GtkHScale */ 70 HSLIDER_THUMB, /* GtkHScale */ 71 HSPLIT_PANE_DIVIDER, /* GtkHPaned */ 72 INTERNAL_FRAME, /* GtkWindow */ 73 INTERNAL_FRAME_TITLE_PANE, /* GtkLabel */ 74 IMAGE, /* GtkImage */ 75 LABEL, /* GtkLabel */ 76 LIST, /* GtkTreeView */ 77 MENU, /* GtkMenu */ 78 MENU_BAR, /* GtkMenuBar */ 79 MENU_ITEM, /* GtkMenuItem */ 80 MENU_ITEM_ACCELERATOR, /* GtkLabel */ 81 OPTION_PANE, /* GtkMessageDialog */ 82 PANEL, /* GtkContainer */ 83 PASSWORD_FIELD, /* GtkEntry */ 84 POPUP_MENU, /* GtkMenu */ 85 POPUP_MENU_SEPARATOR, /* GtkSeparatorMenuItem */ 86 RADIO_BUTTON, /* GtkRadioButton */ 87 RADIO_BUTTON_MENU_ITEM, /* GtkRadioMenuItem */ 88 ROOT_PANE, /* GtkContainer */ 89 SCROLL_PANE, /* GtkScrolledWindow */ 90 SPINNER, /* GtkSpinButton */ 91 SPINNER_ARROW_BUTTON, /* GtkSpinButton */ 92 SPINNER_TEXT_FIELD, /* GtkSpinButton */ 93 SPLIT_PANE, /* GtkPaned */ 94 TABBED_PANE, /* GtkNotebook */ 95 TABBED_PANE_TAB_AREA, /* GtkNotebook */ 96 TABBED_PANE_CONTENT, /* GtkNotebook */ 97 TABBED_PANE_TAB, /* GtkNotebook */ 98 TABLE, /* GtkTreeView */ 99 TABLE_HEADER, /* GtkButton */ 100 TEXT_AREA, /* GtkTextView */ 101 TEXT_FIELD, /* GtkEntry */ 102 TEXT_PANE, /* GtkTextView */ 103 TITLED_BORDER, /* GtkFrame */ 104 TOGGLE_BUTTON, /* GtkToggleButton */ 105 TOOL_BAR, /* GtkToolbar */ 106 TOOL_BAR_DRAG_WINDOW, /* GtkToolbar */ 107 TOOL_BAR_SEPARATOR, /* GtkSeparatorToolItem */ 108 TOOL_TIP, /* GtkWindow */ 109 TREE, /* GtkTreeView */ 110 TREE_CELL, /* GtkTreeView */ 111 VIEWPORT, /* GtkViewport */ 112 VPROGRESS_BAR, /* GtkProgressBar */ 113 VSCROLL_BAR, /* GtkVScrollbar */ 114 VSCROLL_BAR_BUTTON_UP, /* GtkVScrollbar */ 115 VSCROLL_BAR_BUTTON_DOWN, /* GtkVScrollbar */ 116 VSCROLL_BAR_TRACK, /* GtkVScrollbar */ 117 VSCROLL_BAR_THUMB, /* GtkVScrollbar */ 118 VSEPARATOR, /* GtkVSeparator */ 119 VSLIDER, /* GtkVScale */ 120 VSLIDER_TRACK, /* GtkVScale */ 121 VSLIDER_THUMB, /* GtkVScale */ 122 VSPLIT_PANE_DIVIDER, /* GtkVPaned */ 123 WIDGET_TYPE_SIZE 124 } WidgetType; 125 126 typedef enum _ColorType 127 { 128 FOREGROUND, 129 BACKGROUND, 130 TEXT_FOREGROUND, 131 TEXT_BACKGROUND, 132 FOCUS, 133 LIGHT, 134 DARK, 135 MID, 136 BLACK, 137 WHITE 138 } ColorType; 139 140 typedef enum _Setting 141 { 142 GTK_FONT_NAME, 143 GTK_ICON_SIZES 144 } Setting; 145 146 /* GTK types, here to eliminate need for GTK headers at compile time */ 147 148 #ifndef FALSE 149 #define FALSE (0) 150 #define TRUE (!FALSE) 151 #endif 152 153 #define GTK_HAS_FOCUS (1 << 12) 154 #define GTK_HAS_DEFAULT (1 << 14) 155 156 157 /* basic types */ 158 typedef char gchar; 159 typedef short gshort; 160 typedef int gint; 161 typedef long glong; 162 typedef float gfloat; 163 typedef double gdouble; 164 typedef void* gpointer; 165 typedef gint gboolean; 166 167 typedef signed char gint8; 168 typedef signed short gint16; 169 typedef signed int gint32; 170 171 typedef unsigned char guchar; 172 typedef unsigned char guint8; 173 typedef unsigned short gushort; 174 typedef unsigned short guint16; 175 typedef unsigned int guint; 176 typedef unsigned int guint32; 177 typedef unsigned int gsize; 178 typedef unsigned long gulong; 179 180 typedef signed long long gint64; 181 typedef unsigned long long guint64; 182 183 /* enumerated constants */ 184 typedef enum 185 { 186 GTK_ARROW_UP, 187 GTK_ARROW_DOWN, 188 GTK_ARROW_LEFT, 189 GTK_ARROW_RIGHT 190 } GtkArrowType; 191 192 typedef enum { 193 GDK_COLORSPACE_RGB 194 } GdkColorspace; 195 196 typedef enum 197 { 198 GTK_EXPANDER_COLLAPSED, 199 GTK_EXPANDER_SEMI_COLLAPSED, 200 GTK_EXPANDER_SEMI_EXPANDED, 201 GTK_EXPANDER_EXPANDED 202 } GtkExpanderStyle; 203 204 typedef enum 205 { 206 GTK_ICON_SIZE_INVALID, 207 GTK_ICON_SIZE_MENU, 208 GTK_ICON_SIZE_SMALL_TOOLBAR, 209 GTK_ICON_SIZE_LARGE_TOOLBAR, 210 GTK_ICON_SIZE_BUTTON, 211 GTK_ICON_SIZE_DND, 212 GTK_ICON_SIZE_DIALOG 213 } GtkIconSize; 214 215 typedef enum 216 { 217 GTK_ORIENTATION_HORIZONTAL, 218 GTK_ORIENTATION_VERTICAL 219 } GtkOrientation; 220 221 typedef enum 222 { 223 GTK_POS_LEFT, 224 GTK_POS_RIGHT, 225 GTK_POS_TOP, 226 GTK_POS_BOTTOM 227 } GtkPositionType; 228 229 typedef enum 230 { 231 GTK_SHADOW_NONE, 232 GTK_SHADOW_IN, 233 GTK_SHADOW_OUT, 234 GTK_SHADOW_ETCHED_IN, 235 GTK_SHADOW_ETCHED_OUT 236 } GtkShadowType; 237 238 typedef enum 239 { 240 GTK_STATE_NORMAL, 241 GTK_STATE_ACTIVE, 242 GTK_STATE_PRELIGHT, 243 GTK_STATE_SELECTED, 244 GTK_STATE_INSENSITIVE 245 } GtkStateType; 246 247 typedef enum 248 { 249 GTK_TEXT_DIR_NONE, 250 GTK_TEXT_DIR_LTR, 251 GTK_TEXT_DIR_RTL 252 } GtkTextDirection; 253 254 typedef enum 255 { 256 GTK_WINDOW_TOPLEVEL, 257 GTK_WINDOW_POPUP 258 } GtkWindowType; 259 260 typedef enum 261 { 262 G_PARAM_READABLE = 1 << 0, 263 G_PARAM_WRITABLE = 1 << 1, 264 G_PARAM_CONSTRUCT = 1 << 2, 265 G_PARAM_CONSTRUCT_ONLY = 1 << 3, 266 G_PARAM_LAX_VALIDATION = 1 << 4, 267 G_PARAM_PRIVATE = 1 << 5 268 } GParamFlags; 269 270 /* We define all structure pointers to be void* */ 271 typedef void GError; 272 typedef void GMainContext; 273 274 typedef struct _GSList GSList; 275 struct _GSList 276 { 277 gpointer data; 278 GSList *next; 279 }; 280 281 typedef void GdkColormap; 282 typedef void GdkDrawable; 283 typedef void GdkGC; 284 typedef void GdkScreen; 285 typedef void GdkPixbuf; 286 typedef void GdkPixmap; 287 typedef void GdkWindow; 288 289 typedef void GtkFixed; 290 typedef void GtkMenuItem; 291 typedef void GtkMenuShell; 292 typedef void GtkWidgetClass; 293 typedef void PangoFontDescription; 294 typedef void GtkSettings; 295 296 /* Some real structures */ 297 typedef struct 298 { 299 guint32 pixel; 300 guint16 red; 301 guint16 green; 302 guint16 blue; 303 } GdkColor; 304 305 typedef struct { 306 gint fd; 307 gushort events; 308 gushort revents; 309 } GPollFD; 310 311 typedef struct { 312 gint x; 313 gint y; 314 gint width; 315 gint height; 316 } GdkRectangle; 317 318 typedef struct { 319 gint x; 320 gint y; 321 gint width; 322 gint height; 323 } GtkAllocation; 324 325 typedef struct { 326 gint width; 327 gint height; 328 } GtkRequisition; 329 330 typedef struct { 331 GtkWidgetClass *g_class; 332 } GTypeInstance; 333 334 typedef struct { 335 gint left; 336 gint right; 337 gint top; 338 gint bottom; 339 } GtkBorder; 340 341 /****************************************************** 342 * FIXME: it is more safe to include gtk headers for 343 * the precise type definition of GType and other 344 * structures. This is a place where getting rid of gtk 345 * headers may be dangerous. 346 ******************************************************/ 347 typedef gulong GType; 348 349 typedef struct 350 { 351 GType g_type; 352 353 union { 354 gint v_int; 355 guint v_uint; 356 glong v_long; 357 gulong v_ulong; 358 gint64 v_int64; 359 guint64 v_uint64; 360 gfloat v_float; 361 gdouble v_double; 362 gpointer v_pointer; 363 } data[2]; 364 } GValue; 365 366 typedef struct 367 { 368 GTypeInstance g_type_instance; 369 370 gchar *name; 371 GParamFlags flags; 372 GType value_type; 373 GType owner_type; 374 } GParamSpec; 375 376 typedef struct { 377 GTypeInstance g_type_instance; 378 guint ref_count; 379 void *qdata; 380 } GObject; 381 382 typedef struct { 383 GObject parent_instance; 384 guint32 flags; 385 } GtkObject; 386 387 typedef struct 388 { 389 GObject parent_instance; 390 391 GdkColor fg[5]; 392 GdkColor bg[5]; 393 GdkColor light[5]; 394 GdkColor dark[5]; 395 GdkColor mid[5]; 396 GdkColor text[5]; 397 GdkColor base[5]; 398 GdkColor text_aa[5]; /* Halfway between text/base */ 399 400 GdkColor black; 401 GdkColor white; 402 PangoFontDescription *font_desc; 403 404 gint xthickness; 405 gint ythickness; 406 407 GdkGC *fg_gc[5]; 408 GdkGC *bg_gc[5]; 409 GdkGC *light_gc[5]; 410 GdkGC *dark_gc[5]; 411 GdkGC *mid_gc[5]; 412 GdkGC *text_gc[5]; 413 GdkGC *base_gc[5]; 414 GdkGC *text_aa_gc[5]; 415 GdkGC *black_gc; 416 GdkGC *white_gc; 417 418 GdkPixmap *bg_pixmap[5]; 419 } GtkStyle; 420 421 typedef struct _GtkWidget GtkWidget; 422 struct _GtkWidget 423 { 424 GtkObject object; 425 guint16 private_flags; 426 guint8 state; 427 guint8 saved_state; 428 gchar *name; 429 GtkStyle *style; 430 GtkRequisition requisition; 431 GtkAllocation allocation; 432 GdkWindow *window; 433 GtkWidget *parent; 434 }; 435 436 typedef struct 437 { 438 GtkWidget widget; 439 440 gfloat xalign; 441 gfloat yalign; 442 443 guint16 xpad; 444 guint16 ypad; 445 } GtkMisc; 446 447 typedef struct { 448 GtkWidget widget; 449 GtkWidget *focus_child; 450 guint border_width : 16; 451 guint need_resize : 1; 452 guint resize_mode : 2; 453 guint reallocate_redraws : 1; 454 guint has_focus_chain : 1; 455 } GtkContainer; 456 457 typedef struct { 458 GtkContainer container; 459 GtkWidget *child; 460 } GtkBin; 461 462 typedef struct { 463 GtkBin bin; 464 GdkWindow *event_window; 465 gchar *label_text; 466 guint activate_timeout; 467 guint constructed : 1; 468 guint in_button : 1; 469 guint button_down : 1; 470 guint relief : 2; 471 guint use_underline : 1; 472 guint use_stock : 1; 473 guint depressed : 1; 474 guint depress_on_activate : 1; 475 guint focus_on_click : 1; 476 } GtkButton; 477 478 typedef struct { 479 GtkButton button; 480 guint active : 1; 481 guint draw_indicator : 1; 482 guint inconsistent : 1; 483 } GtkToggleButton; 484 485 typedef struct _GtkAdjustment GtkAdjustment; 486 struct _GtkAdjustment 487 { 488 GtkObject parent_instance; 489 490 gdouble lower; 491 gdouble upper; 492 gdouble value; 493 gdouble step_increment; 494 gdouble page_increment; 495 gdouble page_size; 496 }; 497 498 typedef enum 499 { 500 GTK_UPDATE_CONTINUOUS, 501 GTK_UPDATE_DISCONTINUOUS, 502 GTK_UPDATE_DELAYED 503 } GtkUpdateType; 504 505 typedef struct _GtkRange GtkRange; 506 struct _GtkRange 507 { 508 GtkWidget widget; 509 GtkAdjustment *adjustment; 510 GtkUpdateType update_policy; 511 guint inverted : 1; 512 /*< protected >*/ 513 guint flippable : 1; 514 guint has_stepper_a : 1; 515 guint has_stepper_b : 1; 516 guint has_stepper_c : 1; 517 guint has_stepper_d : 1; 518 guint need_recalc : 1; 519 guint slider_size_fixed : 1; 520 gint min_slider_size; 521 GtkOrientation orientation; 522 GdkRectangle range_rect; 523 gint slider_start, slider_end; 524 gint round_digits; 525 /*< private >*/ 526 guint trough_click_forward : 1; 527 guint update_pending : 1; 528 /*GtkRangeLayout * */ void *layout; 529 /*GtkRangeStepTimer * */ void* timer; 530 gint slide_initial_slider_position; 531 gint slide_initial_coordinate; 532 guint update_timeout_id; 533 GdkWindow *event_window; 534 }; 535 536 typedef struct _GtkProgressBar GtkProgressBar; 537 538 typedef enum 539 { 540 GTK_PROGRESS_CONTINUOUS, 541 GTK_PROGRESS_DISCRETE 542 } GtkProgressBarStyle; 543 544 typedef enum 545 { 546 GTK_PROGRESS_LEFT_TO_RIGHT, 547 GTK_PROGRESS_RIGHT_TO_LEFT, 548 GTK_PROGRESS_BOTTOM_TO_TOP, 549 GTK_PROGRESS_TOP_TO_BOTTOM 550 } GtkProgressBarOrientation; 551 552 typedef struct _GtkProgress GtkProgress; 553 554 struct _GtkProgress 555 { 556 GtkWidget widget; 557 GtkAdjustment *adjustment; 558 GdkPixmap *offscreen_pixmap; 559 gchar *format; 560 gfloat x_align; 561 gfloat y_align; 562 guint show_text : 1; 563 guint activity_mode : 1; 564 guint use_text_format : 1; 565 }; 566 567 struct _GtkProgressBar 568 { 569 GtkProgress progress; 570 GtkProgressBarStyle bar_style; 571 GtkProgressBarOrientation orientation; 572 guint blocks; 573 gint in_block; 574 gint activity_pos; 575 guint activity_step; 576 guint activity_blocks; 577 gdouble pulse_fraction; 578 guint activity_dir : 1; 579 guint ellipsize : 3; 580 }; 581 582 typedef enum { 583 GTK_RESPONSE_NONE = -1, 584 GTK_RESPONSE_REJECT = -2, 585 GTK_RESPONSE_ACCEPT = -3, 586 GTK_RESPONSE_DELETE_EVENT = -4, 587 GTK_RESPONSE_OK = -5, 588 GTK_RESPONSE_CANCEL = -6, 589 GTK_RESPONSE_CLOSE = -7, 590 GTK_RESPONSE_YES = -8, 591 GTK_RESPONSE_NO = -9, 592 GTK_RESPONSE_APPLY = -10, 593 GTK_RESPONSE_HELP = -11 594 } GtkResponseType; 595 596 typedef struct _GtkWindow GtkWindow; 597 598 typedef struct _GtkFileChooser GtkFileChooser; 599 600 typedef enum { 601 GTK_FILE_CHOOSER_ACTION_OPEN, 602 GTK_FILE_CHOOSER_ACTION_SAVE, 603 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, 604 GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER 605 } GtkFileChooserAction; 606 607 typedef struct _GtkFileFilter GtkFileFilter; 608 609 typedef enum { 610 GTK_FILE_FILTER_FILENAME = 1 << 0, 611 GTK_FILE_FILTER_URI = 1 << 1, 612 GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2, 613 GTK_FILE_FILTER_MIME_TYPE = 1 << 3 614 } GtkFileFilterFlags; 615 616 typedef struct { 617 GtkFileFilterFlags contains; 618 const gchar *filename; 619 const gchar *uri; 620 const gchar *display_name; 621 const gchar *mime_type; 622 } GtkFileFilterInfo; 623 624 typedef gboolean (*GtkFileFilterFunc)(const GtkFileFilterInfo *filter_info, 625 gpointer data); 626 627 typedef void (*GDestroyNotify)(gpointer data); 628 629 typedef void (*GCallback)(void); 630 631 typedef struct _GClosure GClosure; 632 633 typedef void (*GClosureNotify)(gpointer data, GClosure *closure); 634 635 typedef enum { 636 G_CONNECT_AFTER = 1 << 0, G_CONNECT_SWAPPED = 1 << 1 637 } GConnectFlags; 638 639 typedef struct _GThreadFunctions GThreadFunctions; 640 641 /* 642 * Converts java.lang.String object to UTF-8 character string. 643 */ 644 const char *getStrFor(JNIEnv *env, jstring value); 645 646 /* 647 * Check whether the gtk2 library is available and meets the minimum 648 * version requirement. If the library is already loaded this method has no 649 * effect and returns success. 650 * Returns FALSE on failure and TRUE on success. 651 */ 652 gboolean gtk2_check_version(); 653 654 /** 655 * Returns : 656 * NULL if the GTK+ library is compatible with the given version, or a string 657 * describing the version mismatch. 658 */ 659 gchar* (*fp_gtk_check_version)(guint required_major, guint required_minor, 660 guint required_micro); 661 /* 662 * Load the gtk2 library. If the library is already loaded this method has no 663 * effect and returns success. 664 * Returns FALSE on failure and TRUE on success. 665 */ 666 gboolean gtk2_load(); 667 668 /* 669 * Loads fp_gtk_show_uri function pointer. This initialization is 670 * separated because the function is required only 671 * for java.awt.Desktop API. The function relies on initialization in 672 * gtk2_load, so it must be invoked only after a successful gtk2_load 673 * invocation 674 */ 675 gboolean gtk2_show_uri_load(); 676 677 /* 678 * Unload the gtk2 library. If the library is already unloaded this method has 679 * no effect and returns success. 680 * Returns FALSE on failure and TRUE on success. 681 */ 682 gboolean gtk2_unload(); 683 684 void gtk2_paint_arrow(WidgetType widget_type, GtkStateType state_type, 685 GtkShadowType shadow_type, const gchar *detail, 686 gint x, gint y, gint width, gint height, 687 GtkArrowType arrow_type, gboolean fill); 688 void gtk2_paint_box(WidgetType widget_type, GtkStateType state_type, 689 GtkShadowType shadow_type, const gchar *detail, 690 gint x, gint y, gint width, gint height, 691 gint synth_state, GtkTextDirection dir); 692 void gtk2_paint_box_gap(WidgetType widget_type, GtkStateType state_type, 693 GtkShadowType shadow_type, const gchar *detail, 694 gint x, gint y, gint width, gint height, 695 GtkPositionType gap_side, gint gap_x, gint gap_width); 696 void gtk2_paint_check(WidgetType widget_type, gint synth_state, 697 const gchar *detail, gint x, gint y, gint width, gint height); 698 void gtk2_paint_diamond(WidgetType widget_type, GtkStateType state_type, 699 GtkShadowType shadow_type, const gchar *detail, 700 gint x, gint y, gint width, gint height); 701 void gtk2_paint_expander(WidgetType widget_type, GtkStateType state_type, 702 const gchar *detail, gint x, gint y, gint width, gint height, 703 GtkExpanderStyle expander_style); 704 void gtk2_paint_extension(WidgetType widget_type, GtkStateType state_type, 705 GtkShadowType shadow_type, const gchar *detail, 706 gint x, gint y, gint width, gint height, GtkPositionType gap_side); 707 void gtk2_paint_flat_box(WidgetType widget_type, GtkStateType state_type, 708 GtkShadowType shadow_type, const gchar *detail, 709 gint x, gint y, gint width, gint height, gboolean has_focus); 710 void gtk2_paint_focus(WidgetType widget_type, GtkStateType state_type, 711 const char *detail, gint x, gint y, gint width, gint height); 712 void gtk2_paint_handle(WidgetType widget_type, GtkStateType state_type, 713 GtkShadowType shadow_type, const gchar *detail, 714 gint x, gint y, gint width, gint height, GtkOrientation orientation); 715 void gtk2_paint_hline(WidgetType widget_type, GtkStateType state_type, 716 const gchar *detail, gint x, gint y, gint width, gint height); 717 void gtk2_paint_option(WidgetType widget_type, gint synth_state, 718 const gchar *detail, gint x, gint y, gint width, gint height); 719 void gtk2_paint_shadow(WidgetType widget_type, GtkStateType state_type, 720 GtkShadowType shadow_type, const gchar *detail, 721 gint x, gint y, gint width, gint height, 722 gint synth_state, GtkTextDirection dir); 723 void gtk2_paint_slider(WidgetType widget_type, GtkStateType state_type, 724 GtkShadowType shadow_type, const gchar *detail, 725 gint x, gint y, gint width, gint height, GtkOrientation orientation); 726 void gtk2_paint_vline(WidgetType widget_type, GtkStateType state_type, 727 const gchar *detail, gint x, gint y, gint width, gint height); 728 void gtk_paint_background(WidgetType widget_type, GtkStateType state_type, 729 gint x, gint y, gint width, gint height); 730 731 void gtk2_init_painting(JNIEnv *env, gint w, gint h); 732 gint gtk2_copy_image(gint *dest, gint width, gint height); 733 734 gint gtk2_get_xthickness(JNIEnv *env, WidgetType widget_type); 735 gint gtk2_get_ythickness(JNIEnv *env, WidgetType widget_type); 736 gint gtk2_get_color_for_state(JNIEnv *env, WidgetType widget_type, 737 GtkStateType state_type, ColorType color_type); 738 jobject gtk2_get_class_value(JNIEnv *env, WidgetType widget_type, jstring key); 739 740 GdkPixbuf *gtk2_get_stock_icon(gint widget_type, const gchar *stock_id, 741 GtkIconSize size, GtkTextDirection direction, const char *detail); 742 GdkPixbuf *gtk2_get_icon(const gchar *filename, gint size); 743 jstring gtk2_get_pango_font_name(JNIEnv *env, WidgetType widget_type); 744 745 void flush_gtk_event_loop(); 746 747 jobject gtk2_get_setting(JNIEnv *env, Setting property); 748 749 void gtk2_set_range_value(WidgetType widget_type, jdouble value, 750 jdouble min, jdouble max, jdouble visible); 751 752 void (*fp_g_free)(gpointer mem); 753 void (*fp_g_object_unref)(gpointer object); 754 int (*fp_gdk_pixbuf_get_bits_per_sample)(const GdkPixbuf *pixbuf); 755 guchar *(*fp_gdk_pixbuf_get_pixels)(const GdkPixbuf *pixbuf); 756 gboolean (*fp_gdk_pixbuf_get_has_alpha)(const GdkPixbuf *pixbuf); 757 int (*fp_gdk_pixbuf_get_height)(const GdkPixbuf *pixbuf); 758 int (*fp_gdk_pixbuf_get_n_channels)(const GdkPixbuf *pixbuf); 759 int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf); 760 int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf); 761 GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error); 762 void (*fp_gtk_widget_destroy)(GtkWidget *widget); 763 void (*fp_gtk_window_present)(GtkWindow *window); 764 void (*fp_gtk_window_move)(GtkWindow *window, gint x, gint y); 765 void (*fp_gtk_window_resize)(GtkWindow *window, gint width, gint height); 766 767 /** 768 * Function Pointers for GtkFileChooser 769 */ 770 gchar* (*fp_gtk_file_chooser_get_filename)(GtkFileChooser *chooser); 771 void (*fp_gtk_widget_hide)(GtkWidget *widget); 772 void (*fp_gtk_main_quit)(void); 773 GtkWidget* (*fp_gtk_file_chooser_dialog_new)(const gchar *title, 774 GtkWindow *parent, GtkFileChooserAction action, 775 const gchar *first_button_text, ...); 776 gboolean (*fp_gtk_file_chooser_set_current_folder)(GtkFileChooser *chooser, 777 const gchar *filename); 778 gboolean (*fp_gtk_file_chooser_set_filename)(GtkFileChooser *chooser, 779 const char *filename); 780 void (*fp_gtk_file_chooser_set_current_name)(GtkFileChooser *chooser, 781 const gchar *name); 782 void (*fp_gtk_file_filter_add_custom)(GtkFileFilter *filter, 783 GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data, 784 GDestroyNotify notify); 785 void (*fp_gtk_file_chooser_set_filter)(GtkFileChooser *chooser, 786 GtkFileFilter *filter); 787 GType (*fp_gtk_file_chooser_get_type)(void); 788 GtkFileFilter* (*fp_gtk_file_filter_new)(void); 789 void (*fp_gtk_file_chooser_set_do_overwrite_confirmation)( 790 GtkFileChooser *chooser, gboolean do_overwrite_confirmation); 791 void (*fp_gtk_file_chooser_set_select_multiple)( 792 GtkFileChooser *chooser, gboolean select_multiple); 793 gchar* (*fp_gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser); 794 GSList* (*fp_gtk_file_chooser_get_filenames)(GtkFileChooser *chooser); 795 guint (*fp_gtk_g_slist_length)(GSList *list); 796 gulong (*fp_g_signal_connect_data)(gpointer instance, 797 const gchar *detailed_signal, GCallback c_handler, gpointer data, 798 GClosureNotify destroy_data, GConnectFlags connect_flags); 799 void (*fp_gtk_widget_show)(GtkWidget *widget); 800 void (*fp_gtk_main)(void); 801 guint (*fp_gtk_main_level)(void); 802 803 804 void (*fp_g_thread_init)(GThreadFunctions *vtable); 805 void (*fp_gdk_threads_init)(void); 806 void (*fp_gdk_threads_enter)(void); 807 void (*fp_gdk_threads_leave)(void); 808 809 gboolean (*fp_gtk_show_uri)(GdkScreen *screen, const gchar *uri, 810 guint32 timestamp, GError **error); 811 812 #endif /* !_GTK2_INTERFACE_H */