реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как нарисовать линию в ep93xx?
Andrei....
сообщение Apr 19 2006, 06:44
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Неполучается нарисовать линию (Bresenham's algorithm). Настраиваются следующие регистры:

LINEINIT=(2048/*XINIT*/)|(2048<<16/*YINIT*/);
LINEPATTRN=0x000fffff;//solid line pattern
DESTLINELENGTH=destSurf->Lenght;
DESTPIXELSTRT=((dsX1%4)*8/*SPEL*/)|((((dsX2-1)%4)*8)<<16/*EPEL*/);
BLKDESTSTRT=destSurf->StartAddress+dsY1*destSurf->Lenght*4+dsX1;
BLOCKMASK=color;

if(abs(dsX2-dsX1)==abs(dsY2-dsY1))LINEINC=(4095/*XINC*/)|(4095<<16/*YINC*/);
else if(abs(dsX2-dsX1)<abs(dsY2-dsY1))LINEINC=((abs(dsX2-dsX1)*4095/abs(dsY2-dsY1))/*XINC*/)(4095<<16/*YINC*/);
else if(abs(dsX2-dsX1)>abs(dsY2-dsY1))LINEINC=(4095/*XINC*/)|((abs(dsY2-dsY1)*4095/abs(dsX2-dsX1))<<16/*YINC*/);

BLKDESTWIDTH=abs(dsX2-dsX1)/4096;
BLKDESTHEIGHT=abs(dsY2-dsY1)/4096;

BLOCKCTRL=0;
BLOCKCTRL=(2<<17/*P*/)|(0<<14/*BG */)|(1<<4/*LINE*/)|(1/*ENABLE*/);

где (dsX1,dsY1) координаты начальной точки,
(dsX2,dsY2) координаты конечной точки,
destSurf->StartAddress адрес начала поверхности в памяти,
destSurf->Lenght ширина поверхности в word'ах

Что делаю неправильно?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.02892 секунд с 7
ELECTRONIX ©2004-2016