>.Когда-то давно, когда я только учился програмировать, я писал на C++ под Винду, так вот в одной умной книжке я прочитал такую интересную вещь, что необязательно для отмены последних действий хранить всю картинку, альтернативный вариант - запоминать действия пользователя. В текстовом виде. Или в виде подобия опкодов. Когда буфер действий заполняется (а при таком виде заполнится он не скоро), то самое далёкое действие по дате выполняется над изображением, а остальные в буфере смещаются вниз. Действия, например, такие: MoveTo(x,y),LineTo(x,y),FloodFill(x,y)...
Я про это знаю. Просто из временных соображений реализован пока такой вариант.
>2.Я недавно на диске с учебниками математики обнаружил кучу литературы по обработке изображений(с примерами), с радостью, если есть время.
Замечательно. Через год воспользуюсь предложенными описаниями
Graphics editor <<ANIMAGE>>
Найден баг. При сворачивании анимэджа курсор начинает двигаться рывками.
Хочу добавить в библиотеку buf2d функции рисования окружности и заливки цветом. Подумал что можно взять их из animage, но не пойму входные параметры:
а именно назначение pointer to screen и output array, то же самое и в заливке:
Также в файле string.inc нашел возможность упростить код, вместо:
сделать так:
Code: Select all
;procedure <<<<<<calculate_circle>>>>>>
; IN
;eax - pointer to screen
;ebx - output array
;ecx - (screen size x)*bytes per pixel
;edx - x_c*65536+y_c
;esi r
; OUT
;eax - number of pixels
calculate_circle:
Code: Select all
;procedure <<<<<<flood fill>>>>>
;IN
;eax - pointer to screen
;ebx - pointer to output array
..........
flood_fill:
Также в файле string.inc нашел возможность упростить код, вместо:
Code: Select all
find_symvol:
;eax=string
;ebx=symvol
mov esi,eax
next_symvol:
xor ecx,ecx
mov cl,[eax]
cmp cl,bl
je symvol_fined
inc eax
jmp next_symvol
symvol_fined:
sub eax,esi
ret
Code: Select all
find_symvol:
;eax=string
;ebx=symvol
mov esi,eax
next_symvol:
cmp byte[eax],bl
je symvol_fined
inc eax
jmp next_symvol
symvol_fined:
sub eax,esi
ret
Мой вариант:IgorA wrote:Также в файле string.inc нашел возможность упростить код
Code: Select all
find_symbol:
;edi = string
;ecx = length of string
;al = symbol
push ecx
repne scasb
pop eax
sub eax, ecx
ret
Animage (как и KFM) нуждается в переписывании с 64 функциии на 68. Без этого в нем нельзя использовать "расшаренную" память и следовательно не прикрутить OpenDialog. Я смотрел код, но без знания что и где переписывать я его не могу - слишком много времени уйдет.
У меня хорошая новость - двух-дневным (вернее двух-вечерним) мозговым штурмом Animage переписан с 64 функции на 68, остается прикрутить OpenDialog. Возможно поправлю пару багов за одно.
Ну, и судя по коду - возможна довольно значительна оптимизация - например процедура установки указателей с 100% идентичным кодом была продублирована то ли 3, то ли 4 раза - уже сделал в этом случае оптимизацию кода.
Ну, и судя по коду - возможна довольно значительна оптимизация - например процедура установки указателей с 100% идентичным кодом была продублирована то ли 3, то ли 4 раза - уже сделал в этом случае оптимизацию кода.
SVN r. 1632
1) Приложение использует функцию 68 вместо 64, для управления памятью приложения.
2) Использование OpenDialog (через библиотеку proc_lib.obj), для указания пути к открываемому и сохраняемому файлу.
1) Приложение использует функцию 68 вместо 64, для управления памятью приложения.
2) Использование OpenDialog (через библиотеку proc_lib.obj), для указания пути к открываемому и сохраняемому файлу.
Надеюсь, оно больше не будет так перерисовываться по-дурацки.
Использование 68 функции никаких изменения в скорость работы и улучшение отрисовки не вносит. Оно просто позволяет теперь подключать библиотеки. Для изменения отрисовки требуется переделать вывод окна - не отрисовывать фон окна ядром, но при этом требуется самому заполнять все пустые места. Если будет время займусь, но пока не до этого.maximYCH wrote:Надеюсь, оно больше не будет так перерисовываться по-дурацки.
SVN r. 1643 - Animage версии 1.3
1) Устранено мерцание при перерисовке окна.
2) Устранена утечка памяти для стека (вызывать процедуры через call, а затем выходить из них через jmp still - очень плохая идея).
Программа все еще содержит не менее двух багов:
1) Если переместить окно с открытым меню - будет дискотека с цветомузыкой.
2) Если при создании новой картинки, чуть-чуть ошибиться, то лучше сразу закрыть приложение.
Они не столь заметны, но естественно нуждаются в исправлении.
И еще пожалуй нуждается в переписывании на тип окна с заданием сетки координат от базы, учитывающей параметры скина, но эта довольно большой объем работ.
1) Устранено мерцание при перерисовке окна.
2) Устранена утечка памяти для стека (вызывать процедуры через call, а затем выходить из них через jmp still - очень плохая идея).
Программа все еще содержит не менее двух багов:
1) Если переместить окно с открытым меню - будет дискотека с цветомузыкой.
2) Если при создании новой картинки, чуть-чуть ошибиться, то лучше сразу закрыть приложение.
Они не столь заметны, но естественно нуждаются в исправлении.
И еще пожалуй нуждается в переписывании на тип окна с заданием сетки координат от базы, учитывающей параметры скина, но эта довольно большой объем работ.
А также при активации инструментов выделения и иногда рисвования прямоугольника Animage вылетает.
Улучшения во внешнем виде:
- избавился от капса
- надписи в подменю теперь посередине
- help вылазил за границы выделения, исправлено
- немного улучшил внешний вид кнопочек
- теперь лучше видно как нажимается кнопочка (левый верхний бок какбэ вдавливается)
- правильно отрисовывается выбранный цвет
А неплохо бы ещё и программную часть обновить - скроллы, например.
- избавился от капса
- надписи в подменю теперь посередине
- help вылазил за границы выделения, исправлено
- немного улучшил внешний вид кнопочек
- теперь лучше видно как нажимается кнопочка (левый верхний бок какбэ вдавливается)
- правильно отрисовывается выбранный цвет
А неплохо бы ещё и программную часть обновить - скроллы, например.
Из хаоса в космос
Хотелось бы немного простых, но крайне важных изменений, чтобы программой можно было пользоваться:
- Ctrl+Z отмена (в идеали и другие хоткеи)
- изменение размера области не приводит к изменению курсора и инструмента редактирования
- по-умолчанию выбран инструмент карантдаш.
P.S. Копирование и вставка поломаны?
- Ctrl+Z отмена (в идеали и другие хоткеи)
- изменение размера области не приводит к изменению курсора и инструмента редактирования
- по-умолчанию выбран инструмент карантдаш.
P.S. Копирование и вставка поломаны?
Из хаоса в космос
А они разве работали?Leency wrote:P.S. Копирование и вставка поломаны?
День багрепертов Максимыча продолжается
Впрочем этот баг относится не только к Animage, такое наблюдается везде.
Впрочем этот баг относится не только к Animage, такое наблюдается везде.
- Attachments
-
-
animage.png (60.07 KiB)Viewed 9867 times
-
Who is online
Users browsing this forum: No registered users and 7 guests