OpenDraw — вільний редактор векторної графіки

Комп'ютерна графіка, що трохи більше десяти років назад була якщо не екзотичним, то досить специфічним застосуванням комп'ютера, сьогодні повсюдна.

Будь-хто, хто вперше стикається з комп'ютером, вже на самому початку навчання (якщо курс спеціально не побудований так, щоб обмежитися на перших порах програмами з текстовим або псевдографічним інтерфейсом) швидше за все зустрінеться з графічним терміналом, що відображає різні графічні елементи (включаючи і текстову інформацію, що також відображається в графічному режимі засобами комп'ютерної графіки).

Елементарна обробка (створення і редагування) зображень (як векторних, так і растрових) входить до числа програм, перерахованих в «Обов'язковому мінімумі змісту освіти по інформатиці» як обов'язкові до освоєння в курсі середньої школи.

Наочність навчання припускає, що учень впізнає в створюваних або редагованих ним картинках при вивченні обробки зображень вже знайомі йому елементи графічних інтерфейсів. Щоб це щасливе пізнавання відбулося, представляється доцільним включити деякі первинні відомості комп'ютерної графіки вже у введенні в предмет, яким починається його вивчення. На жаль, не всі підручники це реалізують, тому викладачу можуть знадобитися деякі додаткові зусилля, але, насправді, невеликі, оскільки наочний матеріал під рукою в будь-якому комп'ютерному класі.

Векторне і растрове кодування зображень

Способи кодування графічних даних діляться на дві категорії: растровий (точки рівномірно розміченого прямокутника) і векторний (опису ліній і фігур, що формують зображення).

Наприклад, растрове зображення кола може бути таким: «заповнюємо квадрат 5х5: біла крапка (Б), чорна крапка (Ч), Ч, Ч, Б, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Б, Ч, Ч, Ч, Б». (Розумніші «формати із стисненням», можливо, дозволять скоротити запис до чого-небудь, подібного: «заповнюємо квадрат 5х5: Б, 3Ч, Б, 3(Ч, 3Б, Ч), Б, 3Ч, Б», а то і ще компактніше, але суть не в цьому).

Векторне її зображення зовсім інше: «чорне коло з центром в (3,3), радіусом 2 і товщиною лінії 1». Важливо розуміти, що більшість комп'ютерних графічних пристроїв сьогодні — і термінали, і сканери, і принтери — за своєю природою растрові. Виняток становлять тільки графічні пристрої (плотери) і рідко доступні в навчальних умовах їх промислові «кузени» (такі, як фрезерний верстат з числовим управлінням).

Відповідно, зображення, незалежно від його власної природи (векторної чи растрової), буде при відображенні перетворено в растр і доступно людським відчуттям в растровій формі (навіть якщо растр майже непомітний, як на дисплеях з високим розрішенням, або взагалі має сітку нижче за поріг сприйняття, як при друці на якісних струменевих або лазерних принтерах). І вказані два способи цілком можуть привести до однакового результату.

Застосування векторної і растрової графіки

Різниця може виявитися тоді, коли ми почнемо обробляти елементи зображення.

Векторне зображення може без збитку масштабуватися (збільшуватися або зменшуватися), причому ця операція зворотня. У наведеному прикладі ми можемо без проблем збільшити векторне коло в п'ять разів: «чорне коло з центром в (15,15), радіусом 10 і товщиною лінії 5», і вона залишиться колом.

А ось растрове зображення при збільшенні виявить лише свій растр в збільшеному вигляді (і на коло наш приклад схожий вже буде мало). Більш того, операція зменшення (або збільшення в неціле число раз) растрового зображення вже не є зворотною: інформація при здійсненні такої операції безповоротно втрачається.

Крім того, векторне зображення, що містить більше, аніж один елемент (наприклад, зображення двох пересічних кіл), може бути розділене на елементи без яких-небудь втрат. З растровим зображенням таке, в загальному випадку, неможливо: програма «не знає» про елементи зображення і про належність тих або інших крапок до окремих елементів. У загальному випадку, векторне кодування добре підходить для роботи з кресленнями, схемами, картами, діаграмами, графіками і т.п., а растрове — для обробки фотографій і малюнків. Векторне зображення може бути без збитку для сприйняття перетворено в растр, в той час, як зворотне перетворення в загальному випадку проблематичне (хоча є програми, що дозволяють з тієї або іншою точністю розпізнавати графічні образи). Векторне кодування часто компактніше за растрове, але його відображення вимагає великих обчислювальних ресурсів.

Приклад, який завжди перед очима користувача комп'ютера, — шрифти. Коли точно відомий масштаб, в якому відображатиметься текст, часто використовуються растрові («фіксовані») шрифти, що є набором растрових зображень окремих букв і інших символів використовуваного алфавіту (наприклад, растрові шрифти використовуються відеокартою, що працює в текстовому режимі, але також часто і як елемент графічного інтерфейсу). Їх застосування дозволяє відображати символи з недосяжною іншим способом чіткістю, але, якщо потрібен більше ніж один розмір шрифту, знадобиться трудомістка робота по розробці декількох таких шрифтів.

Коли необхідне вільне масштабування шрифтів, використовуються векторні шрифти (насправді, більшість шрифтів, що масштабуються, — це бібліотеки програм, що «малюють» відповідні букви, часто - з урахуванням важливості їх окремих елементів для сприйняття; але різниця в даному випадку неістотна). Якість відображення дрібного кегля або на екрані з низькою роздільною здатністю у них нижча, але вони універсальніші.

Інші елементи графічних користувацьких інтерфейсів також використовують як векторну (більшість органів управління і більшість елементів оформлення вікон), так і растрову (пиктограми-«значки») графіку.

Вільні програми для роботи з векторною графікою

З безлічі вільних програм, призначених для редагування векторно-графічних файлів, розумні потреби більшості навчальних курсів може задовольнити будь-яка з наступних:

  • дуже простий векторний редактор Xfig для віконної системи XFree86
  • sodipodi (звичайно поставляється зі всіма операційними системами, що включають середовище GNOME)
  • Kontour (компонент популярного офісного пакету KOffice)

і, нарешті

  • OpenDraw (вхідна в пакет OpenOffice.org, знайомий нам вже по Лекції 1).

Рекомендується при нагоді хоча б коротко ознайомитися з кожною з них, щоб зрозуміти, яка краще підходить для конкретного навчального курсу. У цій лекції далі обговорюватиметься OpenDraw, виходячи з переваг, вже описаних в лекції 1, присвяченій іншому компоненту того ж пакету — word-процесору OpenWriter, але це не в якій мірі не означає непридатність для навчальних цілей інших перелічених програм.

Загальні характеристики OpenDraw

Як і решта компонентів пакету OO.o, OpenDraw використовує як «рідний» формат спеціально розроблений XML-додаток (про XML і про те, чому орієнтація на цей формат даних, що стрімко набирає популярність, важлива при виборі навчальних програм, див. матеріали Лекції 1).

Цей пакет доступний для популярних стандартних (Linux, Solaris) і нестандартних (Microsoft Windows, MacOS) операційних систем і пристойно (хоч і не ідеально) локалізований.

Найістотнішим же недоліком OpenDraw є відносно високі вимоги до апаратних ресурсів, тому його використання утруднене на старих або малопотужних комп'ютерах (для комфортної роботи над нескладними навчальними вправами повинно бути достатньо Intel P-II, Celeron або K6-2 з частотою від 500 Мгц або G3 з частотою від 350 Мгц при пам'яті від 64 MБ). Якщо потрібна демонстрація векторно-графічних можливостей на таких комп'ютерах, ми рекомендуємо sodipodi або ще легшу XFig.

Збереження в «чужих» векторних форматах (експорт) на сьогодні реалізовано тільки для ранніх версій попередника OpenOffice.org пакету StarOffice (і StarDraw як окремої програми). Зате імпорт (читання «чужих» форматів) можливий не тільки з універсальних векторних форматів, але і з DXF, що використовується в популярних системах автоматизованого проектування (САПР).

OpenDraw також дозволяє експортувати малюнок в багато растрових форматів або в гіпертекстову сторінку. Слід розуміти, що StarDraw, на основі якого розроблена програма, замислювалася як «офісний» графічний редактор, перш за все призначений для створення і редагування графічних елементів оформлення документообігу (супроводжуючих документи малюнків, карт, діаграм, графіків і ін.). Тому дії, типові для такої роботи, максимально полегшені і винесені на перший план, і OpenDraw містить масу широко вживаних в «офісній» графіці готових деталей (наприклад, готових стрілок і безлічі сполучних ліній, що часто використовуються в таких випадках). Для технічного креслення і схемотехніки OpenDraw не пристосована (хоча при нагоді в ній можна створити просте креслення або електронну схему). Документ OpenDraw називається «малюнком», що злегка дезорієнтує, оскільки насправді він може містити цілу «пачку» окремих зображень, званих слайдами. Кожен слайд, у свою чергу, може містити один чи декілька шарів.

Малюнок зберігається у файлі, який технічно є PKZip-архівом, що включає стильові визначення і власне зміст документа на мові XML. Ніякий інструментарій, спеціально призначений для обробки OpenDraw XML, нам не відомий.

Як і решта компонентів OpenOffice.org, OpenDraw надзвичайно широко конфігурується і настроюється під конкретне застосування. Для використання в навчальному контексті може виявитися корисним заздалегідь набудувати її для деякого скорочення великої кількості безпосередньо доступних користувачу функцій, щоб учень в них не загубився.

Основні можливості OpenDraw

Функціональність OpenDraw співрозмірна з більшістю інших редакторів векторної графіки і включає:

  • створення, форматування і перетворення об’єктів – графичних примітивів: відрізків і стрілок; квадратів і прямокутників; кіл, еліпсів, дуг, сегментів і секторів; кривих Безье, «вільних» кривих, ламаних і багатокутників;
  • створення, форматування і редагування об’єктів – текстовых написів (при введенні або редагуванні текстів доступна велика частина функціональності word-процесора OpenWord (описаного в «Лекції» 1)). Насправді, текст може міститися в будь-якому замкнутому контурі. До складу OpenDraw також входить декоративна функція FontWork, що дозволяє розташувати текст «фігурно» (уздовж дуги або кола);
  • імпорт растрово-графічних об'єктів (зокрема, і в якості текстур заливки векторно-графічних примітивів).

Перетворення об'єктів включає:

  • зміна характеристик ліній контура (вони можуть бути різного кольору, суцільними, пунктирними, подвійними і т.п.) і заливки (заповнення; воно можливо окремим кольором, колірним градієнтом(переходом) і навіть растровим зображенням) замкнутого контуру;
  • переміщення, зміна розмірів і поворот;
  • групування (перетворення декілька в один) і разгрупування об'єктів; комбінування і розкомбінування об'єктів (різниця між групуванням і комбінуванням надто тонка для нашого огляду);
  • обертання і дзеркальне відображення;
  • перетворення примітивів — ліній і контурів — в довільні криві або ламані;
  • вирівнювання і рівномірний розподіл (по вертикалі або горизонталі, щодо краю або центру);
  • спеціальні операції, деякі з яких описані нижче.

Більшість описаних операцій перетворення доступні як за допомогою меню (до пунктів якого можуть бути прив'язані «гарячі» клавіші), так і на піктографічних палітрах інструментів, разом з палітрою кольору присутніх (за бажанням) в головному вікні програми.

Точне позиціонування об'єктів полегшує можливість відобразити сітку розмітки слайду, а також команди вирівнювання об'єктів щодо вузлів цієї сітки, краю або центру листа (слайду), а також один щодо одного. Особливо корисно це при створенні достатньо формалізованих об'єктів.

Механізм стилів

Важливою особливістю OpenDraw є використання механізму стилів для форматування графічних елементів. Використання стилів у векторній графіці приблизно однакове з використанням того ж механізму при оформленні розміченого тексту (див. Лекцію 1) і має ті ж переваги перед «жорстким» форматуванням/оформленням.

Цей прийом дозволяє серйозно полегшити варіантне оформлення малюнків, відмовившись від «жорсткого» (такого, при якому для кожного об'єкту або групи об'єктів характеристики задаються уручну) форматування об'єктів. Наприклад, при підготовці схеми організаційної структури установи можна створити стиль, яким оформляються зображення підрозділів, припустимо, з блакитною заливкою в чорному контурі в 3 пункти завтовшки. Якщо пізніше потрібно буде зобразити ті ж підрозділи жовтими прямокутниками без рамки, не потрібно буде позначати їх вручну (уявість, наскільки це може бути трудомістко навіть для відносно простої організації типу середньої школи), достатньо буде лише змінити параметри стилю. Більш того, можна визначити стиль і для стрілок, що показують зв'язки між підрозділами, з «спадкоємством» кольору від кольору стилю підрозділів, якщо передбачається, що їх колір повинен співпадати. Стиль можна визначити і для слайду в цілому, що дозволяє одноманітно оформляти серію малюнків. Набір стилів можна об'єднати в шаблон (що зберігається в окремому файлі), якщо передбачається регулярне його використання.

«Логічні операції» над об'єктами, «3D» і морфінг

Цікавою функцією OpenDraw є наявність так званих логічних операцій над об'єктами. Два або більш заповнених контури можуть бути скомбіновані особливим чином, що породжує новий об'єкт, що є об'єднанням форм, їх перетином або «відніманням» однієї форми з іншої.

Ще однією цікавою особливістю програми є вбудована в неї базова функціональність імітації тривимірної графіки (3D-функції). Вона обмежена 1) конструюванням тіл обертання, 2) перетворенням в тіла обертання довільних двовимірних фігур, а також 3) екструзією (доданням останнім «глибини»). Важко зрозуміти необхідність рутинного конструювання тіл обертання в «офісній» графіці, проте для школи можливість такої демонстрації можливостей комп'ютерної графіки може бути вельми корисна.

Двовимірний морфінг (плавне перетікання фігур) реалізований в OpenDraw не найкращим з погляду естетичного результату, чином, проте цікавим дидактичний: насправді, програма просто групує задану (як «кількість кроків» морфінгу) кількість «проміжних» (за формою і кольором) фігур між морфованими фігурами. Створену таким чином групу можна розгрупувати і подивитися, що і як, власне, програма зробила.

Векторизація растрових зображень

Вище вже було відмічено про те, що, хоча перетворення векторного зображення в растр — елементарне технічне завдання, гарантоване зворотне перетворення в загальному випадку неможливе. Проте, існують програми, які намагаються це зробити.

OpenDraw володіє функцією векторизації, «захованої» в меню «Перетворити» під кличкою «В багатокутник». Якщо застосувати даний пункт меню до імпортованого растрового зображення, з'явиться вікно попереднього перегляду з можливістю задати деякі параметри і побачити результат.

Нічого містичного в цій функції не немає: програма шукає зв'язні області, залиті одним або близькими кольорами, і описує їх контур як багатокутник. Потім вона групує одержані фігури одного кольору і переходить до наступного кольору або групи кольорів. Результуючий векторний об'єкт є групою, що у свою чергу складається з колірних груп. Глибшого аналізу програма не проводить (у принципі, можна було б кожен виділений об'єкт намагатися апроксимувати із заданою точністю відрізком, конічним перетином або кривою Безье; це дозволило б розпізнати елементарні геометричні фігури, наприклад, просканувавши простий малюнок).

Ця функція передбачає надто мало параметри, щоб бути особливо корисною на практиці, проте для демонстрації того, в чому полягає процес векторизації, вона цілком підходить.

Ресурси

Пакет OO.o входить у всі великі (багатодискові універсальні) дистрибутиви ОС Linux і в багато «маленьких» (одно-, двох- і трьохдискові, виключаючи орієнтовані виключно на серверне застосування).

Ми рекомендуємо звернути увагу на російську збірку OO.o, що поставляється з ALT Linux («великий» дистрибутив Master 2.0 і «маленький» Junior 2.0; http://www.altlinux.ru) і ASPLinux 7.3 (у різних варіантах, http://www.asplinux.ru). У ній раніше, ніж в основній вітці, з'являються нові можливості, орієнтовані на російськомовного користувача, в той же час, затримка появи нових версій (по відношенню до основної гілки розробок) мінімальна.

Багатоплатформена (Linux і Microsoft Windows) російська збірка доступна у складі збірки OpenOffice.ru, її можна взяти на сайті http://www.openoffice.ru або придбати (список реселерів доступний на тому ж сайті) однодискову коробку. Про російські збірки ООо під «Макінтош», Solaris та інші ОС нам нічого не відомо, і їх користувачам можна порекомендувати слідувати по посиланнях з http://www.openoffice.org.

Основний російськомовний ресурс, присвячений OpenOffice, — це той же сайт http://www.openoffice.ru і його сателіти (включаючи http://docs.openoffice.ru).

Основний міжнародний ресурс — це базовий сайт розробки (http://www.openoffice.org). OO.o взагалі і OpenDraw зокрема наразі висвітлені лише в декількох публікаціях. Уваги заслуговують .