1package pdfexport23import (4 "encoding/json"5 "fmt"6 "strings"7)89type rippleEffectSave struct {10 Width int `json:"width"`11 Height int `json:"height"`12 Givens string `json:"givens"`13 Cages []RippleEffectCage `json:"cages"`14}1516func ParseRippleEffectPrintData(saveData []byte) (*RippleEffectData, error) {17 if len(strings.TrimSpace(string(saveData))) == 0 {18 return nil, nil19 }2021 var save rippleEffectSave22 if err := json.Unmarshal(saveData, &save); err != nil {23 return nil, fmt.Errorf("decode ripple effect save: %w", err)24 }25 if save.Width <= 0 || save.Height <= 0 {26 return nil, nil27 }2829 givens, err := parseNumberGrid(save.Givens, save.Width, save.Height)30 if err != nil {31 return nil, err32 }3334 return &RippleEffectData{35 Width: save.Width,36 Height: save.Height,37 Givens: givens,38 Cages: append([]RippleEffectCage(nil), save.Cages...),39 }, nil40}