OSDN Git Service

Support yy kakiko.
[fukui-no-namari/dialektos.git] / src / buffer_builder.cxx
1 /*
2  * Copyright (C) 2009 by Aiwota Programmer
3  * aiwotaprog@tetteke.tk
4  *
5  * This file is part of Dialektos.
6  *
7  * Dialektos is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * Dialektos is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Dialektos.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include "buffer_builder.hxx"
22
23 #include "text_view_layoutable.hxx"
24 #include "text_line.hxx"
25 #include "text_element_res_num.hxx"
26
27
28 namespace dialektos {
29
30
31 BufferBuilder::BufferBuilder(text_view::Layoutable& view, int res_num) :
32   text_view_(view), res_num_(res_num), current_line_(0) {
33 }
34 BufferBuilder::~BufferBuilder() { flush(); }
35
36 void BufferBuilder::add_res_num(int res_num, bool bold) {
37   assert( current_line_ != 0);
38   current_line_->add_element(
39       new text_element::ResNum(res_num, bold, text_view_.get_res_num_map()));
40 }
41
42 void BufferBuilder::new_line(int left_margin) {
43   flush();
44   current_line_ = new TextLine(res_num_, left_margin);
45 }
46
47 void BufferBuilder::flush() {
48   if (current_line_) {
49     current_line_->trim_right();
50     text_view_.add_line(current_line_);
51     current_line_ = 0;
52   }
53 }
54
55
56 } // namespace dialektos