home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Flop Magazin 35
/
Flop_Magazin_35_1995_03_Raster_cs_Side_A.atr
/
hcc8zb1.c
< prev
next >
Wrap
Text File
|
2023-02-26
|
4KB
|
1 lines
/*¢hardcopy obrázkû z ATARI XL/XE - Zdenêk Burian¢ tato verze jiæ funguje, dal¿í roz¿í⌐ení: dvojitÿ tisk, levÿ okraj¢ rychlÿ buffer¢ v tomto stavu urçeno ke zverejnêní ve FLOPu¢ zlobí ale zejmê buffer klávesnice¢¢ Název tiskového zaízení:¢ ATARI ST - PRN:¢ AMIGA - PAR: (pozor na Kameníky !)¢ IBM/PC - LPT1 nebo jiné¢*/¢¢#include <stdio.h>¢¢#define HEADER "\n\n\tHardcopy obrázkû z 8-bitového ATARI. (320*192)\n\n"¢#define OPENERR "Nejde otev⌐ít '%s'!\n\n"¢#define TRANS1 "P⌐evod dat ...\n"¢#define TRANS2 "Data pro tiskárnu p⌐ipravena.\n\n"¢¢void hardcopy(void);¢void tisk(void);¢¢unsigned char inbuf[7680],¢ outbuf[7680];¢¢void tisk(void)¢{¢ FILE *outfile;¢ unsigned int a,z,y,b,c,d,e,f,g;¢ a=0;¢¢ if ((outfile= fopen("PRN:","wb"))==0)¢ {¢ printf(OPENERR,"PRN:");¢ return;¢ } ¢¢ printf("\n\tZadej parametr 'n' grafiky 'ESC * n m1 m2' : ");¢ scanf("%u",&b);¢¢ do {¢ printf("\n\tZadej kvalitu tisku (0 - 1) : ");¢ scanf("%u",&c);¢ } while(c>1);¢¢ putc(27,outfile); /* rádkování 24/216" nebo 22/216 */¢ putc('3',outfile);¢ putc(24-c,outfile);¢¢¢ do {¢ printf("\n\tZadej poçet mezer z levé strany: ");¢ scanf("%u",&d);¢ if(d>40)¢ printf("\n\tPOZOR ! p⌐ekroçena ¿í⌐ka A4 !\n\n");¢ } while(d>150);¢¢¢ printf("\n\tPouæít nastavení levého okraje ESC l n ? (A/N) : ");¢ scanf("%u",&f);¢ if(f=='a')¢ f='A';¢ if(f=='A')¢ { putc(27,outfile); /* levÿ okraj ESC l n */¢ putc('l',outfile);¢ putc(d,outfile);¢ }¢ ¢ for(z=0;z<24;z++)¢ { /* jeden rádek */¢ for(g=0;g<=c;g++)¢ { if(f!='A') /* levÿ okraj skládanÿ z mezer*/¢ for(e=0;e<d;e++)¢ putc(32,outfile);¢ ¢ putc(27,outfile); /* grafickÿ povel ESC * m */¢ putc('*',outfile);¢ putc(b,outfile);¢ putc(64,outfile);¢ putc(1,outfile);¢ ¢ for(y=0;y<320;y++,a++)¢ putc(outbuf[a],outfile);¢¢ if(g==0)¢ {¢ putc(27,outfile); /* prímé LF */¢ putc('J',outfile);¢ putc(1,outfile);¢ a=a-(c*320);¢ }¢ putc(13,outfile);¢ }¢ putc(10,outfile);¢ }¢ if(f=='A')¢ { putc(27,outfile); /* levÿ okraj ESC l n */¢ putc('l',outfile);¢ putc(0,outfile);¢ }¢ ¢ fclose(outfile);¢ printf("\n\t celkem posláno asi %u -1 bajtû",a);¢return;¢} ¢¢void hardcopy(void)¢{¢ FILE *infile;¢ char v[80],name[32];¢ unsigned char bajt[8];¢ int x,i,y,z,e;¢ e=0;¢¢ printf("\n\tZadej jméno souboru:\n");¢ gets (name);¢ infile = fopen(&name,"rb");¢ if (infile==NULL)¢ {¢ printf(OPENERR,name);¢ getchar();¢ return;¢ }¢printf("otevreno ...\n");¢¢/* pomalÿ, ale univerzální zpûsob naçtení bloku dat */¢/*for (i=0;i<7680;i++)¢ inbuf[i]=getc(infile);*/¢¢ /* rychlé a prímé naçítání dat */¢ if (!( fread(inbuf,sizeof(char),7680,infile) ))¢¢printf("na uzavreni\n");¢fclose(infile); ¢printf(TRANS1);¢¢for(z=0;z<7680;z+=320)¢ for(y=0;y<40;y++)¢ {¢ bajt[0] = inbuf[z+y];¢ bajt[1] = inbuf[z+y+40];¢ bajt[2] = inbuf[z+y+80];¢ bajt[3] = inbuf[z+y+120];¢ bajt[4] = inbuf[z+y+160];¢ bajt[5] = inbuf[z+y+200];¢ bajt[6] = inbuf[z+y+240];¢ bajt[7] = inbuf[z+y+280];¢¢ for(i=0,x=128;i<8;i++,x/=2)¢ {¢ if(e>7680)¢ {printf("preteçení");¢ return;¢ }¢ else¢ outbuf[e] = ((bajt[0]&x)<<i)+(((bajt[1]&x)<<i)>>1)+(((bajt[2]&x)<<i)>>2)+¢ (((bajt[3]&x)<<i)>>3)+(((bajt[4]&x)<<i)>>4)+(((bajt[5]&x)<<i)>>5)+¢ (((bajt[6]&x)<<i)>>6)+(((bajt[7]&x)<<i)>>7);¢¢ e++;¢ }¢ } ¢ ¢printf(TRANS2);¢¢ do {¢ printf("\n\n\tH - TISK");¢ printf("\n\tN - návrat do hlavního menu\n");¢ gets(v);¢ if (v[0]=='h' || v[0]=='H')¢ tisk();¢ } while(v[0] != 'N');¢return;¢}¢¢void main(void)¢{¢char v[80];¢do {¢ printf(HEADER);¢ printf("\n\n\tP - pokraçování");¢ printf("\n\n\tQ - konec programu\n");¢ gets(v);¢ if (v[0]=='p' || v[0]=='P')¢ hardcopy();¢¢ } while(v[0] != 'Q');¢ printf("\KONEC ----------------\n");¢return;¢}