git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@606004 13f79535-47bb-0310-9956-ffa450edef68pull/15/head
int EN_SMALL_CAPTION = 184; | int EN_SMALL_CAPTION = 184; | ||||
/** Enumeration constant -- font shorthand */ | /** Enumeration constant -- font shorthand */ | ||||
int EN_STATUS_BAR = 185; | int EN_STATUS_BAR = 185; | ||||
/** Enumeration constant -- for page-position, XSL 1.1 */ | |||||
int EN_ONLY = 186; | |||||
/** Enumeration constant -- for instream-foreign-object and external-graphic, XSL 1.1 */ | |||||
int EN_SCALE_DOWN_TO_FIT = 187; | |||||
/** Enumeration constant -- for instream-foreign-object and external-graphic, XSL 1.1 */ | |||||
int EN_SCALE_UP_TO_FIT = 188; | |||||
/** Number of enumeration constants defined */ | /** Number of enumeration constants defined */ | ||||
int ENUM_COUNT = 185; | |||||
int ENUM_COUNT = 188; | |||||
} | } |
import org.apache.fop.apps.FOUserAgent; | import org.apache.fop.apps.FOUserAgent; | ||||
import org.apache.fop.datatypes.LengthBase; | import org.apache.fop.datatypes.LengthBase; | ||||
import org.apache.fop.fo.expr.PropertyException; | import org.apache.fop.fo.expr.PropertyException; | ||||
import org.apache.fop.fo.flow.table.TableFObj.ColumnNumberPropertyMaker; | |||||
import org.apache.fop.fo.properties.BackgroundPositionShorthandParser; | import org.apache.fop.fo.properties.BackgroundPositionShorthandParser; | ||||
import org.apache.fop.fo.properties.BorderSpacingShorthandParser; | import org.apache.fop.fo.properties.BorderSpacingShorthandParser; | ||||
import org.apache.fop.fo.properties.BorderWidthPropertyMaker; | import org.apache.fop.fo.properties.BorderWidthPropertyMaker; | ||||
import org.apache.fop.fo.properties.BoxPropShorthandParser; | import org.apache.fop.fo.properties.BoxPropShorthandParser; | ||||
import org.apache.fop.fo.properties.CharacterProperty; | import org.apache.fop.fo.properties.CharacterProperty; | ||||
import org.apache.fop.fo.properties.ColorProperty; | import org.apache.fop.fo.properties.ColorProperty; | ||||
import org.apache.fop.fo.flow.table.TableFObj.ColumnNumberPropertyMaker; | |||||
import org.apache.fop.fo.properties.CondLengthProperty; | import org.apache.fop.fo.properties.CondLengthProperty; | ||||
import org.apache.fop.fo.properties.CorrespondingPropertyMaker; | import org.apache.fop.fo.properties.CorrespondingPropertyMaker; | ||||
import org.apache.fop.fo.properties.DimensionPropertyMaker; | import org.apache.fop.fo.properties.DimensionPropertyMaker; | ||||
l.setInherited(false); | l.setInherited(false); | ||||
l.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO")); | l.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO")); | ||||
l.addEnum("scale-to-fit", getEnumProperty(EN_SCALE_TO_FIT, "SCALE_TO_FIT")); | l.addEnum("scale-to-fit", getEnumProperty(EN_SCALE_TO_FIT, "SCALE_TO_FIT")); | ||||
l.addEnum("scale-down-to-fit", getEnumProperty(EN_SCALE_DOWN_TO_FIT, "SCALE_DOWN_TO_FIT")); | |||||
l.addEnum("scale-up-to-fit", getEnumProperty(EN_SCALE_UP_TO_FIT, "SCALE_UP_TO_FIT")); | |||||
l.setDefault("auto"); | l.setDefault("auto"); | ||||
l.setPercentBase(LengthBase.IMAGE_INTRINSIC_HEIGHT); | l.setPercentBase(LengthBase.IMAGE_INTRINSIC_HEIGHT); | ||||
addPropertyMaker("content-height", l); | addPropertyMaker("content-height", l); | ||||
l.setInherited(false); | l.setInherited(false); | ||||
l.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO")); | l.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO")); | ||||
l.addEnum("scale-to-fit", getEnumProperty(EN_SCALE_TO_FIT, "SCALE_TO_FIT")); | l.addEnum("scale-to-fit", getEnumProperty(EN_SCALE_TO_FIT, "SCALE_TO_FIT")); | ||||
l.addEnum("scale-down-to-fit", getEnumProperty(EN_SCALE_DOWN_TO_FIT, "SCALE_DOWN_TO_FIT")); | |||||
l.addEnum("scale-up-to-fit", getEnumProperty(EN_SCALE_UP_TO_FIT, "SCALE_UP_TO_FIT")); | |||||
l.setDefault("auto"); | l.setDefault("auto"); | ||||
l.setPercentBase(LengthBase.IMAGE_INTRINSIC_WIDTH); | l.setPercentBase(LengthBase.IMAGE_INTRINSIC_WIDTH); | ||||
addPropertyMaker("content-width", l); | addPropertyMaker("content-width", l); | ||||
m.addEnum("last", getEnumProperty(EN_LAST, "LAST")); | m.addEnum("last", getEnumProperty(EN_LAST, "LAST")); | ||||
m.addEnum("rest", getEnumProperty(EN_REST, "REST")); | m.addEnum("rest", getEnumProperty(EN_REST, "REST")); | ||||
m.addEnum("any", getEnumProperty(EN_ANY, "ANY")); | m.addEnum("any", getEnumProperty(EN_ANY, "ANY")); | ||||
m.addEnum("only", getEnumProperty(EN_ONLY, "ONLY")); //XSL 1.1 | |||||
m.setDefault("any"); | m.setDefault("any"); | ||||
addPropertyMaker("page-position", m); | addPropertyMaker("page-position", m); | ||||
int cheight = -1; | int cheight = -1; | ||||
len = fobj.getContentWidth(); | len = fobj.getContentWidth(); | ||||
if (len.getEnum() != EN_AUTO) { | if (len.getEnum() != EN_AUTO) { | ||||
if (len.getEnum() == EN_SCALE_TO_FIT) { | |||||
switch (len.getEnum()) { | |||||
case EN_SCALE_TO_FIT: | |||||
if (ipd != -1) { | if (ipd != -1) { | ||||
cwidth = ipd; | cwidth = ipd; | ||||
} | } | ||||
} else { | |||||
break; | |||||
case EN_SCALE_DOWN_TO_FIT: | |||||
if (ipd != -1 && fobj.getIntrinsicWidth() > ipd) { | |||||
cwidth = ipd; | |||||
} | |||||
break; | |||||
case EN_SCALE_UP_TO_FIT: | |||||
if (ipd != -1 && fobj.getIntrinsicWidth() < ipd) { | |||||
cwidth = ipd; | |||||
} | |||||
break; | |||||
default: | |||||
cwidth = len.getValue(this); | cwidth = len.getValue(this); | ||||
} | } | ||||
} | } | ||||
len = fobj.getContentHeight(); | len = fobj.getContentHeight(); | ||||
if (len.getEnum() != EN_AUTO) { | if (len.getEnum() != EN_AUTO) { | ||||
if (len.getEnum() == EN_SCALE_TO_FIT) { | |||||
switch (len.getEnum()) { | |||||
case EN_SCALE_TO_FIT: | |||||
if (bpd != -1) { | if (bpd != -1) { | ||||
cheight = bpd; | cheight = bpd; | ||||
} | } | ||||
} else { | |||||
break; | |||||
case EN_SCALE_DOWN_TO_FIT: | |||||
if (bpd != -1 && fobj.getIntrinsicHeight() > bpd) { | |||||
cheight = bpd; | |||||
} | |||||
break; | |||||
case EN_SCALE_UP_TO_FIT: | |||||
if (bpd != -1 && fobj.getIntrinsicHeight() < bpd) { | |||||
cheight = bpd; | |||||
} | |||||
break; | |||||
default: | |||||
cheight = len.getValue(this); | cheight = len.getValue(this); | ||||
} | } | ||||
} | } |
<changes> | <changes> | ||||
<release version="FOP Trunk"> | <release version="FOP Trunk"> | ||||
<action context="Code" dev="JM" type="add"> | |||||
Added support for scale-down-to-fit and scale-up-to-fit (introduced in XSL 1.1). | |||||
</action> | |||||
<action context="Code" dev="VH" type="fix" fixes-bug="43633"> | <action context="Code" dev="VH" type="fix" fixes-bug="43633"> | ||||
Bugfix: content of a row with zero height overriding the previous row | Bugfix: content of a row with zero height overriding the previous row | ||||
</action> | </action> |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!-- | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
(the "License"); you may not use this file except in compliance with | |||||
the License. You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
--> | |||||
<!-- $Id$ --> | |||||
<testcase> | |||||
<info> | |||||
<p> | |||||
This test checks external-graphics with content-width | |||||
(values: scale-to-fit, scale-down-to-fit and scale-up-to-fit) | |||||
</p> | |||||
</info> | |||||
<fo> | |||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||||
<fo:layout-master-set> | |||||
<fo:simple-page-master master-name="normal" page-width="5in" page-height="5in"> | |||||
<fo:region-body/> | |||||
</fo:simple-page-master> | |||||
</fo:layout-master-set> | |||||
<fo:page-sequence master-reference="normal" font-size="0" line-height="1"> | |||||
<fo:flow flow-name="xsl-region-body"> | |||||
<fo:block> | |||||
<fo:external-graphic id="img1" src="../../resources/images/bgimg72dpi.jpg"/> | |||||
</fo:block> | |||||
<fo:block> | |||||
<fo:external-graphic id="img2" src="../../resources/images/bgimg72dpi.jpg" | |||||
inline-progression-dimension="250pt" block-progression-dimension="250pt" | |||||
content-height="scale-to-fit" content-width="scale-to-fit"/> | |||||
</fo:block> | |||||
<fo:block> | |||||
<fo:external-graphic id="img3" src="../../resources/images/bgimg72dpi.jpg" | |||||
inline-progression-dimension="250pt" block-progression-dimension="250pt" | |||||
content-height="scale-down-to-fit" content-width="scale-down-to-fit"/> | |||||
</fo:block> | |||||
<fo:block> | |||||
<fo:external-graphic id="img4" src="../../resources/images/bgimg72dpi.jpg" | |||||
inline-progression-dimension="250pt" block-progression-dimension="250pt" | |||||
content-height="scale-up-to-fit" content-width="scale-up-to-fit"/> | |||||
</fo:block> | |||||
<fo:block> | |||||
<fo:external-graphic id="img5" src="../../resources/images/bgimg300dpi.jpg" | |||||
inline-progression-dimension="250pt" block-progression-dimension="250pt" | |||||
content-height="scale-down-to-fit" content-width="scale-down-to-fit"/> | |||||
</fo:block> | |||||
<fo:block> | |||||
<fo:external-graphic id="img6" src="../../resources/images/bgimg300dpi.jpg" | |||||
inline-progression-dimension="250pt" block-progression-dimension="250pt" | |||||
content-height="scale-up-to-fit" content-width="scale-up-to-fit"/> | |||||
</fo:block> | |||||
</fo:flow> | |||||
</fo:page-sequence> | |||||
</fo:root> | |||||
</fo> | |||||
<checks> | |||||
<eval expected="192000" xpath="//image[@prod-id='img1']/../@ipd"/> | |||||
<eval expected="192000" xpath="//image[@prod-id='img1']/../@bpd"/> | |||||
<eval expected="0 0 192000 192000" xpath="//image[@prod-id='img1']/../@pos"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img2']/../@ipd"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img2']/../@bpd"/> | |||||
<eval expected="0 0 250000 250000" xpath="//image[@prod-id='img2']/../@pos"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img3']/../@ipd"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img3']/../@bpd"/> | |||||
<eval expected="0 0 192000 192000" xpath="//image[@prod-id='img3']/../@pos"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img4']/../@ipd"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img4']/../@bpd"/> | |||||
<eval expected="0 0 250000 250000" xpath="//image[@prod-id='img4']/../@pos"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img5']/../@ipd"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img5']/../@bpd"/> | |||||
<eval expected="0 0 46080 46080" xpath="//image[@prod-id='img5']/../@pos"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img6']/../@ipd"/> | |||||
<eval expected="250000" xpath="//image[@prod-id='img6']/../@bpd"/> | |||||
<eval expected="0 0 250000 250000" xpath="//image[@prod-id='img6']/../@pos"/> | |||||
</checks> | |||||
</testcase> |