Suddenly HTMLv 0.99.1: support <center>, <right> tags and align="center/right" for h1..h4 tags

git-svn-id: svn://kolibrios.org@4190 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2013-11-07 20:35:14 +00:00
parent 1b66a9b63c
commit 443ee045fb
3 changed files with 75 additions and 69 deletions

View File

@ -32,15 +32,47 @@ void DrawBufSkew(dword x, y, w, h)
}
}
void DrawBufAlignRight(dword x,y,w,h)
{
int i, j, l;
int content_width = stolbec * 6;
int content_left = w - content_width / 2;
for (j=0; j<h; j++)
{
for (i=j*w+w-x*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
{
ESDWORD[drawbuf+8+i] >< ESDWORD[drawbuf+8+l];
}
}
}
void DrawBufAlignCenter(dword x,y,w,h)
{
int i, j, l;
int content_width = stolbec * 6;
int content_left = w - content_width / 2;
for (j=0; j<h; j++)
{
for (i=j*w+content_width+content_left*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
{
ESDWORD[drawbuf+8+i] >< ESDWORD[drawbuf+8+l];
}
}
}
void TextGoDown(int left1, top1, width1)
{
if (!stroka) DrawBar(WB1.left, WB1.top, WB1.width, 5, bg_color); //çàêðàøèâàåì ôîí íàä ïåðâîé ñòðîêîé
stroka++;
if (blq_text) stolbec = 8; else stolbec = 0;
if (li_text) stolbec = li_tab * 5;
if (top1>=WB1.top) && ( top1 < WB1.height+WB1.top-10) && (!anchor)
{
if (text_align == ALIGN_CENTER) DrawBufAlignCenter(left1,top1,WB1.width,WB1.line_h);
if (text_align == ALIGN_RIGHT) DrawBufAlignRight(left1,top1,WB1.width,WB1.line_h);
PutPaletteImage(drawbuf+8, WB1.width, WB1.line_h, left1-5, top1, 32,0);
DrawBufFill();
}
stroka++;
if (blq_text) stolbec = 8; else stolbec = 0;
if (li_text) stolbec = li_tab * 5;
}

View File

@ -25,7 +25,9 @@ struct TWebBrowser {
TWebBrowser WB1;
byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text,
link, ignor_text, li_tab, cur_encoding;
link, ignor_text, li_tab, cur_encoding, text_align;
enum { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT};
dword text_colors[300],
text_color_index,
@ -368,6 +370,7 @@ void TWebBrowser::ParseHTML(dword bword){
if (blink<400) blink=400; else for ( ; blink>400; blink--;) DeleteButton(blink);
b_text = i_text = u_text = s_text = blq_text =
li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè
text_align = ALIGN_LEFT;
link_color = 0x0000FF;
bg_color = 0xFFFFFF;
DrawBufFill();
@ -427,7 +430,6 @@ void TWebBrowser::ParseHTML(dword bword){
bukva = ESBYTE[bword];
chrcat(#tag, bukva);
}
bukva = GetUnicodeSymbol();
if (bukva) goto DEFAULT_MARK;
break;
@ -565,7 +567,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
IF(!chTag("q")) strcat(#line, "\"");
IF(!chTag("q")) chrcat(#line, '\"');
if (anchor) && (!strcmp(#parametr, "id=")) //î÷åíü ïëîõî!!! ïîòîìó ÷òî åñëè íå ïîñëåäíèé òåã, ðàáîòàòü íå áóäåò
{
@ -654,10 +656,30 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
IF(rez) TextGoDown(left1, top1 + 10, width1);
return;
}
if (!chTag("center"))
{
if (rez) text_align = ALIGN_CENTER;
if (!rez) text_align = ALIGN_LEFT;
}
if (!chTag("right"))
{
if (rez) text_align = ALIGN_RIGHT;
if (!rez) text_align = ALIGN_LEFT;
}
if (!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) {
if (rez)
{
if (!strcmp(#parametr, "align=")) && (!strcmp(#options,"center")) text_align = ALIGN_CENTER;
if (!strcmp(#parametr, "align=")) && (!strcmp(#options,"right")) text_align = ALIGN_RIGHT;
b_text = 1;
}
if (!rez)
{
text_align = ALIGN_LEFT;
b_text = 0;
}
TextGoDown(left1, top1, width1);
IF(rez) TextGoDown(left1, top1 + 10, width1);
b_text = rez;
strcpy(#oldtag, #tag);
return;
}

View File

@ -1,18 +1,15 @@
<!--doctype html public "-//w3c//dtd html 4.0 transitional//ru"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест Acid 0.1</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест Acid 0.1</title>
</head>
<body bgcolor="#000000" link="#0066FF" text="#FFFFFF">
<img name="2.1.4" src="background.gif" alt="background">
<b>Это тестовая страница для проверки HTML Viewer</b><br />
<h1 align=center>Это тестовая страница для проверки HTML Viewer</h1>
<br />
<p>Эта программа поддерживает все популярные кодировки:
cp1251, koi-8, cp866, unicode.</p>
<br />
Эта программа поддерживает все популярные кодировки: cp1251, koi-8, cp866, Unicode.<br><br>
<b>
<font color="#FF0000">C</font>
<font color="#FFC005">r</font>
@ -30,7 +27,7 @@
<font color="#FFC005">c</font>
<font color="red">y</font><br>
</b>
Житомир 2008-2012
Житомир 2008-2013
<p>
Íåáîëüøîé ñïèñîê:<ol>
@ -43,6 +40,7 @@
</p>
<br>
<center>
<pre>
Àòü!
Äâà!
@ -51,6 +49,7 @@
Àâòîð ñåãî òâîðåíèÿ íå èçâåñòåí.
</pre>
</center>
<!--ýòîãî òåêñòà çäåñü <íåò>-->
<br>
@ -59,6 +58,8 @@
<label>Radio2: <input type="radio" name="sex" /></label><br>
<br>
<img name="2.1.4" src="background.gif" alt="background">
<font color=#777777>
<a href='./index.htm'>./index.htm</a><br>
@ -74,62 +75,13 @@
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
'>Î÷åíü äëèííûé àäðåñ ñòðîêè</a><br>
<hr color="#758999">
 ýòîì òåêñòå åñòü ïåðåõîä íà ñëåäóþùóþ ñòðîêó, íî áðàóçåð
его должен проигнорировать. Еще много пробелов. А тут есть
табы. Кое-какие символы: &quot; &amp; &lt; &gt; &#149; &nbsp; &copy; &reg; &bdquo; &ldquo; &#151; Їжачок іншого боку р. Євфрат з'їв ґрунт та єврейський ґербалайф.
его должен проигнорировать. Еще много пробелов. А тут есть
табы. Кое-какие символы: &quot; &amp; &lt; &gt; &#149;
&nbsp; &copy; &reg; &bdquo; &ldquo; &#151; Їжачок іншого боку р. Євфрат з'їв ґрунт та єврейський ґербалайф.
<hr color="grey">
</body>