/[cvs]/joko/Uni/BSArch/04/bmp_fractal.c
ViewVC logotype

Annotation of /joko/Uni/BSArch/04/bmp_fractal.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Fri Jun 30 20:39:33 2006 UTC (18 years, 2 months ago) by joko
Branch: MAIN
File MIME type: text/plain
initial commit

1 joko 1.1 /* Betriebssystem & Middleware
2     *
3     * Betriebssystemarchitektur SS 2006
4     *
5     * Uebung 4.4
6     */
7     #include <stdio.h>
8     #include <errno.h>
9    
10     #define XSIZE 500
11     #define YSIZE 500
12     #include "algorithm.h"
13    
14     /* BMP Header
15     unsigned char header[54]={0x42,0x4d, // signature BM
16     0xe6,0x71,0x0b,0x0, // filesize 750054
17     0x0,0x0,0x0,0x0, // reserved
18     0x36,0x0,0x0,0x0, // image offset 54
19     0x28,0x0,0x0,0x0, // size of header follows 40
20     0xf4,0x1,0x0,0x0, // with of image 500
21     0xf4,0x1,0x0,0x0, // height of image 500
22     0x1,0x0, // number of planes 1
23     0x18,0x0, // number of pixel 24
24     0x0,0x0,0x0,0x0, // compression
25     0xb0,0x71,0x0b,0x0, // size of image 750000
26     0x0,0x0,0x0,0x0, // xres
27     0x0,0x0,0x0,0x0, // yres
28     0x0,0x0,0x0,0x0, // number of colortables
29     0x0,0x0,0x0,0x0 // number of important colors
30     };
31     */
32    
33     int main(int argc, char *argv[])
34     {
35     FILE *fd;
36     int len,x,y;
37     char bgr[3];
38     short svalue;
39     int lvalue;
40     unsigned char header[54],*ptr=&header[0];
41    
42     fd=fopen("test.bmp","wb+");
43     if(NULL==fd)
44     {
45     perror("open"); exit(1);
46     }
47     /* Der folgende Abschnitt dient nur zur information und kann durch
48     schreiben der auskommentierten Variable header ersetzt werden */
49     svalue=0x4d42;
50     memcpy(ptr,&svalue,2);//signatur
51     ptr+=2;
52     lvalue=XSIZE*YSIZE*3+54;
53     memcpy(ptr,&lvalue,4); //filesize
54     ptr+=4;
55     lvalue=0;
56     memcpy(ptr,&lvalue,4);//reserved
57     ptr+=4;
58     lvalue=54;
59     memcpy(ptr,&lvalue,4);//image offset
60     ptr+=4;
61     lvalue=40;
62     memcpy(ptr,&lvalue,4);//size of header follows
63     ptr+=4;
64     lvalue=XSIZE;
65     memcpy(ptr,&lvalue,4);//with of image
66     ptr+=4;
67     lvalue=YSIZE;
68     memcpy(ptr,&lvalue,4); //height of image
69     ptr+=4;
70     svalue=1;
71     memcpy(ptr,&svalue,2); //number of planes
72     ptr+=2;
73     svalue=24;
74     memcpy(ptr,&svalue,2); //number of pixel
75     ptr+=2;
76     lvalue=0; //compression
77     memcpy(ptr,&lvalue,4); //compression
78     ptr+=4;
79     lvalue=XSIZE*YSIZE*3;
80     memcpy(ptr,&lvalue,4); //size of image
81     ptr+=4;
82     lvalue=0;
83     memcpy(ptr,&lvalue,4); //xres
84     ptr+=4;
85     lvalue=0;
86     memcpy(ptr,&lvalue,4); //yres
87     ptr+=4;
88     lvalue=0;
89     memcpy(ptr,&lvalue,4); //number of colortables
90     ptr+=4;
91     lvalue=0;
92     memcpy(ptr,&lvalue,4); //number of important colors
93     ptr+=4;
94     /* Ende Information */
95    
96     len=fwrite(header,1,sizeof(header),fd); //write header
97    
98     if(-1==len || len!=sizeof(header))
99     {
100     perror("write");
101     exit(2);
102     }
103    
104     for(y=YSIZE-1;y>=0;y--)
105     {
106     for(x=0;x<XSIZE;x++)
107     {
108     getColorValuesAt(x * (2.0 / XSIZE) - 1.5, y * (2.0 / YSIZE) - 1.0,&bgr[2],&bgr[1],&bgr[0]);
109    
110     len=fwrite(bgr,1,3,fd);
111     if(-1==len || len!=3)
112     {
113     perror("write");
114     exit(4);
115     }
116     }
117     /*no padding required because 1500%4 =0*/
118     }
119     fclose(fd);
120    
121     }

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed