Программирование в X Window средствами Free Pascal - [3]
1.1.4 Графические возможности X Window
Система X Window предназначена для работы на растровых дисплеях. В подобного рода устройствах изображение представляется матрицей светящихся точек - пикселей. Каждый пиксель кодируется определенным числом бит (как правило 2, 4, 8, 16 или 24). Число бит-на-пиксель называют "толщиной" или глубиной дисплея. Биты с одинаковыми номерами во всех пикселях образуют как бы плоскость, параллельную экрану. Ее называют цветовой плоскостью. X позволяет рисовать в любой цветовой плоскости (или плоскостях), не затрагивая остальные.
Значение пикселя не задает непосредственно цвет точки на экране. Последний определяется с помощью специального массива данных, называемого палитрой. Цвет есть содержимое ячейки палитры, номер которой равен значению пикселя.
X имеет большой набор процедур, позволяющих рисовать графические примитивы - точки, линии, дуги, выводить текст и работать с областями произвольной формы.
1.1.5 Свойства и атомы
В X Window встроены средства для обеспечения обмена информацией между программами-клиентами. Для этого используется механизм свойств (properties). Свойство - это порция данных, связанная с некоторым объектом (например, окном), и которая доступна всем клиентам X.
Каждое свойство имеет имя и уникальный идентификатор - атом. Обычно имена свойств записываются большими буквами, например: MY_SPECIAL_PROPERTY. Атомы используются для доступа к содержимому свойств с тем, чтобы уменьшить количество информации, пересылаемой по сети между клиентами и X сервером.
В X предусмотрен набор процедур, позволяющих перевести имя свойства в уникальный атом, и, наоборот, по атому получить необходимые данные.
Некоторые свойства и соответствующие им атомы являются предопределенными и создаются в момент инициализации сервера. Этим атомам соответствуют символические константы, определенные в файлах-заголовках библиотеки Xlib. Эти константы начинаются с префикса XA_.
1.1.6 Первый пример
Продолжая традиции многих изданий, посвященных программированию, начнем с программы, рисующей на экране строку "Hello, world!". В этом примере приведены основные шаги, необходимые для работы в X Window.
>uses x,xlib,x11,xutil,strings;
>const
> WND_X=0;
> WND_Y=0;
> WND_WDT=100;
> WND_HGH=100;
> WND_MIN_WDT=50;
> WND_MIN_HGH=50;
> WND_BORDER_WDT=5;
> WND_TITLE='Hello!';
> WND_ICON_TITLE='Hello!';
> PRG_CLASS='Hello!';
>(* SetWindowManagerHints - процедура передает информацию о свойствах программы менеджеру окон. *)
>procedure SetWindowManagerHints(
> prDisplay: PDisplay; (*Указатель на структуру TDisplay *)
> psPrgClass: PChar; (*Класс программы *)
> argv: PPChar; (*Аргументы программы *)
> argc: integer; (*Число аргументов *)
> nWnd: TWindow; (*Идентификатор окна *)
> x, (*Координаты левого верхнего *)
> y, (*угла окна *)
> nWidth,
> nHeight, (*Ширина и высота окна *)
> nMinWidth,
> nMinHeight:integer; (*Минимальные ширина и высота окна *)
> psTitle: PChar; (*Заголовок окна *)
> psIconTitle: PChar; (*Заголовок пиктограммы окна *)
> nIconPixmap: TPixmap (*Рисунок пиктограммы *)
>);
>var
> rSizeHints: TXSizeHints; (*Рекомендации о размерах окна*)
> rWMHints: TXWMHints;
> rClassHint: TXClassHint;
> prWindowName, prIconName: TXTextProperty;
>begin
>if (XStringListToTextProperty(@psTitle, 1, @prWindowName)=0) or
> (XStringListToTextProperty(@psIconTitle, 1, @prIconName)=0) then
> begin
> writeln('No memory!');
> halt(1);
>end;
> rSizeHints.flags:= PPosition OR PSize OR PMinSize;
> rSizeHints.min_width:= nMinWidth;
> rSizeHints.min_height:= nMinHeight;
> rWMHints.flags:= StateHint OR IconPixmapHint OR InputHint;
> rWMHints.initial_state:= NormalState;
> rWMHints.input:= True;
> rWMHints.icon_pixmap:= nIconPixmap;
> rClassHint.res_name:= argv[0];
> rClassHint.res_class:= psPrgClass;
> XSetWMProperties(prDisplay, nWnd, @prWindowName, @prIconName, argv, argc, @rSizeHints, @rWMHints, @rClassHint);
>end;
>(* main - основная процедура программы *)
>//void main(int argc, char *argv[])
>var
> prDisplay: PDisplay; (* Указатель на структуру Display *)
> nScreenNum: integer; (* Номер экрана *)
> prGC: TGC;
> rEvent: TXEvent;
> nWnd: TWindow;
>begin
>(* Устанавливаем связь с сервером *)
> prDisplay:= XOpenDisplay(nil);
>if prDisplay = nil then begin
> writeln('Can not connect to the X server!');
> halt (1);
> end;
> (* Получаем номер основного экрана *)
> nScreenNum:= XDefaultScreen(prDisplay);
> (* Создаем окно *)
> nWnd:= XCreateSimpleWindow(prDisplay, XRootWindow (prDisplay, nScreenNum), WND_X, WND_Y, WND_WDT, WND_HGH, WND_BORDER_WDT, XBlackPixel (prDisplay, nScreenNum),
> XWhitePixel (prDisplay, nScreenNum));
> (* Задаем рекомендации для менеджера окон *)
> SetWindowManagerHints(prDisplay, PRG_CLASS, argv, argc, nWnd, WND_X, WND_Y, WND_WDT, WND_HGH, WND_MIN_WDT, WND_MIN_HGH, WND_TITLE, WND_ICON_TITLE, 0);
> (* Выбираем события, обрабатываемые программой *)
> XSelectInput(prDisplay, nWnd, ExposureMask OR KeyPressMask);
> (* Показываем окно *)
> XMapWindow(prDisplay, nWnd);
> (* Цикл получения и обработки событий *)
>while (true) do begin
> XNextEvent(prDisplay, @rEvent);
>case (rEvent.eventtype) of
> Expose:
>begin
> (* Запрос на перерисовку *)
>if (rEvent.xexpose.count ‹› 0) then continue;
В этой книге автор, сам прошедший путь от разработчика до менеджера в сфере IT, рассказывает неочевидные моменты, которые являются критически важными для правильного управления. Почему разработчики увольняются после повышения зарплаты? Как делать FixedPrice проекты? Почему Scrum не упрощает менеджмент? Книга содержит ответ на эти и многие другие вопросы. В книге есть много баек, которые показывают тяжёлую, но интересную жизнь менеджера в разработке. Иллюстратор обложки: Ксения Ерощенко. Иллюстрации в тексте книги авторские.
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Вниманию читателей предлагается справочник по JavaScript.Справочник предназначается для людей, уже освоивших азы программирования в JavaScript.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.Дата выхода данной версии справочника: 12:33, 21 марта 2007.
Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы.