С для профессиональных программистов




Сохранение и загрузка графических изображений - часть 2


temp=ptr;

/* сохранение верхних строк текущего содержимого экрана */

for (i=0;i<14;++i)

for (j=0;j<80;j+=2)

buf[i][j]=*temp;

buf[i][j+1]=*(temp+8152);

*temp=0; *(temp+8152)=0; /* чистка позиций экрана */

temp++;

goto_xy(0,0);

printf("Имя файла:");

gets(fname);

if (!(fp=fopen(fname,"rb")))

goto_xy(0,0);

printf("Файл не может быть открыт\n");

temp=ptr;

/* восстановление содержимого экрана */

for (i=0;i<14;++i)

for (j=0;j<80;j+=2)

*temp= buf[i][j];

*(temp+8125)=buf[i][j+1];

temp++;

return;

/* загрузка изображения из файла */

for (i=0;i<8152;i++)

*ptr=getc(fp); /* четный байт */

*(ptr+8125)=getc(fp); /* нечетный байт */

ptr++;

fclose(fp);

Подпрограммы начинают обработку видеопамяти, начиная с адреса, содержащегося в указателе temp считывая или записывая каждый четный и нечетный байты в порядке возрастания их адресов. Такой подход позволяет добиться простоты и наглядности функционирования рассмотренных выше подпрограмм. В случае обработки видеопамяти в порядке возрастания адресов, вначале будет отображаться четная точка растра, а затем - нечетная.




Содержание  Назад  Вперед