Page 5 of 7

Re: Векторные функции

Posted: Thu Oct 08, 2009 12:56 am
by Nable
Комментарии ИМХО лучше писать на английском, тем более что латиница во всех кодировках одинаково будет.

offtop:
*Вот думаю, в исходниках MeView комментариев чуть ли не больше чем кода, а всё равно никто даже не заинтересовался...*
offtop_end:

Re: Векторные функции

Posted: Thu Oct 08, 2009 1:08 am
by andrew_programmer
Все, кто реально пишут код, уже понабрали предостаточно проектов.

Коментарии в коде нужны, чтобы в нём мог разобраться и другой программист. Возможно другой программист сможет улучшить код и исправить ошибки(если они есть).

Re: Векторные функции

Posted: Thu Oct 08, 2009 1:51 am
by Mario
Nable
Я смотрел твои исходники. Однако на все не хватает времени. Если у тебя есть желание сотрудничать - готов предоставить свои спецификации. Просто реально не успеваю всего делать. Если имеешь желание - пиши в личку. Просто писать на форуме в абсолютно не связанной теме - малопродуктивно.

Re: Векторные функции

Posted: Thu Oct 08, 2009 7:22 am
by Ghost
IgorA
Русский, англицкий, cp1251 или cp866 - без разницы, думаю справляться с ними все умеют (хотя если строки в cp866 то и коментарии тоже удобно в cp866 использовать).
В первую очередь конечно лучше коментировать библиотеку.

Re: Векторные функции

Posted: Fri Oct 09, 2009 1:16 am
by IgorA
Немного прокомментировал код библиотеки, и написал еще 1 пример программки.
Думаю можно было и больше комментариев дать, но пока не очень детально.

Re: Векторные функции

Posted: Fri Jul 02, 2010 5:44 pm
by IgorA
Решил сделать библиотеку для работы с 2d буферами, для обработки изображений. Думаю это будет что-то наподобие pixlib, но на asm. Пока возможности ограничены, можно создавать буферы, рисовать в них прямые линии. Также есть функции для рисования (полу)прозрачных изображений поверх других. Возможно в будущем некоторые функции перекочуют из vectors.obj.

В архиве исходные коды библиотеки и 2 программы: 1-я тестовая, 2-я показывает работу с прозрачностью. Вторая программа использует libimg для получения данных изображения в формате rgb.

Re: Векторные функции

Posted: Sat Jul 03, 2010 12:04 am
by Mario
Хорошая идея, так можно шрифты реализовать. :-)

Re: Векторные функции

Posted: Tue Jul 06, 2010 1:24 pm
by IgorA
новая версия 06.07.10 - расширены возможности функции buf2d_bit_blt, теперь она может рисовать 32 битные буферы. Добавлены 2 новые функции: buf2d_bit_blt_alpha и buf2d_cruve_bezier. Небольшие изменения в функции buf2d_line.
Mario wrote:Хорошая идея, так можно шрифты реализовать. :-)
С новой функцией buf2d_bit_blt_alpha станет немного легче реализовать, потому что она рисует прозрачный 8-битный буфер, с заливкой указанным цветом. Т.е. в отличие от buf2d_bit_blt не нужно будет создавать буфер изображения в 24 бита и потом преобразовывать его в 32-битный.

Re: Векторные функции

Posted: Fri Jul 16, 2010 10:10 pm
by IgorA
Новая версия 16.07.10 - исправлено по 2 ошибки в функциях buf2d_img_hdiv2 и buf2d_img_wdiv2, которые могли проявляться при определенных условиях (если размер изображения был кратен 4Кб и др.). Добавлены 2 функции для вывода текста в буфер buf2d_convert_text_matrix и buf2d_draw_text. Добавил пример использования текста.

Архив уменьшился, потому что для 2-го примера взял другую картинку. Текст выводится в буфер на основе картинки font8x9.bmp из папки с kfar-ом. Можно брать любые картинки со шрифтами, чтобы размер 1-го символа был не более 255 пикселей.

Re: Векторные функции

Posted: Mon Jul 19, 2010 9:02 pm
by IgorA
Новая версия 19.07.10 - добавлена функция рисования окружности buf2d_circle; изменен формат буфера - для ширины и высоты используются 4-х байтные числа вместо 2-х байтных.

Алгоритм рисования взял с другой темы:

Code: Select all

Private Sub Circ(x As Integer, y As Integer, r As Integer)
    Dim i As Integer, px As Double, py As Double
    px = 0: py = r
    For i = 0 To r * 3.1415926 * 2
        PSet (px + x, y - py), vbBlack
        px = px + py / r
        py = py - px / r
    Next
End Sub
который предложил tsdima.
Размеры буфера изменил с 2-х байт до 4-х, для того что-бы снять ограничение максимального размера символов (до 255 пикселей), теперь можно делать больше чем 255.
Возможно в будущем стоит добавить функцию рисования эллипсов.

Re: Векторные функции

Posted: Sun May 15, 2011 5:25 pm
by Insolor
Может пригодится, алгортм Брезенхэма для вычерчивания окружности (без использования чисел с плавающей точкой):

Code: Select all

procedure circle(integer x, integer y, integer r, integer color)
    integer px,py,delta
    px = 0
    py = r
    delta = 3-2*r
    while px<=py do
        pixel(color, {x+px, y+py})
        pixel(color, {x+px, y-py})
        pixel(color, {x-px, y+py})
        pixel(color, {x-px, y-py})
        
        pixel(color, {x+py, y+px})
        pixel(color, {x+py, y-px})
        pixel(color, {x-py, y+px})
        pixel(color, {x-py, y-px})
        
        if delta<0 then
            delta += 4*px+6
        else
            delta += 4*(px-py)+10
            py -= 1
        end if
        px += 1
    end while
end procedure

Re: Векторные функции

Posted: Sun May 15, 2011 5:55 pm
by IgorA
Да такой алгоритм будет полезен, потому что я делал рисование окружности ( в buf2d ) с плавающей точкой. В ближайшее время буду занят, попробую использовать функцию когда освобожусь.

Re: Векторные функции

Posted: Sun May 15, 2011 7:52 pm
by Gluk
спасибо,хороший алгоритм

Re: Векторные функции

Posted: Thu Sep 22, 2011 7:48 pm
by IgorA
Ревизия 2230:
Добавил новую функцию для рисования сглаженных линий buf2d_line_sm.
Принимает такие же параметры как и функция buf2d_line.

Re: Векторные функции и библиотека buf2d.obj

Posted: Tue Feb 21, 2012 9:43 pm
by IgorA
Ревизии 2358 и 2359 исправлена функция для рисования горизонтальной линии, функции рисования рамок и прямоугольников могут принимать отрицательные координаты, некоторые функции могут рисовать и в 8 битные буферы
Ревизия 2367 немного доработана функция buf_bit_blt_alpha