packages feed

bmp 1.1.0.0 → 1.1.1.0

raw patch · 4 files changed

+53/−51 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

Codec/BMP.hs view
@@ -69,14 +69,19 @@ --	If there is anything wrong this gives an `Error` instead. hGetBMP :: Handle -> IO (Either Error BMP) hGetBMP h- = do	-- load the file header.-	buf	<- BSL.hGet h sizeOfFileHeader-	if (fromIntegral $ BSL.length buf) /= sizeOfFileHeader-	 then 	return $ Left ErrorReadOfFileHeaderFailed-	 else	hGetBMP2 h (decode buf)+ = do	-- lazily load the whole file+	buf	<- BSL.hGetContents h++	-- split off the file header+	let (bufFileHeader, bufRest) +		= BSL.splitAt (fromIntegral sizeOfFileHeader) buf 	+	if (fromIntegral $ BSL.length bufFileHeader) /= sizeOfFileHeader+	 then	return $ Left ErrorReadOfFileHeaderFailed+	 else	hGetBMP2 bufRest (decode bufFileHeader) 	-hGetBMP2 h fileHeader+		+hGetBMP2 buf fileHeader  -- Check the magic before doing anything else.  --	If the specified file is not a BMP file then we'd prefer to get   --	this error than a `ReadOfImageHeaderFailed`.@@ -85,62 +90,59 @@ 	  | otherwise  = do	-- Next comes the image header. -	-- The first word tells us which header format it is.-	bufSize		<- BSL.hGet h 4-	let sizeHeader	= runGet getWord32le bufSize+	-- The first word tells us how long it is.+	let sizeHeader	= runGet getWord32le buf 	-	-- Load the rest of the image header-	let sizeRest	= fromIntegral sizeHeader - 4-	bufRest	<- BSL.hGet h sizeRest-	if (fromIntegral $ BSL.length bufRest) /= sizeRest+	-- split off the image header+	let (bufImageHeader, bufRest)+		= BSL.splitAt (fromIntegral sizeHeader) buf++	if (fromIntegral $ BSL.length bufImageHeader) /= sizeHeader 	 then 	return $ Left ErrorReadOfImageHeaderFailed-	 else do-		let bufHeader 	= BSL.append bufSize bufRest-		hGetBMP3 h fileHeader sizeHeader bufHeader-		+	 else 	hGetBMP3 fileHeader bufImageHeader bufRest+ 			-hGetBMP3 h fileHeader sizeHeader bufHeader-	| sizeHeader == 40 -	= do	let info	= decode bufHeader+hGetBMP3 fileHeader bufImageHeader bufRest+	| BSL.length bufImageHeader == 40 +	= do	let info	= decode bufImageHeader 		case checkBitmapInfoV3 info of 		 Just err	-> return $ Left err-		 Nothing	-> hGetBMP4 h fileHeader (InfoV3 info) +		 Nothing	-> hGetBMP4 fileHeader (InfoV3 info) bufRest 					(fromIntegral $ dib3ImageSize info) -	| sizeHeader == 108-	= do	let info	= decode bufHeader+	| BSL.length bufImageHeader == 108+	= do	let info	= decode bufImageHeader 		case checkBitmapInfoV4 info of 		 Just err	-> return $ Left err-		 Nothing	-> hGetBMP4 h fileHeader (InfoV4 info) +		 Nothing	-> hGetBMP4 fileHeader (InfoV4 info) bufRest 					(fromIntegral  						$ dib3ImageSize  						$ dib4InfoV3 info) 		-	| sizeHeader == 124-	= do	let info	= decode bufHeader+	| BSL.length bufImageHeader == 124+	= do	let info	= decode bufImageHeader 		case checkBitmapInfoV5 info of 		 Just err	-> return $ Left err-		 Nothing	-> hGetBMP4 h fileHeader (InfoV5 info) +		 Nothing	-> hGetBMP4 fileHeader (InfoV5 info) bufRest 					(fromIntegral 					 	$ dib3ImageSize  						$ dib4InfoV3 						$ dib5InfoV4 info) 		 	| otherwise- 	= return $ Left $ ErrorUnhandledBitmapHeaderSize (fromIntegral sizeHeader)+ 	= return +		$ Left +		$ ErrorUnhandledBitmapHeaderSize (fromIntegral $ BSL.length bufImageHeader)  -hGetBMP4 h fileHeader imageHeader sizeImage- = do	-- load the image data.-	imageData	<- BS.hGet h sizeImage-				-	if (fromIntegral $ BS.length imageData) /= sizeImage+hGetBMP4 fileHeader imageHeader bufImage (sizeImage :: Int)+ = if (fromIntegral $ BSL.length bufImage) /= sizeImage 	 then return $ Left ErrorReadOfImageDataFailed 	 else return  		$ Right $ BMP  		{ bmpFileHeader 	= fileHeader 		, bmpBitmapInfo		= imageHeader-		, bmpRawImageData	= imageData }+		, bmpRawImageData	= BS.pack $ BSL.unpack bufImage }   -- Writing ----------------------------------------------------------------------------------------
Codec/BMP/BitmapInfoV3.hs view
@@ -14,37 +14,37 @@ -- | Device Independent Bitmap (DIB) header for Windows V3. data BitmapInfoV3 	= BitmapInfoV3			-	{ -- | Size of the image header, in bytes.+	{ -- | (+0) Size of the image header, in bytes. 	  dib3Size		:: Word32 -	  -- | Width of the image, in pixels.+	  -- | (+4) Width of the image, in pixels. 	, dib3Width		:: Word32 	-	  -- | Height of the image, in pixels.+	  -- | (+8) Height of the image, in pixels. 	, dib3Height		:: Word32 	-	  -- | Number of color planes.+	  -- | (+12) Number of color planes. 	, dib3Planes		:: Word16 -	  -- | Number of bits per pixel.+	  -- | (+14) Number of bits per pixel. 	, dib3BitCount		:: Word16 -	  -- | Image compression mode.+	  -- | (+16) Image compression mode. 	, dib3Compression	:: Compression -	  -- | Size of raw image data.+	  -- | (+20) Size of raw image data. 	, dib3ImageSize		:: Word32 -	  -- | Prefered resolution in pixels per meter, along the X axis.+	  -- | (+24) Prefered resolution in pixels per meter, along the X axis. 	, dib3PelsPerMeterX	:: Word32 -	  -- | Prefered resolution in pixels per meter, along the Y axis.+	  -- | (+28) Prefered resolution in pixels per meter, along the Y axis. 	, dib3PelsPerMeterY	:: Word32 -	  -- | Number of color entries that are used.+	  -- | (+32) Number of color entries that are used. 	, dib3ColorsUsed	:: Word32 -	  -- | Number of significant colors.+	  -- | (+36) Number of significant colors. 	, dib3ColorsImportant	:: Word32 	} 	deriving (Show)
Codec/BMP/FileHeader.hs view
@@ -15,19 +15,19 @@ -- | BMP file header. data FileHeader 	= FileHeader			-	{ -- | Magic numbers 0x42 0x4d+	{ -- | (+0) Magic numbers 0x42 0x4d 	  fileHeaderType	:: Word16 	-	  -- | Size of the file, in bytes.+	  -- | (+2) Size of the file, in bytes. 	, fileHeaderFileSize	:: Word32 -	  -- | Reserved, must be zero.+	  -- | (+6) Reserved, must be zero. 	, fileHeaderReserved1	:: Word16 -	  -- | Reserved, must be zero.+	  -- | (+8) Reserved, must be zero. 	, fileHeaderReserved2	:: Word16 -	  -- | Offset in bytes to the start of the pixel data.+	  -- | (+10) Offset in bytes to the start of the pixel data. 	, fileHeaderOffset	:: Word32 	} 	deriving (Show)
bmp.cabal view
@@ -1,5 +1,5 @@ Name:                bmp-Version:             1.1.0.0+Version:             1.1.1.0 License:             MIT License-file:        LICENSE Author:              Ben Lippmeier