зеркало из https://github.com/mozilla/pjs.git
Bug 585069, support ratio scaling for xul images, r=dbaron
This commit is contained in:
Родитель
1fd6189ec9
Коммит
c22ec0f7c0
|
@ -2696,89 +2696,9 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(
|
||||||
tentHeight = nsPresContext::CSSPixelsToAppUnits(150);
|
tentHeight = nsPresContext::CSSPixelsToAppUnits(150);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now apply min/max-width/height - CSS 2.1 sections 10.4 and 10.7:
|
return ComputeAutoSizeWithIntrinsicDimensions(minWidth, minHeight,
|
||||||
|
maxWidth, maxHeight,
|
||||||
if (minWidth > maxWidth)
|
tentWidth, tentHeight);
|
||||||
maxWidth = minWidth;
|
|
||||||
if (minHeight > maxHeight)
|
|
||||||
maxHeight = minHeight;
|
|
||||||
|
|
||||||
nscoord heightAtMaxWidth, heightAtMinWidth,
|
|
||||||
widthAtMaxHeight, widthAtMinHeight;
|
|
||||||
|
|
||||||
if (tentWidth > 0) {
|
|
||||||
heightAtMaxWidth = MULDIV(maxWidth, tentHeight, tentWidth);
|
|
||||||
if (heightAtMaxWidth < minHeight)
|
|
||||||
heightAtMaxWidth = minHeight;
|
|
||||||
heightAtMinWidth = MULDIV(minWidth, tentHeight, tentWidth);
|
|
||||||
if (heightAtMinWidth > maxHeight)
|
|
||||||
heightAtMinWidth = maxHeight;
|
|
||||||
} else {
|
|
||||||
heightAtMaxWidth = tentHeight;
|
|
||||||
heightAtMinWidth = tentHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tentHeight > 0) {
|
|
||||||
widthAtMaxHeight = MULDIV(maxHeight, tentWidth, tentHeight);
|
|
||||||
if (widthAtMaxHeight < minWidth)
|
|
||||||
widthAtMaxHeight = minWidth;
|
|
||||||
widthAtMinHeight = MULDIV(minHeight, tentWidth, tentHeight);
|
|
||||||
if (widthAtMinHeight > maxWidth)
|
|
||||||
widthAtMinHeight = maxWidth;
|
|
||||||
} else {
|
|
||||||
widthAtMaxHeight = tentWidth;
|
|
||||||
widthAtMinHeight = tentWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The table at http://www.w3.org/TR/CSS21/visudet.html#min-max-widths :
|
|
||||||
|
|
||||||
if (tentWidth > maxWidth) {
|
|
||||||
if (tentHeight > maxHeight) {
|
|
||||||
if (PRInt64(maxWidth) * PRInt64(tentHeight) <=
|
|
||||||
PRInt64(maxHeight) * PRInt64(tentWidth)) {
|
|
||||||
width = maxWidth;
|
|
||||||
height = heightAtMaxWidth;
|
|
||||||
} else {
|
|
||||||
width = widthAtMaxHeight;
|
|
||||||
height = maxHeight;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// This also covers "(w > max-width) and (h < min-height)" since in
|
|
||||||
// that case (max-width/w < 1), and with (h < min-height):
|
|
||||||
// max(max-width * h/w, min-height) == min-height
|
|
||||||
width = maxWidth;
|
|
||||||
height = heightAtMaxWidth;
|
|
||||||
}
|
|
||||||
} else if (tentWidth < minWidth) {
|
|
||||||
if (tentHeight < minHeight) {
|
|
||||||
if (PRInt64(minWidth) * PRInt64(tentHeight) <=
|
|
||||||
PRInt64(minHeight) * PRInt64(tentWidth)) {
|
|
||||||
width = widthAtMinHeight;
|
|
||||||
height = minHeight;
|
|
||||||
} else {
|
|
||||||
width = minWidth;
|
|
||||||
height = heightAtMinWidth;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// This also covers "(w < min-width) and (h > max-height)" since in
|
|
||||||
// that case (min-width/w > 1), and with (h > max-height):
|
|
||||||
// min(min-width * h/w, max-height) == max-height
|
|
||||||
width = minWidth;
|
|
||||||
height = heightAtMinWidth;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (tentHeight > maxHeight) {
|
|
||||||
width = widthAtMaxHeight;
|
|
||||||
height = maxHeight;
|
|
||||||
} else if (tentHeight < minHeight) {
|
|
||||||
width = widthAtMinHeight;
|
|
||||||
height = minHeight;
|
|
||||||
} else {
|
|
||||||
width = tentWidth;
|
|
||||||
height = tentHeight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// 'auto' width, non-'auto' height
|
// 'auto' width, non-'auto' height
|
||||||
|
@ -2819,6 +2739,99 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(
|
||||||
return nsSize(width, height);
|
return nsSize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsSize
|
||||||
|
nsLayoutUtils::ComputeAutoSizeWithIntrinsicDimensions(nscoord minWidth, nscoord minHeight,
|
||||||
|
nscoord maxWidth, nscoord maxHeight,
|
||||||
|
nscoord tentWidth, nscoord tentHeight)
|
||||||
|
{
|
||||||
|
// Now apply min/max-width/height - CSS 2.1 sections 10.4 and 10.7:
|
||||||
|
|
||||||
|
if (minWidth > maxWidth)
|
||||||
|
maxWidth = minWidth;
|
||||||
|
if (minHeight > maxHeight)
|
||||||
|
maxHeight = minHeight;
|
||||||
|
|
||||||
|
nscoord heightAtMaxWidth, heightAtMinWidth,
|
||||||
|
widthAtMaxHeight, widthAtMinHeight;
|
||||||
|
|
||||||
|
if (tentWidth > 0) {
|
||||||
|
heightAtMaxWidth = MULDIV(maxWidth, tentHeight, tentWidth);
|
||||||
|
if (heightAtMaxWidth < minHeight)
|
||||||
|
heightAtMaxWidth = minHeight;
|
||||||
|
heightAtMinWidth = MULDIV(minWidth, tentHeight, tentWidth);
|
||||||
|
if (heightAtMinWidth > maxHeight)
|
||||||
|
heightAtMinWidth = maxHeight;
|
||||||
|
} else {
|
||||||
|
heightAtMaxWidth = tentHeight;
|
||||||
|
heightAtMinWidth = tentHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tentHeight > 0) {
|
||||||
|
widthAtMaxHeight = MULDIV(maxHeight, tentWidth, tentHeight);
|
||||||
|
if (widthAtMaxHeight < minWidth)
|
||||||
|
widthAtMaxHeight = minWidth;
|
||||||
|
widthAtMinHeight = MULDIV(minHeight, tentWidth, tentHeight);
|
||||||
|
if (widthAtMinHeight > maxWidth)
|
||||||
|
widthAtMinHeight = maxWidth;
|
||||||
|
} else {
|
||||||
|
widthAtMaxHeight = tentWidth;
|
||||||
|
widthAtMinHeight = tentWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The table at http://www.w3.org/TR/CSS21/visudet.html#min-max-widths :
|
||||||
|
|
||||||
|
nscoord width, height;
|
||||||
|
|
||||||
|
if (tentWidth > maxWidth) {
|
||||||
|
if (tentHeight > maxHeight) {
|
||||||
|
if (PRInt64(maxWidth) * PRInt64(tentHeight) <=
|
||||||
|
PRInt64(maxHeight) * PRInt64(tentWidth)) {
|
||||||
|
width = maxWidth;
|
||||||
|
height = heightAtMaxWidth;
|
||||||
|
} else {
|
||||||
|
width = widthAtMaxHeight;
|
||||||
|
height = maxHeight;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// This also covers "(w > max-width) and (h < min-height)" since in
|
||||||
|
// that case (max-width/w < 1), and with (h < min-height):
|
||||||
|
// max(max-width * h/w, min-height) == min-height
|
||||||
|
width = maxWidth;
|
||||||
|
height = heightAtMaxWidth;
|
||||||
|
}
|
||||||
|
} else if (tentWidth < minWidth) {
|
||||||
|
if (tentHeight < minHeight) {
|
||||||
|
if (PRInt64(minWidth) * PRInt64(tentHeight) <=
|
||||||
|
PRInt64(minHeight) * PRInt64(tentWidth)) {
|
||||||
|
width = widthAtMinHeight;
|
||||||
|
height = minHeight;
|
||||||
|
} else {
|
||||||
|
width = minWidth;
|
||||||
|
height = heightAtMinWidth;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// This also covers "(w < min-width) and (h > max-height)" since in
|
||||||
|
// that case (min-width/w > 1), and with (h > max-height):
|
||||||
|
// min(min-width * h/w, max-height) == max-height
|
||||||
|
width = minWidth;
|
||||||
|
height = heightAtMinWidth;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (tentHeight > maxHeight) {
|
||||||
|
width = widthAtMaxHeight;
|
||||||
|
height = maxHeight;
|
||||||
|
} else if (tentHeight < minHeight) {
|
||||||
|
width = widthAtMinHeight;
|
||||||
|
height = minHeight;
|
||||||
|
} else {
|
||||||
|
width = tentWidth;
|
||||||
|
height = tentHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nsSize(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
/* static */ nscoord
|
/* static */ nscoord
|
||||||
nsLayoutUtils::MinWidthFromInline(nsIFrame* aFrame,
|
nsLayoutUtils::MinWidthFromInline(nsIFrame* aFrame,
|
||||||
nsRenderingContext* aRenderingContext)
|
nsRenderingContext* aRenderingContext)
|
||||||
|
|
|
@ -916,6 +916,16 @@ public:
|
||||||
nsSize aIntrinsicRatio, nsSize aCBSize,
|
nsSize aIntrinsicRatio, nsSize aCBSize,
|
||||||
nsSize aMargin, nsSize aBorder, nsSize aPadding);
|
nsSize aMargin, nsSize aBorder, nsSize aPadding);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Calculate the used values for 'width' and 'height' when width
|
||||||
|
* and height are 'auto'. The tentWidth and tentHeight arguments should be
|
||||||
|
* the result of applying the rules for computing intrinsic sizes and ratios.
|
||||||
|
* as specified by CSS 2.1 sections 10.3.2 and 10.6.2
|
||||||
|
*/
|
||||||
|
static nsSize ComputeAutoSizeWithIntrinsicDimensions(nscoord minWidth, nscoord minHeight,
|
||||||
|
nscoord maxWidth, nscoord maxHeight,
|
||||||
|
nscoord tentWidth, nscoord tentHeight);
|
||||||
|
|
||||||
// Implement nsIFrame::GetPrefWidth in terms of nsIFrame::AddInlinePrefWidth
|
// Implement nsIFrame::GetPrefWidth in terms of nsIFrame::AddInlinePrefWidth
|
||||||
static nscoord PrefWidthFromInline(nsIFrame* aFrame,
|
static nscoord PrefWidthFromInline(nsIFrame* aFrame,
|
||||||
nsRenderingContext* aRenderingContext);
|
nsRenderingContext* aRenderingContext);
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||||
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||||
|
xmlns:html="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<html:style>
|
||||||
|
div { margin: 0px; line-height: 0px; }
|
||||||
|
div div { background: blue; display: inline; float: left; }
|
||||||
|
</html:style>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 20px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 10px; height: 70px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 60px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 60px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px; border: 8px solid green;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 80px; height: 64px; border: 8px solid yellow;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 72px; height: 58px; border: 8px solid green;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid yellow;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid green;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 74px; height: 53px; border: solid yellow; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 18px; height: 11px; border: solid green; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 20px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 10px; height: 70px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 60px;"/><html:img
|
||||||
|
src="image4x3.png" style="height: 80px; height: 60px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 60px; height: 25px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 75px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 80px; height: 64px; padding: 8px; -moz-box-sizing: border-box;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 72px; height: 58px; padding: 8px; -moz-box-sizing: border-box;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 24px; height: 22px; padding: 8px; -moz-box-sizing: border-box;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 24px; height: 22px; padding: 8px; -moz-box-sizing: border-box;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 67px; height: 60px; padding: 4px 2px 8px 1px; -moz-box-sizing: border-box;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 11px; height: 18px; padding: 4px 2px 8px 1px; -moz-box-sizing: border-box;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 30px; height: 22.5px"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 20px; height: 15px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width 30px; height: 22.5px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid green;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid green;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 40px; height: 30px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 60px; height: 49px; border: 8px solid green;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 112px; height: 88px; border: 8px solid yellow;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 96px; height: 76px; border: 8px solid green;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 112px; height: 88px; border: 8px solid yellow;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 106px; height: 77px; border: solid yellow; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:img
|
||||||
|
src="image4x3.png" style="width: 60px; height: 45px;"/><html:img
|
||||||
|
src="image4x3.png" style="width: 120px; height: 90px;"/><html:img
|
||||||
|
src="image4x3.png" style="width 60px; height: 45px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 60px; height: 49px; padding: 8px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 112px; height: 88px; padding: 8px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 96px; height: 76px; padding: 8px;"/><html:img
|
||||||
|
src="image4x3.png" style="-moz-box-sizing: border-box; width: 112px; height: 88px; padding: 8px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:div
|
||||||
|
style="width: 20px; height: 15px;"/><html:div
|
||||||
|
style="width: 80px; height: 60px;"/><html:div
|
||||||
|
style="width: 40px; height: 30px;"/><html:div
|
||||||
|
style="width: 10px; height: 8px;"/><html:div
|
||||||
|
style="width: 10px; height: 8px;"/>
|
||||||
|
</html:div>
|
||||||
|
|
||||||
|
<html:div><html:div style="width: 20px; height: 15px;"/></html:div>
|
||||||
|
|
||||||
|
<html:div><html:div style="width: 20px; height: 15px;"/></html:div>
|
||||||
|
|
||||||
|
<html:div><html:div style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid green;"/></html:div>
|
||||||
|
|
||||||
|
<html:div><html:div style="-moz-box-sizing: border-box; width: 24px; height: 22px; border: 8px solid green;"/></html:div>
|
||||||
|
|
||||||
|
</window>
|
|
@ -0,0 +1,123 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||||
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png"/>
|
||||||
|
<image src="image4x3.png" width="80" height="20"/>
|
||||||
|
<image src="image4x3.png" width="10" height="70"/>
|
||||||
|
<image src="image4x3.png" width="80"/>
|
||||||
|
<image src="image4x3.png" height="60"/>
|
||||||
|
<image src="image4x3.png" width="20"/>
|
||||||
|
<image src="image4x3.png" height="15"/>
|
||||||
|
<image src="image4x3.png" style="border: 8px solid green;"/>
|
||||||
|
<image src="image4x3.png" width="80" style="border: 8px solid yellow;"/>
|
||||||
|
<image src="image4x3.png" height="58" style="border: 8px solid green;"/>
|
||||||
|
<image src="image4x3.png" width="24" style="border: 8px solid yellow;"/>
|
||||||
|
<image src="image4x3.png" height="22" style="border: 8px solid green;"/>
|
||||||
|
<image src="image4x3.png" width="74"
|
||||||
|
style="border: 1px solid yellow; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/>
|
||||||
|
<image src="image4x3.png" height="11"
|
||||||
|
style="border: 1px solid green; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" style="width: auto; height: auto;"/>
|
||||||
|
<image src="image4x3.png" style="width: 80px; height: 20px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 10px; height: 70px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 80px;"/>
|
||||||
|
<image src="image4x3.png" style="height: 60px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 20px;"/>
|
||||||
|
<image src="image4x3.png" style="height: 15px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 80px; height: 20px;" width="60" height="25"/>
|
||||||
|
<image src="image4x3.png" style="width: 10px; height: 70px;" width="20" height="75"/>
|
||||||
|
<image src="image4x3.png" style="width: 80px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="height: 58px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 24px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="height: 22px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="width: 67px; padding: 4px 2px 8px 1px"/>
|
||||||
|
<image src="image4x3.png" style="height: 18px; padding: 4px 2px 8px 1px"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" maxwidth="20"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" maxheight="15"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" maxwidth="30" maxheight="25"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" style="max-width: 20px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" style="max-height: 15px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" style="max-width: 30px; max-height: 25px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" maxwidth="24" style="border: 8px solid green;"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" maxheight="22" style="border: 8px solid green;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" minwidth="20"/>
|
||||||
|
<image src="image4x3.png" minheight="20"/>
|
||||||
|
<image src="image4x3.png" minwidth="20" minheight="25"/>
|
||||||
|
<image src="image4x3.png" minwidth="60" style="border: 8px solid green;"/>
|
||||||
|
<image src="image4x3.png" minheight="88" style="border: 8px solid yellow;"/>
|
||||||
|
<image src="image4x3.png" minwidth="90" minheight="76" style="border: 8px solid green;"/>
|
||||||
|
<image src="image4x3.png" minwidth="112" minheight="76" style="border: 8px solid yellow;"/>
|
||||||
|
<image src="image4x3.png" minwidth="106"
|
||||||
|
style="border: 1px solid yellow; border-top-width: 1px; border-right-width: 2px; border-bottom-width: 4px; border-left-width: 8px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image src="image4x3.png" style="min-width: 60px;"/>
|
||||||
|
<image src="image4x3.png" style="min-height: 90px;"/>
|
||||||
|
<image src="image4x3.png" style="min-width 41px; min-height: 45px;"/>
|
||||||
|
<image src="image4x3.png" style="min-width: 60px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="min-height: 88px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="min-width: 90px; min-height: 76px; padding: 8px;"/>
|
||||||
|
<image src="image4x3.png" style="min-width: 112px; min-height: 76px; padding: 8px;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="start">
|
||||||
|
<image style="width: auto; height: auto; list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px);"/>
|
||||||
|
<image width="80" style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px);"/>
|
||||||
|
<image height="30" style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px);"/>
|
||||||
|
<image style="width: 10px; list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 21px, 5px);"/>
|
||||||
|
<image style="height: 8px; list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 21px, 5px);"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image maxwidth="20"
|
||||||
|
style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px);"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image maxheight="15"
|
||||||
|
style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px);"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image maxwidth="24"
|
||||||
|
style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px); border: 8px solid green;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<hbox align="end">
|
||||||
|
<image maxheight="22"
|
||||||
|
style="list-style-image: url(image4x3.png); -moz-image-region: rect(5px, 25px, 20px, 5px); border: 8px solid green;"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
</window>
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 176 B |
|
@ -1,3 +1,4 @@
|
||||||
== textbox-multiline-noresize.xul textbox-multiline-ref.xul
|
== textbox-multiline-noresize.xul textbox-multiline-ref.xul
|
||||||
!= textbox-multiline-resize.xul textbox-multiline-ref.xul
|
!= textbox-multiline-resize.xul textbox-multiline-ref.xul
|
||||||
== popup-explicit-size.xul popup-explicit-size-ref.xul
|
== popup-explicit-size.xul popup-explicit-size-ref.xul
|
||||||
|
== image-size.xul image-size-ref.xul
|
||||||
|
|
|
@ -440,7 +440,6 @@ nsImageBoxFrame::GetImageSize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ok return our dimensions
|
* Ok return our dimensions
|
||||||
*/
|
*/
|
||||||
|
@ -456,12 +455,68 @@ nsImageBoxFrame::GetPrefSize(nsBoxLayoutState& aState)
|
||||||
size = nsSize(mSubRect.width, mSubRect.height);
|
size = nsSize(mSubRect.width, mSubRect.height);
|
||||||
else
|
else
|
||||||
size = mImageSize;
|
size = mImageSize;
|
||||||
AddBorderAndPadding(size);
|
|
||||||
|
nsSize intrinsicSize = size;
|
||||||
|
|
||||||
|
nsMargin borderPadding(0,0,0,0);
|
||||||
|
GetBorderAndPadding(borderPadding);
|
||||||
|
size.width += borderPadding.LeftRight();
|
||||||
|
size.height += borderPadding.TopBottom();
|
||||||
|
|
||||||
PRBool widthSet, heightSet;
|
PRBool widthSet, heightSet;
|
||||||
nsIBox::AddCSSPrefSize(this, size, widthSet, heightSet);
|
nsIBox::AddCSSPrefSize(this, size, widthSet, heightSet);
|
||||||
|
NS_ASSERTION(size.width != NS_INTRINSICSIZE && size.height != NS_INTRINSICSIZE,
|
||||||
|
"non-nintrinsic size expected");
|
||||||
|
|
||||||
nsSize minSize = GetMinSize(aState);
|
nsSize minSize = GetMinSize(aState);
|
||||||
nsSize maxSize = GetMaxSize(aState);
|
nsSize maxSize = GetMaxSize(aState);
|
||||||
|
|
||||||
|
if (!widthSet && !heightSet) {
|
||||||
|
if (minSize.width != NS_INTRINSICSIZE)
|
||||||
|
minSize.width -= borderPadding.LeftRight();
|
||||||
|
if (minSize.height != NS_INTRINSICSIZE)
|
||||||
|
minSize.height -= borderPadding.TopBottom();
|
||||||
|
if (maxSize.width != NS_INTRINSICSIZE)
|
||||||
|
maxSize.width -= borderPadding.LeftRight();
|
||||||
|
if (maxSize.height != NS_INTRINSICSIZE)
|
||||||
|
maxSize.height -= borderPadding.TopBottom();
|
||||||
|
|
||||||
|
size = nsLayoutUtils::ComputeAutoSizeWithIntrinsicDimensions(minSize.width, minSize.height,
|
||||||
|
maxSize.width, maxSize.height,
|
||||||
|
intrinsicSize.width, intrinsicSize.height);
|
||||||
|
NS_ASSERTION(size.width != NS_INTRINSICSIZE && size.height != NS_INTRINSICSIZE,
|
||||||
|
"non-nintrinsic size expected");
|
||||||
|
size.width += borderPadding.LeftRight();
|
||||||
|
size.height += borderPadding.TopBottom();
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!widthSet) {
|
||||||
|
if (intrinsicSize.height > 0) {
|
||||||
|
// Subtract off the border and padding from the height because the
|
||||||
|
// content-box needs to be used to determine the ratio
|
||||||
|
nscoord height = size.height - borderPadding.TopBottom();
|
||||||
|
size.width = nscoord(PRInt64(height) * PRInt64(intrinsicSize.width) /
|
||||||
|
PRInt64(intrinsicSize.height));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
size.width = intrinsicSize.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
size.width += borderPadding.LeftRight();
|
||||||
|
}
|
||||||
|
else if (!heightSet) {
|
||||||
|
if (intrinsicSize.width > 0) {
|
||||||
|
nscoord width = size.width - borderPadding.LeftRight();
|
||||||
|
size.height = nscoord(PRInt64(width) * PRInt64(intrinsicSize.height) /
|
||||||
|
PRInt64(intrinsicSize.width));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
size.height = intrinsicSize.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
size.height += borderPadding.TopBottom();
|
||||||
|
}
|
||||||
|
|
||||||
return BoundsCheck(minSize, size, maxSize);
|
return BoundsCheck(minSize, size, maxSize);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче