/* ==================================================================== | |
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.poi.sl.usermodel; | |
import java.awt.Color; | |
public interface TextParagraph<T extends TextRun> extends Iterable<T> { | |
/** | |
* Specifies a list of text alignment types | |
*/ | |
public enum TextAlign { | |
/** | |
* For horizontal text, left aligned. | |
* For vertical text, top aligned. | |
*/ | |
LEFT, | |
/** | |
* For horizontal text, centered. | |
* For vertical text, middle aligned. | |
*/ | |
CENTER, | |
/** | |
* For horizontal text, right aligned. | |
* For vertical text, bottom aligned. | |
*/ | |
RIGHT, | |
/** | |
* Align text so that it is justified across the whole line. It | |
* is smart in the sense that it will not justify sentences | |
* which are short | |
* | |
* For horizontal text, flush left and right. | |
* For vertical text, flush top and bottom. | |
*/ | |
JUSTIFY, | |
/** | |
* Kashida justify low. | |
*/ | |
JUSTIFY_LOW, | |
/** | |
* Distribute space between characters. | |
*/ | |
DIST, | |
/** | |
* Thai distribution justification. | |
*/ | |
THAI_DIST | |
} | |
/** | |
* | |
*/ | |
public enum FontAlign { | |
AUTO, | |
/** | |
* Characters hang from top of line height. | |
* Also known as "Hanging" | |
*/ | |
TOP, | |
/** | |
* Characters centered within line height. | |
*/ | |
CENTER, | |
/** | |
* Place characters on font baseline. | |
* Also known as "Roman" | |
*/ | |
BASELINE, | |
/** | |
* Characters are anchored to the very bottom of a single line. | |
* This is different than BASELINE because of letters such as "g", "q", and "y". | |
* Also known as "UpholdFixed" | |
*/ | |
BOTTOM; | |
} | |
public interface BulletStyle { | |
String getBulletCharacter(); | |
String getBulletFont(); | |
/** | |
* The bullet point font size | |
* If bulletFontSize >= 0, then space is a percentage of normal line height. | |
* If bulletFontSize < 0, the absolute value in points | |
* | |
* @return the bullet point font size | |
*/ | |
Double getBulletFontSize(); | |
Color getBulletFontColor(); | |
AutoNumberingScheme getAutoNumberingScheme(); | |
/** | |
* Index (1-based) of the first auto number value, or null if auto numbering scheme | |
* wasn't assigned. | |
*/ | |
Integer getAutoNumberingStartAt(); | |
} | |
/** | |
* The amount of vertical white space before the paragraph | |
* This may be specified in two different ways, percentage spacing and font point spacing: | |
* <p> | |
* If spaceBefore >= 0, then space is a percentage of normal line height. | |
* If spaceBefore < 0, the absolute value in points | |
* </p> | |
* | |
* @return the vertical white space before the paragraph, or null if unset | |
*/ | |
Double getSpaceBefore(); | |
/** | |
* Set the amount of vertical white space that will be present before the paragraph. | |
* This space is specified in either percentage or points: | |
* <p> | |
* If spaceBefore >= 0, then space is a percentage of normal line height. | |
* If spaceBefore < 0, the absolute value of linespacing is the spacing in points | |
* </p> | |
* Examples: | |
* <pre><code> | |
* // The paragraph will be formatted to have a spacing before the paragraph text. | |
* // The spacing will be 200% of the size of the largest text on each line | |
* paragraph.setSpaceBefore(200); | |
* | |
* // The spacing will be a size of 48 points | |
* paragraph.setSpaceBefore(-48.0); | |
* </code></pre> | |
* | |
* @param spaceBefore the vertical white space before the paragraph, null to unset | |
*/ | |
void setSpaceBefore(Double spaceBefore); | |
/** | |
* The amount of vertical white space after the paragraph | |
* This may be specified in two different ways, percentage spacing and font point spacing: | |
* <p> | |
* If spaceBefore >= 0, then space is a percentage of normal line height. | |
* If spaceBefore < 0, the absolute value of linespacing is the spacing in points | |
* </p> | |
* | |
* @return the vertical white space after the paragraph or null, if unset | |
*/ | |
Double getSpaceAfter(); | |
/** | |
* Set the amount of vertical white space that will be present after the paragraph. | |
* This space is specified in either percentage or points: | |
* <p> | |
* If spaceAfter >= 0, then space is a percentage of normal line height. | |
* If spaceAfter < 0, the absolute value of linespacing is the spacing in points | |
* </p> | |
* Examples: | |
* <pre><code> | |
* // The paragraph will be formatted to have a spacing after the paragraph text. | |
* // The spacing will be 200% of the size of the largest text on each line | |
* paragraph.setSpaceAfter(200); | |
* | |
* // The spacing will be a size of 48 points | |
* paragraph.setSpaceAfter(-48.0); | |
* </code></pre> | |
* | |
* @param spaceAfter the vertical white space after the paragraph, null to unset | |
*/ | |
public void setSpaceAfter(Double spaceAfter); | |
/** | |
* @return the left margin (in points) of the paragraph or null, if unset | |
*/ | |
Double getLeftMargin(); | |
/** | |
* Specifies the left margin of the paragraph. This is specified in addition to the text body | |
* inset and applies only to this text paragraph. That is the text body Inset and the LeftMargin | |
* attributes are additive with respect to the text position. | |
* | |
* @param leftMargin the left margin (in points) or null to unset | |
*/ | |
void setLeftMargin(Double leftMargin); | |
/** | |
* Specifies the right margin of the paragraph. This is specified in addition to the text body | |
* inset and applies only to this text paragraph. That is the text body Inset and the RightMargin | |
* attributes are additive with respect to the text position. | |
* | |
* The right margin is not support and therefore ignored by the HSLF implementation. | |
* | |
* @return the right margin (in points) of the paragraph or null, if unset | |
*/ | |
Double getRightMargin(); | |
/** | |
* @param rightMargin the right margin (in points) of the paragraph | |
*/ | |
void setRightMargin(Double rightMargin); | |
/** | |
* @return the indent (in points) applied to the first line of text in the paragraph. | |
* or null, if unset | |
*/ | |
Double getIndent(); | |
/** | |
* Specifies the indent size that will be applied to the first line of text in the paragraph. | |
* | |
* @param indent the indent (in points) applied to the first line of text in the paragraph | |
*/ | |
void setIndent(Double indent); | |
/** | |
* @return the text level of this paragraph (0-based). Default is 0. | |
*/ | |
int getIndentLevel(); | |
/** | |
* Specifies the particular level text properties that this paragraph will follow. | |
* The value for this attribute formats the text according to the corresponding level | |
* paragraph properties defined in the SlideMaster. | |
* | |
* @param level the level (0 ... 4) | |
*/ | |
void setIndentLevel(int level); | |
/** | |
* Returns the vertical line spacing that is to be used within a paragraph. | |
* This may be specified in two different ways, percentage spacing and font point spacing: | |
* <p> | |
* If linespacing >= 0, then linespacing is a percentage of normal line height. | |
* If linespacing < 0, the absolute value of linespacing is the spacing in points | |
* </p> | |
* | |
* @return the vertical line spacing or null, if unset | |
*/ | |
Double getLineSpacing(); | |
/** | |
* This element specifies the vertical line spacing that is to be used within a paragraph. | |
* This may be specified in two different ways, percentage spacing and font point spacing: | |
* <p> | |
* If linespacing >= 0, then linespacing is a percentage of normal line height | |
* If linespacing < 0, the absolute value of linespacing is the spacing in points | |
* </p> | |
* Examples: | |
* <pre><code> | |
* // spacing will be 120% of the size of the largest text on each line | |
* paragraph.setLineSpacing(120); | |
* | |
* // spacing will be 200% of the size of the largest text on each line | |
* paragraph.setLineSpacing(200); | |
* | |
* // spacing will be 48 points | |
* paragraph.setLineSpacing(-48.0); | |
* </code></pre> | |
* | |
* @param linespacing the vertical line spacing | |
*/ | |
void setLineSpacing(Double lineSpacing); | |
String getDefaultFontFamily(); | |
/** | |
* @return the default font size, in case its not set in the textrun or null, if unset | |
*/ | |
Double getDefaultFontSize(); | |
/** | |
* Returns the alignment that is applied to the paragraph. | |
* | |
* If this attribute is omitted, then a value of left is implied. | |
* @return ??? alignment that is applied to the paragraph | |
*/ | |
TextAlign getTextAlign(); | |
/** | |
* Returns the font alignment that is applied to the paragraph. | |
* | |
* If this attribute is omitted, then null is return, | |
* user code can imply the a value of {@link FontAlign#AUTO} | |
* | |
* @return alignment that is applied to the paragraph | |
*/ | |
FontAlign getFontAlign(); | |
/** | |
* @return the bullet style of the paragraph, if {@code null} then no bullets are used | |
*/ | |
BulletStyle getBulletStyle(); | |
/** | |
* @return the default size for a tab character within this paragraph in points, null if unset | |
*/ | |
Double getDefaultTabSize(); | |
TextShape<? extends TextParagraph<T>> getParentShape(); | |
} |