66 lines
3.6 KiB
Markdown
66 lines
3.6 KiB
Markdown
|
Title: Overview
|
||
|
|
||
|
GTK is a library for creating graphical user interfaces. It works on many
|
||
|
UNIX-like platforms, Windows, and macOS. GTK is released under the terms of
|
||
|
the [GNU Library General Public License][gnu-lgpl], which allows for flexible
|
||
|
licensing of client applications. GTK has a C-based, object-oriented
|
||
|
architecture that allows for maximum flexibility and portability; there are
|
||
|
bindings for many other languages, including C++, Objective-C, Guile/Scheme, Perl,
|
||
|
Python, JavaScript, Rust, Go, TOM, Ada95, Free Pascal, and Eiffel.
|
||
|
|
||
|
The GTK toolkit contains "widgets": GUI components such as buttons, text
|
||
|
input, or windows.
|
||
|
|
||
|
GTK depends on the following libraries:
|
||
|
|
||
|
- **GLib**: a general-purpose utility library, not specific to graphical
|
||
|
user interfaces. GLib provides many useful data types, macros, type
|
||
|
conversions, string utilities, file utilities, a main loop abstraction,
|
||
|
and so on. More information available on the [GLib website][glib].
|
||
|
- **GObject**: A library that provides a type system, a collection of
|
||
|
fundamental types including an object type, and a signal system. More
|
||
|
information available on the [GObject website][gobject].
|
||
|
- **GIO**: A modern, easy-to-use VFS API including abstractions for files,
|
||
|
drives, volumes, stream IO, as well as network programming and IPC though
|
||
|
DBus. More information available on the [GIO website][gio].
|
||
|
- **Cairo**: Cairo is a 2D graphics library with support for multiple
|
||
|
output devices. More information available on the [Cairo website][cairo].
|
||
|
- **OpenGL**: OpenGL is the premier environment for developing portable,
|
||
|
interactive 2D and 3D graphics applications. More information available
|
||
|
on the [Khronos website][opengl].
|
||
|
- **Pango**: Pango is a library for internationalized text handling. It
|
||
|
centers around the `PangoLayout` object, representing a paragraph of
|
||
|
text. Pango provides the engine for `GtkTextView`, `GtkLabel`,
|
||
|
`GtkEntry`, and all GTK widgets that display text. More information
|
||
|
available on the [Pango website][pango].
|
||
|
- **gdk-pixbuf**: A small, portable library which allows you to create
|
||
|
`GdkPixbuf` ("pixel buffer") objects from image data or image files. You
|
||
|
can use `GdkPixbuf` in combination with widgets like `GtkImage` to
|
||
|
display images. More information available on the
|
||
|
[gdk-pixbuf website][gdkpixbuf].
|
||
|
- **graphene**: A small library which provides vector and matrix
|
||
|
datatypes and operations. Graphene provides optimized implementations
|
||
|
using various SIMD instruction sets such as SSE and ARM NEON. More
|
||
|
information available on the [Graphene website][graphene]
|
||
|
|
||
|
GTK is divided into three parts:
|
||
|
|
||
|
- **GDK**: GDK is the abstraction layer that allows GTK to support multiple
|
||
|
windowing systems. GDK provides window system facilities on Wayland, X11,
|
||
|
Microsoft Windows, and Apple macOS.
|
||
|
- **GSK**: GSK is an API for creating a scene graph from drawing operation,
|
||
|
called "nodes", and rendering it using different backends. GSK provides
|
||
|
renderers for OpenGL, Vulkan and Cairo.
|
||
|
- **GTK**: The GUI toolkit, containing UI elements, layout managers, data
|
||
|
storage types for efficient use in GUI applications, and much more.
|
||
|
|
||
|
[gnu-lgpl]: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
|
||
|
[glib]: https://developer.gnome.org/glib/stable/
|
||
|
[gobject]: https://developer.gnome.org/gobject/stable/
|
||
|
[gio]: https://developer.gnome.org/gio/stable/
|
||
|
[cairo]: https://www.cairographics.org/manual/
|
||
|
[opengl]: https://www.opengl.org/about/
|
||
|
[pango]: https://pango.gnome.org/
|
||
|
[gdkpixbuf]: https://developer.gnome.org/gdk-pixbuf/stable/
|
||
|
[graphene]: https://ebassi.github.io/graphene/
|