Aelia 0.35: fix ParceHTML function, show site favicon

git-svn-id: svn://kolibrios.org@6152 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2016-02-06 22:48:51 +00:00
parent a55374019f
commit cab4c34e5b
6 changed files with 99 additions and 7 deletions

View File

@ -59,6 +59,7 @@ edit_box address_box = {250,56,34,0xffffff,0x94AECE,0xffffff,0xffffff,0,UML,#add
CustomCursor CursorPointer; CustomCursor CursorPointer;
dword CursorFile = FROM "pointer.cur"; dword CursorFile = FROM "pointer.cur";
#include "favicon.h"
#include "ini.h" #include "ini.h"
#include "gui.h" #include "gui.h"
#include "label.h" #include "label.h"
@ -243,6 +244,7 @@ void EventOpenDialog()
void EventOpenAddress(dword _new_address) void EventOpenAddress(dword _new_address)
{ {
char temp[UML]; char temp[UML];
char favicon_address[UML];
if (!ESBYTE[_new_address]) return; if (!ESBYTE[_new_address]) return;
debugln("===================================="); debugln("====================================");
debug("address: "); debug("address: ");
@ -261,6 +263,7 @@ char temp[UML];
*/ */
io.buffer_data = 0; io.buffer_data = 0;
favicon.get(NULL);
// - build in page // - build in page
if (!strncmp(#address,"aelia:",6)) { if (!strncmp(#address,"aelia:",6)) {
@ -297,6 +300,8 @@ char temp[UML];
strcpy(#address,downloader.url); strcpy(#address,downloader.url);
DrawAddressBox(); DrawAddressBox();
io.buffer_data = downloader.bufpointer; io.buffer_data = downloader.bufpointer;
get_absolute_url(#favicon_address, #address, "/favicon.ico");
favicon.get(#favicon_address);
} }
} }
@ -306,6 +311,7 @@ char temp[UML];
} }
history.add(#address); history.add(#address);
favicon.draw(address_box.left-18, address_box.top-1);
/* /*
Great! So we have the page in our buffer. Great! So we have the page in our buffer.
@ -438,12 +444,14 @@ void DrawPage()
void DrawAddressBox() void DrawAddressBox()
{ {
address_box.left = 97; address_box.left = 97+19;
address_box.top = 11; address_box.top = 11;
address_box.width = Form.cwidth - address_box.left - 138; address_box.width = Form.cwidth - address_box.left - 138;
DrawRectangle(address_box.left-4, address_box.top-5, address_box.width+6, 23, 0x8C8C8C); DrawRectangle(address_box.left-4-19, address_box.top-5, address_box.width+6+19, 23, 0x8C8C8C);
DrawWideRectangle(address_box.left-3, address_box.top-3, address_box.width+5, 21, 4, address_box.color); DrawWideRectangle(address_box.left-3-19, address_box.top-3, address_box.width+5+19, 21, 4, address_box.color);
address_box.size = address_box.pos = address_box.shift = address_box.shift_old = strlen(#address); address_box.size = address_box.pos = address_box.shift = address_box.shift_old = strlen(#address);
address_box.offset = 0; address_box.offset = 0;
edit_box_draw stdcall(#address_box); edit_box_draw stdcall(#address_box);
favicon.draw(address_box.left-18, address_box.top-1);
DrawBar(address_box.left-2, address_box.top+1, 2, 13, 0xFFFfff);
} }

View File

@ -0,0 +1,83 @@
struct _favicon
{
DOWNLOADER favget;
void get();
void draw();
} favicon;
void _favicon::get(dword url)
{
if (url==NULL) || (!favget.Start(url)) {
favget.Stop();
favget.bufpointer = NULL;
}
else {
while (favget.state!=STATE_COMPLETED) favget.MonitorProgress();
}
}
void _favicon::draw(int x,y)
{
dword favicon_data_decoded;
if (favget.bufpointer) {
img_decode stdcall (favget.bufpointer, favget.data_full_size, 0);
if (EAX==0) return;
favicon_data_decoded = EAX;
img_draw stdcall(favicon_data_decoded, x,y, 16, 16, 0, 0);
}
else {
_PutImage(x,y,16,16,#blank_icon);
}
}
unsigned char blank_icon[768] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x7B, 0x75, 0x7D, 0x65, 0x5D, 0x7D,
0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x90, 0x7B,
0x75, 0xD7, 0xD1, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xF0, 0xEB,
0xEB, 0x7D, 0x65, 0x5D, 0xD7, 0xD1, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0x7D, 0x65, 0x5D, 0xFF, 0xFF,
0xFF, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xD7, 0xD1, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0x7D, 0x65, 0x5D, 0x7D, 0x65,
0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x90, 0x7B, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0xF0, 0xEB,
0xEB, 0xF0, 0xEB, 0xEB, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0xF0, 0xEB, 0xEB, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x65, 0x5D, 0xD9, 0xD9, 0xD9, 0xD9,
0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0x7D, 0x65, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x7B, 0x75, 0x7D, 0x65, 0x5D, 0x7D,
0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65,
0x5D, 0x7D, 0x65, 0x5D, 0x7D, 0x65, 0x5D, 0x90, 0x7B, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};

View File

@ -187,8 +187,8 @@ dword DOM_pos;
label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color); label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);
} }
WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start); WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);
stroka_x+=char_width[' '];
} }
stroka_x+=char_width[' '];
ESBYTE[line_break] >< zeroch; //restore line ESBYTE[line_break] >< zeroch; //restore line
text.start = line_break; text.start = line_break;
stroka_x = HTML_PADDING_X; stroka_x = HTML_PADDING_X;
@ -200,8 +200,8 @@ dword DOM_pos;
label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color); label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);
} }
WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start); WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);
stroka_x+=char_width[' '];
} }
stroka_x+=char_width[' '];
stroka_x += get_label_len(text.start); stroka_x += get_label_len(text.start);
} }
if (ch=='>') { if (ch=='>') {

View File

@ -40,7 +40,8 @@ DONE:
inline fastcall void debugln( EDX) inline fastcall void debugln( EDX)
{ {
debug( EDX); debug( EDX);
debugch('\n'); debugch(10);
debugch(13);
} }
inline void debugi(dword d_int) inline void debugi(dword d_int)

View File

@ -316,7 +316,7 @@ void StartPlayingMp3()
char item_path[4096]; char item_path[4096];
char notify_message[512]; char notify_message[512];
StopPlayingMp3(); StopPlayingMp3();
if (!list.count) { NotifyAndBackFocus("'Pixie Player\nPress O key to open file' -St"); return; } if (!list.count) { NotifyAndBackFocus("'Pixie Player\nPress O key to open MP3 file' -St"); return; }
if (current_playing_file_n > list.count) { current_playing_file_n = list.count; return; } if (current_playing_file_n > list.count) { current_playing_file_n = list.count; return; }
if (current_playing_file_n < 0) { current_playing_file_n = 0; return; } if (current_playing_file_n < 0) { current_playing_file_n = 0; return; }
playback_mode = PLAYBACK_MODE_PLAYING; playback_mode = PLAYBACK_MODE_PLAYING;