package org.apache.poi.xddf.usermodel.chart;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayout;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTManualLayout;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
@Beta
public final class XDDFManualLayout {
private CTManualLayout layout;
private static final LayoutMode defaultLayoutMode = LayoutMode.EDGE;
private static final LayoutTarget defaultLayoutTarget = LayoutTarget.INNER;
public XDDFManualLayout(CTLayout ctLayout) {
initializeLayout(ctLayout);
}
public XDDFManualLayout(CTPlotArea ctPlotArea) {
CTLayout ctLayout = ctPlotArea.isSetLayout() ? ctPlotArea.getLayout() : ctPlotArea.addNewLayout();
initializeLayout(ctLayout);
}
@Internal
protected CTManualLayout getXmlObject() {
return layout;
}
public void setExtensionList(XDDFChartExtensionList list) {
if (list == null) {
if (layout.isSetExtLst()) {
layout.unsetExtLst();
}
} else {
layout.setExtLst(list.getXmlObject());
}
}
public XDDFChartExtensionList getExtensionList() {
if (layout.isSetExtLst()) {
return new XDDFChartExtensionList(layout.getExtLst());
} else {
return null;
}
}
public void setWidthRatio(double ratio) {
if (!layout.isSetW()) {
layout.addNewW();
}
layout.getW().setVal(ratio);
}
public double getWidthRatio() {
if (!layout.isSetW()) {
return 0.0;
}
return layout.getW().getVal();
}
public void setHeightRatio(double ratio) {
if (!layout.isSetH()) {
layout.addNewH();
}
layout.getH().setVal(ratio);
}
public double getHeightRatio() {
if (!layout.isSetH()) {
return 0.0;
}
return layout.getH().getVal();
}
public LayoutTarget getTarget() {
if (!layout.isSetLayoutTarget()) {
return defaultLayoutTarget;
}
return LayoutTarget.valueOf(layout.getLayoutTarget().getVal());
}
public void setTarget(LayoutTarget target) {
if (!layout.isSetLayoutTarget()) {
layout.addNewLayoutTarget();
}
layout.getLayoutTarget().setVal(target.underlying);
}
public LayoutMode getXMode() {
if (!layout.isSetXMode()) {
return defaultLayoutMode;
}
return LayoutMode.valueOf(layout.getXMode().getVal());
}
public void setXMode(LayoutMode mode) {
if (!layout.isSetXMode()) {
layout.addNewXMode();
}
layout.getXMode().setVal(mode.underlying);
}
public LayoutMode getYMode() {
if (!layout.isSetYMode()) {
return defaultLayoutMode;
}
return LayoutMode.valueOf(layout.getYMode().getVal());
}
public void setYMode(LayoutMode mode) {
if (!layout.isSetYMode()) {
layout.addNewYMode();
}
layout.getYMode().setVal(mode.underlying);
}
public double getX() {
if (!layout.isSetX()) {
return 0.0;
}
return layout.getX().getVal();
}
public void setX(double x) {
if (!layout.isSetX()) {
layout.addNewX();
}
layout.getX().setVal(x);
}
public double getY() {
if (!layout.isSetY()) {
return 0.0;
}
return layout.getY().getVal();
}
public void setY(double y) {
if (!layout.isSetY()) {
layout.addNewY();
}
layout.getY().setVal(y);
}
public LayoutMode getWidthMode() {
if (!layout.isSetWMode()) {
return defaultLayoutMode;
}
return LayoutMode.valueOf(layout.getWMode().getVal());
}
public void setWidthMode(LayoutMode mode) {
if (!layout.isSetWMode()) {
layout.addNewWMode();
}
layout.getWMode().setVal(mode.underlying);
}
public LayoutMode getHeightMode() {
if (!layout.isSetHMode()) {
return defaultLayoutMode;
}
return LayoutMode.valueOf(layout.getHMode().getVal());
}
public void setHeightMode(LayoutMode mode) {
if (!layout.isSetHMode()) {
layout.addNewHMode();
}
layout.getHMode().setVal(mode.underlying);
}
private void initializeLayout(CTLayout ctLayout) {
if (ctLayout.isSetManualLayout()) {
this.layout = ctLayout.getManualLayout();
} else {
this.layout = ctLayout.addNewManualLayout();
}
}
}