Scratch
Графический редактор для ZX Spectrum

Возможности
~~~~~~~~~~~

+ редактирование изображения произвольного размера (ширина и высота до 2048 включительно, площадь до 3.8 Мпикс)
+ поддержка редактирования нескольких картинок (переключение кнопками 1..4) с возможностью копирования между ними
+ поддержка формата .bmp (1/4/8/24 бита, без сжатия), включая перевёрнутые .bmp, сохранение в форматах 4 и 8 бит
+ загрузка и сохранение палитры в формате .act
+ загрузка и сохранение изображения в формате .scr
+ независимые инструменты на кнопках мыши (LMB и RMB)
+ одинаковое редактирование в масштабах 25%, 50%, 100%, 200%, 400%
+ рисование и заливка сеткой 50%
+ поддержка прозрачного цвета (16)
+ копирование с прозрачностью по любому цвету
+ работа с TR-DOS, SD-картой, NemoIDE, ATM IDE, USB flash (FAT12/16/32)
+ поддержка загрузки с именем файла в командной строке

Системные требования
~~~~~~~~~~~~~~~~~~~~

* компьютер, совместимый с ATM Turbo 2 или с ATM3
* рекомендуется Kempston mouse (управление стрелкой с клавиатуры: OPQA + Space(LMB) + M(RMB), Symbol Shift + Space = MMB (для рисования с клавиатуры удобнее Space+M, а это для заливки сеткой), одновременно работает Sinclair joystick (67890), в опросе учтены паразитные нажатия и возможность передвинуть стрелку на один пиксель быстрым щелчком по кнопке)
* рекомендуется SD-карта (Z-контролер или NeoGS) или HDD (NemoIDE или ATM IDE)
* рекомендуется палитра от DDp (4+4+4)
* рекомендуются энергонезависимые часы по схеме Mr.Gluk'а

Редактор работает в среде NedoOS.

Интерфейс
~~~~~~~~~

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

Сверху расположена строка состояния, показывающая номер и имя изображения, его размеры X*Y и текущий масштаб показа.

Инструменты расположены слева от рабочей зоны. Для выбора инструмента нужно навести на него мышкой и кликнуть LMB или RMB - тогда он будет назначен для этой кнопки мыши. Номера выбранных инструментов показаны в левом нижнем углу, над назначенными этим же кнопкам цветами. По умолчанию LMB работает как карандаш, а RMB как выделение области. Одновременное нажатие LMB+RMB или MMB позволяет рисовать сеткой 50% (смесь цветов LMB и RMB), инструментом LMB.

Горячие клавиши в режиме редактирования картинки:
w - выделение всего изображения. Повторное нажатие снимает выделение
с - очистка выделенного окна цветом RMB
x - отражение выделенного окна по горизонтали
y - отражение выделенного окна по вертикали
v - копирование выделенного окна (если видно окно режима копирования), в том числе между разными картинками
Caps Shift + v - то же, но цвет RMB при копировании считается прозрачным
n - новая картинка (меню)
z - обмен текущих цветов
+ - увеличение масштаба
- - уменьшение масштаба
1..4 - выбор текущего изображения
Стрелки (вверх, вниз, влево, вправо) позволяют двигаться по изображению в любом направлении. 

Справа от рабочей зоны расположен навигатор, который условно показывает положение видимой части редактируемого изображения в рабочей зоне. Клик по навигатору позволяет перейти к кликнутому месту (место клика будет соответствовать центру рабочей зоны).

Ниже показаны координаты курсора (X и Y) в изображении, ещё ниже - координаты левого верхнего угла, ширина и высота выделенной области.

Инструменты
~~~~~~~~~~~

Window - выделение окна (области изображения). Первый клик определяет угол, второй клик - противоположный угол, третий клик отменяет выделение. Одновременно выделено не более одного окна. Сразу после выделения включен режим копирования (показывает окно, куда копировать), он выключается при рисовании, обратно включается при выборе инструмента Window. При загрузке изображения окно отменяется.

Pencil - рисование линией толщиной 1 пиксель. Можно рисовать цветом LMB, цветом RMB или сеткой 50% (LMB+RMB или MMB). Если при клике удерживать Caps Shift, то рисуется линия от предыдущей точки (при переключении или загрузке изображений предыдущая точка отменяется, т.к. она может оказаться вне изображения).

Brush - рисование кистью толщиной 3 пикселя. Можно рисовать цветом LMB, цветом RMB или сеткой 50% (LMB+RMB или MMB).

Line - рисование линии от точки к точке. Первый клик определяет начало, второй клик - конец. Смена инструмента отменяет недорисованную линию. Можно рисовать сеткой (MMB)

Fill - заливка внутри связанной зоны, определяемой цветом под курсором. Можно заливать цветом LMB, цветом RMB или сеткой 50% (MMB).

Text - пока не поддерживается.

Файловое меню
~~~~~~~~~~~~~

Файловое меню вызывается по клику на строке состояния.

Клик по имени файла загружает этот файл. Клик по Back - выход из меню. Клик по Quit to OS - выход из программы.
Стрелки вверх, вниз - прокрутка каталога.

Переключение дисковых устройств - по клику на нужной букве диска на экране.

Для сохранения файла нужно кликнуть надпись Save. Для изменения имени файла кликнуть по названию файла в правом верхнем углу. Для удаления символов пользуйтесь клавишей BackSpace (CS+0). После измения имени нужно нажать Enter.

Формат сохранения зависит от расширения введённого имени файла:
- .bmp - 4 bit bmp
- .BMP - 8 bit bmp
- .act - палитра (формат PhotoShop: 16 записей по 3 байта (R,G,B))
- .scr - 6912 байт в обычном спектрумовском формате

Работа с палитрой
~~~~~~~~~~~~~~~~~

В изображении используется 16 цветов (или 17, если считать прозрачный), каждый из которых можно изменить. Первый цвет палитры также является цветом бордюра.

Выбор текущего цвета для LMB или RMB производится кликом соответствующей кнопкой мыши (LMB или RMB) по нужному цвету палитры. Клик ниже палитры выбирает цвет 16 (прозрачный).

Режим редактирования текущего цвета палитры включается по клику LMB+RMB (или MMB) на требуемом цвете.
При этом открывается следующий интерфейс: слева - палитра выбора оттенка и насыщенности, в середине - палитра выбора яркости, сверху справа - текущий редактируемый цвет и его изначальное состояние, справа - список предыдущих редактируемых цветов. Если кликнуть на один из предыдущих цветов, то этот цвет копируется в текущий редактируемый (так можно в несколько кликов переставить местами цвета в палитре). Клик на текущий редактируемый цвет или его изначальное состояние приводит к выходу из режима редактирования текущего цвета с выбором соответствующего цвета.

Палитра может работать в режиме 222 (палитра ATM-Turbo) или в режиме 444 (палитра DDp). Выбирается кликом на соответствующей надписи (показан текущий режим).

Для сохранения палитры нужно перейти в файловое меню, кликнуть по имени файла, изменить расширение на act и нажать Save. Для загрузки палитры из файла нужно в файловом меню кликнуть по нужному файлу с расширением *.act.

Разработчики
~~~~~~~~~~~~

* Быстров Дмитрий Михайлович (Alone Coder/Conscience) - руководитель проекта, код, графика, документация
* Гривин Николай Александрович - код, документация
* DimkaM - дисковые операции, тестирование

Alone Coder: концепцию редактора (картинка любого размера, главный цикл, частичное обновление экрана) я задумал в июле 2013 года, когда у меня не было компьютера. Первые куски кода (не считая заливки (1995) и управления курсором (1995-1999)) писал в 2014 году в связи с International Vodka Party, но не успел в срок, и проект к 2016 году был заброшен. В 2018 году редактор был выбран в качестве объекта для обучения программированию на ассемблере, тогда же написана основная часть программы. Дисковая подсистема была основана на библиотеке из NedoLang и библиотеке FatFS с драйверами от Savelij13. Вскоре дисковая подсистема была выделена в отдельный проект, который стал ядром операционной системы NedoOS (вместо ядра SMAN'а).

Лицензия
~~~~~~~~

Разрешается свободное распространение программы и её исходного кода. Нельзя портировать на другие платформы без согласования с руководителем проекта.
