Pers.narod.ru. Алгоритмы. Генерация таблицы имен цветов Internet Explorer и Netscape Navigator |
Эта старая программка создавала таблицу с именами и кодами цветов, понимаемых браузрами Internet Explorer и Netscape Navigator. Данные читались из файла colors.txt текущей папки, на выходе получался файл colors.htm. Получалось вот такое чудо (новое окно):
Кстати, из современных браузеров корректно покажет пресловутые "100 оттенков цвета Gray" только Opera, Internet Explorer и Mozilla Firefox - нет. Хотя изначально "100 оттенков" были нетскейповские и могли бы достаться огнелису по наследству.
// Генерация таблицы имен цветов Internet Explorer и Netscape Navigator
// Нужен файл COLORS.TXT
// Результат в файле COLORS.HTM
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Cols 8 /*Число столбцов таблицы*/
#define MAX_STR 128 /*Максимальная длина строки*/
char Color[Cols][MAX_STR],Syms[MAX_STR],Tmp[MAX_STR],Number[MAX_STR];
int Num;
FILE *r,*w;
void PrintLine(void) {
//Печать готовой строки таблицы
fprintf (w,"\n <TR>");
for (int i=0;i<Cols;i++) {
fprintf (w,"\n <TD HEIGHT=\"25\" BGCOLOR=\"");
fprintf (w,"%s",Color[i]);
fprintf (w,"\">. </TD>");
}
fprintf (w,"\n </TR>\n <TR BGCOLOR=\"000000\">");
for (i=0;i<Cols;i++) {
fprintf (w,"\n <TD>");
if (!strcmp (Color[i],"#000000")) fprintf (w,". ");
else fprintf (w,"%s",Color[i]);
fprintf (w,"</TD>");
}
fprintf (w,"\n </TR>");
Num=0;
}
void NewLine (void) {
//Добить строку таблицы пустыми ячейками
for (int i=Num;i<Cols;i++) {
strcpy (Color[i],"#000000");
}
PrintLine ();
}
void Add (void) {
//Добавить цвет Syms в массив Color
if (Num==Cols) PrintLine ();
strcpy (Color[Num++],Syms);
}
void AddAll (int n) {
//Добавить n градаций цвета в массив Color
int j,k=strlen(Syms);
Syms[k-1]='\0';
Add ();
for (j=2;j<=n;j++) {
strcpy (Tmp,Syms);
itoa (j,Number,10);
strcat (Syms,Number);
Add ();
strcpy (Syms,Tmp);
}
}
char *ReadStr (FILE *f, char *Str) { //Чтение строки из файла
char *Ptr=fgets (Str,MAX_STR,f);
int l=strlen(Str)-1;
while ((Str[l]=='\n') || (Str[l]=='\r')) Str[l--]='\0';
return Ptr;
}
void main (void) {
printf ("\n HTML color table designer;");
r=fopen ("COLORS.TXT","rt");
if (r==NULL) {
printf ("\n Cannot open COLORS.TXT to read colors names!");
exit (1);
}
w=fopen ("COLORS.HTM","wt");
if (w==NULL) {
printf ("\n Cannot open COLORS.HTM to write the table!");
exit (2);
}
//Headers
fprintf (w,"<HTML><HEAD><TITLE></TITLE>"
"\n</HEAD><BODY BGCOLOR=\"000000\" TEXT=\"CCCCCC\">"
"\n<BR>\n<TABLE WIDTH=\"100%\" BORDER=\"1\">");
//Main part
Num=0;
while (!feof(r)) {
ReadStr (r,Syms);
int k=strlen(Syms);
if (Syms[0]=='#') { //Комментарий
continue;
}
else if (Syms[k-1]=='*') //4 градации цвета
AddAll (4);
else if (Syms[k-1]=='#') { //100 градаций цвета
NewLine ();
AddAll (100);
NewLine ();
}
else //Обычный цвет
Add ();
}
NewLine ();
//Last tags
fprintf (w,"\n</TABLE>\n<BR>\n</BODY></HTML>");
fclose (r); fclose (w);
printf ("\n See the file COLORS.HTM");
}
# This file Windows-1251 coded! # Файл данных программы HTMCOLORS.EXE # Выходной файл программы - COLORS.HTM # # в первой позиции обозначает строку комментария # * за именем цвета обозначает, что у него 4 градации яркости # # за именем цвета обозначает, что у него 100 градаций яркости (gray) # # Цвета, общие для Internet Explorer и Netscape Navigator: Aqua Black Blue Fuchsia Gray Green Lime Maroon Navy Olive Purple Red Silver Teal Yellow White # # Цвета Netscape Navigator: Aliceblue Antiquewhite* Aquamarine* Azure* Beige Bisque* Black Blanchedalmond Blue* Blueviolet Brown* Burlywood* Cadetblue* Chartreuse* Chocolate* Coral* Cornflowerblue Cornsilk* Cyan* Darkblue Darkcyan Darkgoldenrod* Darkgray Darkgreen Darkkhaki Darkmagenta Darkolivegreen* Darkorange* Darkorchid* Darkred Darksalmon Darkseagreen* Darkslateblue Darkslategray* Darkturquoise Darkviolet Deeppink* Deepskyblue* Dimgray Dodgerblue* Firebrick* Floralwhite Forestgreen Gainsboro Ghostwhite Gold* Goldenrod* Gray# Green* Greenyellow Honeydew* Hotpink* Indianred* Ivory* Khaki* Lavender Lavenderblush* Lawngreen Lemonchiffon* Lightblue* Lightcoral Lightcyan* Lightgoldenrod* Lightgoldenrodyellow Lightgray Lightgreen Lightpink* Lightsalmon* Lightseagreen Lightskyblue* Lightslateblue Lightslategray Lightsteelblue* Lightyellow* Limegreen Linen Magenta* Maroon* Mediumaquamarine Mediumblue Mediumorchid* Mediumpurple* Mediumseagreen Mediumslateblue Mediumspringgreen Mediumturquoise Mediumvioletred Midnightblue Mintcream Mistyrose* Moccasin Navajowhite* Navy Navyblue Oldlace Olivedrab* Orange* Orangered* Orchid* Palegoldenrod Palegreen* Paleturquoise* Palevioletred Papayawhip Peachpuff* Peru Pink* Plum* Powderblue Purple* Red* Rosybrown* Royalblue* Saddlebrown Salmon* Sandybrown Seagreen* Seashell* Sienna* Skyblue* Slateblue* Slategray* Snow* Springgreen* Steelblue* Tan* Thistle* Tomato* Turquoise* Violet Violetred* Wheat* White Whitesmoke Yellow* Yellowgreen
|
|