/* * Copyright (C) 2010-2016 JPEXS * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jpexs.decompiler.flash.gui.tagtree; import com.jpexs.decompiler.flash.tags.CSMTextSettingsTag; import com.jpexs.decompiler.flash.tags.DebugIDTag; import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag; import com.jpexs.decompiler.flash.tags.DefineBitsJPEG2Tag; import com.jpexs.decompiler.flash.tags.DefineBitsJPEG3Tag; import com.jpexs.decompiler.flash.tags.DefineBitsJPEG4Tag; import com.jpexs.decompiler.flash.tags.DefineBitsLossless2Tag; import com.jpexs.decompiler.flash.tags.DefineBitsLosslessTag; import com.jpexs.decompiler.flash.tags.DefineBitsTag; import com.jpexs.decompiler.flash.tags.DefineButton2Tag; import com.jpexs.decompiler.flash.tags.DefineButtonCxformTag; import com.jpexs.decompiler.flash.tags.DefineButtonSoundTag; import com.jpexs.decompiler.flash.tags.DefineButtonTag; import com.jpexs.decompiler.flash.tags.DefineEditTextTag; import com.jpexs.decompiler.flash.tags.DefineFont2Tag; import com.jpexs.decompiler.flash.tags.DefineFont3Tag; import com.jpexs.decompiler.flash.tags.DefineFont4Tag; import com.jpexs.decompiler.flash.tags.DefineFontAlignZonesTag; import com.jpexs.decompiler.flash.tags.DefineFontInfo2Tag; import com.jpexs.decompiler.flash.tags.DefineFontInfoTag; import com.jpexs.decompiler.flash.tags.DefineFontNameTag; import com.jpexs.decompiler.flash.tags.DefineFontTag; import com.jpexs.decompiler.flash.tags.DefineMorphShape2Tag; import com.jpexs.decompiler.flash.tags.DefineMorphShapeTag; import com.jpexs.decompiler.flash.tags.DefineScalingGridTag; import com.jpexs.decompiler.flash.tags.DefineSceneAndFrameLabelDataTag; import com.jpexs.decompiler.flash.tags.DefineShape2Tag; import com.jpexs.decompiler.flash.tags.DefineShape3Tag; import com.jpexs.decompiler.flash.tags.DefineShape4Tag; import com.jpexs.decompiler.flash.tags.DefineShapeTag; import com.jpexs.decompiler.flash.tags.DefineSoundTag; import com.jpexs.decompiler.flash.tags.DefineSpriteTag; import com.jpexs.decompiler.flash.tags.DefineText2Tag; import com.jpexs.decompiler.flash.tags.DefineTextTag; import com.jpexs.decompiler.flash.tags.DefineVideoStreamTag; import com.jpexs.decompiler.flash.tags.DoABC2Tag; import com.jpexs.decompiler.flash.tags.DoABCTag; import com.jpexs.decompiler.flash.tags.DoActionTag; import com.jpexs.decompiler.flash.tags.DoInitActionTag; import com.jpexs.decompiler.flash.tags.EnableDebugger2Tag; import com.jpexs.decompiler.flash.tags.EnableDebuggerTag; import com.jpexs.decompiler.flash.tags.EnableTelemetryTag; import com.jpexs.decompiler.flash.tags.EndTag; import com.jpexs.decompiler.flash.tags.ExportAssetsTag; import com.jpexs.decompiler.flash.tags.FileAttributesTag; import com.jpexs.decompiler.flash.tags.FrameLabelTag; import com.jpexs.decompiler.flash.tags.ImportAssets2Tag; import com.jpexs.decompiler.flash.tags.ImportAssetsTag; import com.jpexs.decompiler.flash.tags.JPEGTablesTag; import com.jpexs.decompiler.flash.tags.MetadataTag; import com.jpexs.decompiler.flash.tags.PlaceObject2Tag; import com.jpexs.decompiler.flash.tags.PlaceObject3Tag; import com.jpexs.decompiler.flash.tags.PlaceObject4Tag; import com.jpexs.decompiler.flash.tags.PlaceObjectTag; import com.jpexs.decompiler.flash.tags.ProductInfoTag; import com.jpexs.decompiler.flash.tags.ProtectTag; import com.jpexs.decompiler.flash.tags.RemoveObject2Tag; import com.jpexs.decompiler.flash.tags.RemoveObjectTag; import com.jpexs.decompiler.flash.tags.ScriptLimitsTag; import com.jpexs.decompiler.flash.tags.SetBackgroundColorTag; import com.jpexs.decompiler.flash.tags.SetTabIndexTag; import com.jpexs.decompiler.flash.tags.ShowFrameTag; import com.jpexs.decompiler.flash.tags.SoundStreamBlockTag; import com.jpexs.decompiler.flash.tags.SoundStreamHead2Tag; import com.jpexs.decompiler.flash.tags.SoundStreamHeadTag; import com.jpexs.decompiler.flash.tags.StartSound2Tag; import com.jpexs.decompiler.flash.tags.StartSoundTag; import com.jpexs.decompiler.flash.tags.SymbolClassTag; import com.jpexs.decompiler.flash.tags.VideoFrameTag; import com.jpexs.decompiler.flash.tags.gfx.DefineCompactedFont; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalGradient; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalImage; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalImage2; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalSound; import com.jpexs.decompiler.flash.tags.gfx.DefineExternalStreamSound; import com.jpexs.decompiler.flash.tags.gfx.DefineGradientMap; import com.jpexs.decompiler.flash.tags.gfx.DefineSubImage; import com.jpexs.decompiler.flash.tags.gfx.ExporterInfo; import com.jpexs.decompiler.flash.tags.gfx.FontTextureInfo; import java.util.HashMap; import java.util.Map; /** * * @author JPEXS */ public class TagIdClassMap { private static final Map<Integer, Class<?>> tagIdClassMap = new HashMap<>(); private static final Map<Class, Integer> classTagIdMap = new HashMap<>(); static { addTag(CSMTextSettingsTag.ID, CSMTextSettingsTag.class); addTag(DebugIDTag.ID, DebugIDTag.class); addTag(DefineBinaryDataTag.ID, DefineBinaryDataTag.class); addTag(DefineBitsJPEG2Tag.ID, DefineBitsJPEG2Tag.class); addTag(DefineBitsJPEG3Tag.ID, DefineBitsJPEG3Tag.class); addTag(DefineBitsJPEG4Tag.ID, DefineBitsJPEG4Tag.class); addTag(DefineBitsLossless2Tag.ID, DefineBitsLossless2Tag.class); addTag(DefineBitsLosslessTag.ID, DefineBitsLosslessTag.class); addTag(DefineBitsTag.ID, DefineBitsTag.class); addTag(DefineButton2Tag.ID, DefineButton2Tag.class); addTag(DefineButtonCxformTag.ID, DefineButtonCxformTag.class); addTag(DefineButtonSoundTag.ID, DefineButtonSoundTag.class); addTag(DefineButtonTag.ID, DefineButtonTag.class); addTag(DefineEditTextTag.ID, DefineEditTextTag.class); addTag(DefineFont2Tag.ID, DefineFont2Tag.class); addTag(DefineFont3Tag.ID, DefineFont3Tag.class); addTag(DefineFont4Tag.ID, DefineFont4Tag.class); addTag(DefineFontAlignZonesTag.ID, DefineFontAlignZonesTag.class); addTag(DefineFontInfo2Tag.ID, DefineFontInfo2Tag.class); addTag(DefineFontInfoTag.ID, DefineFontInfoTag.class); addTag(DefineFontNameTag.ID, DefineFontNameTag.class); addTag(DefineFontTag.ID, DefineFontTag.class); addTag(DefineMorphShape2Tag.ID, DefineMorphShape2Tag.class); addTag(DefineMorphShapeTag.ID, DefineMorphShapeTag.class); addTag(DefineScalingGridTag.ID, DefineScalingGridTag.class); addTag(DefineSceneAndFrameLabelDataTag.ID, DefineSceneAndFrameLabelDataTag.class); addTag(DefineShape2Tag.ID, DefineShape2Tag.class); addTag(DefineShape3Tag.ID, DefineShape3Tag.class); addTag(DefineShape4Tag.ID, DefineShape4Tag.class); addTag(DefineShapeTag.ID, DefineShapeTag.class); addTag(DefineSoundTag.ID, DefineSoundTag.class); addTag(DefineSpriteTag.ID, DefineSpriteTag.class); addTag(DefineText2Tag.ID, DefineText2Tag.class); addTag(DefineTextTag.ID, DefineTextTag.class); addTag(DefineVideoStreamTag.ID, DefineVideoStreamTag.class); addTag(DoABC2Tag.ID, DoABC2Tag.class); addTag(DoABCTag.ID, DoABCTag.class); addTag(DoActionTag.ID, DoActionTag.class); addTag(DoInitActionTag.ID, DoInitActionTag.class); addTag(EnableDebugger2Tag.ID, EnableDebugger2Tag.class); addTag(EnableDebuggerTag.ID, EnableDebuggerTag.class); addTag(EnableTelemetryTag.ID, EnableTelemetryTag.class); addTag(EndTag.ID, EndTag.class); addTag(ExportAssetsTag.ID, ExportAssetsTag.class); addTag(FileAttributesTag.ID, FileAttributesTag.class); addTag(FrameLabelTag.ID, FrameLabelTag.class); addTag(ImportAssets2Tag.ID, ImportAssets2Tag.class); addTag(ImportAssetsTag.ID, ImportAssetsTag.class); addTag(JPEGTablesTag.ID, JPEGTablesTag.class); addTag(MetadataTag.ID, MetadataTag.class); addTag(PlaceObject2Tag.ID, PlaceObject2Tag.class); addTag(PlaceObject3Tag.ID, PlaceObject3Tag.class); addTag(PlaceObject4Tag.ID, PlaceObject4Tag.class); addTag(PlaceObjectTag.ID, PlaceObjectTag.class); addTag(ProductInfoTag.ID, ProductInfoTag.class); addTag(ProtectTag.ID, ProtectTag.class); addTag(RemoveObject2Tag.ID, RemoveObject2Tag.class); addTag(RemoveObjectTag.ID, RemoveObjectTag.class); addTag(ScriptLimitsTag.ID, ScriptLimitsTag.class); addTag(SetBackgroundColorTag.ID, SetBackgroundColorTag.class); addTag(SetTabIndexTag.ID, SetTabIndexTag.class); addTag(ShowFrameTag.ID, ShowFrameTag.class); addTag(SoundStreamBlockTag.ID, SoundStreamBlockTag.class); addTag(SoundStreamHead2Tag.ID, SoundStreamHead2Tag.class); addTag(SoundStreamHeadTag.ID, SoundStreamHeadTag.class); addTag(StartSound2Tag.ID, StartSound2Tag.class); addTag(StartSoundTag.ID, StartSoundTag.class); addTag(SymbolClassTag.ID, SymbolClassTag.class); addTag(VideoFrameTag.ID, VideoFrameTag.class); addTag(DefineCompactedFont.ID, DefineCompactedFont.class); addTag(DefineExternalGradient.ID, DefineExternalGradient.class); addTag(DefineExternalImage.ID, DefineExternalImage.class); addTag(DefineExternalImage2.ID, DefineExternalImage2.class); addTag(DefineExternalSound.ID, DefineExternalSound.class); addTag(DefineExternalStreamSound.ID, DefineExternalStreamSound.class); addTag(DefineGradientMap.ID, DefineGradientMap.class); addTag(DefineSubImage.ID, DefineSubImage.class); addTag(ExporterInfo.ID, ExporterInfo.class); addTag(FontTextureInfo.ID, FontTextureInfo.class); } private static void addTag(int tagId, Class<?> cl) { tagIdClassMap.put(tagId, cl); classTagIdMap.put(cl, tagId); } public static Class<?> getClassByTagId(int tagId) { return tagIdClassMap.get(tagId); } public static Integer getTagIdByClass(Class cl) { return classTagIdMap.get(cl); } }