/* ====================================================================
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.Graphics2D;
import java.util.List;
public interface TextShape<
S extends Shape,
P extends TextParagraph
> extends SimpleShape, Iterable
{ /** * Vertical Text Types */ enum TextDirection { /** * Horizontal text. This should be default. */ HORIZONTAL, /** * Vertical orientation. * (each line is 90 degrees rotated clockwise, so it goes * from top to bottom; each next line is to the left from * the previous one). */ VERTICAL, /** * Vertical orientation. * (each line is 270 degrees rotated clockwise, so it goes * from bottom to top; each next line is to the right from * the previous one). */ VERTICAL_270, /** * Determines if all of the text is vertical * ("one letter on top of another"). */ STACKED; } /** * Specifies alist of auto-fit types. *
* Autofit specofies that a shape should be auto-fit to fully contain the text described within it. * Auto-fitting is when text within a shape is scaled in order to contain all the text inside *
*/ enum TextAutofit { /** * Specifies that text within the text body should not be auto-fit to the bounding box. * Auto-fitting is when text within a text box is scaled in order to remain inside * the text box. */ NONE, /** * Specifies that text within the text body should be normally auto-fit to the bounding box. * Autofitting is when text within a text box is scaled in order to remain inside the text box. * ** Example: Consider the situation where a user is building a diagram and needs * to have the text for each shape that they are using stay within the bounds of the shape. * An easy way this might be done is by using NORMAL autofit *
*/ NORMAL, /** * Specifies that a shape should be auto-fit to fully contain the text described within it. * Auto-fitting is when text within a shape is scaled in order to contain all the text inside. * ** Example: Consider the situation where a user is building a diagram and needs to have * the text for each shape that they are using stay within the bounds of the shape. * An easy way this might be done is by using SHAPE autofit *
*/ SHAPE } /** * This enum represents a compromise for the handling of * HSLF run types (see org.apache.poi.hslf.record.TextHeaderAtom) and * XSLF placeholders (see org.apache.poi.xslf.usermodel.Placeholder). * When a shape is considered a placeholder by the generating application * it can have special properties to alert the user that they may enter content into the shape. * * This enum and the handling around it may change significantly in future releases */ enum TextPlaceholder { /** Title placeholder shape text */ TITLE, /** Body placeholder shape text */ BODY, /** Center title placeholder shape text */ CENTER_TITLE, /** Center body placeholder shape text */ CENTER_BODY, /** Half-sized body placeholder shape text */ HALF_BODY, /** Quarter-sized body placeholder shape text */ QUARTER_BODY, /** Notes placeholder shape text */ NOTES, /** Any other text */ OTHER } /** * Returns the text contained in this text frame, which has been made safe * for printing and other use. * * @return the text string for this textbox. * * @since POI 3.14-Beta2 */ String getText(); /** * Sets (overwrites) the current text. * Uses the properties of the first paragraph / textrun. * Text paragraphs are split by \\r or \\n. * New lines within text run are split by \\u000b * * @param text the text string used by this object. * * @return the last text run of the - potential split - text */ TextRun setText(String text); /** * Adds the supplied text onto the end of the TextParagraphs, * creating a new RichTextRun for it to sit in. * * @param text the text string to be appended. * @param newParagraph if true, a new paragraph will be added, * which will contain the added text * * @since POI 3.14-Beta1 */ TextRun appendText(String text, boolean newParagraph); /** * @return the TextParagraphs for this text box */ List extends TextParagraph