MCPcopy Create free account
hub / github.com/cogentcore/core / PathDataString

Function PathDataString

svg/path.go:839–910  ·  view source on GitHub ↗

PathDataString returns the string representation of the path data

(data []PathData)

Source from the content-addressed store, hash-verified

837
838// PathDataString returns the string representation of the path data
839func PathDataString(data []PathData) string {
840 sz := len(data)
841 if sz == 0 {
842 return ""
843 }
844 var sb strings.Builder
845 var rp, cp, xp, ctrl math32.Vector2
846 for i := 0; i < sz; {
847 cmd, n := PathDataNextCmd(data, &i)
848 sb.WriteString(fmt.Sprintf("%c ", PathCmdToRune[cmd]))
849 switch cmd {
850 case PcM, Pcm:
851 cp = PathDataNextVector(data, &i)
852 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
853 for np := 1; np < n/2; np++ {
854 cp = PathDataNextVector(data, &i)
855 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
856 }
857 case PcL, Pcl:
858 for np := 0; np < n/2; np++ {
859 rp = PathDataNextVector(data, &i)
860 sb.WriteString(fmt.Sprintf("%g,%g ", rp.X, rp.Y))
861 }
862 case PcH, Pch, PcV, Pcv:
863 for np := 0; np < n; np++ {
864 cp.Y = PathDataNext(data, &i)
865 sb.WriteString(fmt.Sprintf("%g ", cp.Y))
866 }
867 case PcC, Pcc:
868 for np := 0; np < n/6; np++ {
869 xp = PathDataNextVector(data, &i)
870 sb.WriteString(fmt.Sprintf("%g,%g ", xp.X, xp.Y))
871 ctrl = PathDataNextVector(data, &i)
872 sb.WriteString(fmt.Sprintf("%g,%g ", ctrl.X, ctrl.Y))
873 cp = PathDataNextVector(data, &i)
874 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
875 }
876 case Pcs, PcS:
877 for np := 0; np < n/4; np++ {
878 xp = PathDataNextVector(data, &i)
879 sb.WriteString(fmt.Sprintf("%g,%g ", xp.X, xp.Y))
880 cp = PathDataNextVector(data, &i)
881 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
882 }
883 case PcQ, Pcq:
884 for np := 0; np < n/4; np++ {
885 ctrl = PathDataNextVector(data, &i)
886 sb.WriteString(fmt.Sprintf("%g,%g ", ctrl.X, ctrl.Y))
887 cp = PathDataNextVector(data, &i)
888 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
889 }
890 case PcT, Pct:
891 for np := 0; np < n/2; np++ {
892 cp = PathDataNextVector(data, &i)
893 sb.WriteString(fmt.Sprintf("%g,%g ", cp.X, cp.Y))
894 }
895 case PcA, Pca:
896 for np := 0; np < n/7; np++ {

Callers 2

UpdatePathStringMethod · 0.85
MarshalXMLFunction · 0.85

Calls 5

PathDataNextCmdFunction · 0.85
PathDataNextVectorFunction · 0.85
PathDataNextFunction · 0.85
WriteStringMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected