Сегодня я сел за компьютер, и неожиданно для самого себя начал писать следующий текст в файл:
Code: Select all
// GOGL - пример простого растрового редактора для Pixi
// На создание этого примера меня натолкнули различные дискуссии на форуме пиксиланга.
// Название GOGL происходит от ника одного из создателей пиксиланга - goglus, а также
// созвучно с GEGL, новым графическим движком The Gimp. Однако, это всего лишь шутка и не стоит
// воспринимать ее слишком серьезно :)
//
// Посвящаяется всем начинающим изучать программированиие (и в особенности язык Pixilang).
//
// Эта программа преподносится, прежде всего, как пример для дальнейшего русширения или обучения.
//
// Ключевые особенности:
// - используются три вида инструментов
// * точки (пиксели)
// * прямые линии
// * кисти (можно загружать внешние gif'ы)
// - Поддержка функции отмены последнего действия
// - Простой инструмен выбора текущего цвета
GOGL прежде всего призван показать каким образом можно сделать простой растровый редактор на пикси.
Что еще не сделано, но хотелось бы:
1. До конца реализовать не доделанные функции (выбор кистей, параметры инструментов...)
2. Доделать и оптимизировать функционал undo/redo
3. Причесать, подчистить и структурировать код
4. Написать подробные комментарии к коду
5. Не работает инструмент "пипетка"
6. Написать статью/урок по "теории простых растровых редакторов" (ну это планы наполеоновские)
Примечание:
Программа уже сейчас поддерживает разные кисти.
Однако интерфейс выбора еще не реализован.
Если интересно - можно попробовать поменять в файле instruments.txt:
Code: Select all
current_brush = load_pixi("brushes/test01.gif")
current_brush_mask = load_pixi("brushes/test01_mask.gif")
// Можно сменить на
current_brush = load_pixi("brushes/default.gif")
current_brush_mask = load_pixi("brushes/default_mask.gif")
// или на это и посмотреть что получится
current_brush = load_pixi("brushes/calygraph01.gif")
current_brush_mask = load_pixi("brushes/calygraph01_mask.gif")
Чтобы выйти из инструмента выбора цвета нужно кликнуть по кнопке с цветом в меню.
Пока фоновый цвет используется только для очистки экрана.
На данный момент я не все доделал, что хотел. Однако решил всетаки выложить на форуме что есть. Я боюсь, что на этой неделе у меня не будет времени доделать програмку, а потом еще неизвестно что будет... Так что лучше что-то, чем ничего
Еще отмечу, что в процессе создания редактора я ощущал острую нехватку структур и функций в языке.
И если без структур еще можно обойтись, то без функций очень тяжело. Приходится передавать параметры через глобальные переменные. Это навевает воспоминания о доисторических временах Я помню, NightRadio уже поднимал этот вопрос... Можно это еще раз обсудить
Собственно скачать пример можно тут: http://zufs.net/upload/pixi/gogl-2008-10-21_01-00.zip