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

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

There is a newer version: 2024.11.18751.20241128T090041Z-241100
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.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Spliterator;

/**
 * Definition of a custom geometric shape
 *
 *
 * 

Java class for CT_CustomGeometry2D complex type. * *

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

 * <complexType name="CT_CustomGeometry2D">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>
 *         <element name="gdLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>
 *         <element name="ahLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjustHandleList" minOccurs="0"/>
 *         <element name="cxnLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSiteList" minOccurs="0"/>
 *         <element name="rect" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomRect" minOccurs="0"/>
 *         <element name="pathLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DList"/>
 *       </sequence>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * 
*/ public final class CustomGeometry implements Iterable{ final List adjusts = new ArrayList<>(); final List guides = new ArrayList<>(); final List paths = new ArrayList<>(); final List handles = new ArrayList<>(); final List connections = new ArrayList<>(); Path textBounds; public void addAdjustGuide(AdjustValueIf guide) { adjusts.add(guide); } public void addGeomGuide(GuideIf guide) { guides.add(guide); } public void addAdjustHandle(AdjustHandle handle) { handles.add(handle); } public void addConnectionSite(ConnectionSiteIf connection) { connections.add(connection); } public void addPath(PathIf path) { paths.add(path); } public void setTextBounds(String left, String top, String right, String bottom) { textBounds = new Path(); textBounds.addCommand(moveTo(left,top)); textBounds.addCommand(lineTo(right, top)); textBounds.addCommand(lineTo(right, bottom)); textBounds.addCommand(lineTo(left, bottom)); textBounds.addCommand(new ClosePathCommand()); } private static MoveToCommand moveTo(String x, String y) { AdjustPoint pt = new AdjustPoint(); pt.setX(x); pt.setY(y); MoveToCommand cmd = new MoveToCommand(); cmd.setPt(pt); return cmd; } private static LineToCommand lineTo(String x, String y) { AdjustPoint pt = new AdjustPoint(); pt.setX(x); pt.setY(y); LineToCommand cmd = new LineToCommand(); cmd.setPt(pt); return cmd; } @Override public Iterator iterator() { return paths.iterator(); } /** * @since POI 5.2.0 */ @Override public Spliterator spliterator() { return paths.spliterator(); } public Path getTextBounds(){ return textBounds; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof CustomGeometry)) return false; CustomGeometry that = (CustomGeometry) o; return Objects.equals(adjusts, that.adjusts) && Objects.equals(guides, that.guides) && Objects.equals(handles, that.handles) && Objects.equals(connections, that.connections) && Objects.equals(textBounds, that.textBounds) && Objects.equals(paths, that.paths); } @Override public int hashCode() { return Objects.hash(adjusts, guides, handles, connections, textBounds, paths); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy