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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show 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 /* 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