annotate Gui/bitmap/bmp/bmp.c @ 4509:90386125ec1f

using dlerror() instead strerror(), displays unresolved symbol messages
author alex
date Sun, 03 Feb 2002 13:05:30 +0000
parents 016f6d583733
children 3473ca9ef158
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
2 #ifndef __MY_BMP
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
3 #define __MY_BMP
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
4
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
5 /*
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
6 0.1 : BMP type.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
7 2.5 : File size.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
8 6.7 : Res.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
9 8.9 : Res.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
10 10.13 : Offset of bitmap.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
11 14.17 : Header size.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
12 18.21 : X size.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
13 22.25 : Y size.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
14 26.27 : Number of planes.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
15 28.29 : Number of bits per pixel.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
16 30.33 : Compression flag.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
17 34.37 : Image data size in bytes.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
18 38.41 : Res
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
19 42.45 : Res
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
20 46.49 : Res
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
21 50.53 : Res
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
22 */
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
23
2080
f91ad6d23ce9 gcc3 warning fixed
arpi
parents: 1693
diff changeset
24 #include <stdio.h>
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
25 #include <stdlib.h>
2080
f91ad6d23ce9 gcc3 warning fixed
arpi
parents: 1693
diff changeset
26 #include <string.h>
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
27
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
28 #include "bmp.h"
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
29 #include "../bitmap.h"
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
30 #include "../../error.h"
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
31
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
32 int bmpRead( unsigned char * fname,txSample * bF )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
33 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
34 unsigned char bmpHeader[54];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
35 FILE * BMP;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
36 unsigned long i;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
37 unsigned char * line;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
38 int linesize;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
39
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
40
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
41 if ( (BMP=fopen( fname,"rt" )) == NULL )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
42 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
43 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
44 dbprintf( 4,"[bmp] File not found ( %s ).\n",fname );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
45 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
46 return 1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
47 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
48 if ( (i=fread( bmpHeader,54,1,BMP )) != 1 )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
49 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
50 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
51 dbprintf( 4,"[bmp] Header read error ( %s ).\n",fname );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
52 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
53 return 2;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
54 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
55 // memcpy( &bF->Size,&bmpHeader[2],4 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
56 memcpy( &bF->Width,&bmpHeader[18],4 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
57 memcpy( &bF->Height,&bmpHeader[22],4 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
58 memcpy( &bF->BPP,&bmpHeader[28],2 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
59 // memcpy( &bF->ImageSize,&bmpHeader[34],4 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
60 bF->ImageSize=( bF->Width * bF->Height ) * ( bF->BPP / 8 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
61
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
62 if ( bF->BPP < 24 )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
63 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
64 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
65 dbprintf( 4,"[bmp] Sorry, this loader not supported 16 bit or less ...\n" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
66 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
67 return 3;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
68 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
69
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
70 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
71 dbprintf( 4,"[bmp] filename: %s\n",fname );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
72 dbprintf( 4,"[bmp] size: %dx%d bits: %d\n",bF->Width,bF->Height,bF->BPP );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
73 dbprintf( 4,"[bmp] imagesize: %lu\n",bF->ImageSize );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
74 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
75
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
76 if ( ( bF->Image=malloc( bF->ImageSize ) ) == NULL )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
77 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
78 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
79 dbprintf( 4,"[bmp] Not enough memory for image buffer.\n" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
80 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
81 return 4;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
82 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
83
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
84 if ( (i=fread( bF->Image,bF->ImageSize,1,BMP )) != 1 )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
85 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
86 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
87 dbprintf( 4,"[bmp] Image read error.\n" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
88 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
89 return 5;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
90 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
91
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
92 fclose( BMP );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
93
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
94 linesize=bF->Width * ( bF->BPP / 8 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
95 if ( (line=malloc( linesize )) == NULL )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
96 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
97 #ifdef DEBUG
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
98 dbprintf( 4,"[bmp] Not enough memory for flipping.\n" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
99 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
100 return 6;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
101 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
102
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
103 for ( i=0;i < bF->Height / 2;i++ )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
104 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
105 memcpy( line,&bF->Image[ i * linesize ],linesize );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
106 memcpy( &bF->Image[ i * linesize ],&bF->Image[ ( bF->Height - i - 1 ) * linesize ],linesize );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
107 memcpy( &bF->Image[ ( bF->Height - i - 1 ) * linesize ],line,linesize );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
108 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
109 free( line );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
110
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
111 return 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
112 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
113
2082
016f6d583733 missing newlines fixed
arpi
parents: 2080
diff changeset
114 #endif
016f6d583733 missing newlines fixed
arpi
parents: 2080
diff changeset
115