static void fz_test_stroke_text(fz_context *ctx, fz_device *dev, fz_text *text, fz_stroke_state *stroke, const fz_matrix *ctm, fz_colorspace *colorspace, float *color, float alpha) { if (alpha != 0.0f) fz_test_color(ctx, dev, colorspace, color); }
static void fz_test_fill_image_mask(fz_context *ctx, fz_device *dev, fz_image *image, const fz_matrix *ctm, fz_colorspace *colorspace, float *color, float alpha) { /* We assume that at least some of the image pixels are non-zero */ fz_test_color(ctx, dev, colorspace, color); }
static void fz_test_fill_path(fz_context *ctx, fz_device *dev, fz_path *path, int even_odd, const fz_matrix *ctm, fz_colorspace *colorspace, float *color, float alpha) { if (alpha != 0.0f) fz_test_color(ctx, dev, colorspace, color); }
static void fz_test_fill_text(fz_device *dev, fz_text *text, const fz_matrix *ctm, fz_colorspace *colorspace, float *color, float alpha) { if (alpha != 0.0f) fz_test_color(dev, colorspace, color); }
static void fz_test_stroke_path(fz_device *dev, fz_path *path, fz_stroke_state *stroke, const fz_matrix *ctm, fz_colorspace *colorspace, float *color, float alpha) { if (alpha != 0.0f) fz_test_color(dev, colorspace, color); }
static void prepare_vertex(fz_context *ctx, void *arg_, fz_vertex *v, const float *color) { struct shadearg *arg = arg_; fz_device *dev = arg->dev; fz_shade *shade = arg->shade; if (!shade->use_function) fz_test_color(ctx, dev, shade->colorspace, color); }
static void fz_test_fill_text(fz_context *ctx, fz_device *dev_, const fz_text *text, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, const fz_color_params *color_params) { fz_test_device *dev = (fz_test_device*)dev_; if (dev->resolved == 0 && alpha != 0.0f) { if (color_params == NULL) color_params = fz_default_color_params(ctx); fz_test_color(ctx, dev, colorspace, color, color_params); } if (dev->passthrough) fz_fill_text(ctx, dev->passthrough, text, ctm, colorspace, color, alpha, color_params); }
static void fz_test_stroke_path(fz_context *ctx, fz_device *dev_, const fz_path *path, const fz_stroke_state *stroke, const fz_matrix *ctm, fz_colorspace *colorspace, const float *color, float alpha, const fz_color_params *color_params) { fz_test_device *dev = (fz_test_device*)dev_; if (dev->resolved == 0 && alpha != 0.0f) { if (color_params == NULL) color_params = fz_default_color_params(ctx); fz_test_color(ctx, dev, colorspace, color, color_params); } if (dev->passthrough) fz_stroke_path(ctx, dev->passthrough, path, stroke, ctm, colorspace, color, alpha, color_params); }
static void fz_test_fill_shade(fz_context *ctx, fz_device *dev, fz_shade *shade, const fz_matrix *ctm, float alpha) { if (shade->use_function) { int i; for (i = 0; i < 256; i++) fz_test_color(ctx, dev, shade->colorspace, shade->function[i]); } else { struct shadearg arg; arg.dev = dev; arg.shade = shade; fz_process_mesh(ctx, shade, ctm, prepare_vertex, NULL, &arg); } }
static void fz_test_fill_image_mask(fz_context *ctx, fz_device *dev_, fz_image *image, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, const fz_color_params *color_params) { fz_test_device *dev = (fz_test_device*)dev_; if (color_params == NULL) color_params = fz_default_color_params(ctx); if (dev->resolved == 0) { /* We assume that at least some of the image pixels are non-zero */ fz_test_color(ctx, dev, colorspace, color, color_params); } if (dev->passthrough) fz_fill_image_mask(ctx, dev->passthrough, image, ctm, colorspace, color, alpha, color_params); }
static void fz_test_fill_shade(fz_context *ctx, fz_device *dev_, fz_shade *shade, fz_matrix ctm, float alpha, const fz_color_params *color_params) { fz_test_device *dev = (fz_test_device*)dev_; if (color_params == NULL) color_params = fz_default_color_params(ctx); if (dev->resolved == 0) { if ((dev->options & FZ_TEST_OPT_SHADINGS) == 0) { if (fz_colorspace_type(ctx, shade->colorspace) != FZ_COLORSPACE_GRAY) { /* Don't test every pixel. Upgrade us from "black and white" to "probably color" */ if (*dev->is_color == 0) *dev->is_color = 1; dev->resolved = 1; if (dev->passthrough == NULL) fz_throw(ctx, FZ_ERROR_ABORT, "Page found as color; stopping interpretation"); } } else { if (shade->use_function) { int i; for (i = 0; i < 256; i++) fz_test_color(ctx, dev, shade->colorspace, shade->function[i], color_params); } else { struct shadearg arg; arg.dev = dev; arg.shade = shade; arg.color_params = color_params; fz_process_shade(ctx, shade, ctm, fz_device_current_scissor(ctx, dev_), prepare_vertex, NULL, &arg); } } } if (dev->passthrough) fz_fill_shade(ctx, dev->passthrough, shade, ctm, alpha, color_params); }