left_map;
const Param * param;
diff --git a/src/HTMLRenderer/TextLineBuffer.cc b/src/HTMLRenderer/TextLineBuffer.cc
index 9a00f07..93571ea 100644
--- a/src/HTMLRenderer/TextLineBuffer.cc
+++ b/src/HTMLRenderer/TextLineBuffer.cc
@@ -83,13 +83,15 @@ void HTMLRenderer::TextLineBuffer::flush(void)
}
ostream & out = renderer->f_pages.fs;
+ renderer->height_manager.install(max_ascent);
+
out << "install_left(x)
- << " h" << renderer->install_height(max_ascent)
+ << " h" << renderer->height_manager.get_id()
<< "\">";
auto cur_state_iter = states.begin();
diff --git a/src/HTMLRenderer/export.cc b/src/HTMLRenderer/export.cc
index 6332df9..2fed1d8 100644
--- a/src/HTMLRenderer/export.cc
+++ b/src/HTMLRenderer/export.cc
@@ -196,10 +196,6 @@ void HTMLRenderer::export_whitespace (long long ws_id, double ws_width)
f_css.fs << "._" << ws_id << "{display:inline;margin-left:" << round(ws_width) << "px;}" << endl;
}
-void HTMLRenderer::export_height (long long height_id, double height)
-{
- f_css.fs << ".h" << height_id << "{height:" << round(height) << "px;}" << endl;
-}
void HTMLRenderer::export_left (long long left_id, double left)
{
f_css.fs << ".L" << left_id << "{left:" << round(left) << "px;}" << endl;
diff --git a/src/HTMLRenderer/general.cc b/src/HTMLRenderer/general.cc
index 1b95fdf..1c46054 100644
--- a/src/HTMLRenderer/general.cc
+++ b/src/HTMLRenderer/general.cc
@@ -60,6 +60,7 @@ HTMLRenderer::HTMLRenderer(const Param * param)
letter_space_manager.set_param(CSS::LETTER_SPACE_CN, EPS );
word_space_manager .set_param(CSS::WORD_SPACE_CN , EPS );
rise_manager .set_param(CSS::RISE_CN , param->v_eps);
+ height_manager .set_param(CSS::HEIGHT_CN , EPS );
}
HTMLRenderer::~HTMLRenderer()
@@ -341,6 +342,7 @@ void HTMLRenderer::post_process()
letter_space_manager.dump_css(f_css.fs);
word_space_manager .dump_css(f_css.fs);
rise_manager .dump_css(f_css.fs);
+ height_manager .dump_css(f_css.fs);
// close files
f_outline.fs.close();
diff --git a/src/HTMLRenderer/install.cc b/src/HTMLRenderer/install.cc
index 4b65151..4a569f4 100644
--- a/src/HTMLRenderer/install.cc
+++ b/src/HTMLRenderer/install.cc
@@ -280,19 +280,6 @@ long long HTMLRenderer::install_whitespace(double ws_width, double & actual_widt
return new_ws_id;
}
-long long HTMLRenderer::install_height(double height)
-{
- auto iter = height_map.lower_bound(height - EPS);
- if((iter != height_map.end()) && (abs(iter->first - height) <= EPS))
- {
- return iter->second;
- }
-
- long long new_height_id = height_map.size();
- height_map.insert(make_pair(height, new_height_id));
- export_height(new_height_id, height);
- return new_height_id;
-}
long long HTMLRenderer::install_left(double left)
{
auto iter = left_map.lower_bound(left - param->h_eps);
diff --git a/src/HTMLRenderer/state.cc b/src/HTMLRenderer/state.cc
index d11f93f..0f1d7d0 100644
--- a/src/HTMLRenderer/state.cc
+++ b/src/HTMLRenderer/state.cc
@@ -116,7 +116,8 @@ void HTMLRenderer::reset_state()
cur_stroke_color_id = install_stroke_color(&cur_stroke_color);
cur_has_stroke = false;
- rise_manager.reset();
+ rise_manager .reset();
+ height_manager.reset();
cur_tx = cur_ty = 0;
draw_tx = draw_ty = 0;
diff --git a/src/util/StateManager.h b/src/util/StateManager.h
index edb582a..38dac86 100644
--- a/src/util/StateManager.h
+++ b/src/util/StateManager.h
@@ -121,6 +121,13 @@ public:
void dump_value(std::ostream & out, double value) { out << "top:" << round(-value) << "px;"; }
};
+class HeightManager : public StateManager
+{
+public:
+ double default_value(void) { return 0; }
+ void dump_value(std::ostream & out, double value) { out << "height:" << round(value) << "px;"; }
+};
+
} // namespace pdf2htmlEX
#endif //STATEMANAGER_H__