WebView 1.1: Zoom2x, a lot of fixes for download manager

git-svn-id: svn://kolibrios.org@5519 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2015-03-16 14:20:32 +00:00
parent 686b37b809
commit 024cd8ec51
8 changed files with 207 additions and 561 deletions

View File

@ -10,6 +10,7 @@ char header[2048];
struct TWebBrowser {
llist list;
dword draw_line_height, draw_line_width, draw_list_height;
DrawBufer DrawBuf;
void Prepare();
void Parse();
@ -61,7 +62,7 @@ char anchor[256];
void TWebBrowser::DrawPage()
{
int start_x, start_y, line_length, stolbec_len, magrin_left=5;
int start_x, start_y, zstart_x, zstart_y, line_length, zline_length, stolbec_len, magrin_left=5;
if (!header)
{
@ -77,18 +78,21 @@ void TWebBrowser::DrawPage()
{
start_x = stolbec * 6 + list.x + magrin_left;
start_y = stroka * list.line_h + list.y + magrin_left;
zstart_x = stolbec * 6 + magrin_left * DrawBuf.zoomf + list.x;
zstart_y = stroka * list.line_h * DrawBuf.zoomf + magrin_left + list.y;
stolbec_len = strlen(#line);
line_length = stolbec_len * 6;
zline_length = stolbec_len * 6 * DrawBuf.zoomf;
WriteBufText(start_x, 0, 0x88, text_colors[text_color_index], #line, buf_data);
IF (b_text) WriteBufText(start_x+1, 0, 0x88, text_colors[text_color_index], #line, buf_data);
IF (i_text) { stolbec++; DrawBuf.Skew(start_x, 0, line_length, list.line_h); }
IF (s_text) DrawBuf.DrawBar(start_x, 4, line_length, 1, text_colors[text_color_index]);
IF (u_text) DrawBuf.DrawBar(start_x, 8, line_length, 1, text_colors[text_color_index]);
IF (link) {
UnsafeDefineButton(start_x-2, start_y-1, line_length + 3, 10, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
if (b_text) WriteBufText(start_x+1, 0, 0x88, text_colors[text_color_index], #line, buf_data);
if (i_text) { stolbec++; DrawBuf.Skew(start_x, 0, line_length, list.line_h); }
if (s_text) DrawBuf.DrawBar(start_x, 4, line_length, 1, text_colors[text_color_index]);
if (u_text) DrawBuf.DrawBar(start_x, 8, line_length, 1, text_colors[text_color_index]);
if (link) {
DrawBuf.DrawBar(start_x, 8, line_length, 1, text_colors[text_color_index]);
PageLinks.AddText(#line, line_length, list.line_h, UNDERLINE);
UnsafeDefineButton(zstart_x-2, zstart_y-1, zline_length + 3, DrawBuf.zoomf * 10, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
PageLinks.AddText(#line, zline_length, draw_line_height, UNDERLINE);
}
stolbec += stolbec_len;
}
@ -145,6 +149,10 @@ void TWebBrowser::Parse(){
stolbec = 0;
line = 0;
draw_line_height = list.line_h * DrawBuf.zoomf;
draw_line_width = list.w * DrawBuf.zoomf;
draw_list_height = list.h * DrawBuf.zoomf;
if (pre_text<>2)
{
pre_text=0;
@ -247,7 +255,7 @@ void TWebBrowser::Parse(){
if (stolbec + strlen(#line) > list.column_max) Perenos();
DrawPage();
line = NULL;
if (tag) SetTextStyle(list.x + 5, stroka * list.line_h + list.y + 5); //îáðàáîòêà òåãîâ
if (tag) SetTextStyle(WB1.DrawBuf.zoomf * 5 + list.x, stroka * draw_line_height + list.y + 5); //îáðàáîòêà òåãîâ
tag = parametr = tagparam = ignor_param = NULL;
break;
default:
@ -265,8 +273,8 @@ void TWebBrowser::Parse(){
}
DrawPage();
NewLine();
DrawBar(list.x, stroka * list.line_h + list.y + 5, list.w, -stroka * list.line_h + list.h - 5, bg_color);
DrawBar(list.x, list.visible * list.line_h + list.y + 4, list.w, -list.visible * list.line_h + list.h - 4, bg_color);
DrawBar(list.x, stroka * draw_line_height + list.y + 5, draw_line_width, -stroka * draw_line_height + draw_list_height - 5, bg_color);
DrawBar(list.x, list.visible * draw_line_height + list.y + 4, draw_line_width, -list.visible * draw_line_height + draw_list_height - 4, bg_color);
if (list.first == 0) list.count = stroka;
if (anchor) //åñëè ïîñðåäè òåêñòà ïîÿâèòñÿ íîâûé ÿêîðü - áóäåò áåñêîíå÷íûé öèêë
{
@ -380,7 +388,7 @@ void TWebBrowser::SetTextStyle(int left1, top1) {
link = 1;
text_colors[text_color_index] = link_color_inactive;
PageLinks.AddLink(#options, stolbec*6+left1, top1-2);
PageLinks.AddLink(#options, DrawBuf.zoomf * stolbec*6+left1, top1-2);
}
if (anchor) && (!strcmp(#parametr, "name="))
{
@ -548,7 +556,7 @@ void TWebBrowser::SetTextStyle(int left1, top1) {
if (opened)
{
NewLine();
if (stroka > -1) && (stroka - 2 < list.visible) DrawBuf.DrawBar(li_tab * 5 * 6 + left1 - 5, list.line_h/2-2, 2, 2, 0x555555);
if (stroka > -1) && (stroka - 2 < list.visible) DrawBuf.DrawBar(li_tab * 5 * 6 + list.x, list.line_h/2-2, 2, 2, 0x555555);
}
return;
}
@ -606,10 +614,12 @@ void TWebBrowser::DrawScroller()
scroll_wv.cur_area = list.visible;
scroll_wv.position = list.first;
scroll_wv.all_redraw=0;
scroll_wv.all_redraw = 0;
scroll_wv.start_x = list.x + list.w;
scroll_wv.start_y = list.y;
scroll_wv.size_y=list.h;
scroll_wv.size_y = list.h * DrawBuf.zoomf;
scroll_wv.start_x = list.w * DrawBuf.zoomf + list.x;
scrollbar_v_draw(#scroll_wv);
}
@ -617,18 +627,19 @@ void TWebBrowser::DrawScroller()
void TWebBrowser::NewLine()
{
int onleft;
int ontop;
int onleft, ontop, zontop;
onleft = list.x + 5;
ontop = stroka * list.line_h + list.y + 5;
if (!stroka) DrawBar(list.x, list.y, list.w, 5, bg_color);
zontop = stroka * list.line_h * DrawBuf.zoomf + list.y + 5;
if (!stroka) DrawBar(list.x, list.y, draw_line_width, 5, bg_color);
if (t_html) && (!t_body) return;
if (ontop>=list.y) && ( ontop < list.h+list.y-10) && (!anchor)
{
if (text_align == ALIGN_CENTER) DrawBuf.AlignCenter(onleft,ontop,list.w,list.line_h,stolbec * 6);
if (text_align == ALIGN_RIGHT) DrawBuf.AlignRight(onleft,ontop,list.w,list.line_h,stolbec * 6);
DrawBuf.bufy = ontop;
DrawBuf.zbufy = zontop;
DrawBuf.Show();
DrawBuf.Fill(bg_color);
}

View File

@ -76,11 +76,11 @@ void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col)
{
if (active==i) return;
CursorPointer.Set();
if (links[active].underline) DrawBar(links[active].x,links[active].y+10,links[active].w,1, link_col_in);
if (links[i].underline) DrawBar(links[i].x,links[i].y+10,links[i].w,1, bg_col);
if (links[active].underline) DrawBar(links[active].x, WB1.list.line_h - WB1.DrawBuf.zoomf * WB1.DrawBuf.zoomf + links[active].y,links[active].w, WB1.DrawBuf.zoomf, link_col_in);
if (links[i].underline) DrawBar(links[i].x, WB1.list.line_h - WB1.DrawBuf.zoomf * WB1.DrawBuf.zoomf + links[i].y,links[i].w, WB1.DrawBuf.zoomf, bg_col);
active = i;
status_text.start_x = progress_bar.left+progress_bar.width+10;
status_text.start_y = Form.cheight-STATUSBAR_H+3;
status_text.start_x = wv_progress_bar.left + wv_progress_bar.width + 10;
status_text.start_y = Form.cheight - STATUSBAR_H + 3;
status_text.area_size_x = Form.cwidth - status_text.start_x -3;
DrawBar(status_text.start_x, status_text.start_y, status_text.area_size_x, 9, col_bg);
status_text.text_pointer = links[active].link;
@ -92,7 +92,7 @@ void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col)
if (active!=-1)
{
CursorPointer.Restore();
if (links[active].underline) DrawBar(links[active].x,links[active].y+10,links[active].w,1, link_col_in);
if (links[active].underline) DrawBar(links[active].x, WB1.list.line_h - WB1.DrawBuf.zoomf * WB1.DrawBuf.zoomf + links[active].y,links[active].w, WB1.DrawBuf.zoomf, link_col_in);
DrawBar(status_text.start_x, status_text.start_y, status_text.area_size_x, 9, col_bg);
active = -1;
}

View File

@ -1,449 +0,0 @@
20.11.2013 - 0.99.6
- переделаны ссылки, курсор превращается в руку при наведении
29.12.2013 - 0.99.5
- Condition Script
27.12.2013 - 0.99.4
- отделение TWB компонента от браузера
15.10.13 - 0.99.1
- поддержка тегов <center>, <right> и параметра align="center/right" для тегов h1..h4
- улучшенное меню
- мультиязычность
08.10.13 - 0.99.04
- поддержка относительных путей
- исправления для скроллбара
- итальянская версия
- автодобавление http:// и ручном вводе адреса
- страница по умолчанию существует
12.04.13 - 0.99.01
- исправлено падение при очистке кэша изображений
- исправлена работа пункта меню "включить разрывы строк"
- ускорение при прокрутке страницы
- ускорение обработки quotted printable
12.04.13 - 0.99
- отрисовка в буфер;
- исправление ошибок и обновление кода.
20.11.12 - 0.98
- интелектуальная система кеширования изображений.
18.11.12 - 0.97.7
- если изображение не загрузилось, но содержит ссылку отображается
заменяющий его текст;
- полностью исправлены переносы ссылках в тексте;
- отображение в меню текущей кодировки;
- SoUrcerer - Синхронизация программы с новой оптимизированной
версией библитеки TryeType.
10.11.12 - 0.97.6
- нормальный запуск программы даже без библиотеки lib_img;
- оповещение если box_lib не найдена;
- исправлена ошибка приводящая к торможению при отображении
TrueType шрифтов;
- обновление библиотек.
05.11.12 - 0.97.5
Переключалка на шрифты TrueType из меню ПКМ.
16.07.12 - 0.97
- небольшие улучшения в обработке ссылок и изображений;
- включение обработки разрывов строк через меню;
- поддержка цветов вида #abc, улучшения в обработке цветов;
- пропадали изображения при начале загрузки страницы;
- исправлен баг 100% загрузки процессора при использовании
скролла (спасибо hidnplayer).
14.07.12 - 0.96
- исправлен баг со строкой адреса
- исправлен баг с незакрытыми тегами <a>
- частично исправлен баг с длинными адресами урлов
- меню - новое окно
22.06.12 - 0.95
22.06.12 - 0.94c
- испрвлена регрессия со ссылками;
- исправлена регрессия с ползунком;
- исправлено затирание первой строки.
19.06.12 - 0.94
- улучшение кода.
14.06.12 -- v0.93
- заработали якоря;
- улучшено меню.
13.06.12 -- v0.92
- базовое меню ПКМ;
- убрана постоянная загрузка страницы при перерисовке окна;
- костыли версии 2.0 для работы с downloader'ом;
- разделение кода загрузки и отображения страницы: часть 1.
04.06.12 -- v0.90
- новый скроллбар из box_lib (спасибо lev);
- нормальная загрузка страниц без скидывания фокуса с окна;
- гениальный и грязный хак для работы с downloader'ом, который
у меня на машине даёт 99% загрузки страниц вместо 50% ранее;
- масса исправлений в работе с историей посещений и навигацией;
- в теге <font> исправлена регрессия.
27.05.12 -- v0.83
- новая иконка кнопки "домой";
- оптимизация тега <b>;
- улучшения при работе с книгами xml-подобного формата fb2.
13.04.12 -- v0.80
- поддержка <body> "bgcolor=" и "text=";
- обработка перехода вверх "../";
- jpg, gif, png открываются через kiv.
- теперь изображения легко могут быть ссылками;
- 2 небольших фикса для изображений, кнопки BackSpace;
- чуток улучшена обработка урлов, содержащих #;
- заработала кнопка "Вперёд".
29.02.12 -- v0.76 -- 11.3
- исправлена работа кнопки "Назад";
- в историю посещённых страниц не может быть добавлено 2 одинаковых адреса подряд;
- исправлено исчезание заголовка страниц;
- исчезала кнопка вверх в прокрутке - исправлено;
- некоторые другие исправления.
27.02.12 -- v0.75 -- 11.? Кб
- при закрытии HTMLv, downloader тоже завершается;
- невозможно запустить больше одного downloader'a;
- отображение процесса загрузки страницы из Интернета через кнопочку
"остановить", надпись "Loading...", возможность прервать процесс;
- обновление страницы из Интернета приводит к её повторной загрузке.
24.02.12 -- v0.71 -- 11.? Кб
- просто починил эти самые интернеты.
26.09.11 -- v0.70с -- 11.4 Кб
- универсальная обработка цветов;
- улучшения в обработке title;
- исправлена обработка станиц в кодировке iso-8859-1.
22.09.11 -- v0.70 -- 11.3 Кб
- улучшен и оптимизирован код обработки юникодовских тегов (&amp;), исправлен
и дополнен их список;
- устранён вылет программы при нажатии клавиши CapsLock (спасибо Mario);
- заглушка на вылет программы при загрузке страниц из и-нэта (спасибо Mario).
13.09.11 -- v0.69 -- 11.2 Кб
- нормальная прокрутка изображений;
- работа с файлами любого размера;
- оптимизация процедуры парсинга тега с параметрами.
05.09.11 -- v0.68 -- 11.2 Кб
- устранён вылет программы при неправильном параметре color тега <font> - алсо
иногда действительно полезно читать маны;
- memory.h-- удалён как старый дубликат, все функции работы с памятью отныне
используют mem.h--, написанный Asper'ом;
- изображения теперь вписываются в окно по ширине;
- устранён частый вылет программы при прокрутке страницы, содержащей изображения.
20.08.11 -- v0.67 -- 11.1 Кб
- более адекватная прокрутка изображений;
- корректная обработка табов в тексте и с тегом <pre> (спасибо Nazarus и Jaeger);
- улучшена отзывчивость программы при прокрутке больших страниц (фикс изначально
был написан Gluk'ом для игры Косилка по моей просьбе, сюда перенесен мной);
- небольшие исправления в реакции ползунка прокрутки;
- исправлено залезание текста в наклонном шрифте на левый ободок окна;
- кнопка "Новая вкладка" и комбинации Ctrl+N, Ctrl+T банально создают новое окно;
- правильное распознание украинской буквы ґ;
- поддержка кодировки "UTF8" для универсальности (идея фичи Joaquin).
20.06.11 -- v0.63 -- 11.32 Кб
lev
- наклонный шрифт
- таблица именованных цветов
08.06.10 -- v0.62a -- 9.68 Кб
- в адресную строку нельзя было нормально ввести цифры 4 и 6 (спасибо Nasarus
за найденные баги)
- поддержка DOS-кодировки страниц (по просьбе Nasarus'a)
14.02.10 -- v0.62 -- 9.42 Кб
- поиск в Интернетах с помощью nigma.ru, поиск только по английским символам,
горячая комбинация клавиш Ctrl+Enter;
- улучшено и оптимизировано определение кодировки;
- небольшой фикс для работы с XHTML-тегами типа br/;
- исправлен баг: не работал просмотр (по f3) страниц из интернета;
- немного улучшено отображение изображений, но, всё равно, ещё очень плохо;
- поддержка тегов с кавычками ' (как на главной странице kolibrios.org);
- работа с историей вынесена в отдельный файл;
- исправлена поломанная в предыдущей версии работа в Интернетах.
31.01.10 -- v0.60 -- 8.94 Кб
- поддержка utf-8 реализованная Asper'ом ещё в ноябре, увы не попавшая в
дистр 0.7.7.0. От меня огромное спасибо Asper'у в помощи!
- исправлена ошибка при открытии страницы с /fd и /cd (спасибо Nasarus и IgorA,
которые сообщили мне об ошибке);
- поддержка шайтанской кодировки mht-страниц, то есть, сохранённых со всем
содержимым через ИЕ7 (спасибо за помощь IgorA);
- улучшено определение кодировки: например, теперь можно нормально читать хабр;
- небольшое исправление в парсинге параметров тега;
- увеличена длина URL до 4096 символов.
08.11.09 -- v0.57 -- 8.69 Кб
- Asper реализовал поддержку изображений, которую в HTMLv ещё надо пилить;
- поддержка .mht, скорее всего старых версий (страница Albom'a), в новых (я
сохранил в .mht через ИЕ7) вместо буковок какая-то ересь, очень похожая на
hex-коды;
- исправлено появление кнопки "остановить загрузку" когда не надо;
- оптимизации поиска и загрузки файла.
03.11.09 -- v0.53 -- 7.87 Кб
- восстановлена совместимость с библиотекой box_lib.obj;
- исправлена заглушка с адресами страниц, содержащими знак # ;
- программа больше не вылетает, если несколько раз нажать на локальную ссылку;
- серьёзное улучшение обработки разных ссылок;
- исправлено превышение максимальной длины истории ссылок;
- корректная обработка ссылок, содержащих знак = ;
- исправлено исчезание ссылок, если тег находится за границей видимой области;
- во время загрузки страницы, пишет "Loading...";
- небольшие обновления кода.
05.06.09 -- v0.5 -- 7.91 Кб
- barsuk прикрутил загрузку страниц из Интернета через downloader за что
ему огромнейший респект :)
- исправление падения программы в случае, если страница недокачана -
исправлен выход за границы памяти при парсинге тегаов и обработке <-- -->;
- исправлена передача параметров downloader'y: обрезается / в конце;
- корректная обработка некоторых символов;
- некоторые оптимизации.
28.01.08 -- v0.48.5 -- 6.95 Кб
- если присутствует только закрывающий тег </a>, без открывающего, ссылки
больше не "съезжают";
- корректная обработка параметров, не взятых в скобки, пример: href=1.htm ;
- исправлен баг с цветом ссылок и цветом текста после ссылок;
- многоуровневые списки;
- немного улучшен алгоритм парсинга тегов;
- клавиша BackSpace опять возвращает назад;
- подчёркивание цветных ссылок теперь цвета самих ссылок;
- исправлен баг в заглушке с переходом по ссылке внутри страницы #.
28.01.08 -- v0.48.2 -- 6.95 Кб
- устранён вылет программы при прокрутке страницы с большим кол-вом ссылок;
- устранено "синение" текста в некоторых случаях;
- исправлен баг в чтении тега с параметрами;
- автоопределение кодировки KOI8;
22.01.08 -- v0.48.1 -- 6,88 Кб
21.12.08 -- v0.48.0
- перенос по словам;
- координаты считаются от конца заголовка;
- исправлена перерисовка окна, когда страница маленькая;
- исправил баг в теге <pre>;
- исправлен баг перерисовки первой строки;
07.12.08 -- v0.47 -- 7,50 Кб
- добавлен символ "апостроф", украинские буквы для кодировки win1251;
- инфа внутри <!-- --> фильтруется;
- переписана процедура парсинга параметров тега;
- зачатки вывода изображений (спасибо Nable и Asper за помощь);
- исправлен баг, из-за которого страницы могли не отображаться;
- исправлен баг с тегом font, из-за которого весь текст могло плющить;
- исправлен недочёт в теге <pre> (нашёл diamond);
- немного увеличена скорость обработки страниц;
- немного улучшена полоса прокрутки, исправлен один мелкий баг;
02.12.08 -- v0.45 -- 6,79 Кб
- поддержка кодировки KOI8-R(U) - активируется нажатием Ctrl+R. Спасибо Velianty
за написаный код;
- вывод какой-то win кодировки, где все символы отображаются, как &#1040 и т.д.
(заработал файл, присланый Albom'ом);
- исправлен очень серьёзный баг из-за которого страницы с большим количеством
ссылок приводили к вылету программы;
- кодировка DOS'a (cp866) активируется нажатием Ctrl+D;
- улучшен скролл;
- исправлен баг кнопки "Обновить";
- иконки тулбара выводится одним изображением с палитрой, как результат меньше
перерисовка окна и размер программы.
20.10.08 -- v0.40 -- 7,36 Кб
- обработка нескольких параметров тега для ссылки и текста;
- перечёркивание и подчёркивание отображается тем же цветом что и текст
- правильная обработка табов;
- улучшение тега <li>;
- корректный переход на страницу, адрес которой содержит знак "#";
- исправлен баг из-за которого часть текста могла стать невидимой;
- исправлен тег <q>;
- некоторые спецсимволы заменены своими "аналогами": (с), (r), обычное тире
вместо типографического;
- поддержка тегов <ins> и <del>;
- прочие доработки и хитрожопые оптимизации отображения :)
19.10.08 -- v0.38.1 -- 6,85 Кб
- суровые оптимизации и как результат увеличилась скорость загрузки страниц на
7-10% (было проверено с использованием секундомера);
- правильное отображение файлов с расширением ".txt" в окне программы;
18.10.08 -- v0.38 -- 6,88 Кб
- для полосы адреса теперь используется отдельная переменная;
- хождение по относительным ссылкам, с косяками, но то фигня. Сделаю;
- улучшения в обработке тегов: корректно обрабатываются таб и переход на
следующую строку в теге.
- немного улучшена обработка тегов вообще, догадываюсь как сделать ваще зашибись;
- добавлена обработка цвета линий (hr).
17.10.08 -- v0.37 -- 6,82 Кб
- реализовано преобразование тегов вида &nbsp; в символы (пока только 5 основных);
- немного улучшен скролл, но, всё равно, это не дело;
- F3 - просмотр исходного кода страницы;
- обновлены кнопочки "Вперёд/Назад".
Правка багов:
- исправлена табота со ссылками;
- исправлен баг с тем, что иногда отображалось два пробела в тексте вместо одного;
- исправил баг из-за которого часть текста при прокрутке могла стать синей;
- исправлен баг, связаный с клавишей BackSpace;
Огромное спасибо diamond'y за тестирование.
16.10.08 -- v0.35.3 -- 6,74 Кб
- кнопки от ссылок не удалялись в случае, если страница не найдена, fixed;
- улучшены кнопочки тулбара;
- пофиксил последнюю страницу от Albom'a, со скриптом; оказалось просто надо было
обнулить переменную во время её объявления;
- при сворачивании окна в заголовок, его название не исчезает.
15.10.08 -- v0.35 -- 6,75 Кб
- исправлен баг - вылет проги из-за переполнения памяти во время создания ссылок
(спасибо Albom'у, который прислал страницу, на которой проявляется баг);
- при перемотке колёсиком теперь проматывается 3 строчки;
- исправлена перемотка PgUp/PgDn;
- исправлена работа программы в случае, если страница не найдена;
- новые фирменные изображения на кнопках;
- исправлен тег <title> для длинных названий;
- теперь переход Домой записывается в хистори;
- программа больше не должна вылетать :)
03.10.08 -- v0.30.2 -- 6,56 Кб
- обновление страницы не приводит к записи новой ссылки в историю посещений;
- оптимизация перебора символов;
- больше не появляются белые полосы на ободке нижней части окна;
- установлены минимальные размеры окна, убраны артефакты при сворачивании окна в заголовок.
02.08.08 -- v0.30.1 -- 6,48 Кб
- поправил баг с историей посещений страниц;
- устранён баг, когда под самой нижней строкой появлась прозрачная полоса;
- игнорируется текст между <style>;
- немного оптимизирован скролл.
29.07.08 -- v0.30 -- 6,46 Кб
- клавиша BackSpace, если полоса адреса не активна, возвращает на предыдущую страницу;
- игнорируется текст после тега <script>;
- сносно работает прокрутка;
- заглушка на PgUp\PgDown, работает End;
- исправлен баг с заголовком окна.
28.07.08 -- v0.27 -- 6,21 Кб
- вывод цвета текста, поддержка до 10 вложеных тегов цвета - за всё это спасибо Veliant'y;
- адаптирован код под новую версию библиотеки <Lrz>, отвечающей за строку адреса (box_lib);
- теперь корректно определяется конец файла при обработке (by Veliant);
- теперь текст декодируется win -> dos, исправлено отображение некоторых специальных символов;
- почищен код, оптимизована структура документа;
- опредение длины страницы, заглушки на прокрутку её вверх и вниз;
- сильно уменьшена перерисовка первых двух строк.
23.07.08 -- v0.24 -- 6,05 Кб
- полностью исправлена работа ссылок;
- Энтер теперь добавляется как пробел в тексте, в случае если до него не было пробела;
- обработка тега "hr" - рисование линий;
- исправлен баг при деактивации окна.
07.07.08 -- v0.23 alpha -- 5.68 Кб
- исправлен баг кнопки "Назад";
- некоторые ссылки работают :)
- PageUp, PageDown.
05.07.08 -- v0.22 -- 5.68 Кб
- исправлен баг, из-за которого строка в конце окна отображалась без "стиля";
- теперь программа умеет отделять теги от параметров - улучшена совместимость;
- поддержка параметров в режиме тестирования (пока недоступно).
04.07.08 -- v0.21 -- 5.58 Кб
- небольшие изминения в интерфейсе;
- рабочая клавиша "Назад".
29.06.08 -- v0.2 -- 5.48 Кб
- уменьшена перерисовка при открытии проги, во время перехода по страницам,
во время их прокрутки - текст выводится не побуквенно, а короткими строчками;
- изменения в структуре программы, она стала ещё чуть более гибкой;
- теперь заголовок не перерисовывается постоянно во время перемотки;
- теперь не выводится больше 1 пробела;
- запуск с параметром - открывается страница;
- немного подправлено положение строки адреса при разной высоте заголовков;
- если страница не существует, выводится предупреждение.
26.06.08 -- v0.1.3 -- 5.59 Кб
- при прокрутке не перерисовывается заголовок;
- теги обнуляются перед началом перерисовки;
- устранён глюк из-за которого внизу списка мог появляться левый текст;
- поддержка тегов ul, blockquote, q, некоторые другие частично;
- теперь вместе обрабатываются теги с / и без него.
24.06.08 -- v0.1.1 -- 5.37 Кб
- исправления и улучшения тега <li>;
- теперь можно прописывать путь к странице не добавляя в конце ".htm",
программа добавит расширение автоматически;
- немного уменьшена перерисовка окна;
- добавлен тег "strike", аналог "s";
- начальная поддержка некоторых других тегов;
- исправлен баг, из-за которого нельзя было перематывать текст вниз до конца.
22.06.08 -- v0.1 -- 5.11 Кб
- более или менее полная поддержка тегов: b, strong, i, u, s, br, pre, title,
li, p. Поддержка закрывающих тегов соответственно;
- поддержка вложеных тегов;
- игнорирование ненужных пробелов в теге (пример: < b >);
- увеличена скорость прокрутки и программы;
- полоса адреса (EditBox) от <Lrz>, спасибо ему огромное;
- остановка рисования после тега </html>.
20.06.08 -- v0.000001 -- 7.32 Кб
Типа начало. :)
Переписал браузер Veliant'a под новую библиотеку, немного доделан.

View File

@ -32,14 +32,14 @@
char homepage[] = FROM "html\\homepage.htm";
#ifdef LANG_RUS
char version[]=" ’¥ªáâ®¢ë© ¡à ã§¥à 1.0";
char version[]=" ’¥ªáâ®¢ë© ¡à ã§¥à 1.1";
?define IMAGES_CACHE_CLEARED "Šíè ª à⨭®ª ®ç¨é¥­"
?define T_LAST_SLIDE "<EFBFBD>â® ¯®á«¥¤­¨© á« ©¤"
char loading[] = "‡ £à㧪  áâà ­¨æë...<br>";
char page_not_found[] = FROM "html\page_not_found_ru.htm";
char accept_language[]= "Accept-Language: ru\n";
#else
char version[]=" Text-based Browser 1.0";
char version[]=" Text-based Browser 1.1";
?define IMAGES_CACHE_CLEARED "Images cache cleared"
?define T_LAST_SLIDE "This slide is the last"
char loading[] = "Loading...<br>";
@ -48,8 +48,8 @@ char homepage[] = FROM "html\\homepage.htm";
#endif
proc_info Form;
#define WIN_W 640
#define WIN_H 480
#define WIN_W 799
#define WIN_H 559
char search_path[]="http://nigma.ru/index.php?s=";
char str_location[]="location\0";
@ -65,12 +65,12 @@ dword http_buffer;
dword TAB_H = false; //19;
dword TAB_W = 150;
dword TOOLBAR_H = 31; //50;
dword STATUSBAR_H =15;
dword STATUSBAR_H = 15;
dword col_bg;
dword panel_color;
dword border_color;
progress_bar progress_bar = {0, 10, 83, 150, 12, 0, 0, 100, 0xeeeEEE, 8072B7EBh, 0x9F9F9F};
progress_bar wv_progress_bar = {0, 10, 83, 150, 12, 0, 0, 100, 0xeeeEEE, 8072B7EBh, 0x9F9F9F};
byte souce_mode = false;
#include "..\TWB\TWB.c"
@ -98,21 +98,21 @@ int SetSkinColors()
col_bg = DSDWORD[image_data];
panel_color = DSDWORD[skin.w*4*4 + image_data];
border_color = DSDWORD[skin.w*4*7 + image_data];
progress_bar.progress_color = DSDWORD[skin.w*4*10 + image_data];
wv_progress_bar.progress_color = DSDWORD[skin.w*4*10 + image_data];
$and col_bg, 0x00ffffff
$and panel_color, 0x00ffffff
$and border_color, 0x00ffffff
$and progress_bar.progress_color, 0x00ffffff
$and wv_progress_bar.progress_color, 0x00ffffff
}
void DrawProgress()
{
unsigned long btn;
//progressbar_draw stdcall(#progress_bar);
progress_bar.width = progress_bar.left = 0;
//progressbar_draw stdcall(#wv_progress_bar);
wv_progress_bar.width = wv_progress_bar.left = 0;
if (http_transfer == 0) return;
if (progress_bar.max) btn = address_box.width*progress_bar.value/progress_bar.max; else btn = 30;
DrawBar(address_box.left-1, address_box.top+14, btn, 2, progress_bar.progress_color);
if (wv_progress_bar.max) btn = address_box.width*wv_progress_bar.value/wv_progress_bar.max; else btn = 30;
DrawBar(address_box.left-1, address_box.top+14, btn, 2, wv_progress_bar.progress_color);
}
@ -131,6 +131,7 @@ void main()
Libimg_LoadImage(#skin, abspath("wv_skin.png"));
SetSkinColors();
WB1.DrawBuf.zoomf = 1;
Form.width=WIN_W;
Form.height=WIN_H;
SetElementSizes();
@ -183,6 +184,7 @@ void main()
}
if (scroll_used)
{
m.y = m.y / WB1.DrawBuf.zoomf + 5;
half_scroll_size = WB1.list.h - 16 * WB1.list.visible / WB1.list.count - 3 /2;
if (half_scroll_size+WB1.list.y>m.y) || (m.y<0) || (m.y>4000) m.y=half_scroll_size+WB1.list.y;
btn=WB1.list.first;
@ -200,7 +202,7 @@ void main()
key = GetKey();
if (address_box.flags & 0b10) SWITCH(key)
{ CASE 52: CASE 53: CASE 54: CASE 180: CASE 181: goto _EDIT_MARK; }
{ CASE 52: CASE 53: CASE 54: CASE 180: CASE 181: CASE 122: goto _EDIT_MARK; }
Scan(key);
@ -222,10 +224,10 @@ void main()
http_process stdcall (http_transfer);
$push EAX
ESI = http_transfer;
progress_bar.max = ESI.http_msg.content_length;
if (progress_bar.value != ESI.http_msg.content_received)
wv_progress_bar.max = ESI.http_msg.content_length;
if (wv_progress_bar.value != ESI.http_msg.content_received)
{
progress_bar.value = ESI.http_msg.content_received;
wv_progress_bar.value = ESI.http_msg.content_received;
DrawProgress();
}
$pop EAX
@ -288,7 +290,7 @@ void SetElementSizes()
{
address_box.top = TOOLBAR_H-TAB_H/2-7+TAB_H;
address_box.width = Form.cwidth - address_box.left - 25 - 22;
WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x, Form.cheight - TOOLBAR_H - STATUSBAR_H, 0, 11);
WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x / WB1.DrawBuf.zoomf, Form.cheight - TOOLBAR_H - STATUSBAR_H / WB1.DrawBuf.zoomf, 0, 11);
WB1.list.column_max = WB1.list.w - scroll_wv.size_x / 6;
WB1.list.visible = WB1.list.h - 5 / WB1.list.line_h;
WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, WB1.list.line_h);
@ -329,7 +331,7 @@ void Draw_Window()
//status bar
DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,STATUSBAR_H, col_bg);
DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,1, border_color);
progress_bar.top = Form.cheight - STATUSBAR_H + 4;
wv_progress_bar.top = Form.cheight - STATUSBAR_H + 4;
ShowPage();
DrawRectangle(scroll_wv.start_x, scroll_wv.start_y, scroll_wv.size_x, scroll_wv.size_y-1, scroll_wv.bckg_col);
DrawProgress();
@ -380,8 +382,10 @@ void Scan(int id)
return;
case 006: //download manager
DL_URL[0] = 0;
if (!downloader_opened) {
strcpy(#DL_URL, "http://");
CreateThread(#Downloader,#downloader_stak+4092);
}
return;
case BACK:
@ -485,6 +489,10 @@ void Scan(int id)
m.y = TOOLBAR_H-6;
m.x = Form.cwidth - 167;
CreateThread(#menu_rmb,#stak+4092);
return;
case 122:
if (WB1.DrawBuf.zoomf==1) WB1.DrawBuf.zoomf=2; else WB1.DrawBuf.zoomf=1;
Draw_Window();
}
}
@ -530,11 +538,11 @@ void ProcessLinks(int id)
PageLinks.GetAbsoluteURL(#URL);
if (UrlExtIs(".png")==1) || (UrlExtIs(".gif")==1) || (UrlExtIs(".jpg")==1) || (UrlExtIs(".zip")==1)
if (UrlExtIs(".png")==1) || (UrlExtIs(".gif")==1) || (UrlExtIs(".jpg")==1) || (UrlExtIs(".zip")==1) || (UrlExtIs(".kex")==1)
|| (UrlExtIs(".7z")==1) || (UrlExtIs("netcfg")==1)
{
//notify(#URL);
if (strcmpn(#URL,"http://:", 8)==0)
if (strcmpn(#URL,"http://", 7)==0)
{
strcpy(#DL_URL, #URL);
CreateThread(#Downloader,#downloader_stak+4092);
@ -572,7 +580,7 @@ void StopLoading()
bufsize = 0;
bufpointer = mem_Free(bufpointer);
}
progress_bar.value = 0;
wv_progress_bar.value = 0;
img_draw stdcall(skin.image, address_box.left+address_box.width+1, address_box.top-2, 17, skin.h, 52, 0);
}

View File

@ -1,31 +1,38 @@
#ifdef LANG_RUS
#define DL_WINDOW_HEADER "Download Manager"
#define START_DOWNLOADING "Start downloading"
#define STOP_DOWNLOADING "Stop downloading"
#define FILE_SAVED_AS "'Download manager\nFile saved as "
#define DOWNLOADING_COMPLETE "Downloading complete."
#define DL_WINDOW_HEADER "Œ¥­¥¤¦¥à § £à㧮ª"
#define START_DOWNLOADING "<22> ç âì § ª çªã"
#define STOP_DOWNLOADING "Žáâ ­®¢¨âì ᪠稢 ­¨¥"
#define SHOW_IN_FOLDER "<22>®ª § âì ¢ ¯ ¯ª¥"
#define OPEN_FILE "Žâªàëâì ä ©«"
#define FILE_SAVED_AS "'Œ¥­¥¤¦¥à § £à㧮ª\n” ©« á®åà ­¥­ ª ª "
#define KB_RECEIVED " ¯®«ã祭®"
#else
#define DL_WINDOW_HEADER "Download Manager"
#define START_DOWNLOADING "Start downloading"
#define STOP_DOWNLOADING "Stop downloading"
#define SHOW_IN_FOLDER "Show in folder"
#define OPEN_FILE "Open file"
#define FILE_SAVED_AS "'Download manager\nFile saved as "
#define DOWNLOADING_COMPLETE "Downloading complete."
#define KB_RECEIVED " received"
#endif
proc_info DL_Form;
system_colors sc;
char DL_URL[10000];
dword DL_bufpointer;
dword DL_bufsize;
dword DL_http_transfer;
dword DL_http_buffer;
dword DL_bufpointer, DL_bufsize, DL_http_transfer, DL_http_buffer;
char filepath[4096];
int downloaded_size, full_size;
int mouse_twbi;
edit_box DL_address_box = {250,20,20,0xffffff,0x94AECE,0xffffff,0xffffff,0,sizeof(DL_URL),#DL_URL,#mouse_twbi,2,19,19};
progress_bar DL_progress_bar = {0, 170, 51, 225, 12, 0, 0, 100, 0xFFFfff, 0x74DA00, 0x9F9F9F};
char save_to[4096] = "/tmp0/1/Downloads/";
byte cleft = 10;
byte cleft = 15;
byte downloader_opened;
byte download_state;
enum { STATE_NOT_STARTED, STATE_IN_PROGRESS, STATE_COMPLETED };
void Downloader()
@ -41,6 +48,7 @@ void Downloader()
DL_address_box.size = DL_address_box.pos = DL_address_box.shift = DL_address_box.shift_old = strlen(#DL_URL);
downloaded_size = full_size = 0;
downloader_opened = 1;
SetEventMask(0x27);
loop()
@ -55,7 +63,6 @@ void Downloader()
case evButton:
btn=GetButtonID();
if (btn==1) ExitProcess();
DL_Scan(btn);
break;
@ -71,7 +78,7 @@ void Downloader()
case evReDraw:
sc.get();
DefineAndDrawWindow(215, 100, 420, 150, 0x74, sc.work, DL_WINDOW_HEADER, 0);
DefineAndDrawWindow(215, 100, 420, 120, 0x74, sc.work, DL_WINDOW_HEADER, 0);
GetProcessInfo(#DL_Form, SelfInfo);
if (DL_Form.status_window>2) break;
if (DL_Form.height<120) MoveSize(OLD,OLD,OLD,120);
@ -80,9 +87,17 @@ void Downloader()
break;
default:
if (DL_Form.width==0) break;
if (DL_http_transfer <= 0) break;
if (DL_Form.width==0) || (DL_http_transfer <= 0) break;
http_process stdcall (DL_http_transfer);
$push EAX
ESI = DL_http_transfer;
DL_progress_bar.max = ESI.http_msg.content_length;
if (DL_progress_bar.value != ESI.http_msg.content_received)
{
DL_progress_bar.value = ESI.http_msg.content_received;
progressbar_draw stdcall(#DL_progress_bar);
}
$pop EAX
if (EAX == 0) {
ESI = DL_http_transfer;
DL_bufpointer = ESI.http_msg.content_ptr;
@ -105,7 +120,9 @@ void Downloader()
}
notify(#notify_message);
DL_address_box.color = DL_address_box.blur_border_color = DL_address_box.focus_border_color = 0xFFFfff;
download_state = STATE_COMPLETED;
DL_Draw_Window();
break;
}
ESI = DL_http_transfer;
downloaded_size = ESI.http_msg.content_received;
@ -115,64 +132,60 @@ void Downloader()
}
}
void DrawDownloading()
{
dword tmp;
char bytes_received[70], percent[30];
percent[0]=0;
if (DL_http_transfer > 0)
{
strcpy(#bytes_received, "Downloading... ");
tmp = ConvertSizeToKb(downloaded_size);
strcat(#bytes_received, tmp);
strcat(#bytes_received, " received.");
if (full_size>0)
{
tmp = itoa(downloaded_size * 100 / full_size);
strcpy(#percent, tmp);
strcat(#percent, " \x25");
}
}
else
{
strcpy(#bytes_received, DOWNLOADING_COMPLETE);
}
DrawBar(cleft, 90, DL_Form.cwidth - cleft, 9, sc.work);
WriteText(cleft, 90, 0x80, sc.work_text, #bytes_received);
WriteText(DL_Form.cwidth - 50, 90, 0x80, sc.work_text, #percent);
}
void DL_Draw_Window()
{
DrawBar(0,0,DL_Form.cwidth,DL_Form.cheight,sc.work); //bg
if (DL_http_transfer <= 0)
DrawBar(0,0, DL_Form.cwidth, DL_Form.cheight, sc.work);
DeleteButton(305);
DeleteButton(306);
if (download_state == STATE_NOT_STARTED) || (download_state == STATE_COMPLETED)
{
DrawCaptButton(cleft, 50, 120, 20, 301, sc.work_button, sc.work_button_text, START_DOWNLOADING);
DrawCaptButton(cleft, 50, 130, 27, 301, sc.work_button, sc.work_button_text, START_DOWNLOADING);
}
else
if (download_state == STATE_IN_PROGRESS)
{
DrawCaptButton(cleft, 50, 120, 20, 302, sc.work_button, sc.work_button_text, STOP_DOWNLOADING);
DrawCaptButton(cleft, 50, 140, 27, 302, sc.work_button, sc.work_button_text, STOP_DOWNLOADING);
DrawDownloading();
}
if (DL_http_transfer <= 0)
if (download_state == STATE_COMPLETED)
{
DrawCaptButton(cleft+130, 50, 120, 20, 305, sc.work_button, sc.work_button_text, "Show in folder");
DrawCaptButton(cleft+260, 50, 120, 20, 306, sc.work_button, sc.work_button_text, "Open file");
DrawCaptButton(cleft+140, 50, 110, 27, 305, sc.work_button, sc.work_button_text, SHOW_IN_FOLDER);
DrawCaptButton(cleft+260, 50, 120, 27, 306, sc.work_button, sc.work_button_text, OPEN_FILE);
}
WriteText(cleft, DL_address_box.top + 4, 0x80, sc.work_text, "URL:");
DL_address_box.left = strlen("URL:")*6 + 10 + cleft;
DL_address_box.width = DL_Form.cwidth - DL_address_box.left - cleft - 3;
DL_address_box.offset=0;
edit_box_draw stdcall(#DL_address_box);
DrawRectangle(DL_address_box.left-1, DL_address_box.top-1, DL_address_box.width+2, 16,DL_address_box.color);
DrawRectangle(DL_address_box.left-2, DL_address_box.top-2, DL_address_box.width+4, 18,sc.work_graph);
DrawDownloading();
DrawRectangle(DL_address_box.left-1, DL_address_box.top-1, DL_address_box.width+2, 16, DL_address_box.color);
DrawRectangle(DL_address_box.left-2, DL_address_box.top-2, DL_address_box.width+4, 18, border_color);
}
void DrawDownloading()
{
dword tmp;
char bytes_received[70];
tmp = ConvertSizeToKb(downloaded_size);
strcpy(#bytes_received, tmp);
strcat(#bytes_received, KB_RECEIVED);
DrawBar(DL_progress_bar.left, DL_progress_bar.top + 17, DL_Form.cwidth - DL_progress_bar.left, 9, sc.work);
WriteText(DL_progress_bar.left, DL_progress_bar.top + 17, 0x80, sc.work_text, #bytes_received);
progressbar_draw stdcall(#DL_progress_bar);
}
void DL_Scan(int id)
{
if (id==001) {
downloader_opened=0;
StopDownloading();
ExitProcess();
}
if (id==301) && (DL_http_transfer <= 0) StartDownloading();
if (id==302) StopDownloading();
if (id==305) RunProgram("/sys/File managers/Eolite", #save_to);
@ -182,6 +195,7 @@ void DL_Scan(int id)
void StopDownloading()
{
download_state = STATE_NOT_STARTED;
if (DL_http_transfer<>0)
{
EAX = DL_http_transfer;
@ -204,9 +218,11 @@ void StartDownloading()
StopDownloading();
if (strncmp(#DL_URL,"http:",5)==0)
{
DL_address_box.color = DL_address_box.blur_border_color = DL_address_box.focus_border_color = 0xededed;
download_state = STATE_IN_PROGRESS;
DL_address_box.color = DL_address_box.blur_border_color = DL_address_box.focus_border_color = 0xdddDDD;
http_get stdcall (#DL_URL, #accept_language);
DL_http_transfer = EAX;
DL_progress_bar.value = 0;
DL_Draw_Window();
if (DL_http_transfer == 0)
{

View File

@ -6,12 +6,14 @@ char *ITEMS_LIST[]={
"KOI Ctrl+K",11,
"UTF Ctrl+U",21,
#ifdef LANG_RUS
"Zoom 2x Z",122,
"<EFBFBD>®á¬®âà¥âì ¨á室­¨ª F3",52,
"<EFBFBD>¥¤ ªâ¨à®¢ âì ¨á室­¨ª F4",53,
"Žç¨áâ¨âì ªíè ª à⨭®ª" ,02,
"ˆáâ®à¨ï" ,03,
"Œ¥­¥¤¦¥à § £à㧮ª" ,06,
#else
"Zoom 2x Z",122,
"View source F3",52,
"Edit source F4",53,
"Free image cache" ,09,
@ -78,8 +80,9 @@ void DrawMenuList()
WriteText(18,N*menu.line_h+8,0x80,0x000000,ITEMS_LIST[N*2]);
}
if (cur_encoding!=_DEFAULT)
{
DrawBar(7, cur_encoding*menu.line_h+9, 4, 4, 0x444444); //show current encoding
}
else DrawBar(7, _DOS*menu.line_h+9, 4, 4, 0x444444); //show current encoding
WriteText(5, cur_encoding*menu.line_h+7, 0x80, 0x777777, "\x10"); //show current encoding
else
WriteText(5, _DOS*menu.line_h+7, 0x80, 0x777777, "\x10"); //show current encoding
if (WB1.DrawBuf.zoomf == 2) DrawBar(6, 4*menu.line_h+8, 6, 6, 0x777777);
}

View File

@ -1,8 +1,12 @@
dword buf_data;
dword zbuf_data;
struct DrawBufer {
int bufx, bufy, bufw, bufh;
int zbufx, zbufy, zbufw, zbufh;
byte zoomf;
void Init();
void Show();
@ -12,6 +16,7 @@ struct DrawBufer {
void PutPixel();
void AlignCenter();
void AlignRight();
void Zoom2x();
};
void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh)
@ -21,14 +26,21 @@ void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh)
bufw = i_bufw;
bufh = i_bufh;
free(buf_data);
buf_data = malloc(bufw * bufh * 4 + 8); //+1 for good luck
buf_data = malloc(bufw * bufh * 4 + 8);
ESDWORD[buf_data] = bufw;
ESDWORD[buf_data+4] = bufh;
}
void DrawBufer::Show()
{
PutPaletteImage(buf_data+8, bufw, bufh, bufx, bufy, 32,0);
if (zoomf != 1)
{
zbufx = bufx;
zbufy = bufy;
zbufw = bufw * zoomf;
zbufh = bufh * zoomf;
free(zbuf_data);
zbuf_data = malloc(zbufw * zbufh * 4 + 8);
ESDWORD[zbuf_data] = zbufw;
ESDWORD[zbuf_data+4] = zbufh;
}
}
void DrawBufer::Fill(dword fill_color)
@ -91,4 +103,49 @@ void DrawBufer::AlignCenter(dword x,y,w,h, content_width)
}
void DrawBufer::Zoom2x()
{
int i, s;
dword point_x, max_i, zline_w, s_inc;
point_x = 0;
max_i = bufw * bufh * 4 + buf_data+8;
s_inc = zoomf * 4;
zline_w = zbufw * 4;
for (i=buf_data+8, s=zbuf_data+8; i<max_i; i+=4, s+= s_inc) {
ESDWORD[s] = ESDWORD[i];
ESDWORD[s+4] = ESDWORD[i];
ESDWORD[s+zline_w] = ESDWORD[i];
ESDWORD[s+zline_w+4] = ESDWORD[i];
if (zoomf==3)
{
ESDWORD[s+8] = ESDWORD[i];
ESDWORD[zline_w+s+8] = ESDWORD[i];
ESDWORD[zline_w*2+s] = ESDWORD[i];
ESDWORD[zline_w*2+s+4] = ESDWORD[i];
ESDWORD[zline_w*2+s+8] = ESDWORD[i];
}
point_x++;
if (point_x >= bufw)
{
s += zoomf - 1 * zline_w;
point_x = 0;
}
}
}
void DrawBufer::Show()
{
if (zoomf == 1)
{
PutPaletteImage(buf_data+8, bufw, bufh, bufx, bufy, 32, 0);
}
else
{
Zoom2x();
PutPaletteImage(zbuf_data+8, zbufw, zbufh, zbufx, zbufy, 32, 0);
}
}

View File

@ -29,13 +29,13 @@
WriteText(-strlen(text)*6+w/2+x+1,y,0x80,color_t,text);
}
:void DrawCircle(int x, y, r)
:void DrawCircle(int x, y, r, color)
{
int i;
float px=0, py=r, ii = r * 3.1415926 * 2;
FOR (i = 0; i < ii; i++)
{
PutPixel(px + x, y - py, 0);
PutPixel(px + x, y - py, color);
px = py / r + px;
py = -px / r + py;
}