LINUX.ORG.RU

Перевод учебника библиотеки Cairo


0

0

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

>>> Оригинал перевода

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

anonymous

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

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

AGG это же в первую очередь библиотека быстрой и качественной софтварной растеризации. cairo это никак заменить не может, смысл cairo именно в ориентации на вектор, растеризация там не главное. cairo умеет рисовать в ps или pdf, так что изображение остается векторным, поддерживает аппаратное ускорение растеризации через opengl и т.д. Понятно, что библиотека, заточенная под 100% софтварную реализацию может обеспечить более быстрый и значительно более качественный рендеринг, чем такой вариант, но это совсем не то.

А вот прикручивание agg как бэкенда рендеринга для cairo было бы интересной задачей - все-ж таки растеризатор в agg лучше.

Ну и явные недостатки agg: ориентация на C++ - а как из C работать?, отсутствие готовых привязок к mono, python, ruby, java - к cairo они и в дистрибутивы входят, и используются активно разными продуктами, т.е. с ними никаких проблем нет.

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

> cairo... поддерживает аппаратное ускорение растеризации через opengl

Но фигоооовенько.... :(

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

>Но фигоооовенько.... :(

ну, за это спасибо глицу, вообще-то. Полупрозрачные картинки кайра через глиц рисует — мама не горюй )

А вот всяческие контуры и заливки, это ой...

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

На примере sK1 опробовано, что в среднем каира с глитцем дает прирост отрисовки на 20-25%, не более, об этом инкскейперам сообщалось на LGM2007. Такая же цыфирь и у них вырисовывается на последних билдах, юзающих каиру. Так что это не панацея ;) А всякие-разные красивые диаграммы прироста скорости... Нафик они, если в реальном приложении не чувствуются?

Linfan ★★★★★
()

Относительно сабжа: надо было все-тки указать, что это не мануал по каире, а руководство по pyCairo. Немножко разные вещи. Хотя для экспериментов с Каирой - самое оно :)

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

>cairo умеет рисовать в ps или pdf, так что изображение остается векторным

Попробуйте отрисовать RGBA и вы сильно разочаруетесь ;) Там будет один большой кошерный битмап.

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

>>>надо было все-тки указать, что это не мануал по каире, а руководство по pyCairo. Немножко разные вещи. Хотя для экспериментов с Каирой - самое оно :)

Так я его специально учебником обозвал а не руководством, по поводу pyCairo есть в самом начале документа, а вконце как раз и говорится что это поверхностный учебник и что нужно смотреть для дальнейшего изучения библиотеки. Так что по моему всё честно и без обмана :)

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

>а вконце как раз и говорится что это поверхностный учебник

Ну местная публика и до начала документа не добирается, не то что до конца :)

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

>>>Ну местная публика и до начала документа не добирается, не то что до конца :)

Ну вы же не из их числа я надеюсь :)

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

Спасибо, но мне, как автору sK1, это руководство уже неактуально ;) Иначе бы я не заимплементил отрисовку через Cairo.

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

Ну вам как проффессиональному программисту вобще полагается читать оригиналы на английском, переводы для таких как я любителей и подрастающего поколения :)

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

>полагается читать оригиналы на английском

По-взрослому, конечный вариант - дока по АПИ. Но начинать проще с вот таких вот руководств, чтобы врубиться в тему. Тем более что на Питоне проще попробывать Каиру в деле.

Linfan ★★★★★
()
Ответ на: удаленный комментарий

>>>По-взрослому, конечный вариант - дока по АПИ

Согласен, я уже выше писал что переводом API уже занимается один человек, этот перевод я сделал так сказать для затравочки, с момента опубликования по ссылке сходили уже 1100 человек если из них хотябы 100 начнут всерьёз интересоваться программированием с использованием библиотек GTK+ и Cairo в частности, я буду считать что труды были не напрасными :)

Вы мне как проффесионал подскажите пожалуйста правильно ли я сделал что решил с помощью Cairo рисовать простые графики в своей программе, может есть более подходящая для этого библиотека?

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

> начнут всерьёз интересоваться программированием с использованием библиотек GTK+ и Cairo в частности, я буду считать что труды были не напрасными

Кстати да, а как эту библиотеку применять в повседневной практике?

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

В Inkscape на Cairo портировали каркасный режим отображения. Который тут же ускорился на 25%, а программа при этом стала жрать в 2 раза меньше памяти.

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

Я имел в виду - скольким русскоязычным пользователям сегодня нужна эта библиотека? Я даже не говорю про призрачное завтра, когда даже гимп будет иметь более чем 8 разрядов на цветовой канал.. Кто сегодня-то использует эту библу, кому она реально нужна?

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

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

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

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

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

>программированием с использованием библиотек GTK+ и Cairo

Cairo не имеет никакого отношения к GTK. Эта либа на уровне с Фритайпом или фонтконфигом. Если говорить более точно - это бывшая обертка вокруг XRender.

>правильно ли я сделал что решил с помощью Cairo рисовать простые графики

Если ваша прога не тащит в результате вагон зависимостей, быстра в написании и легко переносится на другой комп и другие OS - то все верно. В принципе, для графиков хватает просто Тиклевской канвы. но правда она без антиалиасинга. pyCairo плох тем, что он привязан к GTK. Портирование под Винду или MacOS X - напряжное занятие. Вот если бы на ctypes сделали привязку к Каире и Tk виджетсету - це було б гарно ;)

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

>Кто сегодня-то использует эту библу, кому она реально нужна?

Если не брать в расчет мелкие приложения, то напр. Firefox, Inkscape, sK1. Проект Xara LX тоже хотел заюзать Каиро, но похоже "бобик сдох" :)

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

>>>Cairo не имеет никакого отношения к GTK

Так вроде GTK+ сейчас очень активно использует эту библиотеку, или уже что-то поменялось?

>>>быстра в написании и легко переносится на другой комп и другие OS

Я собственно программу пишу для себя, в повседневной жизни я использую линукс и перенос на другие ОС меня мало волнует, да и скорость разработки тоже не беспокоит :) Собственно ваш ответ мне всё прояснил, спасибо!

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

>На примере sK1 опробовано, что в среднем каира с глитцем дает прирост отрисовки на 20-25%, не более, об этом инкскейперам сообщалось на LGM2007. Такая же цыфирь и у них вырисовывается на последних билдах, юзающих каиру. Так что это не панацея ;)

Когда я последний раз глядел в потроха кайро-глитса, кайра рендерила всё в битмап, а через глиц только композила. Хотя, в теории, через GL можно рисовать всё. Как, например, Зак Расин сделал в Qt. Тут был большой флейм на эту тему

PS. Это расшифровка "ой" :)

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

Ну так глитцем никто сейчас толком не занимается. Бросили дитёнка.

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

>Хотя, в теории, через GL можно рисовать всё.

угу, напр. tkZinc - OpenGL based канва для тикля. Только к сожалению не допилили ее исчо. но правда у нее производительность не очень. в 2-3 раза выше чем у тиклевой канвы. А вот проприетарный вариант такой канвы отжигает в 25 быстрее. Это вам не 25% прироста как у каиры ;)

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

>Так вроде GTK+ сейчас очень активно использует эту библиотеку, или уже что-то поменялось?

Да нет. Но ведь никто же не называет FreeType кдешной либой, только потому, что ее использует Ot.

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

>>>Но ведь никто же не называет FreeType кдешной либой, только потому, что ее использует Ot

Так я вроде и не писал что Cairo входит в состав GTK+. Я написал что буду рад если благодаря моим переводам эти две библиотеки станут немного популярнее.

Кстати документация API Cairo сделана в стиле документации GTK+ :)

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

>документация API Cairo сделана в стиле документации GTK+

:) Ну дык DocBook он и в Африке рулит :) Если глянуть на хедер доки то тут же бросается в глаза:

<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">

<meta name="generator" content="GTK-Doc V1.7 (XML mode)">

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

>>>песнь заядлого кдеешнега :)

А-а-а, вот оно в чём дело, как же я сразу не догадался :)

Вобще странный вы какой то кдешник, нестандартный :)

kde == QT

sK1 == Tcl/Tk

Где логика, где стандартизация я вас спрашиваю :)

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

>>>Cairo используется в такой чисто Qtшной аппликухе как Scribus :)

То есть QT и GTK+ нашли точку взаимопонимания в виде библиотеки Cairo?

Я правильно понял, что при таком раскладе Cairo скоро станет самой популярной библиотекой 2D графики в Linux? :)

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

>Вобще странный вы какой то кдешник, нестандартный :)

А вот склонность к Python/Tk неслучайна. Основная причина - код на Питоне до 10 раз компактнее чем на крестах/жабе. Соотв. 2 девелопера тима sK1 работают также успешно, как 15-20 программеров из сходного проекта на крестах (не будем показывать пальцем конкретно ;) ) А если добавить, что по классике на группу из 3 программеров нужен 1 менеджер и так далее по пирамиде (тривиальная организация взаимодействия), то делайте выводы. :)

Плюс также тот момент, что Tk писан в недрах Sun и является прообразом жабского Swing'а (я бы сказал, более элегантен чем Swing). Ну и разные там извраты над тиклем, недоступные при работе с классическими биндингами типа pyGTK.

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

ХЗ. Раньше в скрайбусе юзалась libart, потом опционально появился Каир (благодаря ему есть режимы наложенияслоёв и отдельных объектов и их же полупрозрачность, например). Теперь есть планы libart выкинуть совсем, Каир сделать основным, а Артур сделать опциональным :) Дальше может произойти полный переход на Артур, только неизвестно, когда. Они уже шестой месяц с Qt3 на Qt4 переползают, вопреки всем ожиданиям.

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

> Соотв. 2 девелопера тима sK1 работают также успешно,

И уже фиг знает сколько не могут не то что стабильный релиз сделать, а хотя бы очередной RC :)

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

Лучше, чем что?

Я думал, что Arthur - это всего лишь прослойка (front-end), тогда как Cairo - одна из возможных реализаций (i.e. back-end). Другими словами, Arthur может использовать Cairo как рендерер. Разве это не так?

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

>>>Разве это не так?

Честно говоря я плохо понимаю что и как в QT, поэтому и поинтересовался кто такой Артур :)

Но судя по тому что вы написали становится совсем не понятно зачем это всё нужно если можно использовать Cairo напрямую без всяких прослоек, или я опять чего то не понял :)

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

Такова была задумка, когда начинали делать Arthur. Но я не знаю как обстоят дела на самом деле. Поэтому мне тоже интересно узнать :)

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

Вот, по приведенной выше ссылке идет такая информация (внизу). Видимо, Cairo подпадает под последнюю категорию (X11 and the X Render Extension). А, вообще, прослойка - это большой гуд. Можно рендерить на растровый битмап, в виндовый метафайл (векторный формат, где записана вся последовательность относительно высоко-уровневых графических операций), в Postcript/PDF, в SVG и т.п. Имея однин и тот же стабильный API для прослойки, мы могли бы менять рендереры и получать на выходе графику в самых разных форматах и представлениях. Например, так было давно сделано в Java2D.

Qt currently provides paint engines for the following platforms and APIs:

-- A pixel-based engine for the Windows platform that is also used to draw onto QImages on all platforms

-- OpenGL on all platforms

-- PostScript on Linux, Unix, and Mac OS X

-- QuickDraw and CoreGraphics on Mac OS X

-- X11 and the X Render Extension on Linux and Unix systems

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

Qt, насколько я знаю, не использует Cairo. Зак сам растеризаторы писал. Довольно удачно, кстати. На тестах с XRender Qt была в несколько раз быстрее. На GL — в десятки раз быстрее

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