forked from KolibriOS/kolibrios
WebView: scancodes, fonts (part1: prepare)
git-svn-id: svn://kolibrios.org@5711 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
abde4bc0d8
commit
5c8f8dc889
@ -61,7 +61,6 @@ char anchor[256];
|
|||||||
void TWebBrowser::DrawPage()
|
void TWebBrowser::DrawPage()
|
||||||
{
|
{
|
||||||
int start_x, start_y, line_length, stolbec_len, magrin_left=5;
|
int start_x, start_y, line_length, stolbec_len, magrin_left=5;
|
||||||
dword font_type;
|
|
||||||
|
|
||||||
if (!header)
|
if (!header)
|
||||||
{
|
{
|
||||||
@ -80,16 +79,14 @@ void TWebBrowser::DrawPage()
|
|||||||
stolbec_len = strlen(#line);
|
stolbec_len = strlen(#line);
|
||||||
line_length = stolbec_len * list.font_w * DrawBuf.zoom;
|
line_length = stolbec_len * list.font_w * DrawBuf.zoom;
|
||||||
|
|
||||||
if (DrawBuf.zoom==1) font_type = 0x88; else font_type = 0x89;
|
WriteBufText(start_x, 0, list.font_type, text_colors[text_color_index], #line, buf_data);
|
||||||
|
if (b_text) WriteBufText(start_x+1, 0, list.font_type, text_colors[text_color_index], #line, buf_data);
|
||||||
WriteBufText(start_x, 0, font_type, text_colors[text_color_index], #line, buf_data);
|
|
||||||
if (b_text) WriteBufText(start_x+1, 0, font_type, text_colors[text_color_index], #line, buf_data);
|
|
||||||
if (i_text) { stolbec++; DrawBuf.Skew(start_x, 0, line_length, list.line_h); } // bug with zoom>1
|
if (i_text) { stolbec++; DrawBuf.Skew(start_x, 0, line_length, list.line_h); } // bug with zoom>1
|
||||||
if (s_text) DrawBuf.DrawBar(start_x, list.line_h / 2 - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
if (s_text) DrawBuf.DrawBar(start_x, list.line_h / 2 - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
||||||
if (u_text) DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
if (u_text) DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
||||||
if (link) {
|
if (link) {
|
||||||
DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom, line_length, DrawBuf.zoom, text_colors[text_color_index]);
|
||||||
UnsafeDefineButton(start_x-2, start_y-1, line_length + 3, DrawBuf.zoom * 10, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
|
UnsafeDefineButton(start_x-2, start_y-1, line_length + 3, DrawBuf.zoom * list.font_h, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
|
||||||
PageLinks.AddText(#line, line_length, list.line_h, UNDERLINE);
|
PageLinks.AddText(#line, line_length, list.line_h, UNDERLINE);
|
||||||
}
|
}
|
||||||
stolbec += stolbec_len;
|
stolbec += stolbec_len;
|
||||||
@ -352,7 +349,7 @@ void TWebBrowser::SetTextStyle(int left1, top1) {
|
|||||||
|
|
||||||
link = 1;
|
link = 1;
|
||||||
text_colors[text_color_index] = link_color_inactive;
|
text_colors[text_color_index] = link_color_inactive;
|
||||||
PageLinks.AddLink(#options, DrawBuf.zoom * stolbec*6+left1, top1-DrawBuf.zoom);
|
PageLinks.AddLink(#options, DrawBuf.zoom * stolbec * list.font_w + left1, top1-DrawBuf.zoom);
|
||||||
}
|
}
|
||||||
if (anchor) && (!strcmp(#parametr, "name="))
|
if (anchor) && (!strcmp(#parametr, "name="))
|
||||||
{
|
{
|
||||||
@ -521,7 +518,7 @@ void TWebBrowser::SetTextStyle(int left1, top1) {
|
|||||||
{
|
{
|
||||||
NewLine();
|
NewLine();
|
||||||
if (stroka > -1) && (stroka - 2 < list.visible)
|
if (stroka > -1) && (stroka - 2 < list.visible)
|
||||||
DrawBuf.DrawBar(li_tab * 5 * 6 * DrawBuf.zoom + list.x, list.line_h / 2 - DrawBuf.zoom - DrawBuf.zoom, DrawBuf.zoom*2, DrawBuf.zoom*2, 0x555555);
|
DrawBuf.DrawBar(li_tab * 5 * list.font_w * DrawBuf.zoom + list.x, list.line_h / 2 - DrawBuf.zoom - DrawBuf.zoom, DrawBuf.zoom*2, DrawBuf.zoom*2, 0x555555);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -588,7 +585,6 @@ void BufEncode(int set_new_encoding)
|
|||||||
{
|
{
|
||||||
strcpy(bufpointer, o_bufpointer);
|
strcpy(bufpointer, o_bufpointer);
|
||||||
}
|
}
|
||||||
debugln(charsets[set_new_encoding]);
|
|
||||||
bufpointer = ChangeCharset(charsets[set_new_encoding], "CP866", bufpointer);
|
bufpointer = ChangeCharset(charsets[set_new_encoding], "CP866", bufpointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,8 +616,8 @@ void TWebBrowser::NewLine()
|
|||||||
if (t_html) && (!t_body) return;
|
if (t_html) && (!t_body) return;
|
||||||
if (stroka * list.line_h + 5 >= 0) && ( stroka + 1 * list.line_h + 5 < list.h) && (!anchor)
|
if (stroka * list.line_h + 5 >= 0) && ( stroka + 1 * list.line_h + 5 < list.h) && (!anchor)
|
||||||
{
|
{
|
||||||
if (text_align == ALIGN_CENTER) && (DrawBuf.zoom==1) DrawBuf.AlignCenter(onleft,ontop,list.w,list.line_h,stolbec * 6);
|
if (text_align == ALIGN_CENTER) && (DrawBuf.zoom==1) DrawBuf.AlignCenter(onleft,ontop,list.w,list.line_h,stolbec * list.font_w);
|
||||||
if (text_align == ALIGN_RIGHT) && (DrawBuf.zoom==1) DrawBuf.AlignRight(onleft,ontop,list.w,list.line_h,stolbec * 6);
|
if (text_align == ALIGN_RIGHT) && (DrawBuf.zoom==1) DrawBuf.AlignRight(onleft,ontop,list.w,list.line_h,stolbec * list.font_w);
|
||||||
DrawBuf.bufy = ontop;
|
DrawBuf.bufy = ontop;
|
||||||
DrawBuf.Show();
|
DrawBuf.Show();
|
||||||
DrawBuf.Fill(bg_color);
|
DrawBuf.Fill(bg_color);
|
||||||
|
@ -88,7 +88,7 @@ edit_box address_box = {250,55,34,0xffffff,0x94AECE,0xffffff,0xffffff,0,sizeof(U
|
|||||||
#define URL_SERVICE_HOME "WebView://home"
|
#define URL_SERVICE_HOME "WebView://home"
|
||||||
#define URL_SERVICE_SOURCE "WebView://source:"
|
#define URL_SERVICE_SOURCE "WebView://source:"
|
||||||
|
|
||||||
enum { BACK=300, FORWARD, REFRESH, HOME, NEWTAB, GOTOURL, SEARCHWEB, INPUT_CH, INPUT_BT, BTN_UP, BTN_DOWN };
|
enum { BUTTON_BACK=1000, FORWARD, REFRESH, HOME, NEWTAB, GOTOURL, SEARCHWEB, INPUT_CH, INPUT_BT };
|
||||||
|
|
||||||
libimg_image skin;
|
libimg_image skin;
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ void DrawProgress()
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
unsigned long key, btn;
|
dword btn;
|
||||||
int half_scroll_size;
|
int half_scroll_size;
|
||||||
int scroll_used=0, show_menu;
|
int scroll_used=0, show_menu;
|
||||||
|
|
||||||
@ -133,6 +133,7 @@ void main()
|
|||||||
SetSkinColors();
|
SetSkinColors();
|
||||||
|
|
||||||
WB1.DrawBuf.zoom = 1;
|
WB1.DrawBuf.zoom = 1;
|
||||||
|
WB1.list.SetFont(6, 9, 10001000b);
|
||||||
Form.width=WIN_W;
|
Form.width=WIN_W;
|
||||||
Form.height=WIN_H;
|
Form.height=WIN_H;
|
||||||
SetElementSizes();
|
SetElementSizes();
|
||||||
@ -188,19 +189,24 @@ void main()
|
|||||||
if (btn!=WB1.list.first) WB1.Parse();
|
if (btn!=WB1.list.first) WB1.Parse();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evButton:
|
case evButton:
|
||||||
btn=GetButtonID();
|
btn=GetButtonID();
|
||||||
if (btn==1) ExitProcess();
|
if (btn==1) ExitProcess();
|
||||||
Scan(btn);
|
Scan(btn);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
key = GetKey();
|
GetKeys();
|
||||||
if (address_box.flags & 0b10)
|
if (address_box.flags & 0b10)
|
||||||
{
|
{
|
||||||
if (key==ASCII_KEY_ENTER) Scan(key); else
|
if (key_ascii == ASCII_KEY_ENTER) Scan(key_scancode); else
|
||||||
if (key!=0x0d) && (key!=183) && (key!=184) {EAX=key<<8; edit_box_key stdcall(#address_box);}
|
if (key_ascii != 0x0d) && (key_ascii != 183) && (key_ascii != 184) {EAX = key_ascii << 8; edit_box_key stdcall(#address_box);}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Scan(key_scancode);
|
||||||
}
|
}
|
||||||
else Scan(key);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
@ -285,8 +291,7 @@ void SetElementSizes()
|
|||||||
address_box.top = TOOLBAR_H-TAB_H/2-7+TAB_H;
|
address_box.top = TOOLBAR_H-TAB_H/2-7+TAB_H;
|
||||||
address_box.width = Form.cwidth - address_box.left - 25 - 22;
|
address_box.width = Form.cwidth - address_box.left - 25 - 22;
|
||||||
WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x / WB1.DrawBuf.zoom,
|
WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x / WB1.DrawBuf.zoom,
|
||||||
Form.cheight - TOOLBAR_H - STATUSBAR_H, 11*WB1.DrawBuf.zoom);
|
Form.cheight - TOOLBAR_H - STATUSBAR_H, WB1.list.font_h + WB1.DrawBuf.zoom + WB1.DrawBuf.zoom * WB1.DrawBuf.zoom);
|
||||||
WB1.list.SetFont(6, 9, 0x88);
|
|
||||||
WB1.list.column_max = WB1.list.w - scroll_wv.size_x / WB1.list.font_w;
|
WB1.list.column_max = WB1.list.w - scroll_wv.size_x / WB1.list.font_w;
|
||||||
WB1.list.visible = WB1.list.h - 5 / WB1.list.line_h;
|
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);
|
WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, WB1.list.line_h);
|
||||||
@ -314,8 +319,8 @@ void Draw_Window()
|
|||||||
DrawRectangle(address_box.left-1, address_box.top-1, address_box.width+2, 16,address_box.color);
|
DrawRectangle(address_box.left-1, address_box.top-1, address_box.width+2, 16,address_box.color);
|
||||||
DrawRectangle(address_box.left-2, address_box.top-2, address_box.width+4, 18,border_color);
|
DrawRectangle(address_box.left-2, address_box.top-2, address_box.width+4, 18,border_color);
|
||||||
// < / >
|
// < / >
|
||||||
DefineButton(address_box.left-49, address_box.top-1, 23, skin.h-2, 300+BT_HIDE, 0);
|
DefineButton(address_box.left-49, address_box.top-1, 23, skin.h-2, BUTTON_BACK+BT_HIDE, 0);
|
||||||
DefineButton(address_box.left-25, address_box.top-1, 23, skin.h-2, 301+BT_HIDE, 0);
|
DefineButton(address_box.left-25, address_box.top-1, 23, skin.h-2, FORWARD+BT_HIDE, 0);
|
||||||
img_draw stdcall(skin.image, address_box.left-50, address_box.top-2, 48, skin.h, 3, 0);
|
img_draw stdcall(skin.image, address_box.left-50, address_box.top-2, 48, skin.h, 3, 0);
|
||||||
// refrash
|
// refrash
|
||||||
DefineButton(address_box.left+address_box.width+1, address_box.top-2, 16, skin.h-1, REFRESH+BT_HIDE+BT_NOFRAME, 0);
|
DefineButton(address_box.left+address_box.width+1, address_box.top-2, 16, skin.h-1, REFRESH+BT_HIDE+BT_NOFRAME, 0);
|
||||||
@ -334,16 +339,71 @@ void Draw_Window()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scan(int id)
|
void Scan(dword id__)
|
||||||
{
|
{
|
||||||
action_buf=0;
|
action_buf=0;
|
||||||
if (id >= 400)
|
if (id__ >= 400)
|
||||||
{
|
{
|
||||||
ProcessLinks(id);
|
ProcessLinks(id__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (id)
|
switch (id__)
|
||||||
{
|
{
|
||||||
|
case SCAN_CODE_BS:
|
||||||
|
case BUTTON_BACK:
|
||||||
|
if (!BrowserHistory.GoBack()) return;
|
||||||
|
OpenPage();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case FORWARD:
|
||||||
|
if (!BrowserHistory.GoForward()) return;
|
||||||
|
OpenPage();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case SCAN_CODE_HOME:
|
||||||
|
case SCAN_CODE_END:
|
||||||
|
case SCAN_CODE_PGUP:
|
||||||
|
case SCAN_CODE_PGDN:
|
||||||
|
if (WB1.list.ProcessKey(key_scancode)) WB1.Parse();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case SCAN_CODE_UP:
|
||||||
|
if (WB1.list.first <= 0) return;
|
||||||
|
WB1.list.first--;
|
||||||
|
WB1.Parse();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case SCAN_CODE_DOWN:
|
||||||
|
if (WB1.list.visible + WB1.list.first >= WB1.list.count) return;
|
||||||
|
WB1.list.first++;
|
||||||
|
WB1.Parse();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case 44: //Z-key down
|
||||||
|
if (WB1.DrawBuf.zoom==2)
|
||||||
|
{
|
||||||
|
WB1.DrawBuf.zoom=1;
|
||||||
|
WB1.list.SetFont(6, 9, 10001000b);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WB1.DrawBuf.zoom=2;
|
||||||
|
WB1.list.SetFont(6, 9, 10001001b);
|
||||||
|
}
|
||||||
|
Draw_Window();
|
||||||
|
return;
|
||||||
|
|
||||||
|
case GOTOURL:
|
||||||
|
case SCAN_CODE_ENTER: //enter
|
||||||
|
if (!editURL[0]) return;
|
||||||
|
if (strncmp(#editURL,"http:",5)) && (editURL[0]!='/') && (strncmp(#editURL,"WebView:",9)) strncpy(#URL,"http://",7);
|
||||||
|
else
|
||||||
|
URL[0] = 0;
|
||||||
|
strcat(#URL, #editURL);
|
||||||
|
OpenPage();
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
case 011: //Ctrk+K
|
case 011: //Ctrk+K
|
||||||
BufEncode(CH_KOI8);
|
BufEncode(CH_KOI8);
|
||||||
WB1.Parse();
|
WB1.Parse();
|
||||||
@ -375,15 +435,7 @@ void Scan(int id)
|
|||||||
CreateThread(#Downloader,#downloader_stak+4092);
|
CreateThread(#Downloader,#downloader_stak+4092);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case ASCII_KEY_BS:
|
|
||||||
case BACK:
|
|
||||||
if (!BrowserHistory.GoBack()) return;
|
|
||||||
OpenPage();
|
|
||||||
return;
|
|
||||||
case FORWARD:
|
|
||||||
if (!BrowserHistory.GoForward()) return;
|
|
||||||
OpenPage();
|
|
||||||
return;
|
|
||||||
case 052: //F3
|
case 052: //F3
|
||||||
WB1.list.first = 0;
|
WB1.list.first = 0;
|
||||||
ShowSource();
|
ShowSource();
|
||||||
@ -407,73 +459,24 @@ void Scan(int id)
|
|||||||
}
|
}
|
||||||
else OpenPage();
|
else OpenPage();
|
||||||
return;
|
return;
|
||||||
case 014:
|
|
||||||
case 020:
|
case 020:
|
||||||
case NEWTAB:
|
case NEWTAB:
|
||||||
MoveSize(190,80,OLD,OLD);
|
MoveSize(190,80,OLD,OLD);
|
||||||
RunProgram(#program_path, #URL);
|
RunProgram(#program_path, #URL);
|
||||||
return;
|
return;
|
||||||
case GOTOURL:
|
|
||||||
case 0x0D: //enter
|
|
||||||
if (!editURL[0]) return;
|
|
||||||
if (strncmp(#editURL,"http:",5)) && (editURL[0]!='/') && (strncmp(#editURL,"WebView:",9)) strncpy(#URL,"http://",7);
|
|
||||||
else
|
|
||||||
URL[0] = 0;
|
|
||||||
strcat(#URL, #editURL);
|
|
||||||
OpenPage();
|
|
||||||
return;
|
|
||||||
case SEARCHWEB:
|
case SEARCHWEB:
|
||||||
sprintf(#URL,"%s%s",#search_path,#editURL);
|
sprintf(#URL,"%s%s",#search_path,#editURL);
|
||||||
OpenPage();
|
OpenPage();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 183: //PgDown
|
|
||||||
if (WB1.list.count < WB1.list.visible) return;
|
|
||||||
IF(WB1.list.first == WB1.list.count - WB1.list.visible) return;
|
|
||||||
WB1.list.first += WB1.list.visible + 2;
|
|
||||||
IF(WB1.list.visible + WB1.list.first > WB1.list.count) WB1.list.first = WB1.list.count - WB1.list.visible;
|
|
||||||
WB1.Parse();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 184: //PgUp
|
|
||||||
if (WB1.list.count < WB1.list.visible) return;
|
|
||||||
IF(WB1.list.first == 0) return;
|
|
||||||
WB1.list.first -= WB1.list.visible - 2;
|
|
||||||
IF(WB1.list.first < 0) WB1.list.first = 0;
|
|
||||||
WB1.Parse();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 178:
|
|
||||||
case BTN_UP:
|
|
||||||
if (WB1.list.first <= 0) return;
|
|
||||||
WB1.list.first--;
|
|
||||||
WB1.Parse();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 177:
|
|
||||||
case BTN_DOWN:
|
|
||||||
if (WB1.list.visible + WB1.list.first >= WB1.list.count) return;
|
|
||||||
WB1.list.first++;
|
|
||||||
WB1.Parse();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 180: //home
|
|
||||||
if (WB1.list.KeyHome()) WB1.Parse();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 181: //end
|
|
||||||
if (WB1.list.count < WB1.list.visible) return;
|
|
||||||
if (WB1.list.KeyEnd()) WB1.Parse();
|
|
||||||
return;
|
|
||||||
case 312:
|
case 312:
|
||||||
SwitchToAnotherThread();
|
SwitchToAnotherThread();
|
||||||
mouse.y = TOOLBAR_H-6;
|
mouse.y = TOOLBAR_H-6;
|
||||||
mouse.x = Form.cwidth - 167;
|
mouse.x = Form.cwidth - 167;
|
||||||
CreateThread(#menu_rmb,#stak+4092);
|
CreateThread(#menu_rmb,#stak+4092);
|
||||||
return;
|
return;
|
||||||
case 122:
|
*/
|
||||||
if (WB1.DrawBuf.zoom==1) WB1.DrawBuf.zoom=2; else WB1.DrawBuf.zoom=1;
|
|
||||||
Draw_Window();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user