/* * * 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; import org.apache.flex.swf.tags.EnableDebugger2Tag; import org.apache.flex.swf.tags.EnableTelemetryTag; import org.apache.flex.swf.tags.ProductInfoTag; import org.apache.flex.swf.tags.ScriptLimitsTag; import org.apache.flex.swf.types.RGB; import org.apache.flex.swf.types.Rect; /** * SWF model interface. The properties include fields in SWF header, * {@code FileAttributes} tag and optionally {@code Metadata} tag. */ public interface ISWF { /** * Get SWF file version. * * @return version number. */ int getVersion(); /** * Set SWF version. * * @param version SWF version */ void setVersion(int version); /** * Get frame delay in 8.8 fixed number of frames per second. * * @return frame delay. */ float getFrameRate(); /** * Set frame rate. * * @param frameRate frame per second */ void setFrameRate(float frameRate); /** * Get SWF frame size in Twips. * * @return frame size */ Rect getFrameSize(); /** * Set frame size. * * @param rect frame size */ void setFrameSize(Rect rect); /** * Get number of frames. * * @return frame count. */ int getFrameCount(); // Frame operations /** * Add a frame. * * @param frame SWF frame. */ void addFrame(SWFFrame frame); /** * Get frame by index. * * @param index frame index. * @return frame */ SWFFrame getFrameAt(int index); // Properties in managed tags /** * Get SWF movie background color. * * @return color */ RGB getBackgroundColor(); /** * Set SWF movie background color. * * @param color color in RGB */ void setBackgroundColor(RGB color); /** * Get the QName of the top level class. * * @return name of top level class. */ String getTopLevelClass(); /** * Set root class name. * * @param value root class name */ void setTopLevelClass(String value); /** * Get the Metadata text. This is a Metadata property. * <p> * The Metadata tag is an optional tag to describe the SWF file to an * external process. The tag embeds XML metadata in the SWF file so that, * for example, a search engine can locate this tag, access a title for the * SWF file, and display that title in search results. * * @return metadata XML text; null if Metadata tag doesn't exit. */ String getMetadata(); /** * Set the Metadata text. This is a Metadata property. * <p> * The Metadata tag is an optional tag to describe the SWF file to an * external process. The tag embeds XML metadata in the SWF file so that, * for example, a search engine can locate this tag, access a title for the * SWF file, and display that title in search results. * <p> * Setting a non-null value will also set FileAttributes.hasMetadata to * true. * * @param value Metadata XML string; null value will remove the Metadata * tag on the SWF. */ void setMetadata(String value); /** * Check if the SWF has Metadata tag. This is a FileAttributes property. * * @return true if the SWF has Metadata tag */ boolean hasMetadata(); /** * Check if the SWF uses ActionScript3. This is a FileAttributes property. * * @return true if the SWF uses ActionScript3 */ boolean getUseAS3(); /** * Set whether the SWF uses ActionScript3. This is a FileAttributes * property. * * @param value true if the SWF uses ActionScript3 */ void setUseAS3(boolean value); /** * Check if the SWF uses direct Blit. This is a FileAttributes property. * * @return true if the SWF uses direct Blit. */ boolean getUseDirectBlit(); /** * Set whether the SWF uses direct Blit. This is a FileAttributes property. * * @param value true if the SWF uses direct Blit. */ void setUseDirectBlit(boolean value); /** * Check if the SWF uses GPU. This is a FileAttributes property. * * @return true if the SWF uses GPU */ boolean getUseGPU(); /** * Set whether the SWF uses GPU. This is a FileAttributes property. * * @param value true if the SWF uses GPU */ void setUseGPU(boolean value); /** * Set whether the SWF uses network. This is a FileAttributes property. * * @return true if the SWF uses network. */ boolean getUseNetwork(); /** * Check if the SWF uses network. This is a FileAttributes property. * * @param value true if the SWF uses network. */ void setUseNetwork(boolean value); /** * Delete a SWF frame. * * @param index frame index */ void deleteFrame(int index); /** * @return {@code EnableDebugger2} tag or null. */ EnableDebugger2Tag getEnableDebugger2(); /** * Set a script limit values. * * @param maxRecursionDepth max recursion depth * @param scriptTimeoutSeconds script timeout seconds */ void setScriptLimits(int maxRecursionDepth, int scriptTimeoutSeconds); /** * Get the managed {@code ScriptLimits} tag. * * @return {@code ScriptLimits} tag in this SWF, or {@code null} if * {@link #setScriptLimits(int, int)} hasn't be called. */ ScriptLimitsTag getScriptLimits(); /** * Get the {@code ProductInfoTag} tag. * * @return {@code ProductInfoTag} or null if there is no product info * associated with the SWF. */ ProductInfoTag getProductInfo(); /** * Set the product info tag associated with the SWF. * * @param tag the ProductInfoTag, may be null. */ void setProductInfo(ProductInfoTag tag); /** * Get the {@code EnableTelemetryTag} tag. * * @return {@code EnableTelemetryTag} or null if there is no enable telemetry * information associated with the SWF. */ EnableTelemetryTag getEnableTelemetry(); /** * Set the enable telemetry tag associated with the SWF. * * @param tag the EnableTelemetryTag, may be null. */ void setEnableTelemetry(EnableTelemetryTag tag); }