libheif-hs-0.1.0.0: src/Codec/HEIF/Error.hs
module Codec.HEIF.Error
( HeifException (..),
HeifError (..),
HeifSubError (..),
SizeMismatch (..),
Library (..),
)
where
import Control.Exception
import Numeric.Natural
-- | Size mismatch: expected 'expectedBytes' bytes, equal to 'infoWidth' * 'infoHeight'
-- but got 'gotBytes' bytes.
data SizeMismatch
= SizeMismatch
{ expectedBytes :: Natural,
infoWidth :: Natural,
infoHeight :: Natural,
gotBytes :: Natural
}
deriving (Show)
-- | Corresponds to the errors returned by libheif.
data Library
= Library
{ code :: HeifError,
subcode :: HeifSubError,
message :: Maybe String
}
deriving (Show)
data HeifException
= LibraryException Library
| DecodeSizeMismatch SizeMismatch
deriving (Show)
instance Exception HeifException
-- | Maps to C enum heif_error_code from libheif/heif_error.h.
data HeifError
= HeifErrorOk
| HeifErrorInputDoesNotExist
| HeifErrorInvalidInput
| HeifErrorUnsupportedFiletype
| HeifErrorUnsupportedFeature
| HeifErrorUsageError
| HeifErrorMemoryAllocationError
| HeifErrorDecoderPluginError
| HeifErrorEncoderPluginError
| HeifErrorEncodingError
| HeifErrorColorProfileDoesNotExist
| HeifErrorPluginLoadingError
| HeifErrorCanceled
| HeifErrorEndOfSequence
deriving (Show, Eq)
-- | Maps to C enum heif_suberror_code from libheif/heif_error.h.
data HeifSubError
= HeifSubErrorUnspecified
| HeifSubErrorEndOfData
| HeifSubErrorInvalidBoxSize
| HeifSubErrorNoFtypBox
| HeifSubErrorNoIdatBox
| HeifSubErrorNoMetaBox
| HeifSubErrorNoHdlrBox
| HeifSubErrorNoHvcCBox
| HeifSubErrorNoPitmBox
| HeifSubErrorNoIpcoBox
| HeifSubErrorNoIpmaBox
| HeifSubErrorNoIlocBox
| HeifSubErrorNoIinfBox
| HeifSubErrorNoIprpBox
| HeifSubErrorNoIrefBox
| HeifSubErrorNoPictHandler
| HeifSubErrorIpmaBoxReferencesNonexistingProperty
| HeifSubErrorNoPropertiesAssignedToItem
| HeifSubErrorNoItemData
| HeifSubErrorInvalidGridData
| HeifSubErrorMissingGridImages
| HeifSubErrorInvalidCleanAperture
| HeifSubErrorInvalidOverlayData
| HeifSubErrorOverlayImageOutsideOfCanvas
| HeifSubErrorAuxiliaryImageTypeUnspecified
| HeifSubErrorNoOrInvalidPrimaryItem
| HeifSubErrorNoInfeBox
| HeifSubErrorUnknownColorProfileType
| HeifSubErrorWrongTileImageChromaFormat
| HeifSubErrorInvalidFractionalNumber
| HeifSubErrorInvalidImageSize
| HeifSubErrorInvalidPixiBox
| HeifSubErrorNoAv1CBox
| HeifSubErrorWrongTileImagePixelDepth
| HeifSubErrorUnknownNCLXColorPrimaries
| HeifSubErrorUnknownNCLXTransferCharacteristics
| HeifSubErrorUnknownNCLXMatrixCoefficients
| HeifSubErrorInvalidRegionData
| HeifSubErrorNoIspeProperty
| HeifSubErrorCameraIntrinsicMatrixUndefined
| HeifSubErrorCameraExtrinsicMatrixUndefined
| HeifSubErrorInvalidJ2KCodestream
| HeifSubErrorNoVvcCBox
| HeifSubErrorNoIcbrBox
| HeifSubErrorNoAvcCBox
| HeifSubErrorInvalidMiniBox
| HeifSubErrorDecompressionInvalidData
| HeifSubErrorNoMoovBox
| HeifSubErrorNCLXColrVUIMismatch
| HeifSubErrorSecurityLimitExceeded
| HeifSubErrorCompressionInitialisationError
| HeifSubErrorNonexistingItemReferenced
| HeifSubErrorNullPointerArgument
| HeifSubErrorNonexistingImageChannelReferenced
| HeifSubErrorUnsupportedPluginVersion
| HeifSubErrorUnsupportedWriterVersion
| HeifSubErrorUnsupportedParameter
| HeifSubErrorInvalidParameterValue
| HeifSubErrorInvalidProperty
| HeifSubErrorItemReferenceCycle
| HeifSubErrorUnsupportedCodec
| HeifSubErrorUnsupportedImageType
| HeifSubErrorUnsupportedDataVersion
| HeifSubErrorUnsupportedColorConversion
| HeifSubErrorUnsupportedItemConstructionMethod
| HeifSubErrorUnsupportedHeaderCompressionMethod
| HeifSubErrorUnsupportedGenericCompressionMethod
| HeifSubErrorUnsupportedEssentialProperty
| HeifSubErrorUnsupportedTrackType
| HeifSubErrorUnsupportedBitDepth
| HeifSubErrorCannotWriteOutputData
| HeifSubErrorEncoderInitialization
| HeifSubErrorEncoderEncoding
| HeifSubErrorEncoderCleanup
| HeifSubErrorTooManyRegions
| HeifSubErrorPluginLoadingError
| HeifSubErrorPluginIsNotLoaded
| HeifSubErrorCannotReadPluginDirectory
| HeifSubErrorNoMatchingDecoderInstalled
deriving (Show, Eq)