blob: 927fdf1f9de31bb714625682bb1dc67ac4781cbe [file] [log] [blame]
/* ====================================================================
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 org.apache.poi.ss.usermodel.HorizontalAlignment;
public interface TextShape<T extends TextParagraph<? extends TextRun>> extends SimpleShape, Iterable<T> {
/**
* Vertical Text Types
*/
public 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.
* <p>
* 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
* </p>
*/
public 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.
*
* <p>
* <em>Example:</em> 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
* </p>
*/
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.
*
* <p>
* <em>Example:</em> 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
* </p>
*/
SHAPE
}
/**
* @return text shape margin
*/
Insets2D getInsets();
/**
* Compute the cumulative height occupied by the text
*/
double getTextHeight();
/**
* Returns the type of vertical alignment for the text.
*
* @return the type of vertical alignment
*/
VerticalAlignment getVerticalAlignment();
/**
* Returns if the text is centered.
* If true and if the individual paragraph settings allow it,
* the whole text block will be displayed centered, i.e. its left and right
* margin will be maximized while still keeping the alignment of the paragraphs
*
* @return true, if the text anchor is horizontal centered
*/
boolean isHorizontalCentered();
/**
* @return whether to wrap words within the bounding rectangle
*/
boolean getWordWrap();
/**
* @return vertical orientation of the text
*/
TextDirection getTextDirection();
}