LINUX.ORG.RU

cairo и common lisp


0

0

Создавал как-то давно тред про поиск библиотеки, отрисовывающей простые примитивы. Посоветовали cairo. Вот теперь хочу её скрестить с common lisp'ом. Пробовал cl-cairo2

http://www.cliki.net/cl-cairo2

Оно работает, но выводит в pdf, png итд, а мне надо на экран (то есть с помощью xlib).

Вот мой простой пример на c:

http://pastebin.com/ftF6BX8s

С помощью cl-cairo2 сделал такое:

(in-package cl-cairo2)
(setq *context* (create-xlib-image-context 800 600 :display-name «localhost:0» :window-name «hello»))

В туториале написанно, что при этом создается окно, которое можно ресайзить, закрывать итд, при чем если сделать (destroy *context*), то окно само закроется и наоборот.

Окно действительно создалось, но оно ни на что не реагирует, и вывод cairo на него не попадает.

Далее, пробовал что-то типа:

http://pastebin.com/315qjsw2

Ура-ура! Нормальное окно создается, только полностью черное. И лишь при вызове #'xclosedisplay в окне на мгновение появляется квадратик.

ЧЯДНТ? Может есть какая-то функция, чтобы насильственно обновить окно?



Последнее исправление: different_thing (всего исправлений: 1)

Да, в аналогичном примере на сях всё работает отлично

different_thing
() автор топика
Ответ на: комментарий от k_andy

Точно. Оказывается даже lisp тут не причем. Я не разобрался с этой xlib)

P.S. setq не нужен.

Хм. По-моему setf не нужен в случаях, когда можно обойтись setq. Хотя setf тогда в setq и разворачивается. Просто у меня макрософобия пока)

different_thing
() автор топика

Я советую использовать cl-gtk2-gtk, и уже в gtk-drawing-area или в gtk-window рисовать с использованием cairo. Многие проблемы снимает.

dmitry_vk ★★★
()
Ответ на: комментарий от different_thing

> Не знаю, стоит ли. У меня слишком примитивная графика, чтобы с gtk возиться.

Осваивать таким образом xlib? Ну-ну. Проблемы начнутся как только понадобится ввод текста.

k_andy ★★★
()

Каиро хорошо дружит с Gtk. Вы очень сильно упростите себе жизнь

vertexua ★★★★★
()
Ответ на: комментарий от k_andy

Ну у него просто в первом посте написано, что

Создавал как-то давно тред про поиск библиотеки, отрисовывающей простые примитивы.

вот я и подумал...

DJAnto
()
Ответ на: комментарий от k_andy

Ну дык не до такой же степени) Просто одно дело, когда (setf (second a) 3), тут проще макрос юзать, а другое, когда (setf a 4), что тоже, что и (setq a 4). Хотя с другой стороны setf универсальнее. В общем, дело привычки, наверное

different_thing
() автор топика
Ответ на: комментарий от different_thing

А понадобится отслеживать отрисовку? Изменение размеров? И прочие аспекты, которые решены в Gtk. Заодно получаете кроссплатформенность.

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

Вряд ли. Ну, хорошо, посмотрю и gtk) Может действительно проще

different_thing
() автор топика
Ответ на: комментарий от DJAnto

>Так может быть, стоит обратить внимание на lisp'овую привязку к Tk — ltk?

кстати, на первый взгляд - отличная штука, мало того, что внутри кошерный Tk, так ещё и простое как три копейки. Недостающий функционал пишется буквально на коленке.

lazyklimm ★★★★★
()
Ответ на: комментарий от different_thing

Унификация же. Один «оператор» - одно логическое действие. Ну как хотите.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.