gtk/docs/reference/gdk/gdk3-sections.txt

1368 lines
29 KiB
Plaintext
Raw Normal View History

1999-08-16 18:51:52 +00:00
<INCLUDE>gdk/gdk.h</INCLUDE>
<SECTION>
<TITLE>General</TITLE>
<FILE>general</FILE>
gdk_init
gdk_init_check
gdk_parse_args
gdk_get_display_arg_name
gdk_notify_startup_complete
gdk_notify_startup_complete_with_id
gdk_set_allowed_backends
<SUBSECTION>
gdk_get_program_class
gdk_set_program_class
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_get_display
<SUBSECTION>
gdk_flush
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_screen_width
gdk_screen_height
gdk_screen_width_mm
gdk_screen_height_mm
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_pointer_grab
GdkGrabStatus
1999-08-16 18:51:52 +00:00
gdk_pointer_ungrab
gdk_pointer_is_grabbed
gdk_set_double_click_time
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_keyboard_grab
gdk_keyboard_ungrab
<SUBSECTION>
gdk_beep
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_error_trap_push
gdk_error_trap_pop
gdk_error_trap_pop_ignored
1999-08-16 18:51:52 +00:00
<SUBSECTION>
GDK_WINDOWING_X11
GDK_WINDOWING_WIN32
GDK_WINDOWING_QUARTZ
GDK_WINDOWING_WAYLAND
<SUBSECTION>
GDK_VERSION_3_0
GDK_VERSION_3_2
GDK_VERSION_3_4
2014-04-24 03:25:30 +00:00
GDK_VERSION_3_6
GDK_VERSION_3_8
GDK_VERSION_3_10
GDK_VERSION_3_12
GDK_VERSION_3_14
GDK_VERSION_MIN_REQUIRED
GDK_VERSION_MAX_ALLOWED
GDK_DISABLE_DEPRECATION_WARNINGS
<SUBSECTION Standard>
GDK_TYPE_GRAB_STATUS
<SUBSECTION Private>
GDK_TYPE_STATUS
GdkStatus
GDKVAR
gdk_axis_use_get_type
gdk_byte_order_get_type
gdk_crossing_mode_get_type
gdk_cursor_type_get_type
gdk_drag_action_get_type
gdk_drag_protocol_get_type
gdk_event_mask_get_type
gdk_event_type_get_type
gdk_extension_mode_get_type
gdk_filter_return_get_type
2010-05-25 22:38:44 +00:00
gdk_grab_ownership_get_type
gdk_grab_status_get_type
gdk_gravity_get_type
gdk_input_mode_get_type
gdk_input_source_get_type
gdk_modifier_intent_get_type
gdk_modifier_type_get_type
gdk_notify_type_get_type
gdk_property_state_get_type
gdk_prop_mode_get_type
gdk_scroll_direction_get_type
gdk_setting_action_get_type
gdk_status_get_type
gdk_visibility_state_get_type
gdk_visual_type_get_type
gdk_window_attributes_type_get_type
gdk_window_edge_get_type
gdk_window_hints_get_type
gdk_window_state_get_type
gdk_window_type_get_type
gdk_window_type_hint_get_type
gdk_wm_decoration_get_type
gdk_wm_function_get_type
2010-05-25 22:38:44 +00:00
gdk_device_grab_info_libgtk_only
2004-10-09 03:31:50 +00:00
gdk_add_option_entries_libgtk_only
gdk_pre_parse_libgtk_only
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<FILE>gdkdisplay</FILE>
<TITLE>GdkDisplay</TITLE>
GdkDisplay
gdk_display_open
gdk_display_get_default
gdk_display_get_name
gdk_display_get_n_screens
gdk_display_get_screen
gdk_display_get_default_screen
2010-05-25 22:38:44 +00:00
gdk_display_get_device_manager
gdk_display_pointer_ungrab
gdk_display_keyboard_ungrab
gdk_display_pointer_is_grabbed
2010-05-25 22:38:44 +00:00
gdk_display_device_is_grabbed
gdk_display_beep
gdk_display_sync
2003-07-14 22:13:33 +00:00
gdk_display_flush
gdk_display_close
gdk_display_is_closed
gdk_display_get_event
gdk_display_peek_event
gdk_display_put_event
2010-12-25 05:02:39 +00:00
gdk_display_has_pending
gdk_display_set_double_click_time
gdk_display_set_double_click_distance
2002-10-11 01:04:45 +00:00
gdk_display_get_pointer
2010-12-25 05:02:39 +00:00
gdk_display_list_devices
2002-10-11 01:04:45 +00:00
gdk_display_get_window_at_pointer
gdk_display_warp_pointer
gdk_display_supports_cursor_color
gdk_display_supports_cursor_alpha
gdk_display_get_default_cursor_size
gdk_display_get_maximal_cursor_size
gdk_display_get_default_group
gdk_display_supports_selection_notification
gdk_display_request_selection_notification
gdk_display_supports_clipboard_persistence
gdk_display_store_clipboard
gdk_display_supports_shapes
gdk_display_supports_input_shapes
gdk_display_supports_composite
2010-12-25 05:02:39 +00:00
gdk_display_get_app_launch_context
gdk_display_notify_startup_complete
gdk_display_get_default_seat
gdk_display_list_seats
2010-12-25 05:02:39 +00:00
<SUBSECTION Standard>
GDK_DISPLAY
GDK_DISPLAY_OBJECT
GDK_IS_DISPLAY
GDK_TYPE_DISPLAY
GDK_DISPLAY_CLASS
GDK_IS_DISPLAY_CLASS
GDK_DISPLAY_GET_CLASS
<SUBSECTION Private>
gdk_display_open_default_libgtk_only
gdk_display_get_type
GdkDisplayClass
</SECTION>
<SECTION>
<FILE>gdkdisplaymanager</FILE>
<TITLE>GdkDisplayManager</TITLE>
GdkDisplayManager
gdk_display_manager_get
gdk_display_manager_get_default_display
gdk_display_manager_set_default_display
gdk_display_manager_list_displays
2010-12-25 05:02:39 +00:00
gdk_display_manager_open_display
<SUBSECTION Standard>
GDK_DISPLAY_MANAGER
GDK_DISPLAY_MANAGER_CLASS
GDK_DISPLAY_MANAGER_GET_CLASS
GDK_IS_DISPLAY_MANAGER_CLASS
GDK_IS_DISPLAY_MANAGER
GDK_TYPE_DISPLAY_MANAGER
GdkDisplayManagerClass
gdk_display_manager_get_type
</SECTION>
<SECTION>
<FILE>gdkscreen</FILE>
<TITLE>GdkScreen</TITLE>
GdkScreen
gdk_screen_get_default
gdk_screen_get_system_visual
gdk_screen_get_rgba_visual
2006-04-25 16:45:22 +00:00
gdk_screen_is_composited
gdk_screen_get_root_window
gdk_screen_get_display
gdk_screen_get_number
gdk_screen_get_width
gdk_screen_get_height
gdk_screen_get_width_mm
gdk_screen_get_height_mm
gdk_screen_list_visuals
gdk_screen_get_toplevel_windows
2002-10-11 01:04:45 +00:00
gdk_screen_make_display_name
gdk_screen_get_n_monitors
2010-01-11 17:58:34 +00:00
gdk_screen_get_primary_monitor
gdk_screen_get_monitor_geometry
gdk_screen_get_monitor_workarea
gdk_screen_get_monitor_at_point
gdk_screen_get_monitor_at_window
gdk_screen_get_monitor_height_mm
gdk_screen_get_monitor_width_mm
gdk_screen_get_monitor_plug_name
2013-07-09 17:49:39 +00:00
gdk_screen_get_monitor_scale_factor
gdk_screen_get_setting
gdk_screen_get_font_options
gdk_screen_set_font_options
gdk_screen_get_resolution
gdk_screen_set_resolution
gdk_screen_get_active_window
gdk_screen_get_window_stack
2003-12-11 23:52:59 +00:00
<SUBSECTION Standard>
GDK_SCREEN
GDK_IS_SCREEN
GDK_TYPE_SCREEN
GDK_SCREEN_CLASS
GDK_IS_SCREEN_CLASS
GDK_SCREEN_GET_CLASS
<SUBSECTION Private>
GdkScreenClass
gdk_screen_get_type
</SECTION>
<SECTION>
<TITLE>Pixbufs</TITLE>
<FILE>pixbufs</FILE>
gdk_pixbuf_get_from_window
gdk_pixbuf_get_from_surface
</SECTION>
1999-08-16 18:51:52 +00:00
<SECTION>
2010-08-29 11:06:35 +00:00
<TITLE>Colors</TITLE>
1999-08-16 18:51:52 +00:00
<FILE>colors</FILE>
GdkColor
gdk_color_copy
gdk_color_free
gdk_color_parse
gdk_color_equal
gdk_color_hash
gdk_color_to_string
<SUBSECTION Standard>
GDK_TYPE_COLOR
<SUBSECTION Private>
gdk_color_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>RGBA Colors</TITLE>
<FILE>rgba_colors</FILE>
GdkRGBA
gdk_rgba_copy
gdk_rgba_free
gdk_rgba_parse
gdk_rgba_equal
gdk_rgba_hash
gdk_rgba_to_string
<SUBSECTION Standard>
GDK_TYPE_RGBA
<SUBSECTION Private>
gdk_rgba_get_type
</SECTION>
1999-08-16 18:51:52 +00:00
<SECTION>
<TITLE>Visuals</TITLE>
<FILE>visuals</FILE>
GdkVisual
GdkVisualType
GdkByteOrder
gdk_query_depths
gdk_query_visual_types
gdk_list_visuals
gdk_visual_get_bits_per_rgb
gdk_visual_get_blue_pixel_details
gdk_visual_get_byte_order
gdk_visual_get_colormap_size
gdk_visual_get_depth
gdk_visual_get_green_pixel_details
gdk_visual_get_red_pixel_details
gdk_visual_get_visual_type
1999-08-16 18:51:52 +00:00
gdk_visual_get_best_depth
gdk_visual_get_best_type
gdk_visual_get_system
gdk_visual_get_best
gdk_visual_get_best_with_depth
gdk_visual_get_best_with_type
gdk_visual_get_best_with_both
gdk_visual_get_screen
<SUBSECTION Standard>
GDK_TYPE_BYTE_ORDER
GDK_TYPE_VISUAL_TYPE
GDK_TYPE_VISUAL
GDK_IS_VISUAL
GDK_IS_VISUAL_CLASS
GDK_VISUAL
GDK_VISUAL_CLASS
GDK_VISUAL_GET_CLASS
<SUBSECTION Private>
GdkVisualClass
gdk_visual_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Windows</TITLE>
<FILE>windows</FILE>
GdkWindow
GdkWindowType
GdkWindowWindowClass
1999-08-16 18:51:52 +00:00
GdkWindowHints
GdkGeometry
GdkGravity
GdkWindowEdge
GdkWindowTypeHint
GdkWindowAttr
GdkWindowAttributesType
1999-08-16 18:51:52 +00:00
gdk_window_new
gdk_window_destroy
gdk_window_get_window_type
2010-08-29 00:03:19 +00:00
gdk_window_get_display
gdk_window_get_screen
gdk_window_get_visual
1999-08-16 18:51:52 +00:00
gdk_window_at_pointer
gdk_window_show
gdk_window_show_unraised
1999-08-16 18:51:52 +00:00
gdk_window_hide
2009-09-05 02:53:03 +00:00
gdk_window_is_destroyed
1999-08-16 18:51:52 +00:00
gdk_window_is_visible
gdk_window_is_viewable
gdk_window_is_input_only
gdk_window_is_shaped
gdk_window_get_state
1999-08-16 18:51:52 +00:00
gdk_window_withdraw
gdk_window_iconify
gdk_window_deiconify
gdk_window_stick
gdk_window_unstick
gdk_window_maximize
gdk_window_unmaximize
2002-10-11 01:04:45 +00:00
gdk_window_fullscreen
gdk_window_fullscreen_on_monitor
2002-10-11 01:04:45 +00:00
gdk_window_unfullscreen
2013-02-02 03:51:32 +00:00
GdkFullscreenMode
gdk_window_get_fullscreen_mode
gdk_window_set_fullscreen_mode
gdk_window_set_keep_above
gdk_window_set_keep_below
gdk_window_set_opacity
gdk_window_set_composited
gdk_window_get_composited
gdk_window_set_pass_through
gdk_window_get_pass_through
1999-08-16 18:51:52 +00:00
gdk_window_move
gdk_window_resize
gdk_window_move_resize
gdk_window_scroll
gdk_window_move_region
gdk_window_flush
gdk_window_has_native
2009-07-03 05:39:59 +00:00
gdk_window_ensure_native
1999-08-16 18:51:52 +00:00
gdk_window_reparent
gdk_window_raise
gdk_window_lower
2009-09-05 02:53:03 +00:00
gdk_window_restack
gdk_window_focus
1999-08-16 18:51:52 +00:00
gdk_window_register_dnd
gdk_window_begin_resize_drag
2011-12-16 04:09:23 +00:00
gdk_window_begin_resize_drag_for_device
gdk_window_begin_move_drag
2011-12-16 04:09:23 +00:00
gdk_window_begin_move_drag_for_device
gdk_window_show_window_menu
gdk_window_constrain_size
gdk_window_beep
2013-07-09 13:43:18 +00:00
gdk_window_get_scale_factor
2013-09-17 04:47:54 +00:00
gdk_window_set_opaque_region
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
gdk_window_create_gl_context
gdk_window_mark_paint_from_clip
<SUBSECTION>
gdk_window_get_clip_region
gdk_window_begin_paint_rect
gdk_window_begin_paint_region
gdk_window_end_paint
gdk_window_get_visible_region
2013-07-09 13:43:18 +00:00
GdkWindowInvalidateHandlerFunc
gdk_window_set_invalidate_handler
<SUBSECTION>
gdk_window_invalidate_rect
gdk_window_invalidate_region
GdkWindowChildFunc
gdk_window_invalidate_maybe_recurse
gdk_window_get_update_area
gdk_window_freeze_updates
gdk_window_thaw_updates
gdk_window_process_all_updates
gdk_window_process_updates
gdk_window_set_debug_updates
gdk_window_enable_synchronized_configure
gdk_window_configure_finished
gdk_window_get_frame_clock
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_window_set_user_data
gdk_window_set_override_redirect
gdk_window_set_accept_focus
gdk_window_get_accept_focus
gdk_window_set_focus_on_map
gdk_window_get_focus_on_map
1999-08-16 18:51:52 +00:00
gdk_window_add_filter
gdk_window_remove_filter
GdkFilterFunc
GdkFilterReturn
GdkXEvent
gdk_window_shape_combine_region
1999-08-16 18:51:52 +00:00
gdk_window_set_child_shapes
gdk_window_merge_child_shapes
gdk_window_input_shape_combine_region
gdk_window_set_child_input_shapes
gdk_window_merge_child_input_shapes
1999-08-16 18:51:52 +00:00
gdk_window_set_static_gravities
gdk_window_set_title
gdk_window_set_background
gdk_window_set_background_rgba
gdk_window_set_background_pattern
gdk_window_get_background_pattern
1999-08-16 18:51:52 +00:00
GDK_PARENT_RELATIVE
gdk_window_set_cursor
2009-08-18 03:51:50 +00:00
gdk_window_get_cursor
1999-08-16 18:51:52 +00:00
gdk_window_get_user_data
gdk_window_get_geometry
gdk_window_set_geometry_hints
gdk_window_get_width
gdk_window_get_height
gdk_window_set_icon_list
gdk_window_set_modal_hint
gdk_window_get_modal_hint
gdk_window_set_type_hint
gdk_window_get_type_hint
gdk_window_set_shadow_width
2002-10-11 01:04:45 +00:00
gdk_window_set_skip_taskbar_hint
gdk_window_set_skip_pager_hint
gdk_window_set_urgency_hint
1999-08-16 18:51:52 +00:00
gdk_window_get_position
gdk_window_get_root_origin
gdk_window_get_frame_extents
1999-08-16 18:51:52 +00:00
gdk_window_get_origin
2009-07-03 05:39:59 +00:00
gdk_window_get_root_coords
1999-08-16 18:51:52 +00:00
gdk_window_get_pointer
2010-05-25 22:38:44 +00:00
gdk_window_get_device_position
2013-07-09 13:43:18 +00:00
gdk_window_get_device_position_double
1999-08-16 18:51:52 +00:00
GdkModifierType
2014-01-20 22:31:53 +00:00
GdkModifierIntent
1999-08-16 18:51:52 +00:00
gdk_window_get_parent
gdk_window_get_toplevel
gdk_window_get_children
gdk_window_get_children_with_user_data
gdk_window_peek_children
1999-08-16 18:51:52 +00:00
gdk_window_get_events
gdk_window_set_events
gdk_window_set_icon_name
gdk_window_set_transient_for
gdk_window_set_role
gdk_window_set_startup_id
1999-08-16 18:51:52 +00:00
gdk_window_set_group
gdk_window_get_group
1999-08-16 18:51:52 +00:00
gdk_window_set_decorations
gdk_window_get_decorations
1999-08-16 18:51:52 +00:00
GdkWMDecoration
gdk_window_set_functions
GdkWMFunction
gdk_get_default_root_window
2010-05-25 22:38:44 +00:00
<SUBSECTION>
gdk_window_get_support_multidevice
gdk_window_set_support_multidevice
gdk_window_get_device_cursor
gdk_window_set_device_cursor
gdk_window_get_device_events
gdk_window_set_device_events
gdk_window_get_source_events
gdk_window_set_source_events
gdk_window_get_event_compression
gdk_window_set_event_compression
2010-05-25 22:38:44 +00:00
<SUBSECTION>
gdk_offscreen_window_get_surface
2009-07-03 05:39:59 +00:00
gdk_offscreen_window_set_embedder
gdk_offscreen_window_get_embedder
gdk_window_geometry_changed
2010-05-25 23:18:06 +00:00
gdk_window_coords_from_parent
gdk_window_coords_to_parent
gdk_window_get_effective_parent
gdk_window_get_effective_toplevel
<SUBSECTION Standard>
GDK_WINDOW
GDK_WINDOW_GET_CLASS
GDK_TYPE_WINDOW
GDK_IS_WINDOW
GDK_WINDOW_CLASS
GDK_IS_WINDOW_CLASS
GDK_TYPE_FILTER_RETURN
GDK_TYPE_GRAVITY
GDK_TYPE_MODIFIER_TYPE
GDK_TYPE_WINDOW_ATTRIBUTES_TYPE
GDK_TYPE_WINDOW_EDGE
GDK_TYPE_WINDOW_HINTS
GDK_TYPE_WINDOW_TYPE
GDK_TYPE_WINDOW_TYPE_HINT
GDK_TYPE_WM_DECORATION
GDK_TYPE_WM_FUNCTION
<SUBSECTION Private>
gdk_window_get_type
2010-12-03 20:41:37 +00:00
gdk_window_window_class_get_type
GdkWindowClass
2010-05-25 23:18:06 +00:00
GdkWindowImpl
GdkWindowImplClass
2010-05-25 23:18:06 +00:00
GdkWindowRedirect
gdk_window_impl_get_type
gdk_window_freeze_toplevel_updates_libgtk_only
gdk_window_thaw_toplevel_updates_libgtk_only
2013-02-02 03:51:32 +00:00
gdk_fullscreen_mode_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Selections</TITLE>
<FILE>selections</FILE>
GDK_SELECTION_PRIMARY
GDK_SELECTION_SECONDARY
GDK_SELECTION_CLIPBOARD
GDK_TARGET_BITMAP
GDK_TARGET_COLORMAP
GDK_TARGET_DRAWABLE
GDK_TARGET_PIXMAP
GDK_TARGET_STRING
GDK_SELECTION_TYPE_ATOM
GDK_SELECTION_TYPE_BITMAP
GDK_SELECTION_TYPE_COLORMAP
GDK_SELECTION_TYPE_DRAWABLE
GDK_SELECTION_TYPE_INTEGER
GDK_SELECTION_TYPE_PIXMAP
GDK_SELECTION_TYPE_WINDOW
GDK_SELECTION_TYPE_STRING
1999-08-16 18:51:52 +00:00
gdk_selection_owner_set
gdk_selection_owner_set_for_display
1999-08-16 18:51:52 +00:00
gdk_selection_owner_get
gdk_selection_owner_get_for_display
1999-08-16 18:51:52 +00:00
gdk_selection_convert
gdk_selection_property_get
gdk_selection_send_notify
gdk_selection_send_notify_for_display
</SECTION>
1999-08-16 18:51:52 +00:00
<SECTION>
<TITLE>Properties and Atoms</TITLE>
<FILE>properties</FILE>
GdkAtom
GDK_ATOM_TO_POINTER
GDK_POINTER_TO_ATOM
GDK_NONE
gdk_text_property_to_utf8_list_for_display
gdk_utf8_to_string_target
1999-08-16 18:51:52 +00:00
gdk_atom_intern
gdk_atom_intern_static_string
1999-08-16 18:51:52 +00:00
gdk_atom_name
gdk_property_get
gdk_property_change
GdkPropMode
1999-08-16 18:51:52 +00:00
gdk_property_delete
<SUBSECTION Standard>
GDK_TYPE_PROP_MODE
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Pango Interaction</TITLE>
<FILE>pango_interaction</FILE>
gdk_pango_layout_get_clip_region
gdk_pango_layout_line_get_clip_region
2010-08-17 03:52:03 +00:00
gdk_pango_context_get
gdk_pango_context_get_for_screen
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Cairo Interaction</TITLE>
<FILE>cairo_interaction</FILE>
gdk_window_create_similar_surface
2013-07-09 13:43:18 +00:00
gdk_window_create_similar_image_surface
gdk_cairo_create
gdk_cairo_get_clip_rectangle
gdk_cairo_set_source_color
gdk_cairo_set_source_rgba
gdk_cairo_set_source_pixbuf
gdk_cairo_set_source_window
gdk_cairo_rectangle
gdk_cairo_region
gdk_cairo_region_create_from_surface
2013-07-09 13:43:18 +00:00
gdk_cairo_surface_create_from_pixbuf
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
gdk_cairo_draw_from_gl
</SECTION>
1999-08-16 18:51:52 +00:00
<SECTION>
<TITLE>Points, Rectangles and Regions</TITLE>
<FILE>regions</FILE>
GdkPoint
<SUBSECTION>
1999-08-16 18:51:52 +00:00
GdkRectangle
gdk_rectangle_intersect
gdk_rectangle_union
gdk_rectangle_equal
1999-08-16 18:51:52 +00:00
2015-10-22 03:36:50 +00:00
<SUBSECTION>
GdkBorder
<SUBSECTION Private>
gdk_rectangle_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Threads</TITLE>
<FILE>threads</FILE>
GDK_THREADS_ENTER
GDK_THREADS_LEAVE
gdk_threads_init
1999-08-16 18:51:52 +00:00
gdk_threads_enter
gdk_threads_leave
2003-12-11 23:52:59 +00:00
gdk_threads_set_lock_functions
gdk_threads_add_idle
gdk_threads_add_idle_full
gdk_threads_add_timeout
gdk_threads_add_timeout_full
gdk_threads_add_timeout_seconds
gdk_threads_add_timeout_seconds_full
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Keyboard Handling</TITLE>
1999-08-16 18:51:52 +00:00
<FILE>keys</FILE>
GdkKeymap
GdkKeymapKey
gdk_keymap_get_default
gdk_keymap_get_for_display
gdk_keymap_lookup_key
gdk_keymap_translate_keyboard_state
gdk_keymap_get_entries_for_keyval
gdk_keymap_get_entries_for_keycode
gdk_keymap_get_direction
gdk_keymap_have_bidi_layouts
gdk_keymap_get_caps_lock_state
gdk_keymap_get_num_lock_state
gdk_keymap_get_scroll_lock_state
gdk_keymap_get_modifier_state
gdk_keymap_add_virtual_modifiers
gdk_keymap_map_virtual_modifiers
gdk_keymap_get_modifier_mask
1999-08-16 18:51:52 +00:00
<SUBSECTION>
gdk_keyval_name
gdk_keyval_from_name
1999-08-16 18:51:52 +00:00
<SUBSECTION>
gdk_keyval_convert_case
1999-08-16 18:51:52 +00:00
gdk_keyval_to_upper
gdk_keyval_to_lower
gdk_keyval_is_upper
gdk_keyval_is_lower
<SUBSECTION>
gdk_keyval_to_unicode
gdk_unicode_to_keyval
<SUBSECTION Standard>
GDK_KEYMAP
GDK_IS_KEYMAP
GDK_TYPE_KEYMAP
GDK_KEYMAP_CLASS
GDK_IS_KEYMAP_CLASS
GDK_KEYMAP_GET_CLASS
<SUBSECTION Private>
GdkKeymapClass
gdk_keymap_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
2010-12-25 05:02:39 +00:00
<TITLE>GdkDevice</TITLE>
<FILE>gdkdevice</FILE>
GdkDevice
1999-08-16 18:51:52 +00:00
GdkInputSource
GdkInputMode
GdkAxisUse
2010-12-25 05:02:39 +00:00
GdkDeviceType
2010-05-25 22:38:44 +00:00
GdkGrabOwnership
<SUBSECTION>
gdk_device_get_name
gdk_device_get_vendor_id
gdk_device_get_product_id
gdk_device_get_source
gdk_device_set_mode
gdk_device_get_mode
gdk_device_set_key
gdk_device_get_key
gdk_device_set_axis_use
gdk_device_get_axis_use
2010-05-25 22:38:44 +00:00
gdk_device_get_associated_device
2010-12-25 05:02:39 +00:00
gdk_device_list_slave_devices
2010-05-25 22:38:44 +00:00
gdk_device_get_device_type
gdk_device_get_display
gdk_device_get_has_cursor
2010-05-25 22:38:44 +00:00
gdk_device_get_n_axes
gdk_device_get_n_keys
gdk_device_warp
gdk_device_get_seat
2010-05-25 22:38:44 +00:00
<SUBSECTION>
gdk_device_grab
gdk_device_ungrab
<SUBSECTION>
gdk_device_get_state
gdk_device_get_position
2013-07-09 13:43:18 +00:00
gdk_device_get_position_double
gdk_device_get_window_at_position
2013-07-09 13:43:18 +00:00
gdk_device_get_window_at_position_double
gdk_device_get_history
gdk_device_free_history
1999-08-16 18:51:52 +00:00
GdkTimeCoord
gdk_device_get_axis
2010-05-25 22:38:44 +00:00
gdk_device_list_axes
gdk_device_get_axis_value
gdk_device_get_last_event_window
<SUBSECTION Standard>
GDK_TYPE_AXIS_USE
GDK_TYPE_EXTENSION_MODE
GDK_TYPE_INPUT_MODE
GDK_TYPE_INPUT_SOURCE
2010-05-25 22:38:44 +00:00
GDK_TYPE_DEVICE_TYPE
GDK_TYPE_GRAB_OWNERSHIP
GDK_DEVICE
GDK_DEVICE_CLASS
GDK_DEVICE_GET_CLASS
GDK_IS_DEVICE
GDK_IS_DEVICE_CLASS
GDK_TYPE_DEVICE
<SUBSECTION Private>
GdkDeviceClass
gdk_device_get_type
2010-05-25 22:38:44 +00:00
gdk_device_type_get_type
GDK_MAX_TIMECOORD_AXES
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>GdkSeat</TITLE>
<FILE>gdkseat</FILE>
GdkSeat
GdkSeatCapabilities
GdkSeatGrabPrepareFunc
gdk_seat_get_display
gdk_seat_grab
gdk_seat_ungrab
gdk_seat_get_capabilities
gdk_seat_get_pointer
gdk_seat_get_keyboard
gdk_seat_get_slaves
<SUBSECTION Standard>
GDK_SEAT
GDK_IS_SEAT
GDK_TYPE_SEAT
GDK_TYPE_SEAT_CAPABILITIES
<SUBSECTION Private>
gdk_seat_get_type
gdk_seat_capabilities_get_type
</SECTION>
2010-12-25 05:02:39 +00:00
<SECTION>
<TITLE>GdkDeviceManager</TITLE>
<FILE>gdkdevicemanager</FILE>
GdkDeviceManager
gdk_disable_multidevice
gdk_device_manager_get_display
gdk_device_manager_list_devices
gdk_device_manager_get_client_pointer
<SUBSECTION Standard>
GDK_DEVICE_MANAGER
GDK_DEVICE_MANAGER_CLASS
GDK_DEVICE_MANAGER_GET_CLASS
GDK_IS_DEVICE_MANAGER
GDK_IS_DEVICE_MANAGER_CLASS
GDK_TYPE_DEVICE_MANAGER
<SUBSECTION Private>
GdkDeviceManagerClass
gdk_device_manager_get_type
</SECTION>
1999-08-16 18:51:52 +00:00
<SECTION>
<TITLE>Events</TITLE>
<FILE>events</FILE>
GdkEventType
GdkEventMask
GDK_CURRENT_TIME
GDK_PRIORITY_EVENTS
GDK_PRIORITY_REDRAW
GDK_EVENT_PROPAGATE
GDK_EVENT_STOP
GDK_BUTTON_PRIMARY
GDK_BUTTON_MIDDLE
GDK_BUTTON_SECONDARY
<SUBSECTION>
1999-08-16 18:51:52 +00:00
gdk_events_pending
gdk_event_peek
gdk_event_get
gdk_event_put
2002-10-11 01:04:45 +00:00
gdk_event_new
1999-08-16 18:51:52 +00:00
gdk_event_copy
gdk_event_free
gdk_event_get_axis
gdk_event_get_button
gdk_event_get_click_count
gdk_event_get_coords
gdk_event_get_keycode
gdk_event_get_keyval
gdk_event_get_root_coords
gdk_event_get_scroll_direction
gdk_event_get_scroll_deltas
gdk_event_get_state
gdk_event_get_time
2013-09-17 04:47:54 +00:00
gdk_event_get_window
2013-09-17 05:13:03 +00:00
gdk_event_get_event_type
GdkEventSequence
gdk_event_get_event_sequence
gdk_event_request_motions
2010-05-25 22:38:44 +00:00
gdk_events_get_angle
gdk_events_get_center
gdk_events_get_distance
gdk_event_triggers_context_menu
gdk_event_get_seat
1999-08-16 18:51:52 +00:00
<SUBSECTION>
gdk_event_handler_set
1999-08-16 18:51:52 +00:00
GdkEventFunc
<SUBSECTION>
gdk_get_show_events
gdk_set_show_events
2002-10-11 01:04:45 +00:00
gdk_event_set_screen
gdk_event_get_screen
2010-05-25 22:38:44 +00:00
gdk_event_get_device
gdk_event_set_device
2010-12-25 05:02:39 +00:00
gdk_event_get_source_device
gdk_event_set_source_device
<SUBSECTION>
gdk_setting_get
<SUBSECTION Standard>
GDK_TYPE_EVENT_MASK
GDK_TYPE_EVENT_TYPE
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Event Structures</TITLE>
<FILE>event_structs</FILE>
GdkEvent
<SUBSECTION>
1999-08-16 18:51:52 +00:00
GdkEventAny
GdkEventKey
GdkEventButton
GdkEventTouch
GdkEventScroll
GdkEventMotion
1999-08-16 18:51:52 +00:00
GdkEventExpose
GdkEventVisibility
GdkEventCrossing
GdkEventFocus
GdkEventConfigure
GdkEventProperty
GdkEventSelection
GdkEventDND
1999-08-16 18:51:52 +00:00
GdkEventProximity
GdkEventWindowState
GdkEventSetting
2004-05-18 21:30:09 +00:00
GdkEventOwnerChange
GdkEventGrabBroken
GdkEventTouchpadSwipe
GdkEventTouchpadPinch
<SUBSECTION>
GdkScrollDirection
GdkVisibilityState
GdkCrossingMode
GdkNotifyType
GdkPropertyState
GdkWindowState
GdkSettingAction
2004-05-18 21:30:09 +00:00
GdkOwnerChange
<SUBSECTION Standard>
GDK_TYPE_CROSSING_MODE
GDK_TYPE_EVENT
GDK_TYPE_NOTIFY_TYPE
GDK_TYPE_PROPERTY_STATE
GDK_TYPE_SCROLL_DIRECTION
GDK_TYPE_SETTING_ACTION
GDK_TYPE_VISIBILITY_STATE
GDK_TYPE_WINDOW_STATE
2004-05-18 21:30:09 +00:00
GDK_TYPE_OWNER_CHANGE
<SUBSECTION Private>
gdk_event_get_type
2004-05-18 21:30:09 +00:00
gdk_owner_change_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Cursors</TITLE>
<FILE>cursors</FILE>
GdkCursor
GdkCursorType
gdk_cursor_new
gdk_cursor_new_from_pixbuf
gdk_cursor_new_from_surface
2005-06-14 20:57:16 +00:00
gdk_cursor_new_from_name
gdk_cursor_new_for_display
gdk_cursor_get_display
2005-06-14 20:57:16 +00:00
gdk_cursor_get_image
gdk_cursor_get_surface
gdk_cursor_get_cursor_type
gdk_cursor_ref
gdk_cursor_unref
<SUBSECTION Standard>
GDK_TYPE_CURSOR_TYPE
GDK_TYPE_CURSOR
<SUBSECTION Private>
gdk_cursor_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<TITLE>Drag and Drop</TITLE>
<FILE>dnd</FILE>
2010-12-25 05:02:39 +00:00
GdkDragContext
1999-08-16 18:51:52 +00:00
gdk_drag_get_selection
gdk_drag_abort
gdk_drop_reply
gdk_drag_drop
gdk_drag_drop_done
2002-10-11 01:04:45 +00:00
gdk_drag_find_window_for_screen
1999-08-16 18:51:52 +00:00
gdk_drag_begin
2010-12-25 05:02:39 +00:00
gdk_drag_begin_for_device
gdk_drag_begin_from_point
1999-08-16 18:51:52 +00:00
gdk_drag_motion
gdk_drop_finish
GdkDragProtocol
GdkDragAction
gdk_drag_status
gdk_drag_drop_succeeded
gdk_window_get_drag_protocol
2010-12-25 05:02:39 +00:00
gdk_drag_context_get_actions
gdk_drag_context_get_suggested_action
2010-06-27 03:00:47 +00:00
gdk_drag_context_get_selected_action
gdk_drag_context_list_targets
2010-05-25 22:38:44 +00:00
gdk_drag_context_get_device
gdk_drag_context_set_device
2010-12-25 05:02:39 +00:00
gdk_drag_context_get_source_window
gdk_drag_context_get_dest_window
gdk_drag_context_get_protocol
gdk_drag_context_get_drag_window
gdk_drag_context_set_hotspot
<SUBSECTION Standard>
GDK_DRAG_CONTEXT
GDK_TYPE_DRAG_CONTEXT
GDK_IS_DRAG_CONTEXT
GDK_DRAG_CONTEXT_CLASS
GDK_DRAG_CONTEXT_GET_CLASS
GDK_IS_DRAG_CONTEXT_CLASS
GDK_TYPE_DRAG_ACTION
GDK_TYPE_DRAG_PROTOCOL
<SUBSECTION Private>
GdkDragContextClass
gdk_drag_context_get_type
</SECTION>
<SECTION>
<INCLUDE>gdk/gdkx.h</INCLUDE>
<TITLE>X Window System Interaction</TITLE>
<FILE>x_interaction</FILE>
GDK_ROOT_WINDOW
GDK_WINDOW_XID
GDK_DISPLAY_XDISPLAY
GDK_SCREEN_XDISPLAY
GDK_SCREEN_XNUMBER
GDK_SCREEN_XSCREEN
GDK_CURSOR_XCURSOR
GDK_CURSOR_XDISPLAY
GDK_POINTER_TO_XID
GDK_XID_TO_POINTER
gdk_x11_lookup_xdisplay
gdk_x11_get_server_time
gdk_x11_device_get_id
gdk_x11_device_manager_lookup
gdk_x11_display_get_user_time
gdk_x11_display_broadcast_startup_message
gdk_x11_display_get_startup_notification_id
gdk_x11_display_set_startup_notification_id
gdk_x11_display_get_xdisplay
2002-10-11 01:04:45 +00:00
gdk_x11_display_grab
gdk_x11_display_ungrab
gdk_x11_display_error_trap_push
gdk_x11_display_error_trap_pop
gdk_x11_display_error_trap_pop_ignored
gdk_x11_display_set_cursor_theme
2013-08-20 20:19:52 +00:00
gdk_x11_display_set_window_scale
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
gdk_x11_display_get_glx_version
gdk_x11_register_standard_event_type
2010-12-22 06:31:15 +00:00
gdk_x11_screen_get_screen_number
gdk_x11_screen_get_xscreen
gdk_x11_screen_get_window_manager_name
gdk_x11_screen_get_monitor_output
gdk_x11_screen_lookup_visual
gdk_x11_screen_supports_net_wm_hint
gdk_x11_screen_get_number_of_desktops
gdk_x11_screen_get_current_desktop
2010-12-22 06:31:15 +00:00
gdk_x11_window_foreign_new_for_display
gdk_x11_window_lookup_for_display
gdk_x11_window_get_xid
gdk_x11_window_set_hide_titlebar_when_maximized
gdk_x11_window_set_theme_variant
2010-12-22 06:31:15 +00:00
gdk_x11_window_set_user_time
gdk_x11_window_move_to_current_desktop
gdk_x11_window_move_to_desktop
gdk_x11_window_get_desktop
2013-02-25 09:49:24 +00:00
gdk_x11_window_set_utf8_property
2013-09-17 04:47:54 +00:00
gdk_x11_window_set_frame_extents
gdk_x11_window_set_frame_sync_enabled
gdk_x11_get_default_root_xwindow
gdk_x11_get_default_screen
gdk_x11_get_default_xdisplay
gdk_x11_grab_server
gdk_x11_ungrab_server
2010-12-22 06:31:15 +00:00
gdk_x11_cursor_get_xcursor
gdk_x11_cursor_get_xdisplay
gdk_x11_keymap_get_group_for_state
gdk_x11_keymap_key_is_modifier
gdk_x11_visual_get_xvisual
gdk_x11_atom_to_xatom
gdk_x11_atom_to_xatom_for_display
gdk_x11_xatom_to_atom
gdk_x11_xatom_to_atom_for_display
gdk_x11_get_xatom_by_name
gdk_x11_get_xatom_by_name_for_display
gdk_x11_get_xatom_name
gdk_x11_get_xatom_name_for_display
2010-12-22 06:31:15 +00:00
gdk_x11_set_sm_client_id
gdk_x11_display_text_property_to_text_list
gdk_x11_free_text_list
gdk_x11_display_string_to_compound_text
gdk_x11_display_utf8_to_compound_text
gdk_x11_free_compound_text
2010-12-25 05:02:39 +00:00
2011-12-19 12:32:15 +00:00
<SUBSECTION Standard>
GDK_TYPE_X11_APP_LAUNCH_CONTEXT
GDK_X11_APP_LAUNCH_CONTEXT
GDK_X11_APP_LAUNCH_CONTEXT_CLASS
GDK_IS_X11_APP_LAUNCH_CONTEXT
GDK_IS_X11_APP_LAUNCH_CONTEXT_CLASS
GDK_X11_APP_LAUNCH_CONTEXT_GET_CLASS
GDK_TYPE_X11_CURSOR
GDK_X11_CURSOR
GDK_X11_CURSOR_CLASS
GDK_IS_X11_CURSOR
GDK_IS_X11_CURSOR_CLASS
GDK_X11_CURSOR_GET_CLASS
GDK_TYPE_X11_DEVICE_CORE
GDK_X11_DEVICE_CORE
GDK_X11_DEVICE_CORE_CLASS
GDK_IS_X11_DEVICE_CORE
GDK_IS_X11_DEVICE_CORE_CLASS
GDK_X11_DEVICE_CORE_GET_CLASS
GDK_TYPE_X11_DEVICE_MANAGER_CORE
GDK_X11_DEVICE_MANAGER_CORE
GDK_X11_DEVICE_MANAGER_CORE_CLASS
GDK_IS_X11_DEVICE_MANAGER_CORE
GDK_IS_X11_DEVICE_MANAGER_CORE_CLASS
GDK_X11_DEVICE_MANAGER_CORE_GET_CLASS
GDK_TYPE_X11_DEVICE_MANAGER_XI2
GDK_X11_DEVICE_MANAGER_XI2
GDK_X11_DEVICE_MANAGER_XI2_CLASS
GDK_IS_X11_DEVICE_MANAGER_XI2
GDK_IS_X11_DEVICE_MANAGER_XI2_CLASS
GDK_X11_DEVICE_MANAGER_XI2_GET_CLASS
GDK_TYPE_X11_DEVICE_MANAGER_XI
GDK_X11_DEVICE_MANAGER_XI
GDK_X11_DEVICE_MANAGER_XI_CLASS
GDK_IS_X11_DEVICE_MANAGER_XI
GDK_IS_X11_DEVICE_MANAGER_XI_CLASS
GDK_X11_DEVICE_MANAGER_XI_GET_CLASS
GDK_TYPE_X11_DEVICE_XI2
GDK_X11_DEVICE_XI2
GDK_X11_DEVICE_XI2_CLASS
GDK_IS_X11_DEVICE_XI2
GDK_IS_X11_DEVICE_XI2_CLASS
GDK_X11_DEVICE_XI2_GET_CLASS
GDK_TYPE_X11_DEVICE_XI
GDK_X11_DEVICE_XI
GDK_X11_DEVICE_XI_CLASS
GDK_IS_X11_DEVICE_XI
GDK_IS_X11_DEVICE_XI_CLASS
GDK_X11_DEVICE_XI_GET_CLASS
GDK_TYPE_X11_DISPLAY
GDK_X11_DISPLAY
GDK_X11_DISPLAY_CLASS
GDK_IS_X11_DISPLAY
GDK_IS_X11_DISPLAY_CLASS
GDK_X11_DISPLAY_GET_CLASS
GDK_TYPE_X11_DISPLAY_MANAGER
GDK_X11_DISPLAY_MANAGER
GDK_X11_DISPLAY_MANAGER_CLASS
GDK_IS_X11_DISPLAY_MANAGER
GDK_IS_X11_DISPLAY_MANAGER_CLASS
GDK_X11_DISPLAY_MANAGER_GET_CLASS
GDK_TYPE_X11_DRAG_CONTEXT
GDK_X11_DRAG_CONTEXT
GDK_X11_DRAG_CONTEXT_CLASS
GDK_IS_X11_DRAG_CONTEXT
GDK_IS_X11_DRAG_CONTEXT_CLASS
GDK_X11_DRAG_CONTEXT_GET_CLASS
GDK_TYPE_X11_KEYMAP
GDK_X11_KEYMAP
GDK_X11_KEYMAP_CLASS
GDK_IS_X11_KEYMAP
GDK_IS_X11_KEYMAP_CLASS
GDK_X11_KEYMAP_GET_CLASS
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
GDK_TYPE_X11_GL_CONTEXT
GDK_X11_GL_CONTEXT
GDK_X11_GL_CONTEXT_CLASS
GDK_IS_X11_GL_CONTEXT
GDK_IS_X11_GL_CONTEXT_CLASS
2011-12-19 12:32:15 +00:00
GDK_TYPE_X11_SCREEN
GDK_X11_SCREEN
GDK_X11_SCREEN_CLASS
GDK_IS_X11_SCREEN
GDK_IS_X11_SCREEN_CLASS
GDK_X11_SCREEN_GET_CLASS
GDK_TYPE_X11_VISUAL
GDK_X11_VISUAL
GDK_X11_VISUAL_CLASS
GDK_IS_X11_VISUAL
GDK_IS_X11_VISUAL_CLASS
GDK_X11_VISUAL_GET_CLASS
GDK_TYPE_X11_WINDOW
GDK_X11_WINDOW
GDK_X11_WINDOW_CLASS
GDK_IS_X11_WINDOW
GDK_IS_X11_WINDOW_CLASS
GDK_X11_WINDOW_GET_CLASS
2010-12-25 05:02:39 +00:00
<SUBSECTION Private>
gdk_x11_app_launch_context_get_type
gdk_x11_cursor_get_type
gdk_x11_device_core_get_type
gdk_x11_device_manager_core_get_type
gdk_x11_device_manager_xi2_get_type
gdk_x11_device_manager_xi_get_type
gdk_x11_device_xi2_get_type
gdk_x11_device_xi_get_type
gdk_x11_display_get_type
gdk_x11_display_manager_get_type
gdk_x11_drag_context_get_type
gdk_x11_keymap_get_type
gdk_x11_screen_get_type
gdk_x11_visual_get_type
gdk_x11_window_get_type
gdk_window_impl_x11_get_type
1999-08-16 18:51:52 +00:00
</SECTION>
<SECTION>
<INCLUDE>gdk/gdkwayland.h</INCLUDE>
<TITLE>Wayland Interaction</TITLE>
<FILE>wayland_interaction</FILE>
gdk_wayland_seat_get_wl_seat
gdk_wayland_device_get_wl_keyboard
gdk_wayland_device_get_wl_pointer
gdk_wayland_device_get_wl_seat
gdk_wayland_display_get_wl_compositor
gdk_wayland_display_get_wl_display
gdk_wayland_display_get_xdg_shell
gdk_wayland_window_get_wl_surface
gdk_wayland_window_set_use_custom_surface
<SUBSECTION Standard>
GDK_TYPE_WAYLAND_DEVICE
GDK_WAYLAND_DEVICE
GDK_WAYLAND_DEVICE_CLASS
GDK_WAYLAND_DEVICE_GET_CLASS
GDK_IS_WAYLAND_DEVICE
GDK_IS_WAYLAND_DEVICE_CLASS
GDK_TYPE_WAYLAND_DISPLAY
GDK_WAYLAND_DISPLAY
GDK_WAYLAND_DISPLAY_CLASS
GDK_WAYLAND_DISPLAY_GET_CLASS
GDK_IS_WAYLAND_DISPLAY
GDK_IS_WAYLAND_DISPLAY_CLASS
GDK_TYPE_WAYLAND_DISPLAY_MANAGER
GDK_WAYLAND_DISPLAY_MANAGER
GDK_WAYLAND_DISPLAY_MANAGER_CLASS
GDK_WAYLAND_DISPLAY_MANAGER_GET_CLASS
GDK_IS_WAYLAND_DISPLAY_MANAGER
GDK_IS_WAYLAND_DISPLAY_MANAGER_CLASS
GDK_TYPE_WAYLAND_WINDOW
GDK_WAYLAND_WINDOW
GDK_WAYLAND_WINDOW_CLASS
GDK_WAYLAND_WINDOW_GET_CLASS
GDK_IS_WAYLAND_WINDOW
GDK_IS_WAYLAND_WINDOW_CLASS
<SUBSECTION Private>
gdk_wayland_device_get_type
gdk_wayland_display_get_type
gdk_wayland_display_manager_get_type
gdk_wayland_window_get_type
</SECTION>
<SECTION>
<TITLE>Application launching</TITLE>
<FILE>gdkapplaunchcontext</FILE>
GdkAppLaunchContext
gdk_app_launch_context_new
gdk_app_launch_context_set_display
gdk_app_launch_context_set_screen
gdk_app_launch_context_set_desktop
gdk_app_launch_context_set_timestamp
gdk_app_launch_context_set_icon
gdk_app_launch_context_set_icon_name
<SUBSECTION Standard>
GDK_APP_LAUNCH_CONTEXT
GDK_APP_LAUNCH_CONTEXT_CLASS
GDK_APP_LAUNCH_CONTEXT_GET_CLASS
GDK_IS_APP_LAUNCH_CONTEXT
GDK_IS_APP_LAUNCH_CONTEXT_CLASS
GDK_TYPE_APP_LAUNCH_CONTEXT
GdkAppLaunchContextClass
<SUBSECTION Private>
gdk_app_launch_context_get_type
</SECTION>
<SECTION>
<TITLE>Testing</TITLE>
<FILE>gdktestutils</FILE>
gdk_test_render_sync
gdk_test_simulate_button
gdk_test_simulate_key
</SECTION>
<SECTION>
<TITLE>GdkFrameClock</TITLE>
<FILE>gdkframeclock</FILE>
GdkFrameClock
gdk_frame_clock_get_frame_time
GdkFrameClockPhase
gdk_frame_clock_request_phase
gdk_frame_clock_begin_updating
gdk_frame_clock_end_updating
gdk_frame_clock_get_frame_counter
gdk_frame_clock_get_history_start
gdk_frame_clock_get_timings
gdk_frame_clock_get_current_timings
gdk_frame_clock_get_refresh_info
<SUBSECTION Private>
GdkFrameClockPrivate
gdk_frame_clock_get_type
</SECTION>
<SECTION>
<TITLE>GdkFrameTimings</TITLE>
<FILE>gdkframetimings</FILE>
GdkFrameTimings
gdk_frame_timings_ref
gdk_frame_timings_unref
gdk_frame_timings_get_frame_counter
gdk_frame_timings_get_complete
gdk_frame_timings_get_frame_time
gdk_frame_timings_get_presentation_time
gdk_frame_timings_get_refresh_interval
gdk_frame_timings_get_predicted_presentation_time
<SUBSECTION Private>
gdk_frame_get_type
</SECTION>
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
<SECTION>
<FILE>gdkglcontext</FILE>
GdkGLContext
2015-02-12 12:40:03 +00:00
gdk_gl_context_get_display
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
gdk_gl_context_get_window
2015-02-12 12:40:03 +00:00
gdk_gl_context_get_shared_context
gdk_gl_context_get_version
<SUBSECTION>
2015-02-12 12:40:03 +00:00
gdk_gl_context_set_required_version
gdk_gl_context_get_required_version
gdk_gl_context_set_debug_enabled
gdk_gl_context_get_debug_enabled
gdk_gl_context_set_forward_compatible
gdk_gl_context_get_forward_compatible
<SUBSECTION>
GdkGLError
2015-02-12 12:40:03 +00:00
gdk_gl_context_realize
gdk_gl_context_make_current
gdk_gl_context_get_current
gdk_gl_context_clear_current
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
<SUBSECTION Standard>
GDK_GL_CONTEXT
GDK_IS_GL_CONTEXT
GDK_TYPE_GL_CONTEXT
GDK_GL_CONTEXT_CLASS
GDK_GL_CONTEXT_GET_CLASS
GDK_IS_GL_CONTEXT_CLASS
gdk_gl_context_get_type
gdk_gl_error_quark
2014-12-03 01:06:33 +00:00
GDK_GL_ERROR
GDK_TYPE_GL_ERROR
GDK_TYPE_GL_PROFILE
gdk: Add support for OpenGL This adds the new type GdkGLContext that wraps an OpenGL context for a particular native window. It also adds support for the gdk paint machinery to use OpenGL to draw everything. As soon as anyone creates a GL context for a native window we create a "paint context" for that GdkWindow and switch to using GL for painting it. This commit contains only an implementation for X11 (using GLX). The way painting works is that all client gl contexts draw into offscreen buffers rather than directly to the back buffer, and the way something gets onto the window is by using gdk_cairo_draw_from_gl() to draw part of that buffer onto the draw cairo context. As a fallback (if we're doing redirected drawing or some effect like a cairo_push_group()) we read back the gl buffer into memory and composite using cairo. This means that GL rendering works in all cases, including rendering to a PDF. However, this is not particularly fast. In the *typical* case, where we're drawing directly to the window in the regular paint loop we hit the fast path. The fast path uses opengl to draw the buffer to the window back buffer, either by blitting or texturing. Then we track the region that was drawn, and when the draw ends we paint the normal cairo surface to the window (using texture-from-pixmap in the X11 case, or texture from cairo image otherwise) in the regions where there is no gl painted. There are some complexities wrt layering of gl and cairo areas though: * We track via gdk_window_mark_paint_from_clip() whenever gtk is painting over a region we previously rendered with opengl (flushed_region). This area (needs_blend_region) is blended rather than copied at the end of the frame. * If we're drawing a gl texture with alpha we first copy the current cairo_surface inside the target region to the back buffer before we blend over it. These two operations allow us full stacking of transparent gl and cairo regions.
2014-10-09 08:45:44 +00:00
</SECTION>