Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

 GObject — реализует объектно-ориентированную систему на языке С, не требующую применения языка С++;

 Pango — поддерживает визуализацию и форматирование текста;

 ATK — помогает создавать приложения с доступом и позволяет пользователям запускать ваши приложения с помощью средств чтения экрана и других средств доступа;

 GDK (GIMP Drawing Kit) — обрабатывает визуализацию низкоуровневой графики поверх библиотеки Xlib;

 GdkPixbuf — помогает манипулировать изображениями в программах GTK+;

 Xlib — предоставляет низкоуровневую графику в системах Linux и UNIX.

Система типов GLib

Если вы когда-нибудь просматривали программный код GTK+, то могли удивиться, увидев множество типов данных языка С с префиксом

g
, например,
gint
,
gchar
,
gshort
, а также незнакомые типы
gint32
и
gpointer
. Дело в том, что комплект GTK+ основан на библиотеках переносимости языка С (portability libraries), названных GLib и GObject, которые определяют эти типы для того, чтобы способствовать межплатформным разработкам.

GLib и GObject помогают межплатформным разработкам, обеспечивая стандартный набор типов данных замещения, функций и макросов для поддержки управления памятью и общих задач. Эти типы, функции и макросы означают, что, как программисты GTK+, мы можем быть уверены в том, что наш программный код надежно переносится на другие платформы и архитектуры.

В библиотеке Glib также определено несколько очень удобных констант:

#include <glib/gmacros.h>

#define FALSE 0

#define TRUE !FALSE

Дополнительные типы данных — это типы, служащие заменой для стандартных типов данных C (из соображений совместимости и читабельности) и гарантирующие одинаковый размер в байтах на. всех платформах:

 

gint
,
guint
,
gchar
,
guchar
,
glong
,
gulong
,
gfloat
и
gdouble 
— просто замены для стандартных типов С для совместимости;

 

gpointer
— синоним типа (
void*
);

 

gboolean
— полезен для представления логических значений и служит оболочкой для
int
;

 

gint8
,
guint8
,
gint16
,
guint16
,
gint32
и
guint32
— знаковые и беззнаковые типы с гарантированным размером в байтах.

Удобно то, что применение библиотек GLib и GObject почти прозрачно. Glib широко используется в GTK+, поэтому если у вас есть работающая установка GTK+, то вы обнаружите, что библиотека Glib уже установлена. Как вы увидите позже в этой главе, при программировании с помощью комплекта GTK+ вам даже не придется явно включать заголовочный файл glib.h.

Система объектов GTK+

Все, у кого уже есть опыт программирования GUI, возможно, поймут наше утверждение о строгой приверженности библиотек GUI концепции объектно-ориентированного программирования (ООП), настолько строгой, что все современные комплекты инструментов, включая GTK+, написаны в стиле объектно-ориентированного программирования.

Несмотря на то, что комплект инструментов GTK+ написан на чистом С, он поддерживает объекты и ООП благодаря библиотеке GObject. Эта библиотека поддерживает наследование объектов и полиморфизм с помощью макросов.

Давайте рассмотрим образец наследования и полиморфизма на примере иерархии объектов GtkWindow, взятой из документации GTK+ API.

GObject

 +---GInitiallyUnowned

 +----GtkObject

+----GtkWidget

+----GtkContainer

+----GtkBin

+----GtkWindow

Этот список объектов говорит о том, что объект

GtkWindow
— потомок
GtkBin
, и, следовательно, любую функцию, которую вы вызываете с объектом
GtkBin
, вы можете вызвать и с объектом
GtkWindow
. Точно так же объект
GtkWindow
наследует из объекта
GtkContainer
, который в свою очередь наследует из объекта
GtkWidget
.

Для удобства все функции создания виджетов возвращают тип

GtkWidget
. Например,

GtkWidget* gtk_window_new(GtkWindowType type);

Предположим, что вы создаете объект

GtkWindow
и хотите передать возвращенное значение в функцию, ожидающую объект типа
GtkContainer
, например, такую, как
gtk_container_add
:

void gtk_container_add(GtkContainer* container, GtkWidget *widget);

  • Читать дальше
  • 1
  • ...
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: