forked from KolibriOS/kolibrios
HTMLv: a little bit more code refactoring
git-svn-id: svn://kolibrios.org@4486 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5501dd00fe
commit
a48c1e2408
@ -17,7 +17,6 @@ char page_links[12000];
|
||||
char header[2048];
|
||||
|
||||
|
||||
|
||||
char download_path[]="/rd/1/.download";
|
||||
|
||||
struct TWebBrowser {
|
||||
@ -31,7 +30,8 @@ struct TWebBrowser {
|
||||
void DrawPage();
|
||||
void DrawScroller();
|
||||
void TextGoDown();
|
||||
};
|
||||
};
|
||||
|
||||
TWebBrowser WB1;
|
||||
|
||||
byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text, li_tab,
|
||||
@ -593,12 +593,12 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
}
|
||||
if (strcmp(#parametr, "color=") == 0) hr_color = GetColor(#options); else hr_color = 0x999999;
|
||||
TextGoDown(left1, top1, width1);
|
||||
DrawBuf.DrawBar(5, WB1.list.line_h/2, WB1.list.w-10, 1, hr_color);
|
||||
TextGoDown(left1, top1+WB1.list.line_h, width1);
|
||||
DrawBuf.DrawBar(5, list.line_h/2, list.w-10, 1, hr_color);
|
||||
TextGoDown(left1, top1+list.line_h, width1);
|
||||
}
|
||||
if (!chTag("img"))
|
||||
{
|
||||
Images( left1, top1, width1);
|
||||
ImgCache1.Images( left1, top1, width1);
|
||||
return;
|
||||
}
|
||||
if (!chTag("meta")) || (!chTag("?xml"))
|
||||
@ -624,8 +624,8 @@ void TWebBrowser::DrawScroller() //
|
||||
scroll_wv.position = list.first;
|
||||
|
||||
scroll_wv.all_redraw=1;
|
||||
scroll_wv.start_x = WB1.list.x + WB1.list.w;
|
||||
scroll_wv.size_y=WB1.list.h;
|
||||
scroll_wv.start_x = list.x + list.w;
|
||||
scroll_wv.size_y=list.h;
|
||||
|
||||
scrollbar_v_draw(#scroll_wv);
|
||||
}
|
||||
@ -633,12 +633,12 @@ void TWebBrowser::DrawScroller() //
|
||||
|
||||
void TWebBrowser::TextGoDown(int left1, top1, width1)
|
||||
{
|
||||
if (!stroka) DrawBar(WB1.list.x, WB1.list.y, WB1.list.w, 5, bg_color); //çàêðàøèâàåì ôîí íàä ïåðâîé ñòðîêîé
|
||||
if (top1>=WB1.list.y) && ( top1 < WB1.list.h+WB1.list.y-10) && (!anchor)
|
||||
if (!stroka) DrawBar(list.x, list.y, list.w, 5, bg_color); //çàêðàøèâàåì ôîí íàä ïåðâîé ñòðîêîé
|
||||
if (top1>=list.y) && ( top1 < list.h+list.y-10) && (!anchor)
|
||||
{
|
||||
if (text_align == ALIGN_CENTER) DrawBuf.AlignCenter(left1,top1,WB1.list.w,WB1.list.line_h,stolbec * 6);
|
||||
if (text_align == ALIGN_RIGHT) DrawBuf.AlignRight(left1,top1,WB1.list.w,WB1.list.line_h,stolbec * 6);
|
||||
PutPaletteImage(buf_data+8, WB1.list.w, WB1.list.line_h, left1-5, top1, 32,0);
|
||||
if (text_align == ALIGN_CENTER) DrawBuf.AlignCenter(left1,top1,list.w,list.line_h,stolbec * 6);
|
||||
if (text_align == ALIGN_RIGHT) DrawBuf.AlignRight(left1,top1,list.w,list.line_h,stolbec * 6);
|
||||
PutPaletteImage(buf_data+8, list.w, list.line_h, left1-5, top1, 32,0);
|
||||
DrawBuf.Fill(bg_color);
|
||||
}
|
||||
stroka++;
|
||||
|
@ -3,31 +3,38 @@ struct s_image
|
||||
dword *image;
|
||||
char path[4096];
|
||||
};
|
||||
s_image pics[100]; //pics = mem_Alloc( 100*sizeof(s_image) );
|
||||
int num_of_pics;
|
||||
|
||||
int GetOrSetPicNum(dword i_path)
|
||||
s_image pics[100]; //pics = mem_Alloc( 100*sizeof(s_image) );
|
||||
|
||||
struct ImgCache {
|
||||
int pics_count;
|
||||
void Free();
|
||||
int GetImage();
|
||||
void Images();
|
||||
} ImgCache1;
|
||||
|
||||
void ImgCache::Free()
|
||||
{
|
||||
for ( ; pics_count>0; pics_count--)
|
||||
{
|
||||
if (pics[pics_count].image) img_destroy stdcall (pics[pics_count].image);
|
||||
pics[pics_count].path = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int ImgCache::GetImage(dword i_path)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<num_of_pics; i++)
|
||||
{
|
||||
if (!strcmp(#pics[i].path, i_path)) return i;
|
||||
}
|
||||
num_of_pics++;
|
||||
return num_of_pics;
|
||||
}
|
||||
|
||||
void FreeImgCache()
|
||||
{
|
||||
for ( ; num_of_pics>0; num_of_pics--)
|
||||
{
|
||||
if (pics[num_of_pics].image) img_destroy stdcall (pics[num_of_pics].image);
|
||||
pics[num_of_pics].path = NULL;
|
||||
}
|
||||
for (i=0; i<pics_count; i++) if (!strcmp(#pics[i].path, i_path)) return i; //image exists
|
||||
// Load image and add it to Cache
|
||||
pics_count++;
|
||||
pics[pics_count].image = load_image(i_path);
|
||||
strcpy(#pics[pics_count].path, i_path);
|
||||
return pics_count;
|
||||
}
|
||||
|
||||
|
||||
void Images(int left1, top1, width1)
|
||||
void ImgCache::Images(int left1, top1, width1)
|
||||
{
|
||||
dword image;
|
||||
char img_path[4096], alt[4096];
|
||||
@ -49,12 +56,7 @@ void Images(int left1, top1, width1)
|
||||
img_path[strrchr(#img_path, '/')] = '\0';
|
||||
strcat(#img_path, #options);
|
||||
}
|
||||
cur_pic=GetOrSetPicNum(#img_path);
|
||||
if (!pics[cur_pic].path)
|
||||
{
|
||||
pics[cur_pic].image=load_image(#img_path);
|
||||
strcpy(#pics[cur_pic].path, #img_path);
|
||||
}
|
||||
cur_pic = GetImage(#img_path);
|
||||
}
|
||||
}
|
||||
if (!strcmp(#parametr,"alt="))
|
||||
@ -77,7 +79,7 @@ void Images(int left1, top1, width1)
|
||||
if (w > width1) w = width1;
|
||||
|
||||
if (stroka==0) DrawBar(WB1.list.x, WB1.list.y, WB1.list.w-15, 5, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
|
||||
stroka+=h/10;
|
||||
stroka += h/10;
|
||||
if (top1+h<WB1.list.y) || (top1>WB1.list.y+WB1.list.h-10) return; //åñëè ÂѨ èçîáðàæåíèå óøëî ÂÅÐÕ èëè ÂÍÈÇ
|
||||
if (top1<WB1.list.y) //åñëè ÷àñòü èçîáðàæåíèÿ ñâåðõó
|
||||
{
|
||||
|
@ -45,8 +45,6 @@ char stak[4096];
|
||||
mouse m;
|
||||
int action_buf;
|
||||
|
||||
|
||||
|
||||
#include "..\TWB\TWB.c"
|
||||
#include "menu_rmb.h"
|
||||
|
||||
@ -239,7 +237,7 @@ void Scan(int id)
|
||||
return;
|
||||
|
||||
case 002: //free img cache
|
||||
FreeImgCache();
|
||||
ImgCache1.Free();
|
||||
notify(IMAGES_CACHE_CLEARED);
|
||||
WB1.ParseHTML(buf);
|
||||
return;
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
dword buf_data;
|
||||
|
||||
struct DrawBufer {
|
||||
@ -27,8 +28,8 @@ void DrawBufer::Init(int i_bufx, i_bufy, i_bufw, i_bufh, i_buf_line_h)
|
||||
void DrawBufer::Fill(dword fill_color)
|
||||
{
|
||||
int i;
|
||||
int max_i = bufw * buf_line_h + 4 * 4 + buf_data;
|
||||
for (i=buf_data; i<max_i; i+=4) ESDWORD[i+8] = fill_color;
|
||||
int max_i = bufw * buf_line_h + 4 * 4 + buf_data +8;
|
||||
for (i=buf_data+8; i<max_i; i+=4) ESDWORD[i] = fill_color;
|
||||
}
|
||||
|
||||
void DrawBufer::DrawBar(dword x, y, w, h, color)
|
||||
@ -36,7 +37,7 @@ void DrawBufer::DrawBar(dword x, y, w, h, color)
|
||||
int i, j;
|
||||
for (j=0; j<h; j++)
|
||||
{
|
||||
for (i = y+j*bufw+x*4; i<y+j*bufw+x+w*4 ; i+=4) ESDWORD[buf_data+i+8] = color;
|
||||
for (i = y+j*bufw+x*4+8+buf_data; i<y+j*bufw+x+w*4+8+buf_data; i+=4) ESDWORD[i] = color;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user