blob: 8cbf61a4283d591bfa25fb377770b9050f49c8a2 [file] [log] [blame]
/*
*
* 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.royale.swf;
import org.apache.royale.swf.tags.EnableDebugger2Tag;
import org.apache.royale.swf.tags.EnableTelemetryTag;
import org.apache.royale.swf.tags.ProductInfoTag;
import org.apache.royale.swf.tags.ScriptLimitsTag;
import org.apache.royale.swf.types.RGB;
import org.apache.royale.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);
}