summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'base/gstext.c')
-rw-r--r--base/gstext.c36
1 files changed, 5 insertions, 31 deletions
diff --git a/base/gstext.c b/base/gstext.c
index 306c476d..07cdb549 100644
--- a/base/gstext.c
+++ b/base/gstext.c
@@ -324,34 +324,8 @@ gs_text_begin(gs_gstate * pgs, const gs_text_params_t * text,
/* Processing a text object operation */
ensure_tag_is_set(pgs, pgs->device, GS_TEXT_TAG); /* NB: may unset_dev_color */
- if (black_text && pgs->black_text_state == NULL) {
- gs_color_space *pcs_curr = gs_currentcolorspace_inline(pgs);
- gs_color_space *pcs_alt = gs_swappedcolorspace_inline(pgs);
-
- pgs->black_text_state = gsicc_blacktext_state_new(pgs->memory);
- if (pgs->black_text_state == NULL)
- return gs_error_VMerror;
-
- rc_increment_cs(pcs_curr);
- rc_increment_cs(pcs_alt);
- pgs->black_text_state->pcs[0] = pcs_curr;
- pgs->black_text_state->pcs[1] = pcs_alt;
-
- pgs->black_text_state->pcc[0] = pgs->color[0].ccolor;
- cs_adjust_color_count(pgs, 1); /* The set_gray will do a decrement */
- pgs->black_text_state->value[0] = pgs->color[0].ccolor->paint.values[0];
- gs_setgray(pgs, 0.0);
-
- gs_swapcolors_quick(pgs);
-
- pgs->black_text_state->pcc[1] = pgs->color[0].ccolor;
- cs_adjust_color_count(pgs, 1);
- pgs->black_text_state->value[1] = pgs->color[0].ccolor->paint.values[0];
- gs_setgray(pgs, 0.0);
-
- gs_swapcolors_quick(pgs);
-
- pgs->black_text_state->is_fill = pgs->is_fill_color;
+ if (black_text && pgs->black_textvec_state == NULL) {
+ gsicc_setup_blacktextvec(pgs, (gx_device *)pgs->device, true);
}
code = gx_set_dev_color(pgs);
@@ -405,7 +379,7 @@ gs_text_begin(gs_gstate * pgs, const gs_text_params_t * text,
/* we need to know if we are doing a highlevel device.
Also we need to know if we are doing any stroke
or stroke fill operations. This determines when
- we need to release the black_text_state structure. */
+ we need to release the black_textvec_state structure. */
if (code >= 0 && *ppte != NULL) {
if (black_text) {
if (!((*ppte)->k_text_release)) {
@@ -821,8 +795,8 @@ rc_free_text_enum(gs_memory_t * mem, void *obj, client_name_t cname)
void
gs_text_release(gs_gstate *pgs, gs_text_enum_t * pte, client_name_t cname)
{
- if (pgs != NULL && pgs->black_text_state != NULL)
- gsicc_restore_black_text(pgs);
+ if (pgs != NULL && pgs->black_textvec_state != NULL)
+ gsicc_restore_blacktextvec(pgs, true);
rc_decrement_only(pte, cname);
}