binary-file-0.15.24: binary-file.cabal
build-type: Simple
cabal-version: >= 1.8
name: binary-file
version: 0.15.24
stability: experimental
author: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
homepage: https://skami.iocikun.jp/haskell/packages/binary-file
license: BSD3
license-file: LICENSE
category: File
synopsis: read/write binary file
description:
See example directory's sample code.
.
> runghc -XQuasiQuotes -XTypeFamilies -XFlexibleInstances exam.hs some.bmp
.
exam.hs:
.
> import File.Binary
> import File.Binary.Instances
> import File.Binary.Instances.LittleEndian
> import System.Environment
> import Data.ByteString.Lazy as BSL
>
> main = do
> [inf] <- getArgs
> cnt <- BS.readFile inf
> let Right (bmp, rest) = fromBinary () cnt :: (Bitmap, String)
> print bmp
>
> instance Field (Int, Int, Int) where
> type FieldArgument (Int, Int, Int) = ()
> fromBinary _ s = do
> (b, rest) <- fromBinary 1 s
> (g, rest') <- fromBinary 1 rest
> (r, rest'') <- fromBinary 1 rest' in
> return ((b, g, r), snd $ getBytes 1 1 rest'')
> toBinary _ (b, g, r) = do
> b' <- toBinary 1 b
> g' <- toBinary 1 g
> r' <- toBinary 1 r
> return $ concatBinary [b', g', r', makeBinary $ BSL.singleton 0]
>
> [binary|
>
> Bitmap
>
> deriving Show
>
> 2: "BM"
> 4: file_size
> 2: 0
> 2: 0
> 4: offset
>
> 4: 40
> 4: width
> 4: height
> 2: 1
> 2: bits_per_pixel
> 4: compression
> 4: image_size
> 4: resolutionH
> 4: resolutionV
> 4: color_num
> 4: important_color_num
> replicate color_num ()[OPENBRACKET][(Int, Int, Int)][CLOSEBRACKET]: colors
> replicate image_size ()[OPENBRACKET]String[CLOSEBRACKET]: image
>
> |]
.
extra-source-files:
examples/readPNG.hs,
examples/CRC.hs,
examples/readBitmap.hs,
examples/readHex.hs,
examples/tiny.hs
examples/bits.hs
examples/bitsb.hs
examples/bitslb.hs
source-repository head
type: git
location: git://github.com/YoshikuniJujo/binary-file.git
source-repository this
type: git
location: git://github.com/YoshikuniJujo/binary-file.git
tag: 0.15.24
library
hs-source-dirs: src
exposed-modules:
File.Binary
File.Binary.Instances
File.Binary.Instances.LittleEndian
File.Binary.Instances.BigEndian
File.Binary.Instances.LSB0
File.Binary.Instances.MSB0
other-modules:
File.Binary.Classes
File.Binary.Parse
File.Binary.Quote
build-depends: base > 3 && < 5, template-haskell, peggy, bytestring,
monads-tf
ghc-options: -Wall