1 
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <X11/Xos.h>
5 
6 #ifndef __mem_image_h
7 #	include "mem_image.H"
8 #endif
9 #ifndef __game_h
10 #	include "game.H"
11 #endif
12 
MemImage(const char * filename)13 MemImage::MemImage( const char *filename )
14 : GifImage( filename, 0 )
15 {
16 	const char *ext=GetExtensionData( SUBSIZE_EXTENSION );
17 
18 	if (!ext||sscanf( ext, "%dx%d", &pic_width, &pic_height )!=2) {
19 		fprintf( stderr, "%s: no memory hints contained in image\n", filename );
20 		exit(-1);
21 	}
22 }
23 
SetupParams(struct parameter * par,int width,int)24 void MemImage::SetupParams( struct parameter *par, int width, int /*height*/ ) {
25 char	bestbuffer[1024];
26 int	size,best;
27 int	p[3], wx[3], wy[3];
28 int code;
29 const char *ext;
30 
31 	best=0;
32 	for (ext=GetExtensionData(code=SCALEINFO_START); ext; ext=GetExtensionData(++code) ) {
33 		if (sscanf(ext,"%d:",&size)==1) {
34 			if (size>=width && (best==0 || size<best)) {
35 				best=size;
36 				strcpy( bestbuffer, ext );
37 			}
38 		}
39 	}
40 
41 	if (sscanf( bestbuffer, "%d: %dx%d %d %dx%d %d %dx%d %d" , &size,
42 		&wx[0], &wy[0], &p[0], &wx[1], &wy[1], &p[1], &wx[2], &wy[2], &p[2] )!=10) {
43 			sscanf( "0: 5x4 100 7x4 100 8x5 80", "%d: %dx%d %d %dx%d %d %dx%d %d" , &size,
44 					&wx[0], &wy[0], &p[0], &wx[1], &wy[1], &p[1], &wx[2], &wy[2], &p[2] );
45 	}
46 
47 	for (int i=0;i<3;i++) {
48 		par->dim[i].dwidth  = wx[i];
49 		par->dim[i].dheight = wy[i];
50 		par->dim[i].dsize   = PicWidth()*p[i]/100;
51 		par->dim[i].wsizex  = PicWidth();
52 		par->dim[i].wsizey  = PicHeight();
53 
54 //		printf( "%d, %d, %d, %d, %d\n",
55 //			par->dim[i].dwidth, par->dim[i].dheight,
56 //			par->dim[i].dsize, par->dim[i].wsizex, par->dim[i].wsizey );
57 	}
58 }
59 
ShowInfoMsg()60 void MemImage::ShowInfoMsg() {
61 
62 	const char *ext=GetExtensionData( COMMENT_EXTENSION );
63 
64 	if (ext) {
65 				printf( ext );
66 				putchar( '\n' );
67 	}
68 }
69