static void svg_finalize_sort(DrawableContext *ctx, SVG_TextStack *st, GF_TraverseState * tr_state) { #ifndef GPAC_DISABLE_3D if (tr_state->visual->type_3d) { gf_font_spans_draw_3d(st->spans, tr_state, &ctx->aspect, 0, GF_FALSE); drawable_check_focus_highlight(ctx->drawable->node, tr_state, &st->bounds); ctx->drawable = NULL; return; } #endif /*if text selection mode, we must force redraw of the entire text span because we don't if glyphs have been (un)selected*/ if (!tr_state->immediate_draw && /*text selection on*/ (tr_state->visual->compositor->text_selection /*text sel release*/ || (tr_state->visual->compositor->store_text_state==GF_SC_TSEL_RELEASED)) ) { GF_TextSpan *span; u32 i = 0; Bool unselect = (tr_state->visual->compositor->store_text_state==GF_SC_TSEL_RELEASED) ? GF_TRUE : GF_FALSE; while ((span = (GF_TextSpan*)gf_list_enum(st->spans, &i))) { if (span->flags & GF_TEXT_SPAN_SELECTED) { if (unselect) span->flags &= ~GF_TEXT_SPAN_SELECTED; ctx->flags |= CTX_APP_DIRTY; } } } drawable_finalize_sort(ctx, tr_state, &st->bounds); }
static void text_draw_3d(GF_TraverseState *tr_state, GF_Node *node, TextStack *st) { DrawAspect2D the_asp, *asp; Bool is_3d, force_texture; u32 hl_color; is_3d = text_is_3d_material(tr_state); asp = NULL; if (!is_3d) { memset(&the_asp, 0, sizeof(DrawAspect2D)); asp = &the_asp; drawable_get_aspect_2d_mpeg4(node, asp, tr_state); } text_get_draw_opt(node, st, &force_texture, &hl_color, asp); gf_font_spans_draw_3d(st->spans, tr_state, asp, hl_color, force_texture); }