Convert NodeRange to a struct with a static new() function.

This commit is contained in:
Brian J. Burg 2012-10-22 11:50:39 -07:00
parent 8ea5c64bd0
commit ee47778bd5
2 changed files with 16 additions and 9 deletions

View file

@ -10,7 +10,7 @@ use layout::block::BlockFlowData;
use layout::box::{LogicalBefore, LogicalAfter, RenderBox};
use layout::context::LayoutContext;
use layout::debug::BoxedDebugMethods;
use layout::inline::InlineFlowData;
use layout::inline::{InlineFlowData, NodeRange};
use layout::root::RootFlowData;
use util::range::{Range, MutableRange};
use util::tree;
@ -179,11 +179,9 @@ impl BoxConsumer {
// only create NodeRanges for non-leaf nodes.
let final_span_length = self.flow.inline().boxes.len() - entry.start_idx + 1;
assert final_span_length > 1;
let mapping = { node: copy box.d().node,
range: MutableRange(entry.start_idx, final_span_length)
};
debug!("BoxConsumer: adding element range=%?", mapping.range);
self.flow.inline().elems.push(move mapping);
let new_range = Range(entry.start_idx, final_span_length);
debug!("BoxConsumer: adding element range=%?", new_range);
self.flow.inline().elems.push(NodeRange::new(copy box.d().node, move new_range));
},
@BlockFlow(*) => {
assert self.stack.len() == 0;

View file

@ -41,7 +41,16 @@ serve as the starting point, but the current design doesn't make it
hard to try out that alternative.
*/
type NodeRange = {node: Node, range: MutableRange};
struct NodeRange {
node: Node,
mut range: Range,
}
impl NodeRange {
static pure fn new(node: Node, range: Range) -> NodeRange {
NodeRange { node: node, range: range }
}
}
// stack-allocated object for scanning an inline flow into
// TextRun-containing TextBoxes.
@ -305,7 +314,7 @@ impl LineboxScanner {
while repair_stack.len() > 0 && old_i == elems[repair_stack.last().elem_idx].range.end() {
let item = repair_stack.pop();
debug!("Set range for %u to %?", item.elem_idx, Range(item.begin_idx, new_j));
elems[item.elem_idx].range.reset(item.begin_idx, new_j);
elems[item.elem_idx].range = Range(item.begin_idx, new_j);
}
old_i += 1;
}
@ -314,7 +323,7 @@ impl LineboxScanner {
while repair_stack.len() > 0 && old_i == elems[repair_stack.last().elem_idx].range.end() {
let item = repair_stack.pop();
debug!("Set range for %u to %?", item.elem_idx, Range(item.begin_idx, new_j));
elems[item.elem_idx].range.reset(item.begin_idx, new_j);
elems[item.elem_idx].range = Range(item.begin_idx, new_j);
}
}
}