Page 7 of 7

Re: Graphics editor <<ANIMAGE>>

Posted: Thu Mar 17, 2016 5:35 pm
by dunkaist
libimg exports img.formats_table:

Code: Select all

align 4
img.formats_table:
  .bmp  dd LIBIMG_FORMAT_BMP,  img.is.bmp,  img.decode.bmp,     img.encode.bmp, 1 + (1 SHL Image.bpp24) + (1 SHL Image.bpp32)
  .ico  dd LIBIMG_FORMAT_ICO,  img.is.ico,  img.decode.ico_cur, img.encode.ico, 0
  .cur  dd LIBIMG_FORMAT_CUR,  img.is.cur,  img.decode.ico_cur, img.encode.cur, 0
  .gif  dd LIBIMG_FORMAT_GIF,  img.is.gif,  img.decode.gif,     img.encode.gif, 0
  .png  dd LIBIMG_FORMAT_PNG,  img.is.png,  img.decode.png,     img.encode.png, 0
  .jpg  dd LIBIMG_FORMAT_JPEG, img.is.jpg,  img.decode.jpg,     img.encode.jpg, 0
  .tga  dd LIBIMG_FORMAT_TGA,  img.is.tga,  img.decode.tga,     img.encode.tga, 0
  .pcx  dd LIBIMG_FORMAT_PCX,  img.is.pcx,  img.decode.pcx,     img.encode.pcx, 0
  .xcf  dd LIBIMG_FORMAT_XCF,  img.is.xcf,  img.decode.xcf,     img.encode.xcf, 0
  .tiff dd LIBIMG_FORMAT_TIFF, img.is.tiff, img.decode.tiff,    img.encode.tiff,0
  .pnm  dd LIBIMG_FORMAT_PNM,  img.is.pnm,  img.decode.pnm,     img.encode.pnm, 1 + (1 SHL Image.bpp1) + (1 SHL Image.bpp8g) + (1 SHL Image.bpp24)
  .wbmp dd LIBIMG_FORMAT_WBMP, img.is.wbmp, img.decode.wbmp,    img.encode.wbmp,0
  .xbm  dd LIBIMG_FORMAT_XBM,  img.is.xbm,  img.decode.xbm,     img.encode.xbm, 0
  .z80  dd LIBIMG_FORMAT_Z80,  img.is.z80,  img.decode.z80,     img.encode.z80, 0 ;this must be the last entry as there are no signatures in z80 screens at all
        dd 0
The last field is capabilities:

Code: Select all

struct FormatsTableEntry
  Format_id     dd ?
  Is            dd ?
  Decode        dd ?
  Encode        dd ?
  Capabilities  dd ?
ends
LSb of capabilities means encoding is supported. Bit N set means that encoding supported for pixel format where Image.bpp* = N.

There is encoding example. I didn't check if it works now, it is 3 years old.

Re: Graphics editor <<ANIMAGE>>

Posted: Thu Mar 17, 2016 10:17 pm
by IgorA
рев. 6355
Изменил алгоритм работы с командой undo. Вместо копирования буферов по цепочке просто сдвигаю указатели. Так получается быстрее и кода меньше, потому что легче указатель поменять чем весь буфер с изображением перегонять.
Но перед рисованием всеравно буфер с изображением копируется, но так и было раньше.
dunkaist wrote:There is encoding example. I didn't check if it works now, it is 3 years old.
Это хорошо что есть пример, значит возможно в будущем будет сохранение в png.

Re: Graphics editor <<ANIMAGE>>

Posted: Thu Mar 24, 2016 3:04 pm
by Leency
Updated Animage.
Code by IgorA.
GUI by me.

Re: Graphics editor <<ANIMAGE>>

Posted: Thu Mar 24, 2016 8:10 pm
by IgorA
rev 6371
добавил в меню группу Filters с поворотами изображения,
также добавил выделение текущего масштаба для удобства пользования.

Думаю что теперь animage уже не будет кандидатом на удаление из образа :P

Re: Graphics editor <<ANIMAGE>>

Posted: Sat Mar 26, 2016 10:25 pm
by IgorA
rev 6379
Исправил рамку для выделения, которая перестала стираться после рев. 6355. Сделал новый алгоритм, который рисует рамку для выделения сразу в области экрана, а не в область изображения.
Но все еще нужно будет дорабатывать работу с командами Copy, Paste. Потому что они работают не так как нужно, а именно:
1) перемещение рамки для выделения считается как событие редактирования файла, что не хорошо.
2) копирование приводит к пропаданию рамки с экрана и для вставки изображения нужно рисовать рамку в нужном месте снова
3) может еще что-то есть точно не знаю

Re: Graphics editor <<ANIMAGE>>

Posted: Wed Nov 23, 2016 12:30 pm
by IgorA
rev 6741
Сделано сохранение файлов в *.png . Можно также и в *.bmp сохранять, но по умолчанию поставлено *.png . Можно протестировать сохраняемые файлы в Windows, потому как я только внутри Колибри их пробовал открывать.

Re: Graphics editor <<ANIMAGE>>

Posted: Mon Apr 23, 2018 9:15 pm
by Leency
1. Открываем файл из вложения в Animage
2. Увеличение х8
3. Цвет - Белый
4. Инструмент - Заливка
5. Нажимаем "залить" выше клюва http://prntscr.com/j94dxy

=> программа вылетает

Re: Graphics editor <<ANIMAGE>>

Posted: Tue Apr 24, 2018 11:03 pm
by IgorA
Запустил в отладчике:
animage_240418.png
animage_240418.png (16.26 KiB)
Viewed 8062 times
Вроди нашел функцию где вылетает:

Code: Select all

; function <<<<<<GetColorOfPixel>>>>>>
; IN
; eax - pointer to picture
; ebx - picture size x
; esi - x coordinat of pixel
; edi - y coordinat of pixel
; OUT
; eax - color of pixel in coordinats (x,y)
GetColorOfPixel:

  imul ebx,edi
  add ebx,esi
  lea ebx,[ebx+ebx*2]
  add eax,ebx
  mov ebx,[eax]
  and ebx,0xffffff
  mov eax,ebx
  ret
Судя по всему в esi приходит не корректная координата по оси x = -1. Из-за этого не правильно вычисляется адрес в регистре eax и происходит вылет. Можно в функцию GetColorOfPixel внести проверку координаты и сделать аварийный выход выход из нее, но тогда возможно что не корректная координата вылезет еще где-нибудь. Потому наверное правильно будет найти места где координата становится не правильной и править там.

Re: Graphics editor <<ANIMAGE>>

Posted: Wed Apr 25, 2018 9:18 am
by IgorA
rev 7258
добавил в функцию GetColorOfPixel проверку координаты x и аварийный выход если она меньше 0 или больше ширины изображения. Вылетов программы при заливке не стало.

Re: Graphics editor <<ANIMAGE>>

Posted: Thu May 03, 2018 4:48 pm
by Leency
Кастомный курсор нужно бы органичить областью рисования

Re: Graphics editor <<ANIMAGE>>

Posted: Thu Nov 08, 2018 10:28 pm
by Leency
Есть неприятный баг. Видео https://youtu.be/A2-oKI-1-sI?t=677
Суть: когда нажимаем на палитре http://prntscr.com/lg0mgg, то срабатывает сразу нажатие на холст.

Re: Graphics editor <<ANIMAGE>>

Posted: Fri Nov 20, 2020 11:13 pm
by IgorA
rev 8227
перевел программу на новый макрос load_lib.mac

Re: Graphics editor <<ANIMAGE>>

Posted: Sat Nov 28, 2020 8:13 pm
by IgorA
Leency wrote:Есть неприятный баг. Видео https://youtu.be/A2-oKI-1-sI?t=677
Суть: когда нажимаем на палитре http://prntscr.com/lg0mgg, то срабатывает сразу нажатие на холст.
rev 8271
Перевел программу на использование ColorDialog, вместо выпадающей палитры. Теперь баг убран вместе с палитрой.