3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS Display Control Panel
5 * FILE: lib/cpl/desk/dibitmap.c
8 * PROGRAMMERS: Trevor McCort (lycan359@gmail.com)
13 DIBitmap
*DibLoadImage(TCHAR
*filename
)
16 DWORD dwFileSize
, dwHighSize
, dwBytesRead
;
20 hFile
= CreateFile(filename
,
25 FILE_FLAG_SEQUENTIAL_SCAN
,
28 if(hFile
== INVALID_HANDLE_VALUE
)
31 dwFileSize
= GetFileSize(hFile
, &dwHighSize
);
39 bitmap
= malloc(sizeof(DIBitmap
));
43 bitmap
->header
= malloc(dwFileSize
);
50 bSuccess
= ReadFile(hFile
, bitmap
->header
, dwFileSize
, &dwBytesRead
, NULL
);
53 if(!bSuccess
|| (dwBytesRead
!= dwFileSize
)
54 || (bitmap
->header
->bfType
!= * (WORD
*) "BM")
55 || (bitmap
->header
->bfSize
!= dwFileSize
))
61 bitmap
->info
= (BITMAPINFO
*)(bitmap
->header
+ 1);
62 bitmap
->bits
= (BYTE
*)bitmap
->header
+ bitmap
->header
->bfOffBits
;
64 /* Get the DIB width and height */
65 if(bitmap
->info
->bmiHeader
.biSize
== sizeof(BITMAPCOREHEADER
))
67 bitmap
->width
= ((BITMAPCOREHEADER
*)bitmap
->info
)->bcWidth
;
68 bitmap
->height
= ((BITMAPCOREHEADER
*)bitmap
->info
)->bcHeight
;
72 bitmap
->width
= bitmap
->info
->bmiHeader
.biWidth
;
73 bitmap
->height
= abs(bitmap
->info
->bmiHeader
.biHeight
);
79 void DibFreeImage(DIBitmap
*bitmap
)
85 if(bitmap
->header
!= NULL
)
88 /* Free the bitmap structure */