109 lines
4.1 KiB
Java
109 lines
4.1 KiB
Java
/*
|
|
* ====================================================================
|
|
* 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.xslf.usermodel;
|
|
|
|
import org.apache.poi.sl.usermodel.AutoShape;
|
|
import org.apache.poi.util.Beta;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.STTextAlignType;
|
|
import org.openxmlformats.schemas.drawingml.x2006.main.STTextAnchoringType;
|
|
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
|
|
import org.openxmlformats.schemas.presentationml.x2006.main.CTShapeNonVisual;
|
|
|
|
|
|
/**
|
|
* Represents a shape with a preset geometry.
|
|
*
|
|
* @author Yegor Kozlov
|
|
*/
|
|
@Beta
|
|
public class XSLFAutoShape extends XSLFTextShape
|
|
implements AutoShape<XSLFShape,XSLFTextParagraph> {
|
|
|
|
/*package*/ XSLFAutoShape(CTShape shape, XSLFSheet sheet) {
|
|
super(shape, sheet);
|
|
}
|
|
|
|
/*package*/
|
|
static XSLFAutoShape create(CTShape shape, XSLFSheet sheet) {
|
|
if (shape.getSpPr().isSetCustGeom()) {
|
|
return new XSLFFreeformShape(shape, sheet);
|
|
} else if (shape.getNvSpPr().getCNvSpPr().isSetTxBox()) {
|
|
return new XSLFTextBox(shape, sheet);
|
|
} else {
|
|
return new XSLFAutoShape(shape, sheet);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param shapeId 1-based shapeId
|
|
*/
|
|
static CTShape prototype(int shapeId) {
|
|
CTShape ct = CTShape.Factory.newInstance();
|
|
CTShapeNonVisual nvSpPr = ct.addNewNvSpPr();
|
|
CTNonVisualDrawingProps cnv = nvSpPr.addNewCNvPr();
|
|
cnv.setName("AutoShape " + shapeId);
|
|
cnv.setId(shapeId + 1);
|
|
nvSpPr.addNewCNvSpPr();
|
|
nvSpPr.addNewNvPr();
|
|
CTShapeProperties spPr = ct.addNewSpPr();
|
|
CTPresetGeometry2D prst = spPr.addNewPrstGeom();
|
|
prst.setPrst(STShapeType.RECT);
|
|
prst.addNewAvLst();
|
|
return ct;
|
|
}
|
|
|
|
protected static void initTextBody(CTTextBody txBody) {
|
|
CTTextBodyProperties bodypr = txBody.addNewBodyPr();
|
|
bodypr.setAnchor(STTextAnchoringType.T);
|
|
bodypr.setRtlCol(false);
|
|
CTTextParagraph p = txBody.addNewP();
|
|
p.addNewPPr().setAlgn(STTextAlignType.L);
|
|
CTTextCharacterProperties endPr = p.addNewEndParaRPr();
|
|
endPr.setLang("en-US");
|
|
endPr.setSz(1100);
|
|
p.addNewR().setT("");
|
|
txBody.addNewLstStyle();
|
|
}
|
|
|
|
protected CTTextBody getTextBody(boolean create){
|
|
CTShape shape = (CTShape)getXmlObject();
|
|
CTTextBody txBody = shape.getTxBody();
|
|
if (txBody == null && create) {
|
|
txBody = shape.addNewTxBody();
|
|
initTextBody(txBody);
|
|
}
|
|
return txBody;
|
|
}
|
|
|
|
@Override
|
|
public String toString(){
|
|
return "[" + getClass().getSimpleName() + "] " + getShapeName();
|
|
}
|
|
|
|
}
|