/* * * 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.flex.swf.tags; import org.apache.flex.swf.TagType; import org.apache.flex.swf.types.Rect; import org.apache.flex.swf.types.Shape; /** * Represents a <code>DefineMorphShapeTag</code> tag in a SWF file. * <p> * The DefineMorphShape tag defines the start and end states of a morph * sequence. A morph object should be displayed with the PlaceObject2 tag, where * the ratio field specifies how far the morph has progressed. */ public class DefineMorphShapeTag extends CharacterTag implements ICharacterReferrer { /** * Constructor. */ public DefineMorphShapeTag() { super(TagType.DefineMorphShape); } /** * Protected constructor for use by subclasses with other tag types. */ protected DefineMorphShapeTag(TagType tagType) { super(tagType); } private Rect startBounds; private Rect endBounds; private long offset; private Shape startEdges; private Shape endEdges; /** * Bounds of the start shape. * * @return the startBounds */ public Rect getStartBounds() { return startBounds; } /** * Set bounds of the start shape. * * @param startBounds the startBounds to set */ public void setStartBounds(Rect startBounds) { this.startBounds = startBounds; } /** * Bounds of the end shape. * * @return the endBounds */ public Rect getEndBounds() { return endBounds; } /** * Set the bounds of the end shape. * * @param endBounds the endBounds to set */ public void setEndBounds(Rect endBounds) { this.endBounds = endBounds; } /** * Indicates offset to EndEdges. * * @return the offset */ public long getOffset() { return offset; } /** * Set offset to EndEdges. * * @param offset the offset to set */ public void setOffset(long offset) { this.offset = offset; } /** * Get start edges. * <p> * Contains the set of edges and the style bits that indicate style changes * (for example, MoveTo, FillStyle, and LineStyle). Number of edges must * equal the number of edges in EndEdges. * * @return the startEdges */ public Shape getStartEdges() { return startEdges; } /** * Set start edges. * * @param startEdges the startEdges to set */ public void setStartEdges(Shape startEdges) { this.startEdges = startEdges; } /** * Get end edges. * <p> * Contains only the set of edges, with no style information. Number of * edges must equal the number of edges in StartEdges. * * @return the endEdges */ public Shape getEndEdges() { return endEdges; } /** * Set end edges. * * @param endEdges the endEdges to set */ public void setEndEdges(Shape endEdges) { this.endEdges = endEdges; } /** * Get the character tags referred by this DefineMorphShape tag. * <ul> * <li>DefineMorphShape.StartEdge.ShapeRecords(StyleChage).FillStyles.Bitmap * </li> * <li>DefineMorphShape.MorphFillStyles.Bitmap</li> * </ul> */ @Override public Iterable<ICharacterTag> getReferences() { return CharacterIterableFactory.collect( startEdges.getReferences(), endEdges.getReferences()); } }