Rev 2803 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2803 | Rev 2810 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | int downloader_id; |
1 | int downloader_id; |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | dword j, |
3 | dword |
4 | buf, |
4 | buf, |
5 | filesize, |
5 | filesize, |
6 | blink = 400; |
6 | blink; |
Line 7... | Line 7... | ||
7 | int i; |
7 | int i; |
8 | 8 | ||
9 | char download_path[]="/rd/1/.download"; |
9 | char download_path[]="/rd/1/.download"; |
Line 10... | Line 10... | ||
10 | char search_path[]="http://nigma.ru/index.php?s="; |
10 | char search_path[]="http://nigma.ru/index.php?s="; |
11 | char version[]=" Text-based Browser 0.93e"; |
11 | char version[]=" Text-based Browser 0.94"; |
12 | 12 | ||
Line 58... | Line 58... | ||
58 | 58 | ||
Line 59... | Line 59... | ||
59 | //#1 |
59 | //#1 |
60 | if (URL[0] == '#') |
60 | if (URL[0] == '#') |
61 | { |
61 | { |
62 | copystr(#URL+find_symbol(#URL, '#'), #anchor); |
62 | strcpy(#anchor, #URL+find_symbol(#URL, '#')); |
Line 63... | Line 63... | ||
63 | 63 | ||
64 | copystr(BrowserHistory.CurrentUrl(), #URL); |
- | |
65 | //copystr(#editURL, #URL + strlen(#URL)); |
- | |
Line 66... | Line 64... | ||
66 | //copystr(#URL, #editURL); |
64 | strcpy(#URL, BrowserHistory.CurrentUrl()); |
67 | 65 | ||
68 | za_kadrom=count-max_kolvo_strok; |
66 | lines_first=lines_all-lines_visible; |
69 | ShowPage(#URL); |
67 | ShowPage(#URL); |
70 | return; |
68 | return; |
71 | } |
69 | } |
72 | //liner.ru#1 |
70 | //liner.ru#1 |
73 | if (find_symbol(#URL, '#')<>-1) |
71 | if (find_symbol(#URL, '#')<>-1) |
74 | { |
72 | { |
75 | copystr(#URL+find_symbol(#URL, '#'), #anchor); |
73 | strcpy(#anchor, #URL+find_symbol(#URL, '#')); |
Line 76... | Line 74... | ||
76 | URL[find_symbol(#URL, '#')-1] = 0x00; //çàãëóøêà |
74 | URL[find_symbol(#URL, '#')-1] = 0x00; //çàãëóøêà |
Line 77... | Line 75... | ||
77 | } |
75 | } |
78 | 76 | ||
79 | GetNewUrl(); |
77 | GetNewUrl(); |
80 | 78 | ||
81 | if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg")) |
79 | if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg")) |
82 | { |
80 | { |
Line 83... | Line 81... | ||
83 | RunProgram("/sys/media/kiv", #URL); |
81 | RunProgram("/sys/media/kiv", #URL); |
84 | copystr(BrowserHistory.CurrentUrl(), #URL); |
82 | strcpy(#URL, BrowserHistory.CurrentUrl()); |
85 | return; |
83 | return; |
Line 86... | Line 84... | ||
86 | } |
84 | } |
87 | 85 | ||
Line 88... | Line 86... | ||
88 | OpenPage(); |
86 | OpenPage(); |
89 | return; |
87 | return; |
90 | } |
88 | } |
Line 125... | Line 123... | ||
125 | Pause(20); |
123 | Pause(20); |
126 | Draw_Window(); |
124 | Draw_Window(); |
127 | return; |
125 | return; |
128 | } |
126 | } |
129 | anchor_line_num=za_kadrom; //âåñ¸ëûé êîñòûëü :Ð |
127 | anchor_line_num=lines_first; //âåñ¸ëûé êîñòûëü :Ð |
130 | anchor[0]='|'; |
128 | anchor[0]='|'; |
131 | OpenPage(); |
129 | OpenPage(); |
132 | return; |
130 | return; |
133 | case 014: //Ctrl+N íîâîå îêíî |
131 | case 014: //Ctrl+N íîâîå îêíî |
134 | case 020: //Ctrl+T íîâàÿ âêëàäêà |
132 | case 020: //Ctrl+T íîâàÿ âêëàäêà |
135 | case NEWTAB: |
133 | case NEWTAB: |
Line 137... | Line 135... | ||
137 | RunProgram(#program_path, #URL); |
135 | RunProgram(#program_path, #URL); |
138 | return; |
136 | return; |
139 | 137 | ||
Line 140... | Line 138... | ||
140 | case HOME: |
138 | case HOME: |
141 | copystr("http://kolibri-os.narod.ru", #editURL); |
139 | strcpy(#editURL, "http://kolibri-os.narod.ru"); |
142 | case GOTOURL: |
140 | case GOTOURL: |
143 | case 0x0D: //enter |
141 | case 0x0D: //enter |
144 | copystr(#editURL, #URL); |
142 | strcpy(#URL, #editURL); |
145 | OpenPage(); |
143 | OpenPage(); |
146 | return; |
144 | return; |
147 | case 173: //ctrl+enter |
145 | case 173: //ctrl+enter |
148 | case SEARCHWEB: |
146 | case SEARCHWEB: |
149 | copystr(#search_path, #URL); |
147 | strcpy(#URL, #search_path); |
150 | copystr(#editURL, #URL + strlen(#URL)); |
148 | strcat(#URL, #editURL); |
151 | OpenPage(); |
149 | OpenPage(); |
152 | return; |
150 | return; |
Line 153... | Line 151... | ||
153 | 151 | ||
154 | case ID1: //ìîòàåì ââåðõ |
152 | case ID1: //ìîòàåì ââåðõ |
155 | IF(za_kadrom <= 0) return; |
153 | IF(lines_first <= 0) return; |
156 | za_kadrom--; |
154 | lines_first--; |
157 | break; |
155 | break; |
158 | case ID2: //ìîòàåì âíèç |
156 | case ID2: //ìîòàåì âíèç |
159 | IF(max_kolvo_strok + za_kadrom >= count) return; |
157 | IF(lines_visible + lines_first >= lines_all) return; |
160 | za_kadrom++; |
158 | lines_first++; |
161 | break; |
159 | break; |
162 | case 183: //PgDown |
160 | case 183: //PgDown |
163 | IF(za_kadrom == count - max_kolvo_strok) return; |
161 | IF(lines_first == lines_all - lines_visible) return; |
164 | za_kadrom += max_kolvo_strok + 2; |
162 | lines_first += lines_visible + 2; |
165 | IF(max_kolvo_strok + za_kadrom > count) za_kadrom = count - max_kolvo_strok; |
163 | IF(lines_visible + lines_first > lines_all) lines_first = lines_all - lines_visible; |
166 | BREAK; |
164 | BREAK; |
167 | case 184: //PgUp |
165 | case 184: //PgUp |
168 | IF(za_kadrom == 0) RETURN; |
166 | IF(lines_first == 0) RETURN; |
169 | za_kadrom -= max_kolvo_strok - 2; |
167 | lines_first -= lines_visible - 2; |
170 | IF(za_kadrom < 0) za_kadrom = 0; |
168 | IF(lines_first < 0) lines_first = 0; |
171 | BREAK; |
169 | BREAK; |
172 | case 180: //home |
170 | case 180: //home |
173 | IF(za_kadrom == 0) RETURN; |
171 | IF(lines_first == 0) RETURN; |
174 | za_kadrom = 0; |
172 | lines_first = 0; |
175 | BREAK; |
173 | BREAK; |
176 | case 181: //end |
174 | case 181: //end |
177 | IF (za_kadrom == count - max_kolvo_strok) RETURN; |
175 | IF (lines_first == lines_all - lines_visible) RETURN; |
178 | za_kadrom = count - max_kolvo_strok; |
176 | lines_first = lines_all - lines_visible; |
179 | BREAK; |
177 | BREAK; |
180 | default: |
178 | default: |
181 | RETURN; |
179 | RETURN; |
182 | } |
180 | } |
183 | ParseHTML(buf, filesize); |
181 | ParseHTML(buf, filesize); |
Line 184... | Line 182... | ||
184 | } |
182 | } |
185 | 183 | ||
Line 186... | Line 184... | ||
186 | 184 | ||
187 | 185 | ||
188 | void GetNewUrl(){ |
186 | void GetNewUrl(){ |
189 | IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+2,#URL); //èãíîðèì :) |
187 | IF (!strcmp(get_URL_part(2),"./")) strcpy(#URL, #URL+2); //èãíîðèì :) |
Line 190... | Line 188... | ||
190 | 188 | ||
Line 191... | Line 189... | ||
191 | if (URL[0] <> '/') |
189 | if (URL[0] <> '/') |
192 | && (strcmp(get_URL_part(5),"http:")<>0) && (strcmp(get_URL_part(5),"mailt")<>0) && (strcmp(get_URL_part(5),"ftp:/")<>0) |
190 | && (strcmp(get_URL_part(5),"http:")<>0) && (strcmp(get_URL_part(5),"mailt")<>0) && (strcmp(get_URL_part(5),"ftp:/")<>0) |
193 | { |
191 | { |
194 | copystr(BrowserHistory.CurrentUrl(), #editURL); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
192 | strcpy(#editURL, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
Line 195... | Line 193... | ||
195 | 193 | ||
196 | _CUT_ST_LEVEL_MARK: |
194 | _CUT_ST_LEVEL_MARK: |
197 | 195 | ||
198 | if (editURL[find_symbol(#editURL, '/')-2]<>'/') // åñëè íå http://pagename.ua <-- íàõðåíà ýòà ñòðîêà??? |
196 | if (editURL[find_symbol(#editURL, '/')-2]<>'/') // åñëè íå http://pagename.ua <-- íàõðåíà ýòà ñòðîêà??? |
199 | { |
197 | { |
200 | editURL[find_symbol(#editURL, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
198 | editURL[find_symbol(#editURL, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
Line 201... | Line 199... | ||
201 | } |
199 | } |
202 | 200 | ||
203 | IF (!strcmp(get_URL_part(3),"../")) //íà óðîâåíü ââåðõ |
201 | IF (!strcmp(get_URL_part(3),"../")) //íà óðîâåíü ââåðõ |
204 | { |
202 | { |
205 | copystr(#URL+3,#URL); |
203 | strcpy(#URL,#URL+3); |
Line 237... | Line 235... | ||
237 | void OpenPage() |
235 | void OpenPage() |
238 | { |
236 | { |
239 | if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal); |
237 | if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal); |
240 | KillProcess(downloader_id); |
238 | KillProcess(downloader_id); |
241 | copystr(#URL, #editURL); |
239 | strcpy(#editURL, #URL); |
242 | BrowserHistory.AddUrl(); |
240 | BrowserHistory.AddUrl(); |
243 | za_kadrom = count = 0; |
- | |
244 | if (!strcmp(get_URL_part(5),"http:"))) |
241 | if (!strcmp(get_URL_part(5),"http:"))) |
245 | { |
242 | { |
246 | copystr(#version, #header); |
- | |
247 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
243 | KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
248 | DeleteFile(#download_path); |
244 | DeleteFile(#download_path); |
249 | IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; |
245 | IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; |
250 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
246 | downloader_id = RunProgram("/sys/network/downloader", #URL); |
251 | //ýòî ãåíèàëüíî è ýòî ïèçäåö!!! |
247 | //ýòî ãåíèàëüíî è ýòî ïèçäåö!!! |
Line 260... | Line 256... | ||
260 | IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable."); |
256 | IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable."); |
261 | Draw_Window(); |
257 | Draw_Window(); |
262 | return; |
258 | return; |
263 | } |
259 | } |
264 | ReadHtml(); |
260 | lines_first = lines_all = 0; |
- | 261 | ReadHtml(); |
|
265 | if (filesize) wintodos(buf); |
262 | if (filesize) wintodos(buf); |
266 | WB1.ShowPage(#URL); |
263 | WB1.ShowPage(#URL); |
267 | } |
264 | } |
268 | 265 | ||
Line 292... | Line 289... | ||
292 | 289 | ||
293 | 290 | ||
- | 291 | void TWebBrowser::ParseHTML(dword bword, fsize){ |
|
294 | void TWebBrowser::ParseHTML(dword bword, fsize){ |
292 | word bukva[1]; |
295 | word bukva[1]; |
293 | int j; |
- | 294 | byte ignor_param = 0; |
|
296 | byte ignor_param = 0; |
295 | char temp[768]; |
297 | char temp[768]; |
296 | |
- | 297 | stroka = -lines_first; |
|
298 | stroka = -za_kadrom; |
298 | stolbec = 0; |
- | 299 | ||
- | 300 | for (j = 400; j < blink + 1; j++;) DeleteButton(j); |
|
299 | stolbec = 0; |
301 | blink = 400; |
300 | FOR(j = 400; j < blink + 1; j++;) DeleteButton(j); |
302 | |
301 | b_text = i_text = u_text = s_text = pre_text = blq_text = body_present = |
303 | b_text = i_text = u_text = s_text = pre_text = blq_text = body_present = |
302 | li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè |
304 | li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè |
303 | link_color = 0x0000FF; |
- | |
304 | bg_color = 0xFFFFFF; |
305 | link_color = 0x0000FF; |
305 | blink = 400; |
306 | bg_color = 0xFFFFFF; |
306 | line = ''; |
307 | line = ''; |
307 | copystr("|", #page_links); |
308 | strcpy(#page_links,"|"); |
308 | copystr(#version, #header); |
309 | strcpy(#header,#version); |
309 | IF(!strcmp(#URL + strlen(#URL) - 4, ".txt")) |
310 | if (!strcmp(#URL + strlen(#URL) - 4, ".txt")) |
310 | { |
311 | { |
311 | DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó |
312 | DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó |
312 | pre_text = 1; //çà÷¸òíîå îòîáðàæåíèå òåêñòà |
313 | pre_text = 1; //çà÷¸òíîå îòîáðàæåíèå òåêñòà |
313 | } |
314 | } |
314 | IF(!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1; |
315 | if (!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1; |
315 | for (bword = buf; buf + fsize > bword; bword++;) { |
316 | for (bword = buf; buf + fsize > bword; bword++;) { |
316 | bukva = ESBYTE[bword]; |
317 | bukva = ESBYTE[bword]; |
317 | switch (bukva) { |
318 | switch (bukva) { |
Line 326... | Line 327... | ||
326 | { |
327 | { |
327 | tab_len=strlen(#line)/8; |
328 | tab_len=strlen(#line)/8; |
328 | tab_len=tab_len*8; |
329 | tab_len=tab_len*8; |
329 | tab_len=8+tab_len-strlen(#line); |
330 | tab_len=8+tab_len-strlen(#line); |
330 | for (i=0; i |
331 | for (i=0; i |
331 | break; |
332 | break; |
332 | } |
333 | } |
333 | case 0x0d: |
334 | case 0x0d: |
334 | bukva = ' '; |
335 | bukva = ' '; |
335 | goto DEFAULT_MARK; |
336 | goto DEFAULT_MARK; |
336 | case '<': |
337 | case '<': |
337 | bword++; //ïðîìîòàåì ñèìâîë < |
338 | bword++; //ïðîìîòàåì ñèìâîë < |
338 | IF(ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî |
339 | if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî |
339 | { |
340 | { |
340 | bword++; |
341 | bword++; |
341 | IF(ESBYTE[bword] == '-') { |
342 | if (ESBYTE[bword] == '-') { |
342 | HH_: do { |
343 | HH_: do { |
343 | bword++; |
344 | bword++; |
344 | IF(bword >= buf + fsize) break 1; |
345 | IF(bword >= buf + fsize) break 1; |
345 | } while (ESBYTE[bword] <>'-'); |
346 | } while (ESBYTE[bword] <>'-'); |
346 | bword++; |
347 | bword++; |
347 | IF(ESBYTE[bword] <>'-') GOTO HH_; |
348 | if (ESBYTE[bword] <>'-') goto HH_; |
348 | } |
349 | } |
349 | } |
350 | } |
350 | WHILE (ESBYTE[bword] <>'>') && (bword < buf + fsize) //ïîëó÷àåì òåã è åãî ïàðàìåòðû |
351 | while (ESBYTE[bword] <>'>') && (bword < buf + fsize) //ïîëó÷àåì òåã è åãî ïàðàìåòðû |
351 | { |
352 | { |
352 | bukva = ESBYTE[bword]; |
353 | bukva = ESBYTE[bword]; |
353 | IF(bukva == '\9') || (bukva == '\x0a') || (bukva == '\x0d') bukva = ' '; |
354 | if (bukva == '\9') || (bukva == '\x0a') || (bukva == '\x0d') bukva = ' '; |
354 | IF(!ignor_param) && (bukva <>' ') copystr(#bukva, #tag + strlen(#tag)); |
355 | if (!ignor_param) && (bukva <>' ') strcat(#tag, #bukva); |
355 | ELSE { |
356 | else |
- | 357 | { |
|
356 | ignor_param = true; |
358 | ignor_param = true; |
357 | copystr(#bukva, #tagparam + strlen(#tagparam)); |
359 | strcat(#tagparam, #bukva); |
358 | } |
360 | } |
359 | bword++; |
361 | bword++; |
360 | } |
362 | } |
361 | lowcase(#tag); |
363 | lowcase(#tag); |
362 | lowcase(#tagparam); |
364 | lowcase(#tagparam); |
363 | 365 | ||
Line 364... | Line 366... | ||
364 | IF (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //íåáîëüøîé ôèêñ äëÿ ðàáîòû ñ XHTML-òåãàìè òèïà br/ |
366 | if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //íåáîëüøîé ôèêñ äëÿ ðàáîòû ñ XHTML-òåãàìè òèïà br/ |
365 | IF(strlen(#tagparam) > 0) && (strlen(#tagparam) < 4000) GetNextParam(); |
367 | if (strlen(#tagparam) > 0) && (strlen(#tagparam) < 4000) GetNextParam(); |
366 | WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ |
368 | WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ |
Line 367... | Line 369... | ||
367 | 369 | ||
Line 368... | Line 370... | ||
368 | line = tag = parametr = tagparam = ignor_param = 0; //âñ¸ îáíóëÿåì |
370 | line = tag = parametr = tagparam = ignor_param = 0; //âñ¸ îáíóëÿåì |
369 | 371 | ||
370 | break; |
372 | break; |
Line 371... | Line 373... | ||
371 | case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7 |
373 | case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7 |
372 | IF(strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK; |
374 | if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK; |
373 | 375 | ||
Line 374... | Line 376... | ||
374 | bword++; |
376 | bword++; |
375 | bukva=ESBYTE[bword]; |
377 | bukva=ESBYTE[bword]; |
376 | copystr(#bukva, #temp); |
378 | strcpy(#temp,#bukva); |
Line 377... | Line 379... | ||
377 | 379 | ||
378 | bword++; |
380 | bword++; |
379 | bukva=ESBYTE[bword]; |
381 | bukva=ESBYTE[bword]; |
Line 380... | Line 382... | ||
380 | copystr(#bukva, #temp + strlen(#temp)); |
382 | strcat(#temp,#bukva); |
381 | 383 | ||
382 | bukva=Hex2Symb(#temp); |
384 | bukva=Hex2Symb(#temp); |
383 | IF (bukva) goto DEFAULT_MARK; |
385 | if (bukva) goto DEFAULT_MARK; |
384 | break; |
386 | break; |
385 | 387 | ||
386 | case '&': //îáðàáîòêà òåãîâ òèïà |
388 | case '&': //îáðàáîòêà òåãîâ òèïà |
387 | IF(ignor_text) break; |
389 | if (ignor_text) break; |
388 | bword++; |
390 | bword++; |
Line 389... | Line 391... | ||
389 | tag=''; |
391 | tag=''; |
390 | FOR (j=0; (ESBYTE[bword] <>';') && (j < 7); j++; bword++;) |
392 | for (j=0; (ESBYTE[bword] <>';') && (j < 7); j++, bword++;) |
391 | { |
393 | { |
392 | bukva = ESBYTE[bword]; |
394 | bukva = ESBYTE[bword]; |
393 | copystr(#bukva, #tag + strlen(#tag)); |
395 | strcat(#tag, #bukva); |
394 | } |
396 | } |
395 | 397 | ||
396 | FOR (j=0; unicode_tags[j]!=0; j+=2;) |
398 | for (j=0; unicode_tags[j]!=0; j+=2;) |
Line 397... | Line 399... | ||
397 | { |
399 | { |
398 | IF(!strcmp(#tag, unicode_tags[j])) |
400 | if (!strcmp(#tag, unicode_tags[j])) |
399 | { |
401 | { |
400 | copystr(unicode_tags[j+1], #line + strlen(#line)); |
402 | strcat(#line, unicode_tags[j+1]); |
401 | break 1; |
403 | break 1; |
402 | } |
404 | } |
Line 403... | Line 405... | ||
403 | } |
405 | } |
404 | 406 | ||
405 | rez = StrToInt(#tag + 1) - 1040; |
407 | rez = StrToInt(#tag + 1) - 1040; |
406 | IF(tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5) |
408 | if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5) |
407 | { |
409 | { |
408 | bukva = unicode_chars[rez]; |
410 | bukva = unicode_chars[rez]; |
409 | GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó |
411 | GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó |
410 | } |
412 | } |
411 | 413 | ||
412 | //WriteDebug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè |
414 | //debug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè |
413 | copystr(#tag, #line + strlen(#line)); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò |
415 | strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò |
414 | break; |
416 | break; |
- | 417 | default: |
|
415 | default: |
418 | DEFAULT_MARK: |
416 | DEFAULT_MARK: |
419 | IF(ignor_text) break; |
417 | IF(ignor_text) break; |
420 | IF(!pre_text) && (bukva == ' ') && (!strcmp(#line + strlen(#line) - 1, " ")) continue; |
418 | IF(pre_text == 0) && (bukva == ' ') && (strcmp(#line + strlen(#line) - 1, " ") == 0) continue; |
421 | // |
419 | // |
422 | if (stolbec + strlen(#line) >lines_column_max) |
420 | if (stolbec + strlen(#line) > max_kolvo_stolbcov) |
423 | { |
421 | { |
424 | strcpy(#temp, #line + find_symbol(#line, ' ')); //ïåðåíîñ ïî ñëîâàì |
422 | copystr(#line + find_symbol(#line, ' '), #temp); //ïåðåíîñ ïî ñëîâàì |
425 | line[find_symbol(#line, ' ')] = 0x00; |
423 | line[find_symbol(#line, ' ')] = 0x00; |
426 | NEXT_MARK: |
424 | NEXT_MARK: IF(stroka - 1 > max_kolvo_strok) && (za_kadrom <>0) break 1; //óõîäèì... |
427 | IF(stroka - 1 > lines_visible) && (lines_first <>0) break 1; //óõîäèì... |
425 | WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //âûâîä ñòðîêè |
428 | WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //âûâîä ñòðîêè |
Line 426... | Line 429... | ||
426 | TextGoDown(left + 5, stroka * 10 + top + 5, width - 20); //çàêðàøèâàåì ñëåäóùóþ ñòðîêó |
429 | TextGoDown(left + 5, stroka * 10 + top + 5, width - 20); //çàêðàøèâàåì ñëåäóùóþ ñòðîêó |
427 | copystr(#temp, #line); |
430 | strcpy(#line, #temp); |
428 | } |
431 | } |
429 | IF(pre_text == 0) && (bukva == ' ') && (stolbec == 0) && (strlen(#line) == 0) CONTINUE; |
432 | if (!pre_text) && (bukva == ' ') && (!stolbec) && (!line) CONTINUE; |
430 | copystr(#bukva, #line + strlen(#line)); |
433 | strcat(#line, #bukva); |
Line 431... | Line 434... | ||
431 | } |
434 | } |
432 | } |
435 | } |
433 | if (strcmp(#URL + strlen(#URL) - 4, ".txt")<>0) && (body_present==0) |
436 | if (strcmp(#URL + strlen(#URL) - 4, ".txt")<>0) && (!body_present) |
434 | DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó åñëè êàêîé-òî ðàõèò íå ñîçäàë òåã áîäè |
437 | DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó åñëè êàêîé-òî ðàõèò íå ñîçäàë òåã áîäè |
435 | 438 | ||
436 | if (max_kolvo_strok * 10 + 25 <= height) |
439 | if (lines_visible * 10 + 25 <= height) |
Line 437... | Line 440... | ||
437 | DrawBar(left, max_kolvo_strok * 10 + top + 25, width - 15, -max_kolvo_strok * 10 + height - 25, bg_color); |
440 | DrawBar(left, lines_visible * 10 + top + 25, width - 15, -lines_visible * 10 + height - 25, bg_color); |
438 | if (stroka * 10 + 15 <= height) |
441 | if (stroka * 10 + 15 <= height) |
Line 464... | Line 467... | ||
464 | 467 | ||
Line 465... | Line 468... | ||
465 | IF (kavichki) |
468 | IF (kavichki) |
466 | { |
469 | { |
467 | i=find_symbol(#tagparam, kavichki); |
470 | i=find_symbol(#tagparam, kavichki); |
468 | copystr(#tagparam + i, #options); |
471 | strcpy(#options, #tagparam + i); |
469 | } |
472 | } |
470 | ELSE |
473 | ELSE |
471 | { |
474 | { |
472 | WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=find_symbol(#tagparam, '=')+1; |
475 | WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=find_symbol(#tagparam, '=')+1; |
473 | i++; |
476 | i++; |
Line 474... | Line 477... | ||
474 | 477 | ||
475 | copystr(#tagparam + i, #options); //êîïèðóåì îïöèþ |
478 | strcpy(#options, #tagparam + i); //êîïèðóåì îïöèþ |
476 | WHILE (options[0] == ' ') copystr(#options + 1, #options); |
479 | WHILE (options[0] == ' ') strcpy(#options, #options+1); |
477 | } |
480 | } |
Line 478... | Line 481... | ||
478 | tagparam[i] = 0x00; |
481 | tagparam[i] = 0x00; |
479 | 482 | ||
Line 485... | Line 488... | ||
485 | tagparam[i + 1] = 0x00; |
488 | tagparam[i + 1] = 0x00; |
486 | } |
489 | } |
487 | } |
490 | } |
488 | 491 | ||
Line 489... | Line 492... | ||
489 | copystr(#tagparam + i + 1, #parametr); //êîïèðóåì ïàðàìåòð |
492 | strcpy(#parametr, #tagparam + i + 1); //êîïèðóåì ïàðàìåòð |
490 | tagparam[i] = 0x00; |
493 | tagparam[i] = 0x00; |
491 | } |
494 | } |
Line 497... | Line 500... | ||
497 | dword hr_color; |
500 | dword hr_color; |
498 | 501 | ||
Line 499... | Line 502... | ||
499 | dword image=0; |
502 | dword image=0; |
500 | char temp[4096]; |
503 | char temp[4096]; |
501 | int w, h, img_za_kadrom=0; |
504 | int w, h, img_lines_first=0; |
Line 502... | Line 505... | ||
502 | 505 | ||
503 | //ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ |
506 | //ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ |
504 | IF(tag[0] == '/') |
507 | IF(tag[0] == '/') |
505 | { |
508 | { |
506 | rez = 0; |
509 | rez = 0; |
507 | copystr(#tag + 1, #tag); |
510 | strcpy(#tag, #tag+1); |
508 | } |
511 | } |
509 | ELSE |
512 | ELSE |
Line 510... | Line 513... | ||
510 | rez = 1; |
513 | rez = 1; |
Line 517... | Line 520... | ||
517 | IF(!chTag("script")) || (!chTag("style")) || (!chTag("binary")) ignor_text = rez; |
520 | IF(!chTag("script")) || (!chTag("style")) || (!chTag("binary")) ignor_text = rez; |
518 | 521 | ||
Line 519... | Line 522... | ||
519 | if(!chTag("title")) && (!rez) |
522 | if(!chTag("title")) && (!rez) |
520 | { |
523 | { |
521 | copystr(#line, #header); |
524 | strcpy(#header, #line); |
522 | copystr(" -", #header + strlen(#header)); |
525 | strcat(#header, " -"); |
523 | copystr(#version, #header + strlen(#header)); |
526 | strcat(#header, #version); |
524 | if (stroka==0) DrawTitle(#header); |
527 | if (stroka==0) DrawTitle(#header); |
525 | return; |
528 | return; |
526 | } |
529 | } |
Line 527... | Line 530... | ||
527 | 530 | ||
528 | IF (ignor_text == 1) return; |
531 | IF (ignor_text == 1) return; |
Line 529... | Line 532... | ||
529 | // |
532 | // |
530 | 533 | ||
Line 531... | Line 534... | ||
531 | // |
534 | // |
532 | IF(!chTag("q")) copystr("\"", #line + strlen(#line)); |
535 | IF(!chTag("q")) strcat(#line, "\""); |
533 | 536 | ||
534 | //âûâîä íà ýêðàí |
537 | //âûâîä íà ýêðàí |
535 | if (stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (line) && (!anchor) |
538 | if (stroka >= 0) && (stroka - 2 < lines_visible) && (line) && (!anchor) |
536 | { |
539 | { |
537 | WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó? |
540 | WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó? |
Line 551... | Line 554... | ||
551 | if (anchor) && (!strcmp(#parametr, "id=")) //î÷åíü ïëîõî!!! ïîòîìó ÷òî åñëè íå ïîñëåäíèé òåã, ðàáîòàòü íå áóäåò |
554 | if (anchor) && (!strcmp(#parametr, "id=")) //î÷åíü ïëîõî!!! ïîòîìó ÷òî åñëè íå ïîñëåäíèé òåã, ðàáîòàòü íå áóäåò |
552 | { |
555 | { |
553 | if (!strcmp(#anchor, #options)) |
556 | if (!strcmp(#anchor, #options)) |
554 | { |
557 | { |
555 | anchor_line_num=za_kadrom+stroka; |
558 | anchor_line_num=lines_first+stroka; |
556 | } |
559 | } |
557 | } |
560 | } |
Line 558... | Line 561... | ||
558 | 561 | ||
559 | if (!chTag("body")) |
562 | if (!chTag("body")) |
Line 590... | Line 593... | ||
590 | { |
593 | { |
591 | _A_MARK: |
594 | _A_MARK: |
592 | if (!strcmp(#parametr, "href=")) |
595 | if (!strcmp(#parametr, "href=")) |
593 | { |
596 | { |
594 | if (stroka - 1 > max_kolvo_strok) || (stroka < -2) return; |
597 | if (stroka - 1 > lines_visible) || (stroka < -2) return; |
595 | if (link == 1) text_color_index--; //åñëè êàêîé-òî äîëáî¸á íå çàêðûë òýã |
598 | if (link == 1) text_color_index--; //åñëè êàêîé-òî äîëáî¸á íå çàêðûë òýã |
596 | link = 1; |
599 | link = 1; |
597 | blink++; |
600 | blink++; |
598 | text_color_index++; |
601 | text_color_index++; |
599 | text_colors[text_color_index] = link_color; |
602 | text_colors[text_color_index] = link_color; |
600 | copystr(#options, #page_links + strlen(#page_links)); |
603 | strcat(#page_links, #options); |
601 | copystr("|", #page_links + strlen(#page_links)); |
604 | strcat(#page_links, "|"); |
602 | } |
605 | } |
603 | if (anchor) && (!strcmp(#parametr, "name=")) |
606 | if (anchor) && (!strcmp(#parametr, "name=")) |
604 | { |
607 | { |
605 | if (!strcmp(#anchor, #options)) |
608 | if (!strcmp(#anchor, #options)) |
606 | { |
609 | { |
607 | anchor_line_num=za_kadrom+stroka; |
610 | anchor_line_num=lines_first+stroka; |
608 | } |
611 | } |
609 | } |
612 | } |
610 | if (tagparam) |
613 | if (tagparam) |
611 | { |
614 | { |
612 | GetNextParam(); |
615 | GetNextParam(); |
613 | GOTO _A_MARK; |
616 | GOTO _A_MARK; |
Line 621... | Line 624... | ||
621 | } |
624 | } |
622 | ///////////////////////// |
625 | ///////////////////////// |
623 | if (!chTag("font")) |
626 | if (!chTag("font")) |
624 | { |
627 | { |
625 | IF (stroka - 1 > max_kolvo_strok) return; |
628 | IF (stroka - 1 > lines_visible) return; |
626 | COL_MARK: |
629 | COL_MARK: |
627 | if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#') |
630 | if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#') |
628 | { |
631 | { |
629 | text_color_index++; |
632 | text_color_index++; |
630 | text_colors[text_color_index] = GetColor(#options); |
633 | text_colors[text_color_index] = GetColor(#options); |
631 | } |
634 | } |
Line 636... | Line 639... | ||
636 | IF(!rez) && (text_color_index > 0) text_color_index--; |
639 | IF(!rez) && (text_color_index > 0) text_color_index--; |
637 | return; |
640 | return; |
638 | } |
641 | } |
639 | ////////////////////////// |
642 | ////////////////////////// |
640 | IF(!chTag("tr")) || (!chTag("br")) { |
643 | if(!chTag("tr")) || (!chTag("br")) { |
641 | TextGoDown(left1, top1, width1); |
644 | TextGoDown(left1, top1, width1); |
642 | return; |
645 | return; |
643 | } |
646 | } |
644 | IF(!chTag("div")) { |
647 | if (!chTag("div")) { |
645 | IF(oldtag[0] <>'h') TextGoDown(left1, top1, width1); |
648 | IF(oldtag[0] <>'h') TextGoDown(left1, top1, width1); |
646 | return; |
649 | return; |
647 | } |
650 | } |
648 | IF(!chTag("p")) { |
651 | if (!chTag("p")) { |
649 | IF(oldtag[0] == 'h') return; |
652 | IF(oldtag[0] == 'h') return; |
650 | TextGoDown(left1, top1, width1); |
653 | TextGoDown(left1, top1, width1); |
651 | IF(rez) TextGoDown(left1, top1 + 10, width1); |
654 | IF(rez) TextGoDown(left1, top1 + 10, width1); |
652 | return; |
655 | return; |
653 | } |
656 | } |
654 | //////////////////////////// |
657 | //////////////////////////// |
655 | IF(!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) { |
658 | if (!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) { |
656 | TextGoDown(left1, top1, width1); |
659 | TextGoDown(left1, top1, width1); |
657 | IF(rez) TextGoDown(left1, top1 + 10, width1); |
660 | IF(rez) TextGoDown(left1, top1 + 10, width1); |
658 | b_text = rez; |
661 | b_text = rez; |
659 | copystr(#tag, #oldtag); |
662 | strcpy(#oldtag, #tag); |
660 | return; |
663 | return; |
661 | } ELSE copystr("", #oldtag); |
664 | } |
- | 665 | else |
|
- | 666 | oldtag=''; |
|
662 | IF(!chTag("b")) || (!chTag("strong")) || (!chTag("big")) { |
667 | |
- | 668 | if (!chTag("b")) || (!chTag("strong")) || (!chTag("big")) { |
|
663 | b_text = rez; |
669 | b_text = rez; |
664 | return; |
670 | return; |
665 | } |
671 | } |
666 | //////////////////////////// |
672 | //////////////////////////// |
667 | IF(!chTag("i")) || (!chTag("em")) || (!chTag("subtitle")) { |
673 | if(!chTag("i")) || (!chTag("em")) || (!chTag("subtitle")) { |
668 | i_text = rez; |
674 | i_text = rez; |
669 | return; |
675 | return; |
670 | } |
676 | } |
671 | //////////////////////////// |
677 | //////////////////////////// |
672 | if (!chTag("dt")) |
678 | if (!chTag("dt")) |
673 | { |
679 | { |
Line 681... | Line 687... | ||
681 | { |
687 | { |
682 | li_text = rez; |
688 | li_text = rez; |
683 | IF(rez == 0) return; |
689 | IF(rez == 0) return; |
684 | TextGoDown(left1, top1, width1); |
690 | TextGoDown(left1, top1, width1); |
685 | IF(stroka > -1) && (stroka - 2 < max_kolvo_strok) DrawBar(li_tab * 5 * 6 + left1 - 5, top1 + 12, 2, 2, 0); |
691 | IF(stroka > -1) && (stroka - 2 < lines_visible) DrawBar(li_tab * 5 * 6 + left1 - 5, top1 + 12, 2, 2, 0); |
686 | return; |
692 | return; |
687 | } |
693 | } |
688 | //////////////////////////// |
694 | //////////////////////////// |
689 | IF(!chTag("u")) || (!chTag("ins")) u_text = rez; |
695 | IF(!chTag("u")) || (!chTag("ins")) u_text = rez; |
690 | IF(!chTag("s")) || (!chTag("strike")) || (!chTag("del")) s_text = rez; |
696 | IF(!chTag("s")) || (!chTag("strike")) || (!chTag("del")) s_text = rez; |
691 | IF(!chTag("ul")) || (!chTag("ol")) IF(!rez) { |
697 | IF(!chTag("ul")) || (!chTag("ol")) IF(!rez) { |
Line 709... | Line 715... | ||
709 | //IF (GetFileInfo(#libimg)<>0) return; //åñëè áèáëèîòåêè íåò |
715 | //IF (GetFileInfo(#libimg)<>0) return; //åñëè áèáëèîòåêè íåò |
710 | IMG_TAG: |
716 | IMG_TAG: |
711 | IF (strcmp(#parametr,"src=")==0) //íàäî îáúåäèíèòü ñ GetNewUrl() |
717 | IF (strcmp(#parametr,"src=")==0) //íàäî îáúåäèíèòü ñ GetNewUrl() |
712 | { |
718 | { |
713 | copystr(BrowserHistory.CurrentUrl(), #temp); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
719 | strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
714 | temp[find_symbol(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
720 | temp[find_symbol(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
715 | copystr(#options,#temp+strlen(#temp)); |
721 | strcat(#temp, #options); |
716 | image=load_image(#temp); |
722 | image=load_image(#temp); |
717 | 723 | ||
Line 718... | Line 724... | ||
718 | w=DSWORD[image+4]; |
724 | w=DSWORD[image+4]; |
719 | h=DSWORD[image+8]; |
725 | h=DSWORD[image+8]; |
720 | } |
726 | } |
Line 733... | Line 739... | ||
733 | return; |
739 | return; |
734 | 740 | ||
Line 735... | Line 741... | ||
735 | if (top1 |
741 | if (top1 |
736 | { |
742 | { |
737 | img_za_kadrom=WB1.top-top1; |
743 | img_lines_first=WB1.top-top1; |
738 | h=h-img_za_kadrom; |
744 | h=h-img_lines_first; |
739 | top1=WB1.top; |
745 | top1=WB1.top; |
740 | } |
746 | } |
Line 741... | Line 747... | ||
741 | 747 | ||
742 | if (top1>WB1.top+WB1.height-h-15) //åñëè ÷àñòü èçîáðàæåíèÿ ñíèçó IF (stroka - 2 < max_kolvo_strok) |
748 | if (top1>WB1.top+WB1.height-h-15) //åñëè ÷àñòü èçîáðàæåíèÿ ñíèçó IF (stroka - 2 < lines_visible) |
743 | { |
749 | { |
744 | h=WB1.top+WB1.height-top1-15; |
750 | h=WB1.top+WB1.height-top1-15; |
Line 745... | Line 751... | ||
745 | } |
751 | } |
Line 746... | Line 752... | ||
746 | 752 | ||
747 | IF (h<=0) return; |
753 | IF (h<=0) return; |
748 | 754 | ||
749 | img_draw stdcall (image,left1-5,top1+10,w, h,0,img_za_kadrom); |
755 | img_draw stdcall (image,left1-5,top1+10,w, h,0,img_lines_first); |
750 | DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, bg_color); |
756 | DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, bg_color); |
751 | IF (link) |
757 | IF (link) |
Line 765... | Line 771... | ||
765 | { |
771 | { |
766 | META: |
772 | META: |
767 | if (!strcmp(#parametr, "charset=")) || (!strcmp(#parametr, "content=")) || (!strcmp(#parametr, "encoding=")) |
773 | if (!strcmp(#parametr, "charset=")) || (!strcmp(#parametr, "content=")) || (!strcmp(#parametr, "encoding=")) |
768 | { |
774 | { |
769 | copystr(#options[find_symbol(#options, '=')],#options); //ïîèñê â content= |
775 | strcpy(#options, #options[find_symbol(#options, '=')]); //ïîèñê â content= |
770 | 776 | ||
Line 771... | Line 777... | ||
771 | IF (!strcmp(#options,"utf-8")) || (!strcmp(#options,"utf8")) |
777 | IF (!strcmp(#options,"utf-8")) || (!strcmp(#options,"utf8")) |
772 | { |
778 | { |
773 | ReadHtml(); |
779 | ReadHtml(); |
774 | utf8rutodos(buf); |
780 | utf8rutodos(buf); |
Line 782... | Line 788... | ||
782 | { |
788 | { |
783 | ReadHtml(); |
789 | ReadHtml(); |
784 | } |
790 | } |
785 | } |
791 | } |
786 | IF(tagparam) |
792 | if (tagparam) |
787 | { |
793 | { |
788 | GetNextParam(); |
794 | GetNextParam(); |
789 | goto META; |
795 | goto META; |
790 | } |
796 | } |
791 | return; |
797 | return; |
792 | } |
798 | } |
Line 798... | Line 804... | ||
798 | stroka++; |
804 | stroka++; |
799 | IF(blq_text == 1) stolbec = 8; |
805 | IF(blq_text == 1) stolbec = 8; |
800 | ELSE stolbec = 0; |
806 | ELSE stolbec = 0; |
801 | IF(li_text == 1) stolbec = li_tab * 5; |
807 | IF(li_text == 1) stolbec = li_tab * 5; |
802 | IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (!anchor) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color); |
808 | IF(stroka >= 0) && (stroka - 2 < lines_visible) && (!anchor) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color); |
803 | } |
809 | } |
804 | 810 | ||
Line 805... | Line 811... | ||
805 | 811 | ||
806 | //ñêðîëë |
812 | //ñêðîëë |
807 | void TWebBrowser::DrawScroller() //íå îïòèìàëüíàÿ îòðèñîâêà, íî çàòî â îäíîì ìåñòå |
813 | void TWebBrowser::DrawScroller() //íå îïòèìàëüíàÿ îòðèñîâêà, íî çàòî â îäíîì ìåñòå |
808 | { |
814 | { |
809 | scroll1.max_area = count; |
815 | scroll1.max_area = lines_all; |
810 | scroll1.cur_area = max_kolvo_strok; |
816 | scroll1.cur_area = lines_visible; |
Line 811... | Line 817... | ||
811 | scroll1.position = za_kadrom; |
817 | scroll1.position = lines_first; |
812 | 818 | ||
813 | scroll1.all_redraw=1; |
819 | scroll1.all_redraw=1; |