private Gradient parseGradient(System.String s, bool hasAlpha) { Gradient gradient = new Gradient(); // todo - support focal // todo add error checking // count must be 1..8 // number of parts must be even // ratio must be 0..255 System.String[] parts = StringUtils.split(s, " "); int count = parts.Length / 2; gradient.records = new GradRecord[count]; for (int i = 0; i < count; i++) { GradRecord record = gradient.records[i] = new GradRecord(); record.ratio = System.Int32.Parse(parts[2 * i]); record.color = hasAlpha?parseRGBA(parts[2 * i + 1]):parseRGB(parts[2 * i + 1]); } return gradient; }
private void encodeGradient(Gradient gradient, SwfEncoder w, int shape) { w.writeUBits(gradient.spreadMode, 2); w.writeUBits(gradient.interpolationMode, 2); w.writeUBits(gradient.records.Length, 4); for (int i = 0; i < gradient.records.Length; i++) { encodeGradRecord(gradient.records[i], w, shape); } if (gradient is FocalGradient) { w.writeFixed8(((FocalGradient) gradient).focalPoint); } }