From f4de5a298beec7d4828d2b4a51464ac2852a470c Mon Sep 17 00:00:00 2001 From: Lu Wang Date: Wed, 30 Jan 2013 23:56:27 +0800 Subject: [PATCH] create separate reset_state func --- src/HTMLRenderer/HTMLRenderer.h | 6 ++-- src/HTMLRenderer/general.cc | 25 +------------ src/HTMLRenderer/state.cc | 63 +++++++++++++++++++++++---------- 3 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/HTMLRenderer/HTMLRenderer.h b/src/HTMLRenderer/HTMLRenderer.h index abd0bd7..b90a985 100644 --- a/src/HTMLRenderer/HTMLRenderer.h +++ b/src/HTMLRenderer/HTMLRenderer.h @@ -270,11 +270,13 @@ class HTMLRenderer : public OutputDev //////////////////////////////////////////////////// // state tracking //////////////////////////////////////////////////// + // reset all states + void reset_state(); + // reset all ***_changed flags + void reset_state_change(); // check updated states, and determine new_line_stauts // make sure this function can be called several times consecutively without problem void check_state_change(GfxState * state); - // reset all ***_changed flags - void reset_state_change(); // prepare the line context, (close old tags, open new tags) // make sure the current HTML style consistent with PDF void prepare_text_line(GfxState * state); diff --git a/src/HTMLRenderer/general.cc b/src/HTMLRenderer/general.cc index e67237d..bd80031 100644 --- a/src/HTMLRenderer/general.cc +++ b/src/HTMLRenderer/general.cc @@ -183,31 +183,8 @@ void HTMLRenderer::startPage(int pageNum, GfxState *state, XRef * xref) } f_pages.fs << "\">"; - draw_text_scale = 1.0; - cur_font_info = install_font(nullptr); - cur_font_size = draw_font_size = 0; - cur_fs_id = install_font_size(cur_font_size); - - memcpy(cur_text_tm, ID_MATRIX, sizeof(cur_text_tm)); - memcpy(draw_text_tm, ID_MATRIX, sizeof(draw_text_tm)); - cur_ttm_id = install_transform_matrix(draw_text_tm); - - cur_letter_space = cur_word_space = 0; - cur_ls_id = install_letter_space(cur_letter_space); - cur_ws_id = install_word_space(cur_word_space); - - cur_color.r = cur_color.g = cur_color.b = 0; - cur_color_id = install_color(&cur_color); - - cur_rise = 0; - cur_rise_id = install_rise(cur_rise); - - cur_tx = cur_ty = 0; - draw_tx = draw_ty = 0; - - reset_state_change(); - all_changed = true; + reset_state(); } void HTMLRenderer::endPage() { diff --git a/src/HTMLRenderer/state.cc b/src/HTMLRenderer/state.cc index 1ceb017..2e10b2c 100644 --- a/src/HTMLRenderer/state.cc +++ b/src/HTMLRenderer/state.cc @@ -92,6 +92,51 @@ void HTMLRenderer::updateStrokeColor(GfxState * state) { color_changed = true; } +void HTMLRenderer::reset_state() +{ + draw_text_scale = 1.0; + + cur_font_info = install_font(nullptr); + cur_font_size = draw_font_size = 0; + cur_fs_id = install_font_size(cur_font_size); + + memcpy(cur_text_tm, ID_MATRIX, sizeof(cur_text_tm)); + memcpy(draw_text_tm, ID_MATRIX, sizeof(draw_text_tm)); + cur_ttm_id = install_transform_matrix(draw_text_tm); + + cur_letter_space = cur_word_space = 0; + cur_ls_id = install_letter_space(cur_letter_space); + cur_ws_id = install_word_space(cur_word_space); + + cur_color.r = cur_color.g = cur_color.b = 0; + cur_color_id = install_color(&cur_color); + + cur_rise = 0; + cur_rise_id = install_rise(cur_rise); + + cur_tx = cur_ty = 0; + draw_tx = draw_ty = 0; + + reset_state_change(); + all_changed = true; +} +void HTMLRenderer::reset_state_change() +{ + all_changed = false; + + rise_changed = false; + text_pos_changed = false; + + font_changed = false; + ctm_changed = false; + text_mat_changed = false; + hori_scale_changed = false; + + letter_space_changed = false; + word_space_changed = false; + + color_changed = false; +} void HTMLRenderer::check_state_change(GfxState * state) { // DEPENDENCY WARNING @@ -341,24 +386,6 @@ void HTMLRenderer::check_state_change(GfxState * state) reset_state_change(); } - -void HTMLRenderer::reset_state_change() -{ - all_changed = false; - - rise_changed = false; - text_pos_changed = false; - - font_changed = false; - ctm_changed = false; - text_mat_changed = false; - hori_scale_changed = false; - - letter_space_changed = false; - word_space_changed = false; - - color_changed = false; -} void HTMLRenderer::prepare_text_line(GfxState * state) { if(!line_opened)