HTMLv: a little bit more code refactoring

git-svn-id: svn://kolibrios.org@4486 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2014-01-19 17:12:45 +00:00
parent 5501dd00fe
commit a48c1e2408
4 changed files with 45 additions and 44 deletions

View File

@ -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++;

View File

@ -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) //åñëè ÷àñòü èçîáðàæåíèÿ ñâåðõó
{

View File

@ -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;

View File

@ -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;
}
}