
 Лирическое вступление.

 Эта версия является самой первой "официально" выпущенной в свет.
 Дать ей номер 1.0 язык не поворачивается (пусть пока 0.6), так как еще
есть над чем поработать, но все основные механизмы, объекты и компоненты
уже написаны, дальше всё намного проще. Скажу сразу - версия еще сыроватая,
но главное ОНА ВСЕ-ТАКИ УЖЕ РАБОТАЕТ!!! то есть делает то что от нее требуется.
 Не надо пока придираться к разным мелким вещам, давайте "глобальные"
предложения и замечания. Такие вещи как "сохранение позиции окон и пользовательских
настроек", дальнейшая оптимизация скорости работы и т.д. будет позже, сейчас
главное создать "правильную" схему. То что у меня получилось, вам оценивать.
 В ближайшее время хочу добавить следущие "задания" (в порядке важности):
 - наложение произвольного битмапа и текста поверх изображения
 - вращение изображения на любой угол
 - различные матричные эффекты
 - изменение глубины цвета
 - создание "универсальной рамки"
 Также хочу из IP всю работу с графикой вынести в отдельную dll, чтобы потом
ее можно было использовать в GM (GM уже стала "слабее" чем в IP в плане графики).
Хотя, может, плюну на минимизацию размера и свалю все в одну кучу.

 Внимание! При запуске "Run project" пока нет никаких проверок на "вложенность"
           и "пересечение имен" source и target директорией - будьте внимательны.
           В TARGET ДИРЕКТОРИИ ВСЕ НЕОБХОДИМЫЕ ФАЙЛЫ БУДУТ УДАЛЕНЫ БЕЗ ВОПРОСОВ!
           Остановить процесс генерации пока нельзя ;)
 Внимание! Под ХР не тестировалось - могут быть проблемы.
 Внимание! Будьте осторожны с файлами "проекта" и "сценария" - не редактируйте их вручную
           без особой необходимости.
           Так же, в дальнейшем, могут поменяться имена некоторых переменных в этих файлах.
 Внимание! Пока не сделано сохранение "многострочных" переменных в файл, так что пока
           используйте только одну строку для JPEG-comment.

 И еще... В программе заложена возможность работы с несколькими "экзотическими"
 форматами типа FAX, CUT, PAL, SCR, которые лично я ни разу не встречал -
 так может их вообще выкинуть?


 ---------------------
 Image Processor v.0.6
 ---------------------

 Основная задача
 ~~~~~~~~~~~~~~~
 Пакетная обработка разнотипных растровых графических файлов в соответствии со
списком ("сценарием") определенных пользователем правил ("заданий") обработки.

 Термины и сокращения
 ~~~~~~~~~~~~~~~~~~~~
 IP - Image Processor
 GM - Gallery Maker
 "Задание" (task) - графический эффект или преобразование.
 "Сценарий" (scenario) - упорядоченный список "заданий", которые должны быть
  последовательно применены к исходному изображению.
 "Проект" (project) - список каталогов, которые программа должна обработать в
  соответствии с заданными "сценариями".
 "Тестирование" - получение временного графического изображения на основе
  исходного изображения и указанного "задания".

 Требования к оборудованию и OS
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Win95+, P-133, RAM 16 Mb ...

 Ограничения
 ~~~~~~~~~~~
 Число "заданий" практически не ограничено. 
 Программа позволяет обработать _любой_ исходный каталог по _любому_ "сценарию".
 Никаких изменений исходных файлов при "тестировании" не происходит.
 Программа оптимизирована на работу в режиме "16,7 Million colors (24 BitsPerPixel)"
 Поэтому "на выходе" только jpg и bmp, в дальнейшем хочу добавить еще png
 и, возможно, gif и tif. Необходимости в других форматах я пока не вижу, мне кажется,
 что для получения "экзотических" форматов надо использовать специализированные конверторы,
 цель же данной программы несколько иная.

 Краткий обзор
 ~~~~~~~~~~~~~
 Пока перенесены все "задания" которые уже были в ядре (к тому же многие
из них существенно переработаны), а в перспективе хочу добавить еще много
других графических эффектов. 
 IP будет работать в двух режимах:
 - "автономном". Отдельное приложение.
 - "режим ядра GM". Ядро передает имя графического файла и имя "сценария",
   по которому его требуется обработать.
   Таким образом на "ядре GM" останется только функция работа с HTML-файлами.
 Для "автономного" режима необходимо создать "проект" в котором будут заданы все
необходимые исходные параметры.
 Хотя редактирование "проекта" и "сценария" происходит в одном приложении,
фактически, они хранятся в разных файлах (.ipp и .ips), в "проекте"
указываются только ссылки на разные "сценарии".

 Установка и настройка IP
 ~~~~~~~~~~~~~~~~~~~~~~~~
 1. распаковать архив в любой каталог
 2. в этот же каталог положить несколько картинок (bmp, jpg, gif...),
    эти картинки будут использоваться в качестве "тестовых"
 Пункт 2 можно пропустить, выбор каталога с "тестовыми" файлами можно
 произвести в окне "Test".
 
 Как программа работает
 ~~~~~~~~~~~~~~~~~~~~~~
 Пока есть несколько окон: Основное, TaskSettings, TaskTest, Settings и Log.

 "Основное" окно
 ~~~~~~~~~~~~~~~
 В нем идет управление "проектами" и "сценариями". При одновременной работе 
переключение между этими подсистемами производится через пункт меню "Window".
 При закрытии "проекта" или "сценария" программа автоматически переключится
на другой объект (если это возможно).

 Работа с "проектом"
 -------------------
 Для создания нового "проекта" необходимо выбрать пункт меню "Project->New".
Теперь надо задать нужные значения "Source", "Target"... и нажать "Add".
После этого новая запись будет добавлена в список. Для редактирования какой-либо
записи выбираем ее из списка и изменяем необходимые данные, после чего жмем
на кнопку "Replace" для сохранения изменений.
 Для того чтобы не было проблем с дублирующимися именами файлов программа
автоматически создает в целевом каталоге "специальный" подкаталог для каждого
исходного каталога.
 Например: в "проекте" занесено две записи, у одной исходный каталог
           "C:\Pic\Animals\", у другой - "C:\My\Space\", и в обоих случаях
           указан целевой каталог "C:\Out\"
           Таким образом, результаты работы программы для первой записи
           будут расположены в каталоге "C:\Out\C__Pic_Animals\", для второй -
           "C:\Out\C__My_Space\".

 Работа со "сценарием"
 ---------------------

 Создать новый сценарий - "Scenario->New". После этого должен автоматически
создаеться шаблон "сценария" - это три "задания": "LoadFromFile",
"Resize", "SaveToFile" (пока в шаблон я добавляю _все_ возможные задания).
 Любой "сценарий" должен обязательно начинается с "задания" "LoadFromFile" и
заканчивается "SaveToFile". Между ними располагаются все прочие "задания".
 Для создание нового "задания".
 - нажать на кнопку "New" и выбрать тип "задания" (из предлагаемого списка).
   Имя "задания" будет подставлено автоматически, но можно ввести любое
   кроме пробелов).
 Up/Down - изменения порядка следования (выполнения) "заданий"

 В дальнейшем я планирую создание/удаление/перемещение заданий сделать через DragDrop.

 Выполнение комплексного тестирования сценария (кнопка "Test").
 --------------------------------------------------------------
 Данная функция доступна только если:
 - в списке выбрано любое "задание" кроме "LoadFromFile" или "SaveToFile".
 - в окне "TaskTest" выбран какой-либо файл
 Режим работы зависит от выбранного значения "Test mode":
 - "None" - ничего не делать
 - "Single" - тестирование только текущего выбранного "задания"
 - "Full" - тестирование всего сценария целиком (за исключением
   "LoadFromFile" и "SaveToFile").

 Окно "TaskSettings"
 ~~~~~~~~~~~~~~~~~~~
 Автоматически показывается при выборе "задания" любого типа,
 Активизируется по кнопке "Edit" или по клавише "Enter" на выбранном "задании". 
 В нем можно:
 - поменять тип и имя "задания" (если разрешено в "Settings")
   Внимание: если во время редактирования "задания" меняется его тип,
   то необходимо сохранить "задание", иначе кнопка "Test settings"
   будет заблокирована.
 - сохранить текущие настройки "задания" - "Save settings"
 - нажатие на кнопку "Cancel" или попытка переключится на другое окно приложения,
   при необходимости, вызовет вопрос об сохранении/отмене изменений
 - кнопка "Default settings" - загрузить настройки "по умолчанию" для 
   активного "задания".
   Внимание: Default-настройки загружаются на основе типа "задания", которое
   определено при его последнем сохранении и только в визуальные контролы.
   Пока вы не нажмете "Save settings" эти настройки не будут сохранены в сценарии!
 - выполнить тестирование текущих настроек "задания" - "Test settings"
   Внимание:
    - тестировать можно все "задания" кроме "LoadFromFile" и "SaveToFile"
    - тестирование возможно только если в окне "TaskTest" выбран какой-либо файл
    - тестирование "задания" производится на основе текущих значений
      контролов, а не последних сохраненных настроек.

 При редактивание числовых полей есть следущие нюансы:
 - при наведении курсора мышки на такое поле должен появиться "хинт" с указанием
   диапазона допустимых значений.
 - "Enter" или "Tab"- переход в следущее поле. Вы не сможете переключиться на
   другой элемент пока не введете "правильное" значение.
 - по кнопке "Esc" восстанавливается первоначальное значение поля
 - для ленивых: нажатие кнопок "Up" и "Down" приводит к соответствующему 
   увеличению или уменьшению значения числового поля на единицу.


 Окно "TaskTest"
 ~~~~~~~~~~~~~~~
 Автоматически вызывается при выборе любого "задания" кроме "LoadFromFile" или "SaveToFile".
 В нем можно:
 - выбрать директорию и файлы на основе которых будет производиться
   тестирования "задания" или всего "сценария" целиком
 - пересортировывать список файлов (попап-меню по правой кнопке мыша)
 - посмотреть основные параметры (Width, Height, ColorDepth) изображения (для wmf и ico пока бывают глюки)
   на основе которого будет проведено тестирование и время его выполнения.
   Время выполнения весьма любопытный параметр предназначенный, в основном,
   для тестивания скорости работы алгоритмов.
 - дабл-клик (или клавиша Enter) по файлу вызывает тестирование текущего "задания".
 - таскать изображения "SourceImage" и "ResultImage" для просмотра результата выполнения "задания" 
 - попап-меню по правой кнопке мыша:
   - масштабирование этих двух изображений 
   - возможность сохранения полученного изображения в файл (как Bitmap)

 Внимание: не забывайте что режим "тестирования" зависит от параметра "Test mode"

 Дополнительно реализовано:
 - "умное" масштабирование изображений - то есть при изменении масштаба 
   изображения программа пытается автоматически спозиционироваться на
   центр той области изображения которая была до смены масштаба.
   Для масштабирования используется алгоритм Lanczos3, так как он дает
   наилучшее качество результирующего изображения.
 - синхронизация изображений "SourceImage" и "ResultImage" - то есть если в
   результате выполнения "задания" размеры (высота и ширина ) этих двух
   изображений равны, то при смена масштаба одного из них или его перемещение автоматически
   скажется на другом изображении

 И еще. Эти два фрейма с изображениями ("SourceImage" и "ResultImage") предназначены для
 просмотра изменений изображения после наложения эффекта. Это не графический вьювер!
 Возможно, в дальнейшем их немного увеличу и вынесу в отдельное окно.


 Окно "Settings"
 ~~~~~~~~~~~~~~~
 Собственно, настроек пока почти нет. См. файл "ip.ini"

 Окно "Log"
 ~~~~~~~~~~
 Лог пока еще кривоват, не обращайте внимания ...


 Важное замечание:
 Я постарался сделать так чтобы любое "задание" выполняло только свою
 конкретную функцию. Поэтому, например, если вы хотите получить на выходе
 изображение с эффектом "Stamp" у которого "дырочки" по углам "правильные", то
 перед этим вы должны выполнить некий "Resize" для получения предварительного
 изображения с "правильным" размером (зависит от размера ваших "дырочек").
 Вобщем придется немного подумать и чуть-чуть посчитать - калькуляторы у всех есть.

 Вот вроде пока и все...
