static StringAttribute[] attributesSub(CStringLayer src, int start, int end) { int dst_len = end - start; ArrayList<StringAttribute> attributes = new ArrayList<StringAttribute>(); if (src.Attributes != null) { for (StringAttribute attr : src.Attributes) { attr = new StringAttribute(attr); if (CMath.intersectRect(start, 1, end, 1, attr.Start, 1, attr.End, 1)) { attributes.add(attr); attr.Start -= start; attr.End -= start; attr.Start = Math.max(attr.Start, 0); attr.End = Math.min(attr.End, dst_len); } } } return attributes.toArray(new StringAttribute[attributes.size()]); }
static StringAttribute[] attributesLink(CStringLayer s1, CStringLayer s2) { ArrayList<StringAttribute> attributes = new ArrayList<StringAttribute>(); if (s1.Attributes != null) { for (StringAttribute attr : s1.Attributes) { attr = new StringAttribute(attr); attributes.add(attr); } } if (s2.Attributes != null) { for (StringAttribute attr : s2.Attributes) { attr = new StringAttribute(attr); attributes.add(attr); attr.Start += s1.Src.length(); attr.End += s1.Src.length(); } } return attributes.toArray(new StringAttribute[attributes.size()]); }