mirror of
https://github.com/dsoprea/go-exif.git
synced 2025-05-31 11:41:57 +00:00
undefined/exif_8828_oecf.go: Add Encode()
This commit is contained in:
parent
f7701a222a
commit
d293fcac9c
@ -1,8 +1,11 @@
|
|||||||
package exifundefined
|
package exifundefined
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"encoding/binary"
|
||||||
|
|
||||||
"github.com/dsoprea/go-logging"
|
"github.com/dsoprea/go-logging"
|
||||||
|
|
||||||
"github.com/dsoprea/go-exif/v2/common"
|
"github.com/dsoprea/go-exif/v2/common"
|
||||||
@ -26,6 +29,47 @@ func (oecf Tag8828Oecf) EncoderName() string {
|
|||||||
type Codec8828Oecf struct {
|
type Codec8828Oecf struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (Codec8828Oecf) Encode(value interface{}, byteOrder binary.ByteOrder) (encoded []byte, unitCount uint32, err error) {
|
||||||
|
defer func() {
|
||||||
|
if state := recover(); state != nil {
|
||||||
|
err = log.Wrap(state.(error))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
// TODO(dustin): Add test
|
||||||
|
|
||||||
|
oecf, ok := value.(Tag8828Oecf)
|
||||||
|
if ok == false {
|
||||||
|
log.Panicf("can only encode a Tag8828Oecf")
|
||||||
|
}
|
||||||
|
|
||||||
|
b := new(bytes.Buffer)
|
||||||
|
|
||||||
|
err = binary.Write(b, byteOrder, oecf.Columns)
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
err = binary.Write(b, byteOrder, oecf.Rows)
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
for _, name := range oecf.ColumnNames {
|
||||||
|
_, err := b.Write([]byte(name))
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
_, err = b.Write([]byte{0})
|
||||||
|
log.PanicIf(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
ve := exifcommon.NewValueEncoder(byteOrder)
|
||||||
|
|
||||||
|
ed, err := ve.Encode(oecf.Values)
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
_, err = b.Write(ed.Encoded)
|
||||||
|
log.PanicIf(err)
|
||||||
|
|
||||||
|
return b.Bytes(), uint32(b.Len()), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (Codec8828Oecf) Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err error) {
|
func (Codec8828Oecf) Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if state := recover(); state != nil {
|
if state := recover(); state != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user