All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.poi.sl.draw.geom.Path Maven / Gradle / Ivy

There is a newer version: 5.2.5
Show newest version
/*
 *  ====================================================================
 *    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.draw.geom;

import java.awt.geom.Path2D;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import org.apache.poi.sl.usermodel.PaintStyle.PaintModifier;

/**
 * Specifies a creation path consisting of a series of moves, lines and curves
 * that when combined forms a geometric shape
 *
 * 

Java class for CT_Path2D complex type. * *

The following schema fragment specifies the expected content contained within this class. * *

 * <complexType name="CT_Path2D">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <choice maxOccurs="unbounded" minOccurs="0">
 *         <element name="close" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DClose"/>
 *         <element name="moveTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DMoveTo"/>
 *         <element name="lnTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DLineTo"/>
 *         <element name="arcTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DArcTo"/>
 *         <element name="quadBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DQuadBezierTo"/>
 *         <element name="cubicBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DCubicBezierTo"/>
 *       </choice>
 *       <attribute name="w" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />
 *       <attribute name="h" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />
 *       <attribute name="fill" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PathFillMode" default="norm" />
 *       <attribute name="stroke" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
 *       <attribute name="extrusionOk" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * 
*/ // @XmlAccessorType(XmlAccessType.FIELD) // @XmlType(name = "CT_Path2D", propOrder = {"closeOrMoveToOrLnTo"}) public final class Path { // @XmlElements({ // @XmlElement(name = "close", type = CTPath2DClose.class), // @XmlElement(name = "moveTo", type = CTPath2DMoveTo.class), // @XmlElement(name = "lnTo", type = CTPath2DLineTo.class), // @XmlElement(name = "arcTo", type = CTPath2DArcTo.class), // @XmlElement(name = "quadBezTo", type = CTPath2DQuadBezierTo.class), // @XmlElement(name = "cubicBezTo", type = CTPath2DCubicBezierTo.class) // }) private final List commands = new ArrayList<>(); // @XmlAttribute(name = "fill") private PaintModifier fill = PaintModifier.NORM; // @XmlAttribute(name = "stroke") private boolean stroke = true; // @XmlAttribute(name = "extrusionOk") private boolean extrusionOk = false; // @XmlAttribute(name = "w") private long w = -1; // @XmlAttribute(name = "h") private long h = -1; public void addCommand(PathCommand cmd){ commands.add(cmd); } /** * Convert the internal represenation to java.awt.geom.Path2D */ public Path2D.Double getPath(Context ctx) { Path2D.Double path = new Path2D.Double(); for(PathCommand cmd : commands) { cmd.execute(path, ctx); } return path; } public boolean isStroked(){ return stroke; } public void setStroke(boolean stroke) { this.stroke = stroke; } public boolean isFilled(){ return fill != PaintModifier.NONE; } public PaintModifier getFill() { return fill; } public void setFill(PaintModifier fill) { this.fill = fill; } public long getW(){ return w; } public void setW(long w) { this.w = w; } public long getH(){ return h; } public void setH(long h) { this.h = h; } public boolean isExtrusionOk() { return extrusionOk; } public void setExtrusionOk(boolean extrusionOk) { this.extrusionOk = extrusionOk; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Path)) return false; Path ctPath2D = (Path) o; return Objects.equals(commands, ctPath2D.commands) && Objects.equals(w, ctPath2D.w) && Objects.equals(h, ctPath2D.h) && fill == ctPath2D.fill && Objects.equals(stroke, ctPath2D.stroke) && Objects.equals(extrusionOk, ctPath2D.extrusionOk); } @Override public int hashCode() { return Objects.hash(commands, w, h, fill.ordinal(), stroke, extrusionOk); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy