Learning_GTK4_tree/docs/reference/gtk/overview.md

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/