forked from KolibriOS/kolibrios
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:
parent
686b37b809
commit
024cd8ec51
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 Кб
|
||||
- улучшен и оптимизирован код обработки юникодовских тегов (&), исправлен
|
||||
и дополнен их список;
|
||||
- устранён вылет программы при нажатии клавиши 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 кодировки, где все символы отображаются, как А и т.д.
|
||||
(заработал файл, присланый 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 Кб
|
||||
- реализовано преобразование тегов вида в символы (пока только 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 под новую библиотеку, немного доделан.
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user