summaryrefslogtreecommitdiff
path: root/def.go
diff options
context:
space:
mode:
authorKurt <kurt.w.jung@gmail.com>2018-11-10 12:06:51 -0500
committerKurt <kurt.w.jung@gmail.com>2018-11-10 12:06:51 -0500
commit193187d077554b92944a4757e202d1300e1ed1fb (patch)
tree0ce3865cbd2051a4a6d74e4273ccc3eb2dd7cd24 /def.go
parent8d469f984ef048ff3547911bede39b7b651e8c8c (diff)
Added some comments to new encoding/decoding methods
Diffstat (limited to 'def.go')
-rw-r--r--def.go103
1 files changed, 19 insertions, 84 deletions
diff --git a/def.go b/def.go
index 3c5fa9d..605cdbc 100644
--- a/def.go
+++ b/def.go
@@ -158,7 +158,9 @@ func (p PointType) XY() (float64, float64) {
return p.X, p.Y
}
-// ImageInfoType contains size, color and other information about an image
+// ImageInfoType contains size, color and other information about an image.
+// Changes to this structure should be reflected in its GobEncode and GobDecode
+// methods.
type ImageInfoType struct {
data []byte
smask []byte
@@ -176,99 +178,32 @@ type ImageInfoType struct {
dpi float64
}
-func (info *ImageInfoType) GobEncode() ([]byte, error) {
+// GobEncode encodes the receiving image to a byte slice.
+func (info *ImageInfoType) GobEncode() (buf []byte, err error) {
+ fields := []interface{}{info.data, info.smask, info.i, info.n, info.w, info.h, info.cs,
+ info.pal, info.bpc, info.f, info.dp, info.trns, info.scale, info.dpi}
w := new(bytes.Buffer)
encoder := gob.NewEncoder(w)
-
- err := encoder.Encode(info.data)
- if err == nil {
- err = encoder.Encode(info.smask)
- }
- if err == nil {
- err = encoder.Encode(info.i)
- }
- if err == nil {
- err = encoder.Encode(info.n)
- }
- if err == nil {
- err = encoder.Encode(info.w)
- }
- if err == nil {
- err = encoder.Encode(info.h)
- }
- if err == nil {
- err = encoder.Encode(info.cs)
- }
- if err == nil {
- err = encoder.Encode(info.pal)
- }
- if err == nil {
- err = encoder.Encode(info.bpc)
- }
- if err == nil {
- err = encoder.Encode(info.f)
- }
- if err == nil {
- err = encoder.Encode(info.dp)
+ for j := 0; j < len(fields) && err == nil; j++ {
+ err = encoder.Encode(fields[j])
}
if err == nil {
- err = encoder.Encode(info.trns)
+ buf = w.Bytes()
}
- if err == nil {
- err = encoder.Encode(info.scale)
- }
- if err == nil {
- err = encoder.Encode(info.dpi)
- }
-
- return w.Bytes(), err
+ return
}
-func (info *ImageInfoType) GobDecode(buf []byte) error {
+// GobDecode decodes the specified byte buffer (generated by GobEncode) into
+// the receiving image.
+func (info *ImageInfoType) GobDecode(buf []byte) (err error) {
+ fields := []interface{}{&info.data, &info.smask, &info.i, &info.n, &info.w, &info.h,
+ &info.cs, &info.pal, &info.bpc, &info.f, &info.dp, &info.trns, &info.scale, &info.dpi}
r := bytes.NewBuffer(buf)
decoder := gob.NewDecoder(r)
-
- err := decoder.Decode(&info.data)
- if err == nil {
- err = decoder.Decode(&info.smask)
- }
- if err == nil {
- err = decoder.Decode(&info.i)
- }
- if err == nil {
- err = decoder.Decode(&info.n)
- }
- if err == nil {
- err = decoder.Decode(&info.w)
- }
- if err == nil {
- err = decoder.Decode(&info.h)
- }
- if err == nil {
- err = decoder.Decode(&info.cs)
- }
- if err == nil {
- err = decoder.Decode(&info.pal)
- }
- if err == nil {
- err = decoder.Decode(&info.bpc)
- }
- if err == nil {
- err = decoder.Decode(&info.f)
- }
- if err == nil {
- err = decoder.Decode(&info.dp)
- }
- if err == nil {
- err = decoder.Decode(&info.trns)
- }
- if err == nil {
- err = decoder.Decode(&info.scale)
- }
- if err == nil {
- err = decoder.Decode(&info.dpi)
+ for j := 0; j < len(fields) && err == nil; j++ {
+ err = decoder.Decode(fields[j])
}
- return err
+ return
}
// PointConvert returns the value of pt, expressed in points (1/72 inch), as a