Graphics editor <<ANIMAGE>>

Processing, playback of audio and video
  • Найден баг. При сворачивании анимэджа курсор начинает двигаться рывками.
  • Хочу добавить в библиотеку buf2d функции рисования окружности и заливки цветом. Подумал что можно взять их из animage, но не пойму входные параметры:

    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:
    а именно назначение pointer to screen и output array, то же самое и в заливке:

    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
    Код не смотрел, но рискну предположить, что pointer to screen - это указатель на буфер где рисуется графический примитив.
  • Animage (как и KFM) нуждается в переписывании с 64 функциии на 68. Без этого в нем нельзя использовать "расшаренную" память и следовательно не прикрутить OpenDialog. Я смотрел код, но без знания что и где переписывать я его не могу - слишком много времени уйдет.
  • У меня хорошая новость - двух-дневным (вернее двух-вечерним) мозговым штурмом Animage переписан с 64 функции на 68, остается прикрутить OpenDialog. Возможно поправлю пару багов за одно.

    Ну, и судя по коду - возможна довольно значительна оптимизация - например процедура установки указателей с 100% идентичным кодом была продублирована то ли 3, то ли 4 раза - уже сделал в этом случае оптимизацию кода.
  • SVN r. 1632
    1) Приложение использует функцию 68 вместо 64, для управления памятью приложения.
    2) Использование OpenDialog (через библиотеку proc_lib.obj), для указания пути к открываемому и сохраняемому файлу.
  • Надеюсь, оно больше не будет так перерисовываться по-дурацки.
  • maximYCH wrote:Надеюсь, оно больше не будет так перерисовываться по-дурацки.
    Использование 68 функции никаких изменения в скорость работы и улучшение отрисовки не вносит. Оно просто позволяет теперь подключать библиотеки. Для изменения отрисовки требуется переделать вывод окна - не отрисовывать фон окна ядром, но при этом требуется самому заполнять все пустые места. Если будет время займусь, но пока не до этого.
  • SVN r. 1643 - Animage версии 1.3
    1) Устранено мерцание при перерисовке окна.
    2) Устранена утечка памяти для стека (вызывать процедуры через call, а затем выходить из них через jmp still - очень плохая идея).

    Программа все еще содержит не менее двух багов:
    1) Если переместить окно с открытым меню - будет дискотека с цветомузыкой.
    2) Если при создании новой картинки, чуть-чуть ошибиться, то лучше сразу закрыть приложение.
    Они не столь заметны, но естественно нуждаются в исправлении.

    И еще пожалуй нуждается в переписывании на тип окна с заданием сетки координат от базы, учитывающей параметры скина, но эта довольно большой объем работ.
  • А также при активации инструментов выделения и иногда рисвования прямоугольника Animage вылетает.
  • Улучшения во внешнем виде:
    - избавился от капса
    - надписи в подменю теперь посередине
    - help вылазил за границы выделения, исправлено
    - немного улучшил внешний вид кнопочек
    - теперь лучше видно как нажимается кнопочка (левый верхний бок какбэ вдавливается)
    - правильно отрисовывается выбранный цвет

    А неплохо бы ещё и программную часть обновить - скроллы, например.
    Из хаоса в космос
  • Хотелось бы немного простых, но крайне важных изменений, чтобы программой можно было пользоваться:
    - Ctrl+Z отмена (в идеали и другие хоткеи)
    - изменение размера области не приводит к изменению курсора и инструмента редактирования
    - по-умолчанию выбран инструмент карантдаш.

    P.S. Копирование и вставка поломаны?
    Из хаоса в космос
  • Leency wrote:P.S. Копирование и вставка поломаны?
    А они разве работали?
  • День багрепертов Максимыча продолжается ;)
    Впрочем этот баг относится не только к Animage, такое наблюдается везде.
    Attachments
    animage.png
    animage.png (60.07 KiB)
    Viewed 9640 times
  • Who is online

    Users browsing this forum: No registered users and 2 guests