mirror of https://github.com/dsoprea/go-exif.git
70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
package exifundefined
|
|
|
|
import (
|
|
"encoding/binary"
|
|
|
|
exifcommon "github.com/dsoprea/go-exif/v3/common"
|
|
|
|
log "github.com/dsoprea/go-logging"
|
|
)
|
|
|
|
type Tag9000ExifVersion struct {
|
|
ExifVersion string
|
|
}
|
|
|
|
func (Tag9000ExifVersion) EncoderName() string {
|
|
return "Codec9000ExifVersion"
|
|
}
|
|
|
|
func (ev Tag9000ExifVersion) String() string {
|
|
return ev.ExifVersion
|
|
}
|
|
|
|
type Codec9000ExifVersion struct {
|
|
}
|
|
|
|
func (Codec9000ExifVersion) Encode(value interface{}, byteOrder binary.ByteOrder) (encoded []byte, unitCount uint32, err error) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err = log.Wrap(state.(error))
|
|
}
|
|
}()
|
|
|
|
s, ok := value.(Tag9000ExifVersion)
|
|
if !ok {
|
|
log.Panicf("can only encode a Tag9000ExifVersion")
|
|
}
|
|
|
|
return []byte(s.ExifVersion), uint32(len(s.ExifVersion)), nil
|
|
}
|
|
|
|
func (Codec9000ExifVersion) Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err error) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err = log.Wrap(state.(error))
|
|
}
|
|
}()
|
|
|
|
valueContext.SetUndefinedValueType(exifcommon.TypeAsciiNoNul)
|
|
|
|
valueString, err := valueContext.ReadAsciiNoNul()
|
|
log.PanicIf(err)
|
|
|
|
ev := Tag9000ExifVersion{
|
|
ExifVersion: valueString,
|
|
}
|
|
|
|
return ev, nil
|
|
}
|
|
|
|
func init() {
|
|
registerEncoder(
|
|
Tag9000ExifVersion{},
|
|
Codec9000ExifVersion{})
|
|
|
|
registerDecoder(
|
|
exifcommon.IfdExifStandardIfdIdentity.UnindexedString(),
|
|
0x9000,
|
|
Codec9000ExifVersion{})
|
|
}
|