LINUX.ORG.RU

Создание виджетов с использованием Cairo и GTK+ 2.8


0

0

Начиная с версии 2.8, GTK+ отрисовывает все свои элементы интерфейса с помощью мощной библиотеки векторной графики Cairo. В этой статье рассказывается как можно самому создать виджет GTK+, используя библиотеку Cairo для его отрисовки.

>>> Подробности



Проверено: Shaman007 ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

Интересно то, что для придания разумному коду разумного вида приходиться создавать кучу макросов. По сути для относительно низкоуровневого создания виджетов это не критично, но вот сомнения в осмысленности использования такого языка как C возникают при первом-же просмотре кода.

lb ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> но вот сомнения в осмысленности использования такого языка как C возникают при первом-же просмотре кода.

http://www.gtk.org/bindings.html

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

"основы рисования в канаве" - сильно сказано, переводчик жжот.

Jik ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

Поиграв с Cairo несколько месяцев назад, могу сказать: резко не хватало доков (не знаю как сейчас). Причем не на уровне reference - а вот такой целостной документации с описанием основных концепций. И еще - хочется более мощных геометрических преобразований в базовом наборе.

svu ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

Какой п#д#р#с оформлением того сайта занимается? Нафиг весь текст совать в таблицу, да еще фиксированной ширины? У меня текст на экран не влезает по горизонтали.

blaster999 ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> отрисовывает все свои элементы интерфейса с помощью мощной библиотеки векторной графики Cairo

Про *все* - по-моему неправда. В старых темах ничего кроме, кажеться шрифтов, ничего каиром не отрисовываеться.

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

с удовольствием бы почитал, но текст не влезает в браузер по _ширине_, поэтому неасилил.

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Какой п#д#р#с оформлением того сайта занимается? Нафиг весь текст совать в таблицу, да еще фиксированной ширины? У меня текст на экран не влезает по горизонтали.

Лол :) Хотел ограничится чтением комментариев (тема топика мне не очень интересна), но после таких заяв полез смотреть в код страницы :) Хорошая идея для привлечения посетителей на сайт :)

spiro ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Какой п#д#р#с оформлением того сайта занимается? Нафиг весь текст совать в таблицу, да еще фиксированной ширины? У меня текст на экран не влезает по горизонтали.

meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)"

AiLr ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>"основы рисования в канаве" - сильно сказано, переводчик жжот.

Всю жизнь мечтал рисовать, лежа в канаве. Похоже, основы этого трудного дела выучить довольно просто...

blaster999 ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>мощной библиотеки векторной графики Cairo

Интересно, а как это скажется на производительности? Векторная всё-таки.

RRD ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Выходит, опеноффис делает HTML не лучше, чем Ms Office :(

А нефиг использовать инструмент не по назначению. :) Как сейчас помню - гвозди очень неудобно микроскопом забивать. ;-)

atrus ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Интересно, а как это скажется на производительности? Векторная всё-таки.

Если OpenGL подключить, то может и ускориться...

atrus ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Cairo это мощная двухмерная графическая библиотека ...

Гммммм. Что бы это значило ???!!! А сколько вообще у библиотек измерений в среднем ? Пятимерные например бывают ?

SLiDER ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>с помощью мощной библиотеки векторной графики Cairo

Кто-нибудь может объяснить, чем оно "мощно"?

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

canvas - холст, канва
но не канава!!
перевотчек зжод, конечно, однако есть и рамки какие-то =)

amix ★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> перевотчек зжод, конечно, однако есть и рамки какие-то =)

все упирается в рамки промта, или чем он переводил - чего стоит перл "альфа-сопряжение", и в тексте все время описывается какая-то либа Cario...

Spectr ★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

cairo-то умеет, зато его не умеют приложения на нём построенные.

Кстати, попробовал тут inkscape. Тут всё говорили, что памяти много жрёт... Не знаю, не больше чем любая линуксовая прога. А вот скорость...мда, я понимаю, конечно, что этот софт рассчитан на мощные машины, но по-моему он и за мощной машине на сложных рисунках притормаживать будет. Никаким ускорение там и не пахнет. Кстати он ведь не cairo для отрисовки использует?

Midael ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

1. По просьбам посетителей фиксированной таблицы больше нет 2. Да, такое количество макросов отпугнет любого, но надо отметить, что вместо C можно использовать и любимый публикой C++ 3. В рамки Промта перевод не упирается, если уважаемый читатель Spectr обратиться к первоисточнику, он заметит небольшие различия в построении текста и нормализацию его под родной язык, хотя надо признаться, что термин alpha-blending был переведен с помощью него :) 4. Забавно почему-то термин канава (а не канва) вызвал нарекания, в литературе по Borland он встречается достаточно часто. Ну если холст, так холст, так по русски действительно лучше. 5. На счет документации по Cairo хочу заметить, что документацию они дописали и даже с примерами, см. cairographics.org

Спасибо всем за замечания.

siber ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>но вот сомнения в осмысленности использования такого языка как C
>возникают при первом-же просмотре кода.

http://www.pygtk.org/articles/cairo-pygtk-widgets/cairo-pygtk-widgets.htm

Хотя вроде как однофигственно получается...

bdancer ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Какой п#д#р#с оформлением того сайта занимается? Нафиг весь текст совать в таблицу, да еще фиксированной ширины? У меня текст на экран не влезает по горизонтали.

В page source не нашёл ни одного тега table. Может быть так, что на тебя очень плохо повлияли новогодние праздники?

yozhhh ★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> но вот сомнения в осмысленности использования такого языка как C возникают при первом-же просмотре кода.

Сомнения в твоей разумности возникают после первого же прочтения твоих изречений.

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>В page source не нашёл ни одного тега table. Может быть так, что на тебя очень плохо повлияли новогодние праздники?

Читать умеешь?

>1. По просьбам посетителей фиксированной таблицы больше нет

blaster999 ★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Интересно то, что для придания разумному коду разумного вида приходиться создавать кучу макросов

видать Вы не заглядывали в исходники GTK, там все такое

vadiml ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> с удовольствием бы почитал, но текст не влезает в браузер по _ширине_, поэтому неасилил

в Konqueror'e все отобразилось нормально, правда попутно заблокировало какое-то всплывающее окно

vadiml ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> 4. Забавно почему-то термин канава (а не канва) вызвал нарекания,

В русском языке, канава -- неглубокий и неширокий ров, обычно служащий для спуска или отвода воды (ров, вырытый для обозначения границ земельных участков). А вот канва -- редкая сетчатая проклеенная или накрахмаленная хлопчатобумажная (иногда льняная) ткань, служащая основой для вышивания, рисования, и т.п. (синоним -- холст).

> в литературе по Borland он встречается достаточно часто.

А я давно говорил, что всем багландовцам место в бобруйской канаве.

> Ну если холст, так холст, так по русски действительно лучше.

Вообще, лучше по-русски. Или багландовские справочники говорят обратное?

О переводчик! Вам имя...

Misanthrope ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>>>отрисовывает все свои элементы интерфейса >> Интересно, а как это скажется на производительности? >Если OpenGL подключить, то может и ускориться...

Будет ли GTK теперь больше памяти кушать? И грузиться как qt приложения?

RRD ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Никаким ускорение там и не пахнет. Кстати он ведь не cairo для отрисовки использует?

AFAIK, чтобы получить ускорение, нужно писать программу с учетом glitz. То есть насколько я понимаю, волшебным образом существующие программы не получат приемуществ, так как они ничего не знают о glitz.

init ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

> Шутить изволите

Да не особо. Я просто "просто для вентилятора" писал часики типа xclock - на это документации хватило. И даже пытался прикрутить glitz в gtk таким образом, чтобы оно использовало его вместо xlib. Почти получилось - но не хватило терпения "добить" это дело до стабильного состояния :-)

no-dashi ★★★★★ ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

PPC!!!

сравним этот ужас

#define EGG_TYPE_CLOCK_FACE (egg_clock_face_get_type ())

#define EGG_CLOCK_FACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_CLOCK_FACE, EggClockFace))

#define EGG_CLOCK_FACE_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), EGG_CLOCK_FACE, EggClockFaceClass))

#define EGG_IS_CLOCK_FACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_CLOCK_FACE))

#define EGG_IS_CLOCK_FACE_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), EGG_TYPE_CLOCK_FACE))

#define EGG_CLOCK_FACE_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_CLOCK_FACE, EggClockFaceClass))

и

class MyWidget : public QWidget { };

Честно признаюсь, Gtk+ асилить не могу...

anonymous ()

Re: Создание виджетов с использованием Cairo и GTK+ 2.8

>Вы видимо ошиблись. >QT-приложения занимают меньше памяти и быстрее работают.

ну не знаю. я программирую на qt и опыт таков, что даже простое окошко грузится очень долго. Любопытно смотреть на тайминги запусков конструкторов, когда используется не очень шустрый комп. Я, правда, не особо балуюсь опциями оптимизаций при компиляции. С gtk работал мало, поэтому и спрашиваю. Мне почему то казалось, что они легче.

Любопытно узнать мнение людей искушённых в этом деле.

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