static inline void split_patch(pdf_tensorpatch *s0, pdf_tensorpatch *s1, const pdf_tensorpatch *p) { split_curve_s(&p->pole[0][0], &s0->pole[0][0], &s1->pole[0][0], 4); split_curve_s(&p->pole[0][1], &s0->pole[0][1], &s1->pole[0][1], 4); split_curve_s(&p->pole[0][2], &s0->pole[0][2], &s1->pole[0][2], 4); split_curve_s(&p->pole[0][3], &s0->pole[0][3], &s1->pole[0][3], 4); copycolor(s0->color[0], p->color[0]); midcolor(s0->color[1], p->color[0], p->color[1]); midcolor(s0->color[2], p->color[2], p->color[3]); copycolor(s0->color[3], p->color[3]); copycolor(s1->color[0], s0->color[1]); copycolor(s1->color[1], p->color[1]); copycolor(s1->color[2], p->color[2]); copycolor(s1->color[3], s0->color[2]); }
static inline void split_stripe(pdf_tensorpatch *s0, pdf_tensorpatch *s1, const pdf_tensorpatch *p) { split_curve_s(p->pole[0], s0->pole[0], s1->pole[0], 1); split_curve_s(p->pole[1], s0->pole[1], s1->pole[1], 1); split_curve_s(p->pole[2], s0->pole[2], s1->pole[2], 1); split_curve_s(p->pole[3], s0->pole[3], s1->pole[3], 1); copycolor(s0->color[0], p->color[0]); copycolor(s0->color[1], p->color[1]); midcolor(s0->color[2], p->color[1], p->color[2]); midcolor(s0->color[3], p->color[0], p->color[3]); copycolor(s1->color[0], s0->color[3]); copycolor(s1->color[1], s0->color[2]); copycolor(s1->color[2], p->color[2]); copycolor(s1->color[3], p->color[3]); }
static void split_patch(pdf_tensor_patch *p, pdf_tensor_patch *s0, pdf_tensor_patch *s1) { /* split all vertical bezier curves in patch, creating two new patches with half the height. */ split_curve(p->pole[0], s0->pole[0], s1->pole[0], 1); split_curve(p->pole[1], s0->pole[1], s1->pole[1], 1); split_curve(p->pole[2], s0->pole[2], s1->pole[2], 1); split_curve(p->pole[3], s0->pole[3], s1->pole[3], 1); /* interpolate the colors for the two new patches. */ memcpy(s0->color[0], p->color[0], sizeof(s0->color[0])); midcolor(s0->color[1], p->color[0], p->color[1]); midcolor(s0->color[2], p->color[2], p->color[3]); memcpy(s0->color[3], p->color[3], sizeof(s0->color[3])); memcpy(s1->color[0], s0->color[1], sizeof(s1->color[0])); memcpy(s1->color[1], p->color[1], sizeof(s1->color[1])); memcpy(s1->color[2], p->color[2], sizeof(s1->color[2])); memcpy(s1->color[3], s0->color[2], sizeof(s1->color[3])); }
static void split_stripe(pdf_tensor_patch *p, pdf_tensor_patch *s0, pdf_tensor_patch *s1) { /* split all horizontal bezier curves in patch, creating two new patches with half the width. */ split_curve(&p->pole[0][0], &s0->pole[0][0], &s1->pole[0][0], 4); split_curve(&p->pole[0][1], &s0->pole[0][1], &s1->pole[0][1], 4); split_curve(&p->pole[0][2], &s0->pole[0][2], &s1->pole[0][2], 4); split_curve(&p->pole[0][3], &s0->pole[0][3], &s1->pole[0][3], 4); /* interpolate the colors for the two new patches. */ memcpy(s0->color[0], p->color[0], sizeof(s0->color[0])); memcpy(s0->color[1], p->color[1], sizeof(s0->color[1])); midcolor(s0->color[2], p->color[1], p->color[2]); midcolor(s0->color[3], p->color[0], p->color[3]); memcpy(s1->color[0], s0->color[3], sizeof(s1->color[0])); memcpy(s1->color[1], s0->color[2], sizeof(s1->color[1])); memcpy(s1->color[2], p->color[2], sizeof(s1->color[2])); memcpy(s1->color[3], p->color[3], sizeof(s1->color[3])); }