mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-05-20 17:28:40 +00:00
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package exifundefined
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"encoding/binary"
|
|
|
|
"github.com/dsoprea/go-logging"
|
|
|
|
"github.com/dsoprea/go-exif/v3/common"
|
|
)
|
|
|
|
type TagExifA301SceneType uint32
|
|
|
|
func (TagExifA301SceneType) EncoderName() string {
|
|
return "CodecExifA301SceneType"
|
|
}
|
|
|
|
func (st TagExifA301SceneType) String() string {
|
|
return fmt.Sprintf("0x%08x", uint32(st))
|
|
}
|
|
|
|
const (
|
|
TagUndefinedType_A301_SceneType_DirectlyPhotographedImage TagExifA301SceneType = 1
|
|
)
|
|
|
|
type CodecExifA301SceneType struct {
|
|
}
|
|
|
|
func (CodecExifA301SceneType) Encode(value interface{}, byteOrder binary.ByteOrder) (encoded []byte, unitCount uint32, err error) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err = log.Wrap(state.(error))
|
|
}
|
|
}()
|
|
|
|
st, ok := value.(TagExifA301SceneType)
|
|
if ok == false {
|
|
log.Panicf("can only encode a TagExif9101ComponentsConfiguration")
|
|
}
|
|
|
|
ve := exifcommon.NewValueEncoder(byteOrder)
|
|
|
|
ed, err := ve.Encode([]uint32{uint32(st)})
|
|
log.PanicIf(err)
|
|
|
|
// TODO(dustin): Confirm this size against the specification. It's non-specific about what type it is, but it looks to be no more than a single integer scalar. So, we're assuming it's a LONG.
|
|
|
|
return ed.Encoded, uint32(int(ed.UnitCount)), nil
|
|
}
|
|
|
|
func (CodecExifA301SceneType) Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err error) {
|
|
defer func() {
|
|
if state := recover(); state != nil {
|
|
err = log.Wrap(state.(error))
|
|
}
|
|
}()
|
|
|
|
valueContext.SetUndefinedValueType(exifcommon.TypeLong)
|
|
|
|
valueLongs, err := valueContext.ReadLongs()
|
|
log.PanicIf(err)
|
|
|
|
return TagExifA301SceneType(valueLongs[0]), nil
|
|
}
|
|
|
|
func init() {
|
|
registerEncoder(
|
|
TagExifA301SceneType(0),
|
|
CodecExifA301SceneType{})
|
|
|
|
registerDecoder(
|
|
exifcommon.IfdExifStandardIfdIdentity.UnindexedString(),
|
|
0xa301,
|
|
CodecExifA301SceneType{})
|
|
}
|