import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ooxml.util.DocumentHelper;
+import org.apache.poi.util.HexDump;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
import org.apache.poi.wp.usermodel.CharacterRun;
+import org.apache.xmlbeans.SimpleValue;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
* @return the language tag associated with this run, if any
*/
public String getLang() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
Object lang = pr == null || !pr.isSetLang() ? null : pr.getLang().getVal();
return (String) lang;
}
*/
@Override
public boolean isBold() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetB() && isCTOnOff(pr.getB());
}
*/
@Override
public void setBold(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff bold = pr.isSetB() ? pr.getB() : pr.addNewB();
bold.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
public String getColor() {
String color = null;
if (run.isSetRPr()) {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
if (pr.isSetColor()) {
CTColor clr = pr.getColor();
color = clr.xgetVal().getStringValue();
* @param rgbStr - the desired color, in the hex form "RRGGBB".
*/
public void setColor(String rgbStr) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTColor color = pr.isSetColor() ? pr.getColor() : pr.addNewColor();
color.setVal(rgbStr);
}
*/
@Override
public boolean isItalic() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetI() && isCTOnOff(pr.getI());
}
*/
@Override
public void setItalic(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff italic = pr.isSetI() ? pr.getI() : pr.addNewI();
italic.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
/**
- * Specifies that the contents of this run should be displayed along with an
- * underline appearing directly below the character heigh
+ * Get the underline setting for the run.
*
- * @return the Underline pattern applyed to this run
- * @see UnderlinePatterns
+ * @return the Underline pattern applied to this run
+ * @see (@link UnderlinePatterns}
*/
public UnderlinePatterns getUnderline() {
- CTRPr pr = run.getRPr();
- return (pr != null && pr.isSetU() && pr.getU().getVal() != null)
- ? UnderlinePatterns.valueOf(pr.getU().getVal().intValue())
- : UnderlinePatterns.NONE;
+ UnderlinePatterns value = UnderlinePatterns.NONE;
+ CTUnderline underline = getCTUnderline(false);
+ if (underline != null) {
+ STUnderline.Enum baseValue = underline.getVal();
+ if (baseValue != null) {
+ value = UnderlinePatterns.valueOf(baseValue.intValue());
+ }
+ }
+ return value;
}
/**
* Specifies that the contents of this run should be displayed along with an
- * underline appearing directly below the character heigh
- * <p>
+ * underline appearing directly below the character height.
* <p>
* If this element is not present, the default value is to leave the
* formatting applied at previous level in the style hierarchy. If this
*
* @param value -
* underline type
- * @see UnderlinePatterns : all possible patterns that could be applied
+ * @see {@link UnderlinePatterns} : all possible patterns that could be applied
*/
public void setUnderline(UnderlinePatterns value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
- CTUnderline underline = (pr.getU() == null) ? pr.addNewU() : pr.getU();
+ CTUnderline underline = getCTUnderline(true);
underline.setVal(STUnderline.Enum.forInt(value.getValue()));
}
+ /**
+ * Get the CTUnderline for the run.
+ * @param create Create a new underline if necessary
+ * @return The underline, or null create is false and there is no underline.
+ */
+ private CTUnderline getCTUnderline(boolean create) {
+ CTRPr pr = getRunProperties(true);
+ CTUnderline underline = pr.getU();
+ if (create && underline == null) {
+ underline = pr.addNewU();
+ }
+ return underline;
+ }
+
+ /**
+ * Set the underline color for the run's underline, if any.
+ *
+ * @param color An RGB color value (e.g, "a0C6F3") or "auto".
+ * @since 4.0.0
+ */
+ public void setUnderlineColor(String color) {
+ CTUnderline underline = getCTUnderline(true);
+ SimpleValue svColor = null;
+ if (color.equals("auto")) {
+ STHexColorAuto hexColor = STHexColorAuto.Factory.newInstance();
+ hexColor.set(STHexColorAuto.Enum.forString(color));
+ svColor = (SimpleValue) hexColor;
+ } else {
+ STHexColorRGB rgbColor = STHexColorRGB.Factory.newInstance();
+ rgbColor.setStringValue(color);
+ svColor = (SimpleValue) rgbColor;
+ }
+ underline.setColor(svColor);
+ }
+
+ /**
+ * Set the underline theme color for the run's underline, if any.
+ *
+ * @param themeColor A theme color name (see {@link STThemeColor.Enum}).
+ * @since 4.0.0
+ */
+ public void setUnderlineThemeColor(String themeColor) {
+ CTUnderline underline = getCTUnderline(true);
+ STThemeColor.Enum val = STThemeColor.Enum.forString(themeColor);
+ if (val != null) {
+ underline.setThemeColor(val);
+ }
+ }
+
+ /**
+ * Get the underline theme color for the run's underline, if any.
+ *
+ * @return The {@link STThemeColor.Enum}.
+ * @since 4.0.0
+ */
+ public STThemeColor.Enum getUnderlineThemeColor() {
+ CTUnderline underline = getCTUnderline(false);
+ STThemeColor.Enum color = STThemeColor.NONE;
+ if (underline != null) {
+ color = underline.getThemeColor();
+ }
+ return color;
+ }
+
+ /**
+ * Get the underline color for the run's underline, if any.
+ *
+ * @return The RGB color value as as a string of hexadecimal digits (e.g., "A0B2F1") or "auto".
+ * @since 4.0.0
+ */
+ public String getUnderlineColor() {
+ CTUnderline underline = getCTUnderline(true);
+ String colorName = "auto";
+ Object rawValue = underline.getColor();
+ if (rawValue != null) {
+ if (rawValue instanceof String) {
+ colorName = (String)rawValue;
+ } else {
+ byte[] rgbColor = (byte[])rawValue;
+ colorName = HexDump.toHex(rgbColor[0]) + HexDump.toHex(rgbColor[1]) + HexDump.toHex(rgbColor[2]);
+ }
+ }
+ return colorName;
+ }
+
/**
* Specifies that the contents of this run shall be displayed with a single
* horizontal line through the center of the line.
*/
@Override
public boolean isStrikeThrough() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetStrike() && isCTOnOff(pr.getStrike());
}
*/
@Override
public void setStrikeThrough(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff strike = pr.isSetStrike() ? pr.getStrike() : pr.addNewStrike();
strike.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
*/
@Override
public boolean isDoubleStrikeThrough() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetDstrike() && isCTOnOff(pr.getDstrike());
}
*/
@Override
public void setDoubleStrikethrough(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff dstrike = pr.isSetDstrike() ? pr.getDstrike() : pr.addNewDstrike();
dstrike.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
@Override
public boolean isSmallCaps() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetSmallCaps() && isCTOnOff(pr.getSmallCaps());
}
@Override
public void setSmallCaps(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff caps = pr.isSetSmallCaps() ? pr.getSmallCaps() : pr.addNewSmallCaps();
caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
@Override
public boolean isCapitalized() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetCaps() && isCTOnOff(pr.getCaps());
}
@Override
public void setCapitalized(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff caps = pr.isSetCaps() ? pr.getCaps() : pr.addNewCaps();
caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
@Override
public boolean isShadowed() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetShadow() && isCTOnOff(pr.getShadow());
}
@Override
public void setShadow(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff shadow = pr.isSetShadow() ? pr.getShadow() : pr.addNewShadow();
shadow.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
@Override
public boolean isImprinted() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetImprint() && isCTOnOff(pr.getImprint());
}
@Override
public void setImprinted(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff imprinted = pr.isSetImprint() ? pr.getImprint() : pr.addNewImprint();
imprinted.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
@Override
public boolean isEmbossed() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return pr != null && pr.isSetEmboss() && isCTOnOff(pr.getEmboss());
}
@Override
public void setEmbossed(boolean value) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTOnOff emboss = pr.isSetEmboss() ? pr.getEmboss() : pr.addNewEmboss();
emboss.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
}
* altering the font size of the run properties.
*
* @return VerticalAlign
- * @see VerticalAlign all possible value that could be applyed to this run
+ * @see {@link VerticalAlign} all possible value that could be applyed to this run
+ * @deprecated use {@link XWPFRun.getVerticalAlignment}
*/
+ @Removal(version = "4.2")
public VerticalAlign getSubscript() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return (pr != null && pr.isSetVertAlign()) ? VerticalAlign.valueOf(pr.getVertAlign().getVal().intValue()) : VerticalAlign.BASELINE;
}
* @see VerticalAlign
*/
public void setSubscript(VerticalAlign valign) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTVerticalAlignRun ctValign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign();
ctValign.setVal(STVerticalAlignRun.Enum.forInt(valign.getValue()));
}
@Override
public int getKerning() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
if (pr == null || !pr.isSetKern()) {
return 0;
}
@Override
public void setKerning(int kern) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTHpsMeasure kernmes = pr.isSetKern() ? pr.getKern() : pr.addNewKern();
kernmes.setVal(BigInteger.valueOf(kern));
}
@Override
public boolean isHighlighted() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
if (pr == null || !pr.isSetHighlight()) {
return false;
}
- if (pr.getHighlight().getVal() == STHighlightColor.NONE) {
+ STHighlightColor.Enum val = pr.getHighlight().getVal();
+ if (val == null || val == STHighlightColor.NONE) {
return false;
}
return true;
@Override
public int getCharacterSpacing() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
if (pr == null || !pr.isSetSpacing()) {
return 0;
}
@Override
public void setCharacterSpacing(int twips) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTSignedTwipsMeasure spc = pr.isSetSpacing() ? pr.getSpacing() : pr.addNewSpacing();
spc.setVal(BigInteger.valueOf(twips));
}
* @return a string representing the font famil
*/
public String getFontFamily(FontCharRange fcr) {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
if (pr == null || !pr.isSetRFonts()) {
return null;
}
* @param fcr FontCharRange or null for default handling
*/
public void setFontFamily(String fontFamily, FontCharRange fcr) {
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTFonts fonts = pr.isSetRFonts() ? pr.getRFonts() : pr.addNewRFonts();
if (fcr == null) {
*/
@Override
public int getFontSize() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return (pr != null && pr.isSetSz()) ? pr.getSz().getVal().divide(new BigInteger("2")).intValue() : -1;
}
@Override
public void setFontSize(int size) {
BigInteger bint = new BigInteger(Integer.toString(size));
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz();
ctSize.setVal(bint.multiply(new BigInteger("2")));
}
* @return a big integer representing the amount of text shall be "moved"
*/
public int getTextPosition() {
- CTRPr pr = run.getRPr();
+ CTRPr pr = getRunProperties(false);
return (pr != null && pr.isSetPosition()) ? pr.getPosition().getVal().intValue()
: -1;
}
*/
public void setTextPosition(int val) {
BigInteger bint = new BigInteger(Integer.toString(val));
- CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr();
+ CTRPr pr = getRunProperties(true);
CTSignedHpsMeasure position = pr.isSetPosition() ? pr.getPosition() : pr.addNewPosition();
position.setVal(bint);
}
eastAsia /* east asia */,
hAnsi /* high ansi */
}
+
+ /**
+ * Set the text expand/collapse scale value.
+ *
+ * @param percentage The percentage to expand or compress the text
+ * @since 4.0.0
+ */
+ public void setTextScale(int percentage) {
+ CTRPr pr = getRunProperties(true);
+ CTTextScale scale = pr.isSetW() ? pr.getW() : pr.addNewW();
+ scale.setVal(percentage);
+ }
+
+ /**
+ * Gets the current text scale value.
+ *
+ * @return Value is an integer percentage
+ * @since 4.0.0
+ */
+ public int getTextScale() {
+ CTRPr pr = getRunProperties(true);
+ CTTextScale scale = pr.isSetW() ? pr.getW() : pr.addNewW();
+ int value = scale.getVal();
+ if (value == 0) {
+ value = 100; // 100% scaling, that is, no change. See 17.3.2.43 w (Expanded/Compressed Text)
+ }
+ return value;
+ }
+
+ /**
+ * Set the highlight color for the run. Silently does nothing of colorName is not a recognized value.
+ *
+ * @param colorName The name of the color as defined in the ST_HighlightColor simple type ({@link STHightlightColor})
+ * @since 4.0.0
+ */
+ public void setTextHighlightColor(String colorName) {
+ CTRPr pr = getRunProperties(true);
+ CTHighlight highlight = pr.isSetHighlight() ? pr.getHighlight() : pr.addNewHighlight();
+ STHighlightColor color = highlight.xgetVal();
+ if (color == null) {
+ color = STHighlightColor.Factory.newInstance();
+ }
+ STHighlightColor.Enum val = STHighlightColor.Enum.forString(colorName);
+ if (val != null) {
+ color.setStringValue(val.toString());
+ highlight.xsetVal(color);
+ }
+
+ }
+
+ /**
+ * Gets the highlight color for the run
+ *
+ * @return {@link STHighlightColor} for the run.
+ * @since 4.0.0
+ */
+ public STHighlightColor.Enum getTextHightlightColor() {
+ CTRPr pr = getRunProperties(true);
+ CTHighlight highlight = pr.isSetHighlight() ? pr.getHighlight() : pr.addNewHighlight();
+ STHighlightColor color = highlight.xgetVal();
+ if (color == null) {
+ color = STHighlightColor.Factory.newInstance();
+ color.set(STHighlightColor.NONE);
+ }
+ return (STHighlightColor.Enum)(color.enumValue());
+ }
+
+ /**
+ * Get the vanish (hidden text) value
+ *
+ * @return True if the run is hidden text.
+ * @since 4.0.0
+ */
+ public boolean isVanish() {
+ CTRPr pr = getRunProperties(true);
+ return pr != null && pr.isSetVanish() && isCTOnOff(pr.getVanish());
+ }
+
+ /**
+ * The vanish (hidden text) property for the run.
+ *
+ * @param value Set to true to make the run hidden text.
+ * @since 4.0.0
+ */
+ public void setVanish(boolean value) {
+ CTRPr pr = getRunProperties(true);
+ CTOnOff vanish = pr.isSetVanish() ? pr.getVanish() : pr.addNewVanish();
+ vanish.setVal(value ? STOnOff.TRUE : STOnOff.FALSE);
+ }
+
+ /**
+ * Get the vertical alignment value
+ *
+ * @return {@link STVerticalAlignRun.Enum} value (see 22.9.2.17 ST_VerticalAlignRun (Vertical Positioning Location))
+ * @since 4.0.0
+ */
+ public STVerticalAlignRun.Enum getVerticalAlignment() {
+ CTRPr pr = getRunProperties(true);
+ CTVerticalAlignRun vertAlign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign();
+ STVerticalAlignRun.Enum val = vertAlign.getVal();
+ if (val == null) {
+ val = STVerticalAlignRun.BASELINE;
+ }
+ return val;
+ }
+
+ /**
+ * Set the vertical alignment of the run.
+ *
+ * @param verticalAlignment Vertical alignment value, one of "baseline", "superscript", or "subscript".
+ * @since 4.0.0
+ */
+ public void setVerticalAlignment(String verticalAlignment) {
+ CTRPr pr = getRunProperties(true);
+ CTVerticalAlignRun vertAlign = pr.getVertAlign();
+ STVerticalAlignRun align = vertAlign.xgetVal();
+ if (align == null) {
+ align = STVerticalAlignRun.Factory.newInstance();
+ }
+ STVerticalAlignRun.Enum val = STVerticalAlignRun.Enum.forString(verticalAlignment);
+ if (val != null) {
+ align.setStringValue(val.toString());
+ vertAlign.xsetVal(align);
+ }
+
+
+ }
+
+ /**
+ * Get the emphasis mark value for the run.
+ *
+ * @return {@link STEm.Enum} emphasis mark type enumeration. See 17.18.24 ST_Em (Emphasis Mark Type).
+ * @since 4.0.0
+ */
+ public STEm.Enum getEmphasisMark() {
+ CTRPr pr = getRunProperties(true);
+ CTEm emphasis = pr.isSetEm() ? pr.getEm() : pr.addNewEm();
+
+ STEm.Enum val = emphasis.getVal();
+ if (val == null) {
+ val = STEm.NONE;
+ }
+ return val;
+ }
+
+ /**
+ * Set the emphasis mark for the run. The emphasis mark goes above or below the run
+ * text.
+ *
+ * @param markType Emphasis mark type name, e.g., "dot" or "none". See 17.18.24 ST_Em (Emphasis Mark Type)
+ * @since 4.0.0
+ */
+ public void setEmphasisMark(String markType) {
+ CTRPr pr = getRunProperties(true);
+ CTEm emphasisMark = pr.getEm();
+ STEm mark = emphasisMark.xgetVal();
+ if (mark == null) {
+ mark = STEm.Factory.newInstance();
+ }
+ STEm.Enum val = STEm.Enum.forString(markType);
+ if (val != null) {
+ mark.setStringValue(val.toString());
+ emphasisMark.xsetVal(mark);
+ }
+
+
+ }
+
+ /**
+ * Get the run properties for the run.
+ *
+ * @param create If true, create the properties, if false, do not.
+ * @return The run properties or null if there are no properties and create is false.
+ */
+ private CTRPr getRunProperties(boolean create) {
+ CTRPr pr = run.isSetRPr() ? run.getRPr() : null;
+ if (create && pr == null) {
+ pr = run.addNewRPr();
+ }
+ return pr;
+ }
+
}
==================================================================== */
package org.apache.poi.xwpf.usermodel;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Iterator;
+import java.util.List;
+
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.wp.usermodel.HeaderFooterType;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrClear;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STEm;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHighlightColor;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STThemeColor;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.util.Iterator;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
/**
* Tests for XWPF Run
*/
@Test
public void testSetGetUnderline() {
CTRPr rpr = ctRun.addNewRPr();
+ XWPFRun run = new XWPFRun(ctRun, irb);
rpr.addNewU().setVal(STUnderline.DASH);
- XWPFRun run = new XWPFRun(ctRun, irb);
assertEquals(UnderlinePatterns.DASH.getValue(), run.getUnderline()
.getValue());
.intValue());
}
- @Test
- public void testSetGetVAlign() {
- CTRPr rpr = ctRun.addNewRPr();
- rpr.addNewVertAlign().setVal(STVerticalAlignRun.SUBSCRIPT);
-
- XWPFRun run = new XWPFRun(ctRun, irb);
- assertEquals(VerticalAlign.SUBSCRIPT, run.getSubscript());
-
- run.setSubscript(VerticalAlign.BASELINE);
- assertEquals(STVerticalAlignRun.BASELINE, rpr.getVertAlign().getVal());
- }
-
@Test
public void testSetGetFontFamily() {
CTRPr rpr = ctRun.addNewRPr();
assertNull(run.getLang());
}
- @Test
- public void testSetGetHighlight() {
- XWPFRun run = p.createRun();
- assertEquals(false, run.isHighlighted());
-
- // TODO Do this using XWPFRun methods
- run.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.NONE);
- assertEquals(false, run.isHighlighted());
- run.getCTR().getRPr().getHighlight().setVal(STHighlightColor.CYAN);
- assertEquals(true, run.isHighlighted());
- run.getCTR().getRPr().getHighlight().setVal(STHighlightColor.NONE);
- assertEquals(false, run.isHighlighted());
- }
-
@Test
public void testAddPicture() throws Exception {
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
assertEquals(10, run.getFontSize());
run.setImprinted(true);
run.setItalic(true);
+ }
+
+ @Test
+ public void testSetGetTextScale() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(100, run.getTextScale());
+ run.setTextScale(200);
+ assertEquals(200, run.getTextScale());
+ document.close();
+ }
+
+ @Test
+ public void testSetGetTextHighlightColor() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(STHighlightColor.NONE, run.getTextHightlightColor());
+ assertEquals(false, run.isHighlighted());
+ run.setTextHighlightColor("darkGreen"); // See 17.18.40 ST_HighlightColor (Text Highlight Colors)
+ assertEquals(STHighlightColor.DARK_GREEN, run.getTextHightlightColor());
+ assertEquals(true, run.isHighlighted());
+ run.setTextHighlightColor("none");
+ assertEquals(false, run.isHighlighted());
+
+ document.close();
+ }
+ @Test
+ public void testSetGetVanish() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(false, run.isVanish());
+ run.setVanish(true);
+ assertEquals(true, run.isVanish());
+ run.setVanish(false);
+ assertEquals(false, run.isVanish());
document.close();
}
+ @Test
+ public void testSetGetVerticalAlignment() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(STVerticalAlignRun.BASELINE, run.getVerticalAlignment());
+ run.setVerticalAlignment("subscript");
+ assertEquals(STVerticalAlignRun.SUBSCRIPT, run.getVerticalAlignment());
+ run.setVerticalAlignment("superscript");
+ assertEquals(STVerticalAlignRun.SUPERSCRIPT, run.getVerticalAlignment());
+ document.close();
+ }
+
+ @Test
+ public void testSetGetVAlign() {
+ CTRPr rpr = ctRun.addNewRPr();
+ rpr.addNewVertAlign().setVal(STVerticalAlignRun.SUBSCRIPT);
+
+ XWPFRun run = new XWPFRun(ctRun, irb);
+ assertEquals(VerticalAlign.SUBSCRIPT, run.getSubscript());
+
+ run.setSubscript(VerticalAlign.BASELINE);
+ assertEquals(STVerticalAlignRun.BASELINE, rpr.getVertAlign().getVal());
+ }
+
+
+ @Test
+ public void testSetGetEmphasisMark() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(STEm.NONE, run.getEmphasisMark());
+ run.setEmphasisMark("dot");
+ assertEquals(STEm.DOT, run.getEmphasisMark());
+ document.close();
+ }
+
+ @Test
+ public void testSetGetUnderlineColor() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals("auto", run.getUnderlineColor());
+ String colorRgb = "C0F1a2";
+ run.setUnderlineColor(colorRgb);
+ assertEquals(colorRgb.toUpperCase(), run.getUnderlineColor());
+ run.setUnderlineColor("auto");
+ assertEquals("auto", run.getUnderlineColor());
+ document.close();
+ }
+
+ @Test
+ public void testSetGetUnderlineThemeColor() throws IOException {
+ XWPFDocument document = new XWPFDocument();
+ final XWPFRun run = document.createParagraph().createRun();
+ assertEquals(STThemeColor.NONE, run.getUnderlineThemeColor());
+ String colorName = "accent4";
+ run.setUnderlineThemeColor(colorName);
+ assertEquals(STThemeColor.Enum.forString(colorName), run.getUnderlineThemeColor());
+ run.setUnderlineThemeColor("none");
+ assertEquals(STThemeColor.NONE, run.getUnderlineThemeColor());
+ document.close();
+ }
+
+
@Test
public void testSetStyleId() throws IOException {
XWPFDocument document = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
run.setStyle(styleId);
String candStyleId = run.getCTR().getRPr().getRStyle().getVal();
assertNotNull("Expected to find a run style ID", candStyleId);
- assertEquals(styleId, candStyleId);
-
+ assertEquals(styleId, candStyleId);
}
}