layout: take into account max and min inline size for canvas and images

This commit is contained in:
Emilio Cobos Álvarez 2016-04-13 04:14:22 +02:00
parent 8abefd7e5e
commit 3c105082b8
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -1380,7 +1380,7 @@ impl Fragment {
result.union_block(&block_flow.base.intrinsic_inline_sizes)
}
SpecificFragmentInfo::Image(ref mut image_fragment_info) => {
let image_inline_size = match self.style.content_inline_size() {
let mut image_inline_size = match self.style.content_inline_size() {
LengthOrPercentageOrAuto::Auto |
LengthOrPercentageOrAuto::Percentage(_) => {
image_fragment_info.image_inline_size()
@ -1388,13 +1388,19 @@ impl Fragment {
LengthOrPercentageOrAuto::Length(length) => length,
LengthOrPercentageOrAuto::Calc(calc) => calc.length(),
};
image_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), image_inline_size);
if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) {
image_inline_size = min(image_inline_size, max)
}
result.union_block(&IntrinsicISizes {
minimum_inline_size: image_inline_size,
preferred_inline_size: image_inline_size,
});
}
SpecificFragmentInfo::Canvas(ref mut canvas_fragment_info) => {
let canvas_inline_size = match self.style.content_inline_size() {
let mut canvas_inline_size = match self.style.content_inline_size() {
LengthOrPercentageOrAuto::Auto |
LengthOrPercentageOrAuto::Percentage(_) => {
canvas_fragment_info.canvas_inline_size()
@ -1402,6 +1408,12 @@ impl Fragment {
LengthOrPercentageOrAuto::Length(length) => length,
LengthOrPercentageOrAuto::Calc(calc) => calc.length(),
};
canvas_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), canvas_inline_size);
if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) {
canvas_inline_size = min(canvas_inline_size, max)
}
result.union_block(&IntrinsicISizes {
minimum_inline_size: canvas_inline_size,
preferred_inline_size: canvas_inline_size,