Subversion Repositories Kolibri OS

Rev

Rev 6059 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6059 Rev 6152
1
void PreparePage() 
1
void PreparePage() 
2
{
2
{
3
	list.SetSizes(0, TOOLBAR_H, Form.cwidth-scroll.size_x-1, Form.cheight-TOOLBAR_H, label.size.pt+2);
3
	list.SetSizes(0, TOOLBAR_H, Form.cwidth-scroll.size_x-1, Form.cheight-TOOLBAR_H, label.size.pt+2);
4
	strcpy(#title, history.current()+strrchr(history.current(),'/'));
4
	strcpy(#title, history.current()+strrchr(history.current(),'/'));
5
	//get font chars width, need to increase performance
5
	//get font chars width, need to increase performance
6
	get_label_symbols_size();
6
	get_label_symbols_size();
7
	ChangeCharset(charsets[encoding], "CP866", io.buffer_data);
7
	ChangeCharset(charsets[encoding], "CP866", io.buffer_data);
8
	link.clear();
8
	link.clear();
9
	if (strstri(io.buffer_data, "
9
	if (strstri(io.buffer_data, "
10
		debugln("no  found");
10
		debugln("no  found");
11
		DrawProgress(STEP_2_COUNT_PAGE_HEIGHT);     ParceTxt(false);   //get page height to calculate buffer size
11
		DrawProgress(STEP_2_COUNT_PAGE_HEIGHT);     ParceTxt(false);   //get page height to calculate buffer size
12
		DrawProgress(STEP_3_DRAW_PAGE_INTO_BUFFER); ParceTxt(true);    //draw text in buffer
12
		DrawProgress(STEP_3_DRAW_PAGE_INTO_BUFFER); ParceTxt(true);    //draw text in buffer
13
	} else {
13
	} else {
14
		debugln(" tag found");
14
		debugln(" tag found");
15
		DrawProgress(STEP_2_COUNT_PAGE_HEIGHT);     ParceHtml(false);  //get page height to calculate buffer size
15
		DrawProgress(STEP_2_COUNT_PAGE_HEIGHT);     ParceHtml(false);  //get page height to calculate buffer size
16
		DrawProgress(STEP_3_DRAW_PAGE_INTO_BUFFER); ParceHtml(true);   //draw text in buffer
16
		DrawProgress(STEP_3_DRAW_PAGE_INTO_BUFFER); ParceHtml(true);   //draw text in buffer
17
	}
17
	}
18
	strcat(#title, " - Aelia");
18
	strcat(#title, " - Aelia");
19
	DrawTitle(#title);
19
	DrawTitle(#title);
20
	DrawProgress(STEP_4_SMOOTH_FONT);           label.apply_smooth();
20
	DrawProgress(STEP_4_SMOOTH_FONT);           label.apply_smooth();
21
	DrawProgress(STEP_5_STOP);                  DrawPage();
21
	DrawProgress(STEP_5_STOP);                  DrawPage();
22
}
22
}
23
 
23
 
24
void ParceTxt(byte draw)
24
void ParceTxt(byte draw)
25
{
25
{
26
byte ch, zeroch=0;
26
byte ch, zeroch=0;
27
dword bufoff, buflen, line_start, srch_pos;
27
dword bufoff, buflen, line_start, srch_pos;
28
int stroka_y=5, line_length=0;
28
int stroka_y=5, line_length=0;
29
 
29
 
30
	line_start=io.buffer_data;
30
	line_start=io.buffer_data;
31
	buflen = strlen(io.buffer_data) + io.buffer_data;
31
	buflen = strlen(io.buffer_data) + io.buffer_data;
32
	for (bufoff=io.buffer_data; bufoff
32
	for (bufoff=io.buffer_data; bufoff
33
	{
33
	{
34
		ch = ESBYTE[bufoff];
34
		ch = ESBYTE[bufoff];
35
		line_length += char_width[ch];
35
		line_length += char_width[ch];
36
		if (line_length>=list.w-30) || (ch==10) {
36
		if (line_length>=list.w-30) || (ch==10) {
37
			srch_pos = bufoff;
37
			srch_pos = bufoff;
38
			loop()
38
			loop()
39
			{
39
			{
40
				if (__isWhite(ESBYTE[srch_pos])) { bufoff=srch_pos+1; break; } //normal word-break
40
				if (__isWhite(ESBYTE[srch_pos])) { bufoff=srch_pos+1; break; } //normal word-break
41
				if (srch_pos == line_start) break; //no white space found in whole line
41
				if (srch_pos == line_start) break; //no white space found in whole line
42
				srch_pos--;
42
				srch_pos--;
43
			}
43
			}
44
			if (draw==true) {
44
			if (draw==true) {
45
				ESBYTE[bufoff] >< zeroch; //set line end
45
				ESBYTE[bufoff] >< zeroch; //set line end
46
				WriteTextIntoBuf(8, stroka_y, 0x000000, line_start);
46
				WriteTextIntoBuf(8, stroka_y, 0x000000, line_start);
47
				ESBYTE[bufoff] >< zeroch; //restore line
47
				ESBYTE[bufoff] >< zeroch; //restore line
48
			}
48
			}
49
			stroka_y += list.item_h;
49
			stroka_y += list.item_h;
50
			line_start = bufoff;
50
			line_start = bufoff;
51
			line_length = 0;
51
			line_length = 0;
52
		}
52
		}
53
	}
53
	}
54
	if (draw==false) {
54
	if (draw==false) {
55
		list.count = stroka_y/list.item_h+3;
55
		list.count = stroka_y/list.item_h+3;
56
		if (list.count < list.visible) list.count = list.visible;
56
		if (list.count < list.visible) list.count = list.visible;
57
		label.size.height = list.count+5*list.item_h;
57
		label.size.height = list.count+5*list.item_h;
58
		label.raw_size = 0;
58
		label.raw_size = 0;
59
	} 
59
	} 
60
	if (draw==true) WriteTextIntoBuf(8, stroka_y, 0x000000, line_start);
60
	if (draw==true) WriteTextIntoBuf(8, stroka_y, 0x000000, line_start);
61
}
61
}
62
 
62
 
63
 
63
 
64
/*========================================================
64
/*========================================================
65
=                                                        =
65
=                                                        =
66
=                        HTML                            =
66
=                        HTML                            =
67
=                                                        =
67
=                                                        =
68
========================================================*/
68
========================================================*/
69
 
69
 
70
/*    <meta encoding> <a hrf=""> <img src="" alt=""> <h1>..<h6> <b> <u> <s> <pre> */</pre></td>
            <td class="lineno">70</td>
            <td class="diff"><pre>/* <title>   <meta encoding> <a hrf=""> <img src="" alt=""> <h1>..<h6> <b> <u> <s> <pre> */</pre></td>
          </tr>
          <tr>
            <td class="lineno">71</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">71</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">72</td>
            <td class="diff"><pre>struct _DOM {</pre></td>
            <td class="lineno">72</td>
            <td class="diff"><pre>struct _DOM {</pre></td>
          </tr>
          <tr>
            <td class="lineno">73</td>
            <td class="diff"><pre>	dword start;</pre></td>
            <td class="lineno">73</td>
            <td class="diff"><pre>	dword start;</pre></td>
          </tr>
          <tr>
            <td class="lineno">74</td>
            <td class="diff"><pre>	dword end;</pre></td>
            <td class="lineno">74</td>
            <td class="diff"><pre>	dword end;</pre></td>
          </tr>
          <tr>
            <td class="lineno">75</td>
            <td class="diff"><pre>	dword len;</pre></td>
            <td class="lineno">75</td>
            <td class="diff"><pre>	dword len;</pre></td>
          </tr>
          <tr>
            <td class="lineno">76</td>
            <td class="diff"><pre>};</pre></td>
            <td class="lineno">76</td>
            <td class="diff"><pre>};</pre></td>
          </tr>
          <tr>
            <td class="lineno">77</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">77</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">78</td>
            <td class="diff"><pre>struct _style {</pre></td>
            <td class="lineno">78</td>
            <td class="diff"><pre>struct _style {</pre></td>
          </tr>
          <tr>
            <td class="lineno">79</td>
            <td class="diff"><pre>	bool b, u, i, s;</pre></td>
            <td class="lineno">79</td>
            <td class="diff"><pre>	bool b, u, i, s;</pre></td>
          </tr>
          <tr>
            <td class="lineno">80</td>
            <td class="diff"><pre>	bool h1, h2, h3, h4, h5, h6;</pre></td>
            <td class="lineno">80</td>
            <td class="diff"><pre>	bool h1, h2, h3, h4, h5, h6;</pre></td>
          </tr>
          <tr>
            <td class="lineno">81</td>
            <td class="diff"><pre>	bool a;</pre></td>
            <td class="lineno">81</td>
            <td class="diff"><pre>	bool a;</pre></td>
          </tr>
          <tr>
            <td class="lineno">82</td>
            <td class="diff"><pre>	bool pre;</pre></td>
            <td class="lineno">82</td>
            <td class="diff"><pre>	bool pre;</pre></td>
          </tr>
          <tr>
            <td class="lineno">83</td>
            <td class="diff"><pre>	bool ignore;</pre></td>
            <td class="lineno">83</td>
            <td class="diff"><pre>	bool ignore;</pre></td>
          </tr>
          <tr>
            <td class="lineno">84</td>
            <td class="diff"><pre>	dword color;</pre></td>
            <td class="lineno">84</td>
            <td class="diff"><pre>	dword color;</pre></td>
          </tr>
          <tr>
            <td class="lineno">85</td>
            <td class="diff"><pre>	void clear();</pre></td>
            <td class="lineno">85</td>
            <td class="diff"><pre>	void clear();</pre></td>
          </tr>
          <tr>
            <td class="lineno">86</td>
            <td class="diff"><pre>} style;</pre></td>
            <td class="lineno">86</td>
            <td class="diff"><pre>} style;</pre></td>
          </tr>
          <tr>
            <td class="lineno">87</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">87</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">88</td>
            <td class="diff"><pre>void _style::clear()</pre></td>
            <td class="lineno">88</td>
            <td class="diff"><pre>void _style::clear()</pre></td>
          </tr>
          <tr>
            <td class="lineno">89</td>
            <td class="diff"><pre>{</pre></td>
            <td class="lineno">89</td>
            <td class="diff"><pre>{</pre></td>
          </tr>
          <tr>
            <td class="lineno">90</td>
            <td class="diff"><pre>	b=u=i=s=0;</pre></td>
            <td class="lineno">90</td>
            <td class="diff"><pre>	b=u=i=s=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">91</td>
            <td class="diff"><pre>	h1=h2=h3=h4=h5=h6=0;</pre></td>
            <td class="lineno">91</td>
            <td class="diff"><pre>	h1=h2=h3=h4=h5=h6=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">92</td>
            <td class="diff"><pre>	a=0;</pre></td>
            <td class="lineno">92</td>
            <td class="diff"><pre>	a=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">93</td>
            <td class="diff"><pre>	pre=0;</pre></td>
            <td class="lineno">93</td>
            <td class="diff"><pre>	pre=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">94</td>
            <td class="diff"><pre>	ignore=0;</pre></td>
            <td class="lineno">94</td>
            <td class="diff"><pre>	ignore=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">95</td>
            <td class="diff"><pre>	color=0;</pre></td>
            <td class="lineno">95</td>
            <td class="diff"><pre>	color=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">96</td>
            <td class="diff"><pre>}</pre></td>
            <td class="lineno">96</td>
            <td class="diff"><pre>}</pre></td>
          </tr>
          <tr>
            <td class="lineno">97</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">97</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">98</td>
            <td class="diff"><pre>struct _text {</pre></td>
            <td class="lineno">98</td>
            <td class="diff"><pre>struct _text {</pre></td>
          </tr>
          <tr>
            <td class="lineno">99</td>
            <td class="diff"><pre>	dword start;</pre></td>
            <td class="lineno">99</td>
            <td class="diff"><pre>	dword start;</pre></td>
          </tr>
          <tr>
            <td class="lineno">100</td>
            <td class="diff"><pre>	int x, y;</pre></td>
            <td class="lineno">100</td>
            <td class="diff"><pre>	int x, y;</pre></td>
          </tr>
          <tr>
            <td class="lineno">101</td>
            <td class="diff"><pre>};</pre></td>
            <td class="lineno">101</td>
            <td class="diff"><pre>};</pre></td>
          </tr>
          <tr>
            <td class="lineno">102</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">102</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">103</td>
            <td class="diff"><pre>struct _tag {</pre></td>
            <td class="lineno">103</td>
            <td class="diff"><pre>struct _tag {</pre></td>
          </tr>
          <tr>
            <td class="lineno">104</td>
            <td class="diff"><pre>	dword start;</pre></td>
            <td class="lineno">104</td>
            <td class="diff"><pre>	dword start;</pre></td>
          </tr>
          <tr>
            <td class="lineno">105</td>
            <td class="diff"><pre>	dword name;</pre></td>
            <td class="lineno">105</td>
            <td class="diff"><pre>	dword name;</pre></td>
          </tr>
          <tr>
            <td class="lineno">106</td>
            <td class="diff"><pre>	dword param[10];</pre></td>
            <td class="lineno">106</td>
            <td class="diff"><pre>	dword param[10];</pre></td>
          </tr>
          <tr>
            <td class="lineno">107</td>
            <td class="diff"><pre>	dword value[10];</pre></td>
            <td class="lineno">107</td>
            <td class="diff"><pre>	dword value[10];</pre></td>
          </tr>
          <tr>
            <td class="lineno">108</td>
            <td class="diff"><pre>	void parce();</pre></td>
            <td class="lineno">108</td>
            <td class="diff"><pre>	void parce();</pre></td>
          </tr>
          <tr>
            <td class="lineno">109</td>
            <td class="diff"><pre>	int nameis();</pre></td>
            <td class="lineno">109</td>
            <td class="diff"><pre>	int nameis();</pre></td>
          </tr>
          <tr>
            <td class="lineno">110</td>
            <td class="diff"><pre>	void clear();</pre></td>
            <td class="lineno">110</td>
            <td class="diff"><pre>	void clear();</pre></td>
          </tr>
          <tr>
            <td class="lineno">111</td>
            <td class="diff"><pre>};</pre></td>
            <td class="lineno">111</td>
            <td class="diff"><pre>};</pre></td>
          </tr>
          <tr>
            <td class="lineno">112</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">112</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">113</td>
            <td class="diff"><pre>void _tag::parce()</pre></td>
            <td class="lineno">113</td>
            <td class="diff"><pre>void _tag::parce()</pre></td>
          </tr>
          <tr>
            <td class="lineno">114</td>
            <td class="diff"><pre>{</pre></td>
            <td class="lineno">114</td>
            <td class="diff"><pre>{</pre></td>
          </tr>
          <tr>
            <td class="lineno">115</td>
            <td class="diff"><pre>	dword o = name = start;</pre></td>
            <td class="lineno">115</td>
            <td class="diff"><pre>	dword o = name = start;</pre></td>
          </tr>
          <tr>
            <td class="lineno">116</td>
            <td class="diff"><pre>	while (ESBYTE[o]!=' ') && (ESBYTE[o]) o++; //searching for a space after tag name</pre></td>
            <td class="lineno">116</td>
            <td class="diff"><pre>	while (ESBYTE[o]!=' ') && (ESBYTE[o]) o++; //searching for a space after tag name</pre></td>
          </tr>
          <tr>
            <td class="lineno">117</td>
            <td class="diff"><pre>	ESBYTE[o] = '\0';</pre></td>
            <td class="lineno">117</td>
            <td class="diff"><pre>	ESBYTE[o] = '\0';</pre></td>
          </tr>
          <tr>
            <td class="lineno">118</td>
            <td class="diff"><pre>	strlwr(name);</pre></td>
            <td class="lineno">118</td>
            <td class="diff"><pre>	strlwr(name);</pre></td>
          </tr>
          <tr>
            <td class="lineno">119</td>
            <td class="diff"><pre>}</pre></td>
            <td class="lineno">119</td>
            <td class="diff"><pre>}</pre></td>
          </tr>
          <tr>
            <td class="lineno">120</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">120</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">121</td>
            <td class="diff"><pre>int _tag::nameis(dword _in_tag_name)</pre></td>
            <td class="lineno">121</td>
            <td class="diff"><pre>int _tag::nameis(dword _in_tag_name)</pre></td>
          </tr>
          <tr>
            <td class="lineno">122</td>
            <td class="diff"><pre>{</pre></td>
            <td class="lineno">122</td>
            <td class="diff"><pre>{</pre></td>
          </tr>
          <tr>
            <td class="lineno">123</td>
            <td class="diff"><pre>	if (name) && (strcmp(_in_tag_name, name)==0) return true;</pre></td>
            <td class="lineno">123</td>
            <td class="diff"><pre>	if (name) && (strcmp(_in_tag_name, name)==0) return true;</pre></td>
          </tr>
          <tr>
            <td class="lineno">124</td>
            <td class="diff"><pre>	return false;</pre></td>
            <td class="lineno">124</td>
            <td class="diff"><pre>	return false;</pre></td>
          </tr>
          <tr>
            <td class="lineno">125</td>
            <td class="diff"><pre>}</pre></td>
            <td class="lineno">125</td>
            <td class="diff"><pre>}</pre></td>
          </tr>
          <tr>
            <td class="lineno">126</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">126</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">127</td>
            <td class="diff"><pre>void _tag::clear() </pre></td>
            <td class="lineno">127</td>
            <td class="diff"><pre>void _tag::clear() </pre></td>
          </tr>
          <tr>
            <td class="lineno">128</td>
            <td class="diff"><pre>{</pre></td>
            <td class="lineno">128</td>
            <td class="diff"><pre>{</pre></td>
          </tr>
          <tr>
            <td class="lineno">129</td>
            <td class="diff"><pre>	start=name=0;</pre></td>
            <td class="lineno">129</td>
            <td class="diff"><pre>	start=name=0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">130</td>
            <td class="diff"><pre>}</pre></td>
            <td class="lineno">130</td>
            <td class="diff"><pre>}</pre></td>
          </tr>
          <tr>
            <td class="lineno">131</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">131</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">132</td>
            <td class="diff"><pre>#define HTML_PADDING_X 8;</pre></td>
            <td class="lineno">132</td>
            <td class="diff"><pre>#define HTML_PADDING_X 8;</pre></td>
          </tr>
          <tr>
            <td class="lineno">133</td>
            <td class="diff"><pre>#define HTML_PADDING_Y 5;</pre></td>
            <td class="lineno">133</td>
            <td class="diff"><pre>#define HTML_PADDING_Y 5;</pre></td>
          </tr>
          <tr>
            <td class="lineno">134</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">134</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">135</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">135</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">136</td>
            <td class="diff"><pre>void ParceHtml(byte draw)</pre></td>
            <td class="lineno">136</td>
            <td class="diff"><pre>void ParceHtml(byte draw)</pre></td>
          </tr>
          <tr>
            <td class="lineno">137</td>
            <td class="diff"><pre>{</pre></td>
            <td class="lineno">137</td>
            <td class="diff"><pre>{</pre></td>
          </tr>
          <tr>
            <td class="lineno">138</td>
            <td class="diff"><pre>int stroka_x = HTML_PADDING_X;</pre></td>
            <td class="lineno">138</td>
            <td class="diff"><pre>int stroka_x = HTML_PADDING_X;</pre></td>
          </tr>
          <tr>
            <td class="lineno">139</td>
            <td class="diff"><pre>int stroka_y = HTML_PADDING_Y;</pre></td>
            <td class="lineno">139</td>
            <td class="diff"><pre>int stroka_y = HTML_PADDING_Y;</pre></td>
          </tr>
          <tr>
            <td class="lineno">140</td>
            <td class="diff"><pre>dword line_break;</pre></td>
            <td class="lineno">140</td>
            <td class="diff"><pre>dword line_break;</pre></td>
          </tr>
          <tr>
            <td class="lineno">141</td>
            <td class="diff"><pre>byte ch, zeroch;</pre></td>
            <td class="lineno">141</td>
            <td class="diff"><pre>byte ch, zeroch;</pre></td>
          </tr>
          <tr>
            <td class="lineno">142</td>
            <td class="diff"><pre>_DOM DOM;</pre></td>
            <td class="lineno">142</td>
            <td class="diff"><pre>_DOM DOM;</pre></td>
          </tr>
          <tr>
            <td class="lineno">143</td>
            <td class="diff"><pre>_text text;</pre></td>
            <td class="lineno">143</td>
            <td class="diff"><pre>_text text;</pre></td>
          </tr>
          <tr>
            <td class="lineno">144</td>
            <td class="diff"><pre>_tag tag;</pre></td>
            <td class="lineno">144</td>
            <td class="diff"><pre>_tag tag;</pre></td>
          </tr>
          <tr>
            <td class="lineno">145</td>
            <td class="diff"><pre>dword DOM_pos;</pre></td>
            <td class="lineno">145</td>
            <td class="diff"><pre>dword DOM_pos;</pre></td>
          </tr>
          <tr>
            <td class="lineno">146</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">146</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">147</td>
            <td class="diff"><pre>	tag.clear();</pre></td>
            <td class="lineno">147</td>
            <td class="diff"><pre>	tag.clear();</pre></td>
          </tr>
          <tr>
            <td class="lineno">148</td>
            <td class="diff"><pre>	style.clear();</pre></td>
            <td class="lineno">148</td>
            <td class="diff"><pre>	style.clear();</pre></td>
          </tr>
          <tr>
            <td class="lineno">149</td>
            <td class="diff"><pre>	/* Create DOM */</pre></td>
            <td class="lineno">149</td>
            <td class="diff"><pre>	/* Create DOM */</pre></td>
          </tr>
          <tr>
            <td class="lineno">150</td>
            <td class="diff"><pre>	debugln("creating DOM");</pre></td>
            <td class="lineno">150</td>
            <td class="diff"><pre>	debugln("creating DOM");</pre></td>
          </tr>
          <tr>
            <td class="lineno">151</td>
            <td class="diff"><pre>	DOM.len = strlen(io.buffer_data);</pre></td>
            <td class="lineno">151</td>
            <td class="diff"><pre>	DOM.len = strlen(io.buffer_data);</pre></td>
          </tr>
          <tr>
            <td class="lineno">152</td>
            <td class="diff"><pre>	DOM.start = malloc(DOM.len);</pre></td>
            <td class="lineno">152</td>
            <td class="diff"><pre>	DOM.start = malloc(DOM.len);</pre></td>
          </tr>
          <tr>
            <td class="lineno">153</td>
            <td class="diff"><pre>	DOM.end = DOM.start + DOM.len;</pre></td>
            <td class="lineno">153</td>
            <td class="diff"><pre>	DOM.end = DOM.start + DOM.len;</pre></td>
          </tr>
          <tr>
            <td class="lineno">154</td>
            <td class="diff"><pre>	strlcpy(DOM.start, io.buffer_data, DOM.len);</pre></td>
            <td class="lineno">154</td>
            <td class="diff"><pre>	strlcpy(DOM.start, io.buffer_data, DOM.len);</pre></td>
          </tr>
          <tr>
            <td class="lineno">155</td>
            <td class="diff"><pre>	//RemoveSpecialSymbols(DOM.start, DOM.len);</pre></td>
            <td class="lineno">155</td>
            <td class="diff"><pre>	//RemoveSpecialSymbols(DOM.start, DOM.len);</pre></td>
          </tr>
          <tr>
            <td class="lineno">156</td>
            <td class="diff"><pre>	//DOM.len = strlen(DOM.start);</pre></td>
            <td class="lineno">156</td>
            <td class="diff"><pre>	//DOM.len = strlen(DOM.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">157</td>
            <td class="diff"><pre> </pre></td>
            <td class="lineno">157</td>
            <td class="diff"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">158</td>
            <td class="diff"><pre>	/* Parce DOM */</pre></td>
            <td class="lineno">158</td>
            <td class="diff"><pre>	/* Parce DOM */</pre></td>
          </tr>
          <tr>
            <td class="lineno">159</td>
            <td class="diff"><pre>	debugln("starting DOM parce...");</pre></td>
            <td class="lineno">159</td>
            <td class="diff"><pre>	debugln("starting DOM parce...");</pre></td>
          </tr>
          <tr>
            <td class="lineno">160</td>
            <td class="diff"><pre>	text.start = DOM.start;</pre></td>
            <td class="lineno">160</td>
            <td class="diff"><pre>	text.start = DOM.start;</pre></td>
          </tr>
          <tr>
            <td class="lineno">161</td>
            <td class="diff"><pre>	for (DOM_pos=DOM.start; DOM_pos<DOM.end; DOM_pos++)</pre></td>
            <td class="lineno">161</td>
            <td class="diff"><pre>	for (DOM_pos=DOM.start; DOM_pos<DOM.end; DOM_pos++)</pre></td>
          </tr>
          <tr>
            <td class="lineno">162</td>
            <td class="diff"><pre>	{</pre></td>
            <td class="lineno">162</td>
            <td class="diff"><pre>	{</pre></td>
          </tr>
          <tr>
            <td class="lineno">163</td>
            <td class="diff"><pre>		if (ESBYTE[DOM_pos]==0x0D) || (ESBYTE[DOM_pos]==0x0A) ESBYTE[DOM_pos]=' ';</pre></td>
            <td class="lineno">163</td>
            <td class="diff"><pre>		if (ESBYTE[DOM_pos]==0x0D) || (ESBYTE[DOM_pos]==0x0A) ESBYTE[DOM_pos]=' ';</pre></td>
          </tr>
          <tr>
            <td class="lineno">164</td>
            <td class="diff"><pre>		ch = ESBYTE[DOM_pos];</pre></td>
            <td class="lineno">164</td>
            <td class="diff"><pre>		ch = ESBYTE[DOM_pos];</pre></td>
          </tr>
          <tr>
            <td class="lineno">165</td>
            <td class="diff"><pre>		if (ch=='<') {</pre></td>
            <td class="lineno">165</td>
            <td class="diff"><pre>		if (ch=='<') {</pre></td>
          </tr>
          <tr>
            <td class="lineno">166</td>
            <td class="diff"><pre>			ESBYTE[DOM_pos] = '\0';</pre></td>
            <td class="lineno">166</td>
            <td class="diff"><pre>			ESBYTE[DOM_pos] = '\0';</pre></td>
          </tr>
          <tr>
            <td class="lineno">167</td>
            <td class="diff"><pre>			tag.start = DOM_pos + 1;</pre></td>
            <td class="lineno">167</td>
            <td class="diff"><pre>			tag.start = DOM_pos + 1;</pre></td>
          </tr>
          <tr>
            <td class="lineno">168</td>
            <td class="diff"><pre>			if (style.ignore) continue;</pre></td>
            <td class="lineno">168</td>
            <td class="diff"><pre>			if (style.ignore) continue;</pre></td>
          </tr>
          <tr>
            <td class="lineno">169</td>
            <td class="diff"><pre>			if (tag.nameis("title")) {</pre></td>
            <td class="lineno">169</td>
            <td class="diff"><pre>			if (tag.nameis("title")) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">170</td>
            <td class="diff"><pre>				strcpy(#title, text.start);</pre></td>
            <td class="lineno">170</td>
            <td class="diff"><pre>				strcpy(#title, text.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">171</td>
            <td class="diff"><pre>				continue;</pre></td>
            <td class="lineno">171</td>
            <td class="diff"><pre>				continue;</pre></td>
          </tr>
          <tr>
            <td class="lineno">172</td>
            <td class="diff"><pre>			}</pre></td>
            <td class="lineno">172</td>
            <td class="diff"><pre>			}</pre></td>
          </tr>
          <tr>
            <td class="lineno">173</td>
            <td class="diff"><pre>			strtrim(text.start);</pre></td>
            <td class="lineno">173</td>
            <td class="diff"><pre>			strtrim(text.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">174</td>
            <td class="diff"><pre>			while (get_label_len(text.start) + stroka_x + 30 > list.w)</pre></td>
            <td class="lineno">174</td>
            <td class="diff"><pre>			while (get_label_len(text.start) + stroka_x + 30 > list.w)</pre></td>
          </tr>
          <tr>
            <td class="lineno">175</td>
            <td class="diff"><pre>			{</pre></td>
            <td class="lineno">175</td>
            <td class="diff"><pre>			{</pre></td>
          </tr>
          <tr>
            <td class="lineno">176</td>
            <td class="diff"><pre>				zeroch = 0;</pre></td>
            <td class="lineno">176</td>
            <td class="diff"><pre>				zeroch = 0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">177</td>
            <td class="diff"><pre>				for (line_break=tag.start-1; line_break>text.start; line_break--;)</pre></td>
            <td class="lineno">177</td>
            <td class="diff"><pre>				for (line_break=tag.start-1; line_break>text.start; line_break--;)</pre></td>
          </tr>
          <tr>
            <td class="lineno">178</td>
            <td class="diff"><pre>				{</pre></td>
            <td class="lineno">178</td>
            <td class="diff"><pre>				{</pre></td>
          </tr>
          <tr>
            <td class="lineno">179</td>
            <td class="diff"><pre>					ESBYTE[line_break] >< zeroch; //set line end</pre></td>
            <td class="lineno">179</td>
            <td class="diff"><pre>					ESBYTE[line_break] >< zeroch; //set line end</pre></td>
          </tr>
          <tr>
            <td class="lineno">180</td>
            <td class="diff"><pre>					if (get_label_len(text.start) + stroka_x + 30 <= list.w) break;</pre></td>
            <td class="lineno">180</td>
            <td class="diff"><pre>					if (get_label_len(text.start) + stroka_x + 30 <= list.w) break;</pre></td>
          </tr>
          <tr>
            <td class="lineno">181</td>
            <td class="diff"><pre>					ESBYTE[line_break] >< zeroch; //restore line</pre></td>
            <td class="lineno">181</td>
            <td class="diff"><pre>					ESBYTE[line_break] >< zeroch; //restore line</pre></td>
          </tr>
          <tr>
            <td class="lineno">182</td>
            <td class="diff"><pre>				}</pre></td>
            <td class="lineno">182</td>
            <td class="diff"><pre>				}</pre></td>
          </tr>
          <tr>
            <td class="lineno">183</td>
            <td class="diff"><pre>				if (draw==true) {</pre></td>
            <td class="lineno">183</td>
            <td class="diff"><pre>				if (draw==true) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">184</td>
            <td class="diff"><pre>					if (style.a) {</pre></td>
            <td class="lineno">184</td>
            <td class="diff"><pre>					if (style.a) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">185</td>
            <td class="diff"><pre>						link.add(stroka_x,stroka_y,get_label_len(text.start),list.item_h,text.start," ");</pre></td>
            <td class="lineno">185</td>
            <td class="diff"><pre>						link.add(stroka_x,stroka_y,get_label_len(text.start),list.item_h,text.start," ");</pre></td>
          </tr>
          <tr>
            <td class="lineno">186</td>
            <td class="diff"><pre>						label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);</pre></td>
            <td class="lineno">186</td>
            <td class="diff"><pre>						label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);</pre></td>
          </tr>
          <tr>
            <td class="lineno">187</td>
            <td class="diff"><pre>					}</pre></td>
            <td class="lineno">187</td>
            <td class="diff"><pre>					}</pre></td>
          </tr>
          <tr>
            <td class="lineno">188</td>
            <td class="diff"><pre>					WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);</pre></td>
            <td class="lineno">188</td>
            <td class="diff"><pre>					WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">189</td>
            <td class="diff"><pre>					stroka_x+=char_width[' '];</pre></td>
            <td class="lineno">189</td>
            <td class="diff"><pre>				}</pre></td>
          </tr>
          <tr>
            <td class="lineno">190</td>
            <td class="diffdeleted"><pre>				}</pre></td>
            <td class="lineno">-</td>
            <td class="diffempty"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">191</td>
            <td class="diff"><pre>				ESBYTE[line_break] >< zeroch; //restore line</pre></td>
            <td class="lineno">190</td>
            <td class="diff"><pre>				stroka_x+=char_width[' '];</pre></td>
          </tr>
          <tr>
            <td class="lineno">-</td>
            <td class="diffempty"><pre> </pre></td>
            <td class="lineno">191</td>
            <td class="diffadded"><pre>				ESBYTE[line_break] >< zeroch; //restore line</pre></td>
          </tr>
          <tr>
            <td class="lineno">192</td>
            <td class="diff"><pre>				text.start = line_break;</pre></td>
            <td class="lineno">192</td>
            <td class="diff"><pre>				text.start = line_break;</pre></td>
          </tr>
          <tr>
            <td class="lineno">193</td>
            <td class="diff"><pre>				stroka_x = HTML_PADDING_X;</pre></td>
            <td class="lineno">193</td>
            <td class="diff"><pre>				stroka_x = HTML_PADDING_X;</pre></td>
          </tr>
          <tr>
            <td class="lineno">194</td>
            <td class="diff"><pre>				stroka_y += list.item_h;</pre></td>
            <td class="lineno">194</td>
            <td class="diff"><pre>				stroka_y += list.item_h;</pre></td>
          </tr>
          <tr>
            <td class="lineno">195</td>
            <td class="diff"><pre>			}</pre></td>
            <td class="lineno">195</td>
            <td class="diff"><pre>			}</pre></td>
          </tr>
          <tr>
            <td class="lineno">196</td>
            <td class="diff"><pre>			if (draw==true) {</pre></td>
            <td class="lineno">196</td>
            <td class="diff"><pre>			if (draw==true) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">197</td>
            <td class="diff"><pre>				if (style.a) {</pre></td>
            <td class="lineno">197</td>
            <td class="diff"><pre>				if (style.a) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">198</td>
            <td class="diff"><pre>					link.add(stroka_x,stroka_y,get_label_len(text.start),list.item_h,text.start," ");	</pre></td>
            <td class="lineno">198</td>
            <td class="diff"><pre>					link.add(stroka_x,stroka_y,get_label_len(text.start),list.item_h,text.start," ");	</pre></td>
          </tr>
          <tr>
            <td class="lineno">199</td>
            <td class="diff"><pre>					label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);</pre></td>
            <td class="lineno">199</td>
            <td class="diff"><pre>					label_draw_bar(stroka_x, stroka_y+label.size.pt+1, get_label_len(text.start), style.color);</pre></td>
          </tr>
          <tr>
            <td class="lineno">200</td>
            <td class="diff"><pre>				}</pre></td>
            <td class="lineno">200</td>
            <td class="diff"><pre>				}</pre></td>
          </tr>
          <tr>
            <td class="lineno">201</td>
            <td class="diff"><pre>				WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);</pre></td>
            <td class="lineno">201</td>
            <td class="diff"><pre>				WriteTextIntoBuf(stroka_x, stroka_y, style.color, text.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">202</td>
            <td class="diff"><pre>				stroka_x+=char_width[' '];</pre></td>
            <td class="lineno">202</td>
            <td class="diff"><pre>			}</pre></td>
          </tr>
          <tr>
            <td class="lineno">203</td>
            <td class="diffdeleted"><pre>			}</pre></td>
            <td class="lineno">-</td>
            <td class="diffempty"><pre> </pre></td>
          </tr>
          <tr>
            <td class="lineno">204</td>
            <td class="diff"><pre>			stroka_x += get_label_len(text.start);</pre></td>
            <td class="lineno">203</td>
            <td class="diff"><pre>			stroka_x+=char_width[' '];</pre></td>
          </tr>
          <tr>
            <td class="lineno">-</td>
            <td class="diffempty"><pre> </pre></td>
            <td class="lineno">204</td>
            <td class="diffadded"><pre>			stroka_x += get_label_len(text.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">205</td>
            <td class="diff"><pre>		}</pre></td>
            <td class="lineno">205</td>
            <td class="diff"><pre>		}</pre></td>
          </tr>
          <tr>
            <td class="lineno">206</td>
            <td class="diff"><pre>		if (ch=='>') {</pre></td>
            <td class="lineno">206</td>
            <td class="diff"><pre>		if (ch=='>') {</pre></td>
          </tr>
          <tr>
            <td class="lineno">207</td>
            <td class="diff"><pre>			ESBYTE[DOM_pos] = '\0';</pre></td>
            <td class="lineno">207</td>
            <td class="diff"><pre>			ESBYTE[DOM_pos] = '\0';</pre></td>
          </tr>
          <tr>
            <td class="lineno">208</td>
            <td class="diff"><pre>			text.start = DOM_pos + 1;</pre></td>
            <td class="lineno">208</td>
            <td class="diff"><pre>			text.start = DOM_pos + 1;</pre></td>
          </tr>
          <tr>
            <td class="lineno">209</td>
            <td class="diff"><pre>			tag.parce();</pre></td>
            <td class="lineno">209</td>
            <td class="diff"><pre>			tag.parce();</pre></td>
          </tr>
          <tr>
            <td class="lineno">210</td>
            <td class="diff"><pre>			if (tag.nameis("br")) </pre></td>
            <td class="lineno">210</td>
            <td class="diff"><pre>			if (tag.nameis("br")) </pre></td>
          </tr>
          <tr>
            <td class="lineno">211</td>
            <td class="diff"><pre>				|| (tag.nameis("p")) </pre></td>
            <td class="lineno">211</td>
            <td class="diff"><pre>				|| (tag.nameis("p")) </pre></td>
          </tr>
          <tr>
            <td class="lineno">212</td>
            <td class="diff"><pre>				|| (tag.nameis("div")) </pre></td>
            <td class="lineno">212</td>
            <td class="diff"><pre>				|| (tag.nameis("div")) </pre></td>
          </tr>
          <tr>
            <td class="lineno">213</td>
            <td class="diff"><pre>				|| (tag.nameis("tr")) {</pre></td>
            <td class="lineno">213</td>
            <td class="diff"><pre>				|| (tag.nameis("tr")) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">214</td>
            <td class="diff"><pre>				stroka_y+= list.item_h;</pre></td>
            <td class="lineno">214</td>
            <td class="diff"><pre>				stroka_y+= list.item_h;</pre></td>
          </tr>
          <tr>
            <td class="lineno">215</td>
            <td class="diff"><pre>				stroka_x = HTML_PADDING_X;</pre></td>
            <td class="lineno">215</td>
            <td class="diff"><pre>				stroka_x = HTML_PADDING_X;</pre></td>
          </tr>
          <tr>
            <td class="lineno">216</td>
            <td class="diff"><pre>				continue;</pre></td>
            <td class="lineno">216</td>
            <td class="diff"><pre>				continue;</pre></td>
          </tr>
          <tr>
            <td class="lineno">217</td>
            <td class="diff"><pre>			}</pre></td>
            <td class="lineno">217</td>
            <td class="diff"><pre>			}</pre></td>
          </tr>
          <tr>
            <td class="lineno">218</td>
            <td class="diff"><pre>			if 	(tag.nameis("h1")) || (tag.nameis("/h1"))</pre></td>
            <td class="lineno">218</td>
            <td class="diff"><pre>			if 	(tag.nameis("h1")) || (tag.nameis("/h1"))</pre></td>
          </tr>
          <tr>
            <td class="lineno">219</td>
            <td class="diff"><pre>				|| (tag.nameis("h2")) || (tag.nameis("/h2")) {</pre></td>
            <td class="lineno">219</td>
            <td class="diff"><pre>				|| (tag.nameis("h2")) || (tag.nameis("/h2")) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">220</td>
            <td class="diff"><pre>					stroka_y+= list.item_h;</pre></td>
            <td class="lineno">220</td>
            <td class="diff"><pre>					stroka_y+= list.item_h;</pre></td>
          </tr>
          <tr>
            <td class="lineno">221</td>
            <td class="diff"><pre>					stroka_x = HTML_PADDING_X;</pre></td>
            <td class="lineno">221</td>
            <td class="diff"><pre>					stroka_x = HTML_PADDING_X;</pre></td>
          </tr>
          <tr>
            <td class="lineno">222</td>
            <td class="diff"><pre>					continue;					</pre></td>
            <td class="lineno">222</td>
            <td class="diff"><pre>					continue;					</pre></td>
          </tr>
          <tr>
            <td class="lineno">223</td>
            <td class="diff"><pre>				}</pre></td>
            <td class="lineno">223</td>
            <td class="diff"><pre>				}</pre></td>
          </tr>
          <tr>
            <td class="lineno">224</td>
            <td class="diff"><pre>			if (tag.nameis("script")) || (tag.nameis("style")) style.ignore = true;</pre></td>
            <td class="lineno">224</td>
            <td class="diff"><pre>			if (tag.nameis("script")) || (tag.nameis("style")) style.ignore = true;</pre></td>
          </tr>
          <tr>
            <td class="lineno">225</td>
            <td class="diff"><pre>			if (tag.nameis("/script")) || (tag.nameis("/style")) style.ignore = false;</pre></td>
            <td class="lineno">225</td>
            <td class="diff"><pre>			if (tag.nameis("/script")) || (tag.nameis("/style")) style.ignore = false;</pre></td>
          </tr>
          <tr>
            <td class="lineno">226</td>
            <td class="diff"><pre>			if (tag.nameis("a"))  { style.a = true;  style.color=0x0000FF; }</pre></td>
            <td class="lineno">226</td>
            <td class="diff"><pre>			if (tag.nameis("a"))  { style.a = true;  style.color=0x0000FF; }</pre></td>
          </tr>
          <tr>
            <td class="lineno">227</td>
            <td class="diff"><pre>			if (tag.nameis("/a")) { style.a = false; style.color=0x000000; }</pre></td>
            <td class="lineno">227</td>
            <td class="diff"><pre>			if (tag.nameis("/a")) { style.a = false; style.color=0x000000; }</pre></td>
          </tr>
          <tr>
            <td class="lineno">228</td>
            <td class="diff"><pre>		}		</pre></td>
            <td class="lineno">228</td>
            <td class="diff"><pre>		}		</pre></td>
          </tr>
          <tr>
            <td class="lineno">229</td>
            <td class="diff"><pre>	}</pre></td>
            <td class="lineno">229</td>
            <td class="diff"><pre>	}</pre></td>
          </tr>
          <tr>
            <td class="lineno">230</td>
            <td class="diff"><pre>	if (draw==false) {</pre></td>
            <td class="lineno">230</td>
            <td class="diff"><pre>	if (draw==false) {</pre></td>
          </tr>
          <tr>
            <td class="lineno">231</td>
            <td class="diff"><pre>		list.count = stroka_y/list.item_h+3;</pre></td>
            <td class="lineno">231</td>
            <td class="diff"><pre>		list.count = stroka_y/list.item_h+3;</pre></td>
          </tr>
          <tr>
            <td class="lineno">232</td>
            <td class="diff"><pre>		if (list.count < list.visible) list.count = list.visible;</pre></td>
            <td class="lineno">232</td>
            <td class="diff"><pre>		if (list.count < list.visible) list.count = list.visible;</pre></td>
          </tr>
          <tr>
            <td class="lineno">233</td>
            <td class="diff"><pre>		label.size.height = list.count+5*list.item_h;</pre></td>
            <td class="lineno">233</td>
            <td class="diff"><pre>		label.size.height = list.count+5*list.item_h;</pre></td>
          </tr>
          <tr>
            <td class="lineno">234</td>
            <td class="diff"><pre>		label.raw_size = 0;</pre></td>
            <td class="lineno">234</td>
            <td class="diff"><pre>		label.raw_size = 0;</pre></td>
          </tr>
          <tr>
            <td class="lineno">235</td>
            <td class="diff"><pre>	}</pre></td>
            <td class="lineno">235</td>
            <td class="diff"><pre>	}</pre></td>
          </tr>
          <tr>
            <td class="lineno">236</td>
            <td class="diff"><pre>	free(DOM.start);</pre></td>
            <td class="lineno">236</td>
            <td class="diff"><pre>	free(DOM.start);</pre></td>
          </tr>
          <tr>
            <td class="lineno">237</td>
            <td class="diff"><pre>}</></></></=></></')></DOM.end;></pre></s></u></b></h6></h1></img></a></meta>
237
}