Fix missing javadoc parameters, throw tags,...

This commit is contained in:
Jindra Petřík
2024-08-12 19:51:40 +02:00
parent cf06781fdf
commit acc5f94889
179 changed files with 1021 additions and 1477 deletions
@@ -176,7 +176,7 @@ public class DepthState {
/**
* Gets new instance id.
*
* @return
* @return New instance id
*/
public static long getNewInstanceId() {
return lastInstanceId.addAndGet(1);
@@ -236,7 +236,7 @@ public class DepthState {
/**
* Sets matrix.
*
* @param matrix
* @param matrix Matrix
*/
public void setMATRIX(MATRIX matrix) {
this.matrix = matrix;
@@ -246,7 +246,7 @@ public class DepthState {
/**
* Checks whether cache as bitmap is on.
*
* @return
* @return Whether cache as bitmap is on
*/
public boolean cacheAsBitmap() {
return (placeObjectTag != null && placeObjectTag.cacheAsBitmap())
@@ -257,7 +257,7 @@ public class DepthState {
* Converts DepthState to PlaceObject tag of required version.
*
* @param depth Depth
* @return
* @return PlaceObject tag
*/
public PlaceObjectTypeTag toPlaceObjectTag(int depth) {
if (minPlaceObjectNum <= 1) {
@@ -278,7 +278,7 @@ public class DepthState {
/**
* Gets character tag.
*
* @return
* @return Character tag
*/
public CharacterTag getCharacter() {
if (characterId == -1) {
@@ -293,11 +293,6 @@ public class DepthState {
return swf.getCharacter(characterId);
}
/**
* Hashcode.
*
* @return
*/
@Override
public int hashCode() {
int hash = 7;
@@ -321,12 +316,6 @@ public class DepthState {
return hash;
}
/**
* Equals.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -148,18 +148,13 @@ public class Frame implements TreeItem, Exportable {
/**
* Gets openable.
*
* @return
* @return Openable
*/
@Override
public Openable getOpenable() {
return timeline.swf;
}
/**
* ToString
*
* @return
*/
@Override
public String toString() {
String name = "frame " + (frame + 1);
@@ -178,19 +173,13 @@ public class Frame implements TreeItem, Exportable {
/**
* Gets export file name.
*
* @return
* @return Export file name
*/
@Override
public String getExportFileName() {
return "frame_" + (frame + 1);
}
/**
* Equals.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof Frame) {
@@ -201,20 +190,15 @@ public class Frame implements TreeItem, Exportable {
return false;
}
/**
* HashCode.
*
* @return
*/
@Override
public int hashCode() {
return timeline.hashCode() ^ Integer.hashCode(frame);
}
/**
* Checks whether some of "all inner frames" are moified.
* Checks whether some of "all inner frames" are modified.
*
* @return
* @return If some of "all inner frames" are modified
*/
public boolean isAllInnerTagsModified() {
for (Tag t : allInnerTags) {
@@ -228,7 +212,7 @@ public class Frame implements TreeItem, Exportable {
/**
* Gets modified flag.
*
* @return
* @return Modified flag
*/
@Override
public boolean isModified() {
@@ -52,7 +52,7 @@ public class FrameScript implements TreeItem, Exportable {
/**
* Gets Frame.
*
* @return
* @return Frame
*/
public Frame getFrame() {
return frame;
@@ -61,18 +61,13 @@ public class FrameScript implements TreeItem, Exportable {
/**
* Gets openable.
*
* @return
* @return Openable
*/
@Override
public Openable getOpenable() {
return swf;
}
/**
* ToString.
*
* @return
*/
@Override
public String toString() {
return frame.toString();
@@ -81,7 +76,7 @@ public class FrameScript implements TreeItem, Exportable {
/**
* Gets export filename.
*
* @return
* @return Export filename
*/
@Override
public String getExportFileName() {
@@ -91,7 +86,7 @@ public class FrameScript implements TreeItem, Exportable {
/**
* Gets modified flag.
*
* @return
* @return Modified flag
*/
@Override
public boolean isModified() {
@@ -66,7 +66,7 @@ public class Scene implements TreeItem {
/**
* Gets number of frames in this scene.
*
* @return
* @return Number of frames
*/
public int getSceneFrameCount() {
return endFrame - startFrame + 1;
@@ -76,7 +76,7 @@ public class Scene implements TreeItem {
* Gets SceneFrame at index
*
* @param sceneFrameIndex Index at range 0 to sceneFrameCount - 1
* @return
* @return Scene frame
*/
public SceneFrame getSceneFrame(int sceneFrameIndex) {
if (sceneFrameIndex >= getSceneFrameCount()) {
@@ -85,31 +85,17 @@ public class Scene implements TreeItem {
return new SceneFrame(swf, this, startFrame + sceneFrameIndex);
}
/**
* Gets openable.
*
* @return
*/
@Override
public Openable getOpenable() {
return swf;
}
/**
* Gets modified flag.
*
* @return
*/
@Override
public boolean isModified() {
return false; //??
}
/**
* HashCode.
*
* @return
*/
@Override
public int hashCode() {
int hash = 7;
@@ -118,12 +104,6 @@ public class Scene implements TreeItem {
return hash;
}
/**
* Equals.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -142,11 +122,6 @@ public class Scene implements TreeItem {
return Objects.equals(this.swf, other.swf);
}
/**
* ToString.
*
* @return
*/
@Override
public String toString() {
return name;
@@ -59,7 +59,7 @@ public class SceneFrame implements TreeItem {
/**
* Gets scene frame index.
*
* @return
* @return Frame index
*/
public int getSceneFrameIndex() {
return realFrameIndex - scene.startFrame;
@@ -68,47 +68,27 @@ public class SceneFrame implements TreeItem {
/**
* Gets frame.
*
* @return
* @return Frame
*/
public Frame getFrame() {
return swf.getTimeline().getFrame(realFrameIndex);
}
/**
* ToString.
*
* @return
*/
@Override
public String toString() {
return "scene frame " + (getSceneFrameIndex() + 1);
}
/**
* Gets openable.
*
* @return
*/
@Override
public Openable getOpenable() {
return swf;
}
/**
* Gets modified flag.
*
* @return
*/
@Override
public boolean isModified() {
return getFrame().isModified();
}
/**
* HashCode.
*
* @return
*/
@Override
public int hashCode() {
int hash = 5;
@@ -117,12 +97,6 @@ public class SceneFrame implements TreeItem {
return hash;
}
/**
* Equals.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -63,71 +63,36 @@ public class SoundStreamFrameRange implements TreeItem, SoundTag {
this.head = head;
}
/**
* Gets openable.
*
* @return
*/
@Override
public Openable getOpenable() {
return head.getOpenable();
}
/**
* Gets modified flag
*
* @return
*/
@Override
public boolean isModified() {
return false;
}
/**
* Gets sound export format.
*
* @return
*/
@Override
public SoundExportFormat getExportFormat() {
return head.getExportFormat();
}
/**
* Checks whether import is supported.
*
* @return
*/
@Override
public boolean importSupported() {
return false; //??
}
/**
* Gets sound rate.
*
* @return
*/
@Override
public int getSoundRate() {
return head.getSoundRate();
}
/**
* Gets sound type. True = stereo, false = mono.
*
* @return
*/
@Override
public boolean getSoundType() {
return head.getSoundType();
}
/**
* Gets raw sound data.
*
* @return
*/
@Override
public List<ByteArrayRange> getRawSoundData() {
List<ByteArrayRange> ret = new ArrayList<>();
@@ -142,121 +107,62 @@ public class SoundStreamFrameRange implements TreeItem, SoundTag {
return ret;
}
/**
* Gets sound format id.
*
* @return
*/
@Override
public int getSoundFormatId() {
return head.getSoundFormatId();
}
/**
* Gets total sound sample count.
*
* @return
*/
@Override
public long getTotalSoundSampleCount() {
return blocks.size() * head.getSoundSampleCount();
}
/**
* Gets sound size. True = 16 bit, false = 8 bit.
*
* @return
*/
@Override
public boolean getSoundSize() {
return head.getSoundSize();
}
/**
* Gets character export filename.
*
* @return
*/
@Override
public String getCharacterExportFileName() {
return head.getCharacterExportFileName() + "_" + (startFrame + 1) + "-" + (endFrame + 1);
}
/**
* Gets name.
*
* @return
*/
@Override
public String getName() {
return "SoundStreamBlocks";
}
/**
* Gets sound format.
*
* @return
*/
@Override
public SoundFormat getSoundFormat() {
return head.getSoundFormat();
}
/**
* Sets sound size. True = 16 bit, false = 8 bit
*
* @param soundSize
*/
@Override
public void setSoundSize(boolean soundSize) {
//?
}
/**
* Sets sound type. True = stereo, false = mono
*
* @param soundType
*/
@Override
public void setSoundType(boolean soundType) {
//?
}
/**
* Sets sound sample count.
*
* @param soundSampleCount
*/
@Override
public void setSoundSampleCount(long soundSampleCount) {
//?
}
/**
* Sets sound compression.
*
* @param soundCompression
*/
@Override
public void setSoundCompression(int soundCompression) {
//?
}
/**
* Sets sound rate.
*
* @param soundRate
*/
@Override
public void setSoundRate(int soundRate) {
//?
}
/**
* Gets character id.
*
* @return
*/
@Override
public int getCharacterId() {
return head.getCharacterId();
@@ -265,47 +171,28 @@ public class SoundStreamFrameRange implements TreeItem, SoundTag {
/**
* Gets sound stream head.
*
* @return
* @return Sound stream head
*/
public SoundStreamHeadTypeTag getHead() {
return head;
}
/**
* ToString.
*
* @return
*/
@Override
public String toString() {
return "SoundStreamBlocks (frame " + (startFrame + 1) + " - " + (endFrame + 1) + ")";
}
/**
* Checks whether the sound is readonly.
*
* @return
*/
@Override
public boolean isReadOnly() {
return head.isReadOnly();
}
/**
* Gets FLA export name.
*
* @return
*/
@Override
public String getFlaExportName() {
return head.getFlaExportName() + "_" + (startFrame + 1) + "-" + (endFrame + 1);
}
/**
* Gets initial latency.
*
* @return
*/
@Override
public int getInitialLatency() {
return 0;
@@ -62,7 +62,7 @@ public class TagScript implements TreeItem, Exportable {
/**
* Gets tag.
*
* @return
* @return Tag
*/
public Tag getTag() {
return tag;
@@ -71,48 +71,27 @@ public class TagScript implements TreeItem, Exportable {
/**
* Gets frames.
*
* @return
* @return Frames
*/
public List<TreeItem> getFrames() {
return frames;
}
/**
* Gets openable.
*
* @return
*/
@Override
public Openable getOpenable() {
return swf;
}
/**
* ToString.
*
* @return
*/
@Override
public String toString() {
return tag.toString();
}
/**
* Gets export filename.
*
* @return
*/
@Override
public String getExportFileName() {
return tag.getExportFileName();
}
/**
* Equals.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof TagScript) {
@@ -122,21 +101,11 @@ public class TagScript implements TreeItem, Exportable {
return false;
}
/**
* HashCode.
*
* @return
*/
@Override
public int hashCode() {
return tag.hashCode();
}
/**
* Gets modified flag.
*
* @return
*/
@Override
public boolean isModified() {
for (TreeItem f : frames) {
@@ -214,7 +214,7 @@ public class Timeline {
/**
* Gets list of frames.
*
* @return
* @return List of frames
*/
public synchronized List<Frame> getFrames() {
ensureInitialized();
@@ -225,7 +225,7 @@ public class Timeline {
* Gets frame object.
*
* @param index 0-based frame index
* @return
* @return Frame object or null if index is out of bounds
*/
public synchronized Frame getFrame(int index) {
ensureInitialized();
@@ -238,7 +238,7 @@ public class Timeline {
/**
* Adds a frame.
*
* @param frame
* @param frame Frame to add
*/
public synchronized void addFrame(Frame frame) {
ensureInitialized();
@@ -250,7 +250,7 @@ public class Timeline {
/**
* Gets AS2 root package.
*
* @return
* @return AS2 root package
*/
public AS2Package getAS2RootPackage() {
ensureInitialized();
@@ -260,7 +260,7 @@ public class Timeline {
/**
* Gets map of depth to max frame.
*
* @return
* @return Map of depth to max frame
*/
public Map<Integer, Integer> getDepthMaxFrame() {
ensureInitialized();
@@ -270,8 +270,8 @@ public class Timeline {
/**
* Gets map of soundStream id to SoundStreamFrameRanges.
*
* @param head
* @return
* @param head Head
* @return List of SoundStreamFrameRanges
*/
public List<SoundStreamFrameRange> getSoundStreamBlocks(SoundStreamHeadTypeTag head) {
ensureInitialized();
@@ -281,7 +281,7 @@ public class Timeline {
/**
* Gets parent tag.
*
* @return
* @return Parent tag
*/
public Tag getParentTag() {
return timelined instanceof Tag ? (Tag) timelined : null;
@@ -290,7 +290,7 @@ public class Timeline {
/**
* Resets timeline to given SWF file timeline.
*
* @param swf
* @param swf SWF
*/
public void reset(SWF swf) {
reset(swf, swf, 0, swf.displayRect);
@@ -300,7 +300,7 @@ public class Timeline {
* Resets timeline to given Timelined object
*
* @param swf SWF this timelined resides
* @param timelined
* @param timelined Timelined
* @param id Timeline id - usually characterId or 0 for SWF main timeline
* @param displayRect Display rect
*/
@@ -324,7 +324,7 @@ public class Timeline {
/**
* Gets maximum depth.
*
* @return
* @return Maximum depth
*/
public final int getMaxDepth() {
ensureInitialized();
@@ -334,7 +334,7 @@ public class Timeline {
/**
* Calculates max depth manually.
*
* @return
* @return Maximum depth
*/
private synchronized int getMaxDepthInternal() {
int max_depth = 0;
@@ -355,7 +355,7 @@ public class Timeline {
/**
* Gets frame count.
*
* @return
* @return Frame count
*/
public synchronized int getFrameCount() {
ensureInitialized();
@@ -365,7 +365,7 @@ public class Timeline {
/**
* Gets real frame count. Real = when frame has actions or layerschanged.
*
* @return
* @return Real frame count
*/
public synchronized int getRealFrameCount() {
ensureInitialized();
@@ -387,8 +387,8 @@ public class Timeline {
/**
* Gets frame for ASMSource.
*
* @param asm
* @return
* @param asm ASMSource
* @return Frame index or -1 if not found
*/
public int getFrameForAction(ASMSource asm) {
Integer frame = actionFrames.get(asm);
@@ -402,7 +402,7 @@ public class Timeline {
/**
* Constructs timeline from SWF.
*
* @param swf
* @param swf SWF
*/
public Timeline(SWF swf) {
this(swf, swf, 0, swf.displayRect);
@@ -412,7 +412,7 @@ public class Timeline {
* Constructs timeline from Timelined object.
*
* @param swf SWF the timelined object resides in
* @param timelined
* @param timelined Timelined
* @param id Timeline id - usually characterId or 0 for SWF main timeline
* @param displayRect Display rect
*/
@@ -428,7 +428,7 @@ public class Timeline {
/**
* Gets frame with label name.
*
* @param label
* @param label Label name
* @return frame index (zero based) or -1 when not found
*/
public int getFrameWithLabel(String label) {
@@ -773,8 +773,8 @@ public class Timeline {
/**
* Populates sound stream blocks.
*
* @param containerId
* @param tags
* @param containerId Container id
* @param tags Tags
*/
private void populateSoundStreamBlocks(int containerId, Iterable<Tag> tags) {
List<SoundStreamFrameRange> ranges = null;
@@ -885,8 +885,8 @@ public class Timeline {
/**
* Gets needed characters for a frame.
*
* @param frame
* @param usedCharacters
* @param frame Frame index
* @param usedCharacters Result
*/
public void getNeededCharacters(int frame, Set<Integer> usedCharacters) {
Frame frameObj = getFrame(frame);
@@ -904,9 +904,9 @@ public class Timeline {
/**
* Replaces characterId with another.s
*
* @param oldCharacterId
* @param newCharacterId
* @return
* @param oldCharacterId Old character id
* @param newCharacterId New character id
* @return True if modified
*/
public boolean replaceCharacter(int oldCharacterId, int newCharacterId) {
boolean modified = false;
@@ -924,9 +924,9 @@ public class Timeline {
/**
* Removes character.
*
* @param characterId
* @param characterId Character id
* @param listener Called on tag remove
* @return
* @return True if removed
*/
public boolean removeCharacter(int characterId, TagRemoveListener listener) {
return swf.removeCharacterFromTimeline(characterId, this, listener);
@@ -935,8 +935,8 @@ public class Timeline {
/**
* Rounds value to pixels.
*
* @param val
* @return
* @param val Value
* @return Rounded value
*/
public double roundToPixel(double val) {
return Math.rint(val / SWF.unitDivisor) * SWF.unitDivisor;
@@ -945,34 +945,34 @@ public class Timeline {
/**
* Draws drawableTag
*
* @param swf
* @param strokeTransform
* @param layer
* @param layerMatrix
* @param g
* @param colorTransForm
* @param blendMode
* @param parentBlendMode
* @param clips
* @param transformation
* @param isClip
* @param clipDepth
* @param absMat
* @param time
* @param ratio
* @param renderContext
* @param image
* @param fullImage
* @param drawable
* @param filters
* @param unzoom
* @param clrTrans
* @param sameImage
* @param viewRect
* @param fullTransformation
* @param scaleStrokes
* @param drawMode
* @param canUseSmoothing
* @param swf SWF
* @param strokeTransform Stroke transform
* @param layer Layer
* @param layerMatrix Layer matrix
* @param g Graphics
* @param colorTransForm Color transform
* @param blendMode Blend mode
* @param parentBlendMode Parent blend mode
* @param clips Clips
* @param transformation Transformation
* @param isClip Is clip
* @param clipDepth Clip depth
* @param absMat Absolute matrix
* @param time Time
* @param ratio Ratio
* @param renderContext Render context
* @param image Image
* @param fullImage Full image
* @param drawable Drawable
* @param filters Filters
* @param unzoom Unzoom
* @param clrTrans Color transform
* @param sameImage Same image
* @param viewRect View rect
* @param fullTransformation Full transformation
* @param scaleStrokes Scale strokes
* @param drawMode Draw mode
* @param canUseSmoothing Can use smoothing
*/
private void drawDrawable(SWF swf, Matrix strokeTransform, DepthState layer, Matrix layerMatrix, Graphics2D g, ColorTransform colorTransForm, int blendMode, int parentBlendMode, List<Clip> clips, Matrix transformation, boolean isClip, int clipDepth, Matrix absMat, int time, int ratio, RenderContext renderContext, SerializableImage image, SerializableImage fullImage, DrawableTag drawable, List<FILTER> filters, double unzoom, ColorTransform clrTrans, boolean sameImage, ExportRectangle viewRect, Matrix fullTransformation, boolean scaleStrokes, int drawMode, boolean canUseSmoothing) {
Matrix drawMatrix = new Matrix();
@@ -1277,24 +1277,24 @@ public class Timeline {
/**
* Converts specified frame to an image.
*
* @param frame
* @param time
* @param renderContext
* @param image
* @param fullImage
* @param isClip
* @param transformation
* @param strokeTransformation
* @param absoluteTransformation
* @param colorTransform
* @param unzoom
* @param sameImage
* @param viewRect
* @param fullTransformation
* @param scaleStrokes
* @param drawMode
* @param blendMode
* @param canUseSmoothing
* @param frame Frame
* @param time Time
* @param renderContext Render context
* @param image Image
* @param fullImage Full image
* @param isClip Is clip
* @param transformation Transformation
* @param strokeTransformation Stroke transformation
* @param absoluteTransformation Absolute transformation
* @param colorTransform Color transform
* @param unzoom Unzoom
* @param sameImage Same image
* @param viewRect View rect
* @param fullTransformation Full transformation
* @param scaleStrokes Scale strokes
* @param drawMode Draw mode
* @param blendMode Blend mode
* @param canUseSmoothing Can use smoothing
*/
public void toImage(int frame, int time, RenderContext renderContext, SerializableImage image, SerializableImage fullImage, boolean isClip, Matrix transformation, Matrix strokeTransformation, Matrix absoluteTransformation, ColorTransform colorTransform, double unzoom, boolean sameImage, ExportRectangle viewRect, Matrix fullTransformation, boolean scaleStrokes, int drawMode, int blendMode, boolean canUseSmoothing) {
if (getFrameCount() <= frame) {
@@ -1470,14 +1470,14 @@ public class Timeline {
/**
* Converts specified frame to SVG.
*
* @param frame
* @param time
* @param stateUnderCursor
* @param mouseButton
* @param exporter
* @param colorTransform
* @param level
* @throws IOException
* @param frame Frame
* @param time Time
* @param stateUnderCursor State under cursor
* @param mouseButton Mouse button
* @param exporter SVG exporter
* @param colorTransform Color transform
* @param level Level
* @throws IOException On I/O error
*/
public void toSVG(int frame, int time, DepthState stateUnderCursor, int mouseButton, SVGExporter exporter, ColorTransform colorTransform, int level) throws IOException {
if (getFrameCount() <= frame) {
@@ -1580,9 +1580,9 @@ public class Timeline {
/**
* Gets tag type prefix for SVG export.
*
* @param tag
* @param exporter
* @return
* @param tag Tag
* @param exporter SVG exporter
* @return Tag type prefix
*/
private static String getTagIdPrefix(Tag tag, SVGExporter exporter) {
if (tag instanceof ShapeTag) {
@@ -1606,9 +1606,9 @@ public class Timeline {
/**
* Converts list of frames to HTML Canvas.
*
* @param result
* @param unitDivisor
* @param frames
* @param result Result
* @param unitDivisor Unit divisor
* @param frames Frames
*/
public void toHtmlCanvas(StringBuilder result, double unitDivisor, List<Integer> frames) {
FrameExporter.framesToHtmlCanvas(result, unitDivisor, this, frames, 0, null, 0, displayRect, null, null);
@@ -1617,13 +1617,13 @@ public class Timeline {
/**
* Gets all sounds from the frame.
*
* @param frame
* @param time
* @param mouseOverButton
* @param mouseButton
* @param sounds
* @param soundClasses
* @param soundInfos
* @param frame Frame
* @param time Time
* @param mouseOverButton Mouse over button
* @param mouseButton Mouse button
* @param sounds Sounds
* @param soundClasses Sound classes
* @param soundInfos Sound infos
*/
public void getSounds(int frame, int time, ButtonTag mouseOverButton, int mouseButton, List<Integer> sounds, List<String> soundClasses, List<SOUNDINFO> soundInfos) {
Frame fr = getFrame(frame);
@@ -1659,15 +1659,15 @@ public class Timeline {
/**
* Gets outline of the frame.
*
* @param fast
* @param frame
* @param time
* @param renderContext
* @param transformation
* @param stroked
* @param viewRect
* @param unzoom
* @return
* @param fast Fast
* @param frame Frame
* @param time Time
* @param renderContext Render context
* @param transformation Transformation
* @param stroked Stroked
* @param viewRect View rect
* @param unzoom Unzoom
* @return Outline
*/
public Shape getOutline(boolean fast, int frame, int time, RenderContext renderContext, Matrix transformation, boolean stroked, ExportRectangle viewRect, double unzoom) {
Frame fr = getFrame(frame);
@@ -1743,7 +1743,7 @@ public class Timeline {
* Checks whether all frames are singleframe. Single frame = each frame has
* no animated parts inside.
*
* @return
* @return True if all frames are single frame, otherwise false
*/
public boolean isSingleFrame() {
for (int i = 0; i < getFrameCount(); i++) {
@@ -1758,8 +1758,8 @@ public class Timeline {
* Checks whether specified frame is single frame. Single frame = has no
* animated parts inside.
*
* @param frame
* @return
* @param frame Frame
* @return True if frame is single frame, otherwise false
*/
public boolean isSingleFrame(int frame) {
Frame frameObj = getFrame(frame);
@@ -1786,12 +1786,6 @@ public class Timeline {
return true;
}
/**
* Equals test.
*
* @param obj
* @return
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof Timeline) {
@@ -1805,7 +1799,7 @@ public class Timeline {
/**
* Gets scenes list.
*
* @return
* @return Scenes list
*/
public List<Scene> getScenes() {
ensureInitialized();