Subversion Repositories Kolibri OS

Rev

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;