github.com/boki/go-xmp@v1.0.1/models/digikam/model.go (about) 1 // from http://www.exiv2.org/tags-xmp-digiKam.html 2 3 package digikam 4 5 import ( 6 "fmt" 7 "trimmer.io/go-xmp/xmp" 8 ) 9 10 var ( 11 NsDk = xmp.NewNamespace("digiKam", "http://www.digikam.org/ns/1.0/", NewModel) 12 ) 13 14 func init() { 15 xmp.Register(NsDk, xmp.XmpMetadata) 16 } 17 18 func NewModel(name string) xmp.Model { 19 return &Digikam{} 20 } 21 22 func MakeModel(d *xmp.Document) (*Digikam, error) { 23 m, err := d.MakeModel(NsDk) 24 if err != nil { 25 return nil, err 26 } 27 x, _ := m.(*Digikam) 28 return x, nil 29 } 30 31 func FindModel(d *xmp.Document) *Digikam { 32 if m := d.FindModel(NsDk); m != nil { 33 return m.(*Digikam) 34 } 35 return nil 36 } 37 38 type Digikam struct { 39 TagsList xmp.StringList `xmp:"digiKam:TagsList"` 40 CaptionsAutorNames xmp.AltString `xmp:"digiKam:CaptionsAutorNames"` 41 CaptionsDateTimeStamps xmp.AltString `xmp:"digiKam:CaptionsDateTimeStamps"` 42 ImageHistory string `xmp:"digiKam:ImageHistory"` 43 ImageUniqueID string `xmp:"digiKam:ImageUniqueID"` 44 LensCorrectionSettings string `xmp:"digiKam:LensCorrectionSettings"` 45 ColorLabel ColorLabel `xmp:"digiKam:ColorLabel"` 46 PickLabel PickLabel `xmp:"digiKam:PickLabel"` 47 } 48 49 func (x Digikam) Can(nsName string) bool { 50 return NsDk.GetName() == nsName 51 } 52 53 func (x Digikam) Namespaces() xmp.NamespaceList { 54 return xmp.NamespaceList{NsDk} 55 } 56 57 func (x *Digikam) SyncModel(d *xmp.Document) error { 58 return nil 59 } 60 61 func (x *Digikam) SyncFromXMP(d *xmp.Document) error { 62 return nil 63 } 64 65 func (x Digikam) SyncToXMP(d *xmp.Document) error { 66 return nil 67 } 68 69 func (x *Digikam) CanTag(tag string) bool { 70 _, err := xmp.GetNativeField(x, tag) 71 return err == nil 72 } 73 74 func (x *Digikam) GetTag(tag string) (string, error) { 75 if v, err := xmp.GetNativeField(x, tag); err != nil { 76 return "", fmt.Errorf("%s: %v", NsDk.GetName(), err) 77 } else { 78 return v, nil 79 } 80 } 81 82 func (x *Digikam) SetTag(tag, value string) error { 83 if err := xmp.SetNativeField(x, tag, value); err != nil { 84 return fmt.Errorf("%s: %v", NsDk.GetName(), err) 85 } 86 return nil 87 }