?login_element?

Subversion Repositories NedoOS

Rev

Rev 302 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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

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

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

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

* компьютер, совместимый с 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 - выход из программы.
Стрелки вверх, вниз - прокрутка каталога.

Переключение дисковых устройств: "1" - IDE HDD (Master), "2" - IDE HDD (Slave), "3" - SD-карта (NeoGS), "4" - дискета TR-DOS (текущий дисковод), "5" - SD-карта (Z-controller). По умолчанию выбран Z-controller.

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

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

В изображении используется 16 цветов, каждый из которых можно изменить. Рекомендуется первый цвет оставлять чёрным, а последний - белым, так как они используются при показе интерфейса редактора.

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

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

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

Формат палитры .act: 16 записей по 3 байта (R,G,B).

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

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

Дисковая подсистема основана на библиотеке FatFS с драйверами от Savelij13.
Первые наброски редактора написаны в 2014 году. В 2018 году редактор выбран в качестве объекта для обучения программированию на ассемблере, тогда же написана основная часть кода.

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

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

Настройка системы
~~~~~~~~~~~~~~~~~

Образы дисков (чисто для примера, там нужны только bmp'шки, образ HDD можно расковырять через WinImage, а образ SD-карты замаунтить в новых виндовсах, главное не забыть потом размаунтить):
http://alonecoder.nedopc.com/sd.zip
http://alonecoder.nedopc.com/hdd.zip

Настройки для эмулятора UnrealSpeccy:

[ZC]            ; Z-Controller settings
; sdcard image
SDCARD="sd.vhd"

[HDD]
Scheme=NEMO-DIVIDE (для АТМ3 версии) или ATM (для ATM2 версии)

Image0=hdd.ima
CHS0=609/16/63  ; max size, accessible through CHS. not used for real drive
LBA0=614400    ; max size, accessible through LBA. not used for real drive
HD0RO=0         ; read only flag
CD0=0           ; 1 if image is cdrom

eVHDattach.bat (можно примонтировать и по клику на *.vhd):
d:
cd zx\us035\
@echo off
if exist VHDattach.txt (
        @echo on
        echo VHDattach.txt exist
        @echo off
) else (
        @echo on
        echo create VHDattach.txt
        @echo off
        echo select vdisk file="%cd%\sd.vhd" > VHDattach.txt
        echo attach vdisk >> VHDattach.txt
        rem echo select vdisk file="%cd%\sd.vhd" >> VHDattach.txt
        rem echo select part 1 >> VHDattach.txt
        rem echo assign letter=K >> VHDattach.txt
)
if exist sd.vhd (
        @echo on
        echo sd.vhd attach
        diskpart /s VHDattach.txt
        @echo off
) else (
        @echo on
        echo create VHDcreate.txt
        @echo off
        echo create vdisk file="%cd%\sd.vhd" MAXIMUM=300 TYPE=FIXED > VHDcreate.txt
        echo select vdisk file="%cd%\sd.vhd" >> VHDcreate.txt
        echo attach vdisk >> VHDcreate.txt
        echo create part primary  >> VHDcreate.txt
        echo select part 1 >> VHDcreate.txt
        echo format label="ZX" quick fs=FAT32 >> VHDcreate.txt
        echo assign >> VHDcreate.txt
        @echo on
        diskpart /s VHDcreate.txt
        del VHDcreate.txt
        @echo off
)
@echo on
pause

eVHDdetach.bat:
d:
cd zx\us035\
@echo off
if exist VHDdetach.txt (
        @echo on
        echo VHDdetach.txt exist
        @echo off
) else (
        @echo on
        echo create VHDdetach.txt
        @echo off
        echo select vdisk file="%cd%\sd.vhd" > VHDdetach.txt
        echo detach vdisk >> VHDdetach.txt
)
@echo on
diskpart /s VHDdetach.txt
pause