git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1790795 13f79535-47bb-0310-9956-ffa450edef68pull/5/head
@@ -2055,9 +2055,15 @@ | |||
</property> | |||
<property> | |||
<name>visibility</name> | |||
<inherited>false</inherited> | |||
<datatype>ToBeImplemented</datatype> | |||
<inherited>true</inherited> | |||
<default>visible</default> | |||
<datatype>Enum</datatype> | |||
<enumeration> | |||
<value const="VISIBLE">visible</value> | |||
<value const="HIDDEN">hidden</value> | |||
<value const="COLLAPSE">collapse</value> | |||
<value const="INHERIT">inherit</value> | |||
</enumeration> | |||
</property> | |||
<property> | |||
<name>z-index</name> |
@@ -80,6 +80,7 @@ import org.apache.fop.fo.extensions.ExtensionAttachment; | |||
import org.apache.fop.fonts.Font; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.traits.BorderProps; | |||
import org.apache.fop.traits.Visibility; | |||
import org.apache.fop.util.ColorUtil; | |||
import org.apache.fop.util.ContentHandlerFactory; | |||
import org.apache.fop.util.ContentHandlerFactoryRegistry; | |||
@@ -663,6 +664,10 @@ public class AreaTreeParser { | |||
if (attributes.getValue("top-offset") != null) { | |||
block.setYOffset(XMLUtil.getAttributeAsInt(attributes, "top-offset", 0)); | |||
} | |||
if (attributes.getValue("visibility") != null) { | |||
block.addTrait(Trait.VISIBILITY, Visibility.valueOf(attributes.getValue("visibility"))); | |||
} | |||
transferForeignObjects(attributes, block); | |||
setAreaAttributes(attributes, block); | |||
setTraits(attributes, block, SUBSET_COMMON); |
@@ -27,6 +27,7 @@ import org.apache.xmlgraphics.image.loader.ImageInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.traits.BorderProps; | |||
import org.apache.fop.traits.Direction; | |||
import org.apache.fop.traits.Visibility; | |||
import org.apache.fop.traits.WritingMode; | |||
import org.apache.fop.util.ColorUtil; | |||
@@ -172,8 +173,11 @@ public final class Trait implements Serializable { | |||
/** For optional content groups. */ | |||
public static final Integer LAYER = 43; | |||
/** Used to disable the rendering of a Block http://www.w3.org/TR/xsl/#rend-vis */ | |||
public static final Integer VISIBILITY = 44; | |||
/** Maximum value used by trait keys */ | |||
public static final int MAX_TRAIT_KEY = 43; | |||
public static final int MAX_TRAIT_KEY = 44; | |||
private static final TraitInfo[] TRAIT_INFO = new TraitInfo[MAX_TRAIT_KEY + 1]; | |||
@@ -246,7 +250,7 @@ public final class Trait implements Serializable { | |||
put(SHIFT_DIRECTION, | |||
new TraitInfo("shift-direction", Direction.class)); | |||
put(LAYER, new TraitInfo("layer", String.class)); | |||
put(VISIBILITY, new TraitInfo("visibility", Visibility.class)); | |||
} | |||
/** |
@@ -85,12 +85,12 @@ public class Block extends FObjMixed implements BreakPropertySet, | |||
private Numeric widows; | |||
private int wrapOption; | |||
private int disableColumnBalancing; | |||
private int visibility; | |||
// Unused but valid items, commented out for performance: | |||
// private CommonAccessibility commonAccessibility; | |||
// private CommonAural commonAural; | |||
// private Length textDepth; | |||
// private Length textAltitude; | |||
// private int visibility; | |||
// End of FO trait values | |||
/** | |||
@@ -137,6 +137,7 @@ public class Block extends FObjMixed implements BreakPropertySet, | |||
widows = pList.get(PR_WIDOWS).getNumeric(); | |||
wrapOption = pList.get(PR_WRAP_OPTION).getEnum(); | |||
disableColumnBalancing = pList.get(PR_X_DISABLE_COLUMN_BALANCING).getEnum(); | |||
visibility = pList.get(PR_VISIBILITY).getEnum(); | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -358,4 +359,7 @@ public class Block extends FObjMixed implements BreakPropertySet, | |||
return FO_BLOCK; | |||
} | |||
public int getVisibility() { | |||
return visibility; | |||
} | |||
} |
@@ -331,6 +331,7 @@ public class BlockLayoutManager extends SpacedBorderedPaddedBlockLayoutManager | |||
TraitSetter.addSpaceBeforeAfter(curBlockArea, layoutContext.getSpaceAdjust(), | |||
effSpaceBefore, effSpaceAfter); | |||
TraitSetter.setVisibility(curBlockArea, getBlockFO().getVisibility()); | |||
flush(); | |||
curBlockArea = null; |
@@ -36,6 +36,7 @@ import org.apache.fop.fo.properties.CommonTextDecoration; | |||
import org.apache.fop.fonts.Font; | |||
import org.apache.fop.traits.BorderProps; | |||
import org.apache.fop.traits.MinOptMax; | |||
import org.apache.fop.traits.Visibility; | |||
/** | |||
* This is a helper class used for setting common traits on areas. | |||
@@ -599,6 +600,21 @@ public final class TraitSetter { | |||
} | |||
} | |||
public static void setVisibility(Area area, int visibility) { | |||
Visibility v; | |||
switch (visibility) { | |||
case Constants.EN_COLLAPSE: | |||
v = Visibility.COLLAPSE; | |||
break; | |||
case Constants.EN_HIDDEN: | |||
v = Visibility.HIDDEN; | |||
break; | |||
default: | |||
v = Visibility.VISIBLE; | |||
} | |||
area.addTrait(Trait.VISIBILITY, v); | |||
} | |||
/** | |||
* Sets the structure tree element associated to the given area. | |||
* |
@@ -71,6 +71,7 @@ import org.apache.fop.area.inline.TextArea; | |||
import org.apache.fop.area.inline.WordArea; | |||
import org.apache.fop.fo.Constants; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.traits.Visibility; | |||
/** | |||
* Abstract base class for all renderers. The Abstract renderer does all the | |||
@@ -609,7 +610,8 @@ public abstract class AbstractRenderer | |||
handleBlockTraits(block); | |||
if (children != null) { | |||
if (children != null && block.getTrait(Trait.VISIBILITY) != Visibility.HIDDEN) | |||
{ | |||
renderBlocks(block, children); | |||
} | |||
@@ -0,0 +1,70 @@ | |||
/* | |||
* 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. | |||
*/ | |||
package org.apache.fop.traits; | |||
import java.io.ObjectStreamException; | |||
import org.apache.fop.fo.Constants; | |||
public final class Visibility extends TraitEnum { | |||
private static final long serialVersionUID = 1L; | |||
private static final String[] VISIBILITY_NAMES = new String[] | |||
{"visible", "hidden", "collapse"}; | |||
private static final int[] VISIBILITY_VALUES = new int[] | |||
{Constants.EN_VISIBLE, Constants.EN_HIDDEN, Constants.EN_COLLAPSE}; | |||
/** border-style: none */ | |||
public static final Visibility VISIBLE = new Visibility(0); | |||
/** border-style: hidden */ | |||
public static final Visibility HIDDEN = new Visibility(1); | |||
/** border-style: dotted */ | |||
public static final Visibility COLLAPSE = new Visibility(2); | |||
private static final Visibility[] VISIBILITIES = new Visibility[] { | |||
VISIBLE, HIDDEN, COLLAPSE}; | |||
private Visibility(int index) { | |||
super(VISIBILITY_NAMES[index], VISIBILITY_VALUES[index]); | |||
} | |||
/** | |||
* Returns the enumeration/singleton object based on its name. | |||
* @param name the name of the enumeration value | |||
* @return the enumeration object | |||
*/ | |||
public static Visibility valueOf(String name) { | |||
for (Visibility v : VISIBILITIES) { | |||
if (v.getName().equalsIgnoreCase(name)) { | |||
return v; | |||
} | |||
} | |||
throw new IllegalArgumentException("Illegal visibility value: " + name); | |||
} | |||
private Object readResolve() throws ObjectStreamException { | |||
return valueOf(getName()); | |||
} | |||
public String toString() { | |||
return getName(); | |||
} | |||
} |
@@ -0,0 +1,51 @@ | |||
<?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: block_basic_1.xml 627324 2008-02-13 09:35:01Z maxberger $ --> | |||
<testcase> | |||
<info> | |||
<p> | |||
This test checks the visibility trait. | |||
</p> | |||
</info> | |||
<fo> | |||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg"> | |||
<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" white-space-collapse="true"> | |||
<fo:flow flow-name="xsl-region-body"> | |||
<fo:block>test1</fo:block> | |||
<fo:block visibility="hidden">hidden</fo:block> | |||
</fo:flow> | |||
</fo:page-sequence> | |||
</fo:root> | |||
</fo> | |||
<checks> | |||
<!-- Check for first paragraph --> | |||
<eval expected="360000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@ipd"/> | |||
<eval expected="14400" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@bpd"/> | |||
<eval expected="visible" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@visibility"/> | |||
<!-- Check for second paragraph --> | |||
<eval expected="360000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[2]/@ipd"/> | |||
<eval expected="14400" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[2]/@bpd"/> | |||
<eval expected="hidden" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[2]/@visibility"/> | |||
<eval expected="0" xpath="count(/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[2]/*)"/> | |||
</checks> | |||
</testcase> |