LINUX.ORG.RU

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


0

0

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

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



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

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

lb
()
Ответ на: комментарий от anonymous

Мда GTKmm... лучше использовать сий интерфейс... :(

anonymous
()

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

svu ★★★★★
()

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

blaster999 ★★
()

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

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

anonymous
()

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

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

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

Use Opera Browser :)

anonymous
()
Ответ на: комментарий от blaster999

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

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

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

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

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

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

Use mozilla :) Use style -> none и в 800x600 читать можно :).

anonymous
()
Ответ на: комментарий от Jik

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

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

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

> вы все умрёте в этой канаве
..ты развеял мою грусть и одиночество, путник. Входи во Врата и продолжай свой путь
(c) Лукъяненко

anonymous
()

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

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

RRD
()
Ответ на: комментарий от blaster999

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

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

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

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

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

atrus ★★★★★
()

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

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

SLiDER
()

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

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

anonymous
()
Ответ на: комментарий от SLiDER

> А сколько вообще у библиотек измерений в среднем ?

12

anonymous
()

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

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

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

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

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

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

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

Midael ★★★★★
()

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

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

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

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

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

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

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

А сам-то как думаешь? :)

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

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

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

anonymous
()
Ответ на: комментарий от yozhhh

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

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

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

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

> У меня текст на экран не влезает по горизонтали.

Используйте Оперу :)

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

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

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

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

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

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

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

Всплывающее окно - следы бесплатного хостинга на boom.ru

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

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

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

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

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

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

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

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

Misanthrope
()
Ответ на: комментарий от atrus

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

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

RRD
()
Ответ на: комментарий от Midael

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

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

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

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

Чем грузины?

anonymous
()
Ответ на: комментарий от init

Ну да, каждое приложение само выбирает backend для cairo. Сейчас там везде стоит xlib, т.к. глитц ещё не совсем готов.

anonymous
()
Ответ на: комментарий от svu

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

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

no-dashi ★★★★★
()

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
()
Ответ на: комментарий от anonymous

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

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

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

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