aboutsummaryrefslogtreecommitdiffstats
path: root/src/servo/layout/text.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/servo/layout/text.rs')
-rw-r--r--src/servo/layout/text.rs76
1 files changed, 7 insertions, 69 deletions
diff --git a/src/servo/layout/text.rs b/src/servo/layout/text.rs
index b218f4b191e..49f8682f4ec 100644
--- a/src/servo/layout/text.rs
+++ b/src/servo/layout/text.rs
@@ -1,34 +1,27 @@
/** Text layout. */
-use au = gfx::geometry;
-use au::au;
-use geom::size::Size2D;
use servo_text::text_run::{TextRange, TextRun};
-use servo_text::font_cache::FontCache;
use layout::box::{TextBox, RenderBox, RenderBoxData, UnscannedTextBox};
-use layout::context::LayoutContext;
pub struct TextBoxData {
run: @TextRun,
- offset: uint,
- length: uint
+ range: TextRange,
}
-pub fn TextBoxData(run: @TextRun, offset: uint, length: uint) -> TextBoxData {
+pub fn TextBoxData(run: @TextRun, range: TextRange) -> TextBoxData {
TextBoxData {
run: run,
- offset: offset,
- length: length
+ range: range,
}
}
pub fn adapt_textbox_with_range(box_data: &RenderBoxData, run: @TextRun,
- offset: uint, length: uint) -> @RenderBox {
+ range: TextRange) -> @RenderBox {
debug!("Creating textbox with span: (strlen=%u, off=%u, len=%u) of textrun: %s",
- run.text.len(), offset, length, run.text);
+ run.text.len(), range.begin(), range.length(), run.text);
let new_box_data = copy *box_data;
- let new_text_data = TextBoxData(run, offset, length);
- let metrics = run.metrics_for_range(TextRange(offset, length));
+ let new_text_data = TextBoxData(run, range);
+ let metrics = run.metrics_for_range(range);
new_box_data.position.size = metrics.bounding_box.size;
@TextBox(move new_box_data, move new_text_data)
}
@@ -45,58 +38,3 @@ impl RenderBox : UnscannedMethods {
}
}
}
-
-/* The main reflow routine for text layout.
-impl @RenderBox : TextLayout {
- fn reflow_text(ctx: &LayoutContext) {
- let d = match self {
- @TextBox(_,d) => { d }
- _ => { fail ~"expected text box in reflow_text!" }
- };
-
- // TODO: get font from textrun's TextStyle
- let font = ctx.font_cache.get_test_font();
-
- // Do line breaking.
- let mut current = TextRun(font, d.text);
- let mut lines = dvec::DVec();
- let mut width_left = au::from_px(800);
- let mut max_width = au(0);
-
- while current.size().width > width_left {
- let min_width = current.min_break_width();
-
- debug!("line %d, current width %d, width left %d, min width %d",
- lines.len() as int,
- *current.size().width as int,
- *width_left as int,
- *min_width as int);
-
- if min_width > width_left {
- // Too bad, we couldn't break. Overflow.
- break;
- }
-
- let (prev_line, next_line) = current.split(font, width_left);
- let prev_width = prev_line.size().width;
- if max_width < prev_width {
- max_width = prev_width;
- }
-
- lines.push(move prev_line);
- current = next_line;
- }
-
- let remaining_width = current.size().width;
- if max_width < remaining_width {
- max_width = remaining_width;
- }
-
- let line_count = 1 + (lines.len() as i32);
- let total_height = au(*current.size().height * line_count);
- lines.push(move current);
-
- self.d().position.size = Size2D(max_width, total_height);
- d.runs = move dvec::unwrap(lines);
- }
-}*/