Page 7 of 7

Re: Функции рисования 2d графики (библиотеки vectors и buf2d

Posted: Tue Feb 09, 2016 1:54 am
by IgorA
rev 6175
Разделил файл buf2d.asm на 3 части для удобства редактирования, был уж очень большой 120 кб. Вынес функции по рисованию в буфере в файл fun_draw.inc, а также вынес все воксельные функции в отдельный файл fun_voxel.inc.
Расширил функцию buf2d_resize, а именно добавил параметр который указывает на то менять ли размеры буфера под изображение или менять само изображение. Изменение размеров изображения работает пока только на сжатие.
Пока что программ использующих это сжатие еще нет, но оно может быть полезным так как алгоритм сжатия учитывает цвета всех пикселей исходного изображения. Пример сжатия на картинке внутри.
Spoiler:
resize_w.png
resize_w.png (64.95 KiB)
Viewed 10112 times
rev 6178
В buf2d_resize добавлено сжатие и по высоте.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Sat Dec 17, 2016 3:06 pm
by 0CodErr
В каком сейчас состоянии функции дизеринга?
Что-нибудь изменилось с того момента viewtopic.php?f=24&t=1319&start=75#p50610
Или этими функциями по-прежнему нельзя полноценно пользоваться?

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Sat Dec 17, 2016 9:39 pm
by Heavyiron
0CodErr wrote:В каком сейчас состоянии функции дизеринга?
Я вроде забил тогда, даже и не помню уже.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Wed Feb 07, 2018 9:12 pm
by 0CodErr
Кто-то будет допиливать дизеринг?
Почти 5 лет прошло с того момента http://board.kolibrios.org/viewtopic.php?p=50610#p50610
Зачем тогда было добавлять в библиотеку заведомо проблемный код?

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Fri Feb 09, 2018 11:16 pm
by IgorA
0CodErr wrote:Кто-то будет допиливать дизеринг?
...
Зачем тогда было добавлять в библиотеку заведомо проблемный код?
Дело в том что я не автор данного кода, потому что-бы допилить нужно вникнуть в алгоритм. Когда его добавлял в библиотеку то про проблемы не знал.

Если вдруг кому-то очень нужен алгоритм дизеринга с гарантией от зависаний, то можно создать буфер немного большего размера по высоте (где-то на 1 или 2 пикселя точно не помню), а потом в программе уменьшить этот размер, что-бы не было залезаний за пределы выделенной памяти. Но такой метод борьбы с зависаньями не красивый, потому в библиотеку я его сунуть не буду.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Fri Feb 09, 2018 11:31 pm
by Siemargl
IgorA wrote:
0CodErr wrote:Кто-то будет допиливать дизеринг?
...
Зачем тогда было добавлять в библиотеку заведомо проблемный код?
Дело в том что я не автор данного кода, потому что-бы допилить нужно вникнуть в алгоритм. Когда его добавлял в библиотеку то про проблемы не знал.

Если вдруг кому-то очень нужен алгоритм дизеринга с гарантией от зависаний, то можно создать буфер немного большего размера по высоте (где-то на 1 или 2 пикселя точно не помню), а потом в программе уменьшить этот размер, что-бы не было залезаний за пределы выделенной памяти. Но такой метод борьбы с зависаньями не красивый, потому в библиотеку я его сунуть не буду.
Я те так скажу.

Проектировщики всех времен и народов берут двойной запас по резервам.
Так что этот метод работает.

Для Айти я бы предложил точно рассчитанный запас на худший случай (+1 Сигма) - и это точно будет красиво.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Fri Feb 09, 2018 11:48 pm
by 0CodErr
IgorA wrote:Когда его добавлял в библиотеку то про проблемы не знал.
Обманывать не хорошо!
IgorA wrote:Интересные алгоритмы, когда разгребусь с работой возможно добавлю эти функции в buf2d.
0CodErr wrote:На некоторых изображениях тот фильтр вылетает. Пример такого изображения в архиве.
IgorA wrote:...возможно добавлю эти функции в buf2d.
Я думаю, они больше пригодятся в libimg. Например при конвертировании в монохромное изображение. Полученная картинка будет более информативной.
IgorA wrote:rev 3105
добавил 3 алгоритма в библиотеку buf2d
Siemargl wrote:Для Айти я бы предложил точно рассчитанный запас на худший случай (+1 Сигма) - и это точно будет красиво.
В данном случае — это из пушки по воробьям. Алгоритм просто "немного" кривой: не учитывается, что память — ресурс ограниченный.
Один из вариантов я предлагал 4,5 года назад вон там http://board.kolibrios.org/viewtopic.php?p=51925#p51925

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Sat Feb 10, 2018 3:04 pm
by IgorA
Обманывать не хорошо!
IgorA писал(а):
Интересные алгоритмы, когда разгребусь с работой возможно добавлю эти функции в buf2d.
Не пойму где обман? :?: Там же не написано что я досконально изучу работу самих алгоритмов, там просто сказано что в свободное от работы время добавлю эти функции в библиотеку.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Sat Feb 10, 2018 3:26 pm
by 0CodErr
IgorA, ты добавил код проигнорировав моё сообщение о вылете. А теперь смеешь утверждать, что не знал об этом. Или у тебя "чукча не читатель, чукча писатель" :mrgreen:

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Wed Oct 07, 2020 7:45 pm
by lev
Функция заливки сначала рисует первую точку, а уже потом проверяет, а не граница ли это. Если не отпускать кнопку мыши, то можно и рисовать на границах цветом заливки.
Надо бы наоборот, сначала проверять, а не граница ли это, и уже потом рисовать.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Tue Dec 28, 2021 5:20 pm
by Leency
From http://forum.cantorsys.com/viewtopic.php?pid=949#p949:

▲К сожалению, есть некоторые проблемы со сглаженными линиями в библиотеке Buf2D

Одна из проблем в том, что некоторые линии, с углом наклона примерно 45 градусов, рисуются неправильным цветом, нецветные, тёмные, на чёрном фоне их даже незаметно, но заметно "незакрашенное" место(просвет), там, где должна была рисоваться линия.
Spiral_buf2d_incorrect.png
Spiral_buf2d_incorrect.png (534.7 KiB)
Viewed 4281 times
Иногда такие линии рисуются только частично не на всю длину, либо их середина не прорисовывается.
Очень похоже, что это баг в библиотеке Buf2D, потому что код, рисующий обычные линии работает верно:

Code: Select all

buf2d_line(Buf2DBuffer, X1, Y1, X2, Y2, Color);
проблема только со сглаженными линиями:

Code: Select all

buf2d_line_sm(Buf2DBuffer, X1, Y1, X2, Y2, Color);
Горизонтальные сглаженные линии в Buf2D рисуются толщиной в 1 пиксель, а вертикальные 2 пикселя.
Тут, по логике, надо в обоих случаях рисовать одинаково: либо и там, и там — 1 пиксель, либо и там, и там — 2 пикселя
Даже, наверное, правильнее именно 1 пиксель, так же, как рисуются и линии под углом 45 градусов.

-------------
И, кстати, некоторая проблема с цветом имеется при выводе шрифта.
в приложении "Файловый навигатор" с помощью функции buf2d_draw_text: интенсивность правильного цвета и выводимого через Buf2D отличается, хотя и очень незначительно(например, вместо RGB(253, 253, 253) выводится RGB(252, 252, 252)).
Сравнивать правильность можно с цветом в файле шрифта FNT.PNG — по сути это чёрный($00000000) текст на белом($00FFFFFF) фоне.

Re: Функции рисования 2d графики (библиотеки vectors и buf2d)

Posted: Wed Dec 29, 2021 1:16 am
by IgorA
Leency wrote:К сожалению, есть некоторые проблемы со сглаженными линиями в библиотеке Buf2D
...
Горизонтальные сглаженные линии в Buf2D рисуются толщиной в 1 пиксель, а вертикальные 2 пикселя.
Исправил в рев #9520 , теперь должно работать правильно, вертикальные линии тоже стали 1 пиксель.
Leency wrote:И, кстати, некоторая проблема с цветом имеется при выводе шрифта.
в приложении "Файловый навигатор" с помощью функции buf2d_draw_text: интенсивность правильного цвета и выводимого через Buf2D отличается, хотя и очень незначительно(например, вместо RGB(253, 253, 253) выводится RGB(252, 252, 252)).
Исправил в рев #9570