dlib C++ Library - API Wrappers

The Library

- Algorithms
- API Wrappers
- Compression
- Containers
- Imaging
- Metaprogramming
- Miscellaneous
- Network
- Parsing

Help/Info

- Examples
  - Base64_Encoder
  - Bayesian_Network
  - Bayesian_Network_From_Disk
  - Bayesian_Network_GUI
  - Cmd_Line_Parser
  - Compress_Stream
  - Directory_Navigation
  - GUI
  - HTTP_Server
  - Image
  - Kernel_Centroid
  - Kernel_K-Means_Clustering
  - Kernel_RLS_Filtering
  - Kernel_RLS_Regression
  - Logger
  - Logger_Advanced
  - Matrix
  - Member_Function_Pointer
  - Multithreaded_Object
  - Neural_Network
  - Pipe
  - Queue
  - Rank_Features
  - Relevance_Vector_Classification
  - Relevance_Vector_Regression
  - Sockets
  - Sockets_2
  - Sockstreambuf
  - Std_C++_Allocator
  - Support_Vector_Machine
  - Threaded_Object
  - Threads
  - Thread_Function
  - Thread_Pool
  - Timer
  - XML_Parser
- Home
- How to compile
- Index
- Introduction
- License

Current Release

- Change Log
- Release Notes
- Version: 17.12

Last Modified: Nov 10, 2008

# API Wrappers

These wrappers provide a portable object oriented interface for networking, multithreading, GUI development, and file browsing. Programs written using them can be compiled under POSIX or MS Windows platforms without changing the code.

API

- dir_nav
  - directory
  - file
  - get_filesystem_roots
- gui_core
  - base_window
  - canvas
  - get_from_clipboard
  - put_on_clipboard
- gui_widgets
  - canvas drawing functions
    - draw_button_down
    - draw_button_up
    - draw_checkered
    - draw_circle
    - draw_image
    - draw_line
    - draw_pixel
    - draw_rectangle
    - draw_rounded_rectangle
    - draw_solid_circle
    - draw_sunken_rectangle
    - fill_gradient_rounded
    - fill_rect
    - fill_rect_with_vertical_gradient
  - drawable
    - disable
    - disable_events
    - enable
    - enable_events
    - events
      - draw
      - on_focus_gained
      - on_focus_lost
      - on_keydown
      - on_mouse_down
      - on_mouse_enter
      - on_mouse_leave
      - on_mouse_move
      - on_mouse_up
      - on_string_put
      - on_user_event
      - on_wheel_down
      - on_wheel_up
      - on_window_moved
      - on_window_resized
    - events_are_enabled
    - hide
    - is_enabled
    - is_hidden
    - main_font
    - next_free_user_event_number
    - parent_window
    - set_main_font
    - set_pos
    - set_z_order
    - shape
      - bottom
      - get_rect
      - height
      - left
      - right
      - top
      - width
    - show
    - z_order
  - drawable_window
  - fonts
    - bdf_font
    - default_font
    - font
    - get_native_font
    - letter
  - styles
    - button_style
    - button_style_arrow
    - button_style_default
    - button_style_toolbar1
    - button_style_toolbar_icon1
    - list_box_style
    - list_box_style_default
    - scrollable_region_style
    - scrollable_region_style_default
    - scroll_bar_style
    - scroll_bar_style_default
    - text_field_style
    - text_field_style_default
    - toggle_button_style
    - toggle_button_style_check_box
    - toggle_button_style_default
    - toggle_button_style_radio_button
  - widgets
    - button
    - button_action
    - check_box
    - directed_graph_drawer
    - draggable
    - image_widget
    - label
    - list_box
    - menu_bar
    - menu_item
    - menu_item_separator
    - menu_item_submenu
    - menu_item_text
    - message_box
    - message_box_blocking
    - mouse_over_event
    - mouse_tracker
    - named_rectangle
    - open_existing_file_box
    - open_file_box
    - popup_menu
    - popup_menu_region
    - radio_button
    - save_file_box
    - scrollable_region
    - scroll_bar
    - tabbed_display
    - text_field
    - text_grid
    - toggle_button
    - tooltip
    - widget_group
    - zoomable_region
- misc_api
  - create_directory
  - get_current_dir
  - sleep
  - timestamper
- sockets
  - extensions
    - close_gracefully
    - connect
    - is_ip_address
  - functions
    - create_connection
    - create_listener
    - get_local_hostname
    - hostname_to_ip
    - ip_to_hostname
  - objects
    - connection
    - listener
- threads
  - create_new_thread
  - extensions
    - auto_mutex
    - auto_unlock
    - create_new_thread extension
    - multithreaded_object
    - rmutex
    - rsignaler
    - threaded_object
    - thread_function
    - thread_pool
    - thread_specific_data
  - get_thread_id
  - is_dlib_thread
  - mutex
  - register_thread_end_handler
  - signaler
  - unregister_thread_end_handler

[top]

# dir_nav

This is a set of objects that provide an easy and portable way to traverse a directory tree.
Specification: dlib/dir_nav/dir_nav_kernel_abstract.h
File to include: dlib/dir_nav.h
Code Examples: 1
Implementations:

> dir_nav_kernel_1: MS Windows implementation
> dir_nav_kernel_2: POSIX implementation

[top]

# gui_core

This is a set of objects and functions which provide a very basic framework for manipulating windows. It is intended to provide a portable interface which can be used to build a more complex windowing toolkit.
Specification: dlib/gui_core/gui_core_kernel_abstract.h
File to include: dlib/gui_core.h
Implementations:

> gui_core_kernel_1: MS Windows implementation
> gui_core_kernel_2: X Windows implementation

[top]

# gui_widgets

This component is a collection of various windowing widgets such as buttons, labels, text boxes, and so on. It also includes the drawable interface, drawable_window, and font handling objects. dlib/gui_widgets/widgets_abstract.h defines all of the high level graphical widgets provided by this component that can appear in a drawable_window. To view the specifications for the other members of this component look at dlib/gui_widgets/fonts_abstract.h, dlib/gui_widgets/drawable_abstract.h, and dlib/gui_widgets/base_widgets_abstract.h.

This component isn't actually a wrapper on top of OS APIs. Rather, it is implemented on top of the gui_core component. I put it on this page just because I expect that people would look here when searching for the sort of functionality provided by this component.

File to include: dlib/gui_widgets.h
Code Examples: 1, 2, 3
[top]

# misc_api

This is just a collection of miscellaneous APIs that were small/simple enough not to warrant their own module.
Specification: dlib/misc_api/misc_api_kernel_abstract.h
File to include: dlib/misc_api.h
Implementations:

> misc_api_kernel_1: MS Windows implementation
> misc_api_kernel_2: POSIX implementation

[top]

# sockets

This is a set of objects that provides an easy to use and object oriented interface for dealing with TCP networking. There are currently two implementations, one for UNIX and another for all versions of Windows after Windows95. Both provide the exact same interface so programs written with them can be recompiled on either platform without a problem.

You also may want to take note of the timeout object. It provides a mechanism which you can use to add a timeout to a network operation.

Specification: dlib/sockets/sockets_kernel_abstract.h
File to include: dlib/sockets.h
Code Examples: 1, 2, 3
Implementations:

> sockets_kernel_1: MS Windows implementation
> sockets_kernel_2: POSIX implementation

## Extensions to sockets

sockets_extensions:

This is just some miscellaneous extensions to the socket api.

The implementation of this extension can be found here.
Specification: dlib/sockets/sockets_extensions_abstract.h
[top]

# threads

This is a set of objects that provides an easy to use and object oriented interface for creating multi-threaded programs. There are currently two implementations, one for UNIX and another for any variant of MS Windows after Windows 95. Both provide the exact same interface so programs written with them can be recompiled on either platform without a problem.

You also probably want to take note of the pipe object. It provides an easy to use typesafe mechanism to send messages between threads.

Specification: dlib/threads/threads_kernel_abstract.h
File to include: dlib/threads.h
Code Examples: 1, 2, 3
Implementations:

> threads_kernel_1: MS Windows implementation
> threads_kernel_2: POSIX implementation

## Extensions to threads

auto_mutex:

This extension adds a mechanism to automatically lock and unlock a mutex. Also note that this extension is included by dlib/threads.h so you don't have to include anything extra to get it.

The implementation of this extension can be found here.
Specification: dlib/threads/auto_mutex_extension_abstract.h

auto_unlock:

This extension adds a mechanism to automatically unlock a mutex. Also note that this extension is included by dlib/threads.h so you don't have to include anything extra to get it.

The implementation of this extension can be found here.
Specification: dlib/threads/auto_unlock_extension_abstract.h

create_new_thread extension:

This extension adds some templated overloads to the create_new_thread() function. They allow you to create new threads using member functions from a class. Also note that this extension is included by dlib/threads.h so you don't have to include anything extra to get it.

The implementation of this extension can be found here.
Specification: dlib/threads/create_new_thread_extension_abstract.h

multithreaded_object:

This object represents a multithreaded object. It is similar to the threaded_object except it allows you to have many threads in a single object rather than just one.

The implementation of this extension can be found here.
Specification: dlib/threads/multithreaded_object_extension_abstract.h
Code Examples: 1, 2

rmutex:

This extension adds a mutex object that can handle recursive calls to lock(). Also note that this extension is included by dlib/threads.h so you don't have to include anything extra to get it.

The implementation of this extension can be found here.
Specification: dlib/threads/rmutex_extension_abstract.h

rsignaler:

This extension adds a signaler object that can be used with the rmutex object. Also note that this extension is included by dlib/threads.h so you don't have to include anything extra to get it.

The implementation of this extension can be found here.
Specification: dlib/threads/rsignaler_extension_abstract.h

threaded_object:

This extension represents a simple threaded object. It provides a convenient mechanism to create an object that contains a thread.

The implementation of this extension can be found here.
Specification: dlib/threads/threaded_object_extension_abstract.h
Code Examples: 1

thread_function:

This object represents a thread on a global C++ function. That is, it allows you to run a global function in its own thread.

The implementation of this extension can be found here.
Specification: dlib/threads/thread_function_extension_abstract.h
Code Examples: 1

thread_pool:

This object represents a fixed size group of threads which you can submit tasks to and then wait for those tasks to be completed.

The implementation of this extension can be found here. It is implemented such that no memory allocations occur after the thread pool has been constructed.
Specification: dlib/threads/thread_pool_extension_abstract.h
Code Examples: 1

thread_specific_data:

This extension adds the ability to easily create thread specific data.

The implementation of this extension can be found here.
Specification: dlib/threads/thread_specific_data_extension_abstract.h