static void pdf_add_triangle(fz_context *ctx, fz_shade *shade, struct vertex *v0, struct vertex *v1, struct vertex *v2) { pdf_add_vertex(ctx, shade, v0); pdf_add_vertex(ctx, shade, v1); pdf_add_vertex(ctx, shade, v2); }
static void pdf_load_radial_shading(fz_shade *shade, pdf_document *xref, pdf_obj *dict, int funcs, pdf_function **func) { pdf_obj *obj; float d0, d1; int e0, e1; float x0, y0, r0, x1, y1, r1; struct vertex p1, p2; fz_context *ctx = xref->ctx; obj = pdf_dict_gets(dict, "Coords"); x0 = pdf_to_real(pdf_array_get(obj, 0)); y0 = pdf_to_real(pdf_array_get(obj, 1)); r0 = pdf_to_real(pdf_array_get(obj, 2)); x1 = pdf_to_real(pdf_array_get(obj, 3)); y1 = pdf_to_real(pdf_array_get(obj, 4)); r1 = pdf_to_real(pdf_array_get(obj, 5)); d0 = 0; d1 = 1; obj = pdf_dict_gets(dict, "Domain"); if (pdf_array_len(obj) == 2) { d0 = pdf_to_real(pdf_array_get(obj, 0)); d1 = pdf_to_real(pdf_array_get(obj, 1)); } e0 = e1 = 0; obj = pdf_dict_gets(dict, "Extend"); if (pdf_array_len(obj) == 2) { e0 = pdf_to_bool(pdf_array_get(obj, 0)); e1 = pdf_to_bool(pdf_array_get(obj, 1)); } pdf_sample_shade_function(ctx, shade, funcs, func, d0, d1); shade->type = FZ_RADIAL; shade->extend[0] = e0; shade->extend[1] = e1; p1.x = x0; p1.y = y0; p1.c[0] = r0; pdf_add_vertex(ctx, shade, &p1); p2.x = x1; p2.y = y1; p2.c[0] = r1; pdf_add_vertex(ctx, shade, &p2); }
static void pdf_load_axial_shading(fz_shade *shade, pdf_xref *xref, fz_obj *dict, int funcs, pdf_function **func) { fz_obj *obj; float d0, d1; int e0, e1; float x0, y0, x1, y1; struct vertex p1, p2; fz_context *ctx = xref->ctx; obj = fz_dict_gets(ctx, dict, "Coords"); x0 = fz_to_real(ctx, fz_array_get(ctx, obj, 0)); y0 = fz_to_real(ctx, fz_array_get(ctx, obj, 1)); x1 = fz_to_real(ctx, fz_array_get(ctx, obj, 2)); y1 = fz_to_real(ctx, fz_array_get(ctx, obj, 3)); d0 = 0; d1 = 1; obj = fz_dict_gets(ctx, dict, "Domain"); if (fz_array_len(ctx, obj) == 2) { d0 = fz_to_real(ctx, fz_array_get(ctx, obj, 0)); d1 = fz_to_real(ctx, fz_array_get(ctx, obj, 1)); } e0 = e1 = 0; obj = fz_dict_gets(ctx, dict, "Extend"); if (fz_array_len(ctx, obj) == 2) { e0 = fz_to_bool(ctx, fz_array_get(ctx, obj, 0)); e1 = fz_to_bool(ctx, fz_array_get(ctx, obj, 1)); } pdf_sample_shade_function(ctx, shade, funcs, func, d0, d1); shade->type = FZ_LINEAR; shade->extend[0] = e0; shade->extend[1] = e1; p1.x = x0; p1.y = y0; p1.c[0] = 0; pdf_add_vertex(ctx, shade, &p1); p2.x = x1; p2.y = y1; p2.c[0] = 0; pdf_add_vertex(ctx, shade, &p2); }