Files
jpexs-decompiler/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/FlashPlayerVersion.java
Jindra Petřík b1c5f9d0c6 Checkstyle fix
2025-04-13 14:13:27 +02:00

183 lines
6.7 KiB
Java

/*
* Copyright (C) 2010-2024 JPEXS, All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
*/
package com.jpexs.decompiler.flash;
import java.util.HashMap;
import java.util.Map;
/**
* Converts Flash player version to SWF version and vice versa.
*
* @author JPEXS
*/
public class FlashPlayerVersion {
private static final Map<String, Integer> flashPlayerToSwfVersion = new HashMap<>();
private static final Map<String, Integer> airToSwfVersion = new HashMap<>();
private static final Map<Integer, String> swfVersionToFlashPlayer = new HashMap<>();
private static final Map<Integer, String> swfVersionToAir = new HashMap<>();
static {
flashPlayerToSwfVersion.put("9.0", 9); //9.0.115.0
flashPlayerToSwfVersion.put("10.0", 10);
flashPlayerToSwfVersion.put("10.1", 10);
flashPlayerToSwfVersion.put("10.2", 11);
flashPlayerToSwfVersion.put("10.3", 12);
flashPlayerToSwfVersion.put("11.0", 13);
flashPlayerToSwfVersion.put("11.1", 14);
flashPlayerToSwfVersion.put("11.2", 15);
flashPlayerToSwfVersion.put("11.3", 16);
flashPlayerToSwfVersion.put("11.4", 17);
flashPlayerToSwfVersion.put("11.5", 18);
flashPlayerToSwfVersion.put("11.6", 19);
flashPlayerToSwfVersion.put("11.7", 20);
flashPlayerToSwfVersion.put("11.8", 21);
flashPlayerToSwfVersion.put("11.9", 22);
flashPlayerToSwfVersion.put("12.0", 23);
flashPlayerToSwfVersion.put("13.0", 24);
flashPlayerToSwfVersion.put("14.0", 25);
flashPlayerToSwfVersion.put("15.0", 26);
flashPlayerToSwfVersion.put("16.0", 27);
flashPlayerToSwfVersion.put("17.0", 28);
flashPlayerToSwfVersion.put("18.0", 29);
flashPlayerToSwfVersion.put("19.0", 30);
flashPlayerToSwfVersion.put("20.0", 31);
flashPlayerToSwfVersion.put("21.0", 32);
flashPlayerToSwfVersion.put("22.0", 33);
flashPlayerToSwfVersion.put("23.0", 34);
flashPlayerToSwfVersion.put("24.0", 35);
flashPlayerToSwfVersion.put("25.0", 36);
flashPlayerToSwfVersion.put("26.0", 37);
flashPlayerToSwfVersion.put("27.0", 38);
flashPlayerToSwfVersion.put("28.0", 39);
flashPlayerToSwfVersion.put("29.0", 40);
flashPlayerToSwfVersion.put("30.0", 41);
flashPlayerToSwfVersion.put("31.0", 42);
flashPlayerToSwfVersion.put("32.0", 43);
flashPlayerToSwfVersion.put("33.0", 44);
flashPlayerToSwfVersion.put("33.1", 44);
flashPlayerToSwfVersion.put("50.0", 50);
flashPlayerToSwfVersion.put("51.0", 51);
airToSwfVersion.put("1.5", 10);
airToSwfVersion.put("2.0", 10);
airToSwfVersion.put("2.6", 11);
airToSwfVersion.put("2.7", 12);
airToSwfVersion.put("3.0", 13);
airToSwfVersion.put("3.1", 14);
airToSwfVersion.put("3.2", 15);
airToSwfVersion.put("3.3", 16);
airToSwfVersion.put("3.4", 17);
airToSwfVersion.put("3.5", 18);
airToSwfVersion.put("3.6", 19);
airToSwfVersion.put("3.7", 20);
airToSwfVersion.put("3.8", 21);
airToSwfVersion.put("3.9", 22);
airToSwfVersion.put("4.0", 23);
airToSwfVersion.put("13.0", 24);
airToSwfVersion.put("14.0", 25);
airToSwfVersion.put("15.0", 26);
airToSwfVersion.put("16.0", 27);
airToSwfVersion.put("17.0", 28);
airToSwfVersion.put("18.0", 29);
airToSwfVersion.put("19.0", 30);
airToSwfVersion.put("20.0", 31);
airToSwfVersion.put("21.0", 32);
airToSwfVersion.put("22.0", 33);
airToSwfVersion.put("23.0", 34);
airToSwfVersion.put("24.0", 35);
airToSwfVersion.put("25.0", 36);
airToSwfVersion.put("26.0", 37);
airToSwfVersion.put("27.0", 38);
airToSwfVersion.put("28.0", 39);
airToSwfVersion.put("29.0", 40);
airToSwfVersion.put("30.0", 41);
airToSwfVersion.put("31.0", 42);
airToSwfVersion.put("32.0", 43);
airToSwfVersion.put("33.0", 44);
airToSwfVersion.put("33.1", 44);
airToSwfVersion.put("50.0", 50);
airToSwfVersion.put("51.0", 51);
for (String flashPlayer : flashPlayerToSwfVersion.keySet()) {
int swfVersion = flashPlayerToSwfVersion.get(flashPlayer);
if (!swfVersionToFlashPlayer.containsKey(swfVersion)) {
swfVersionToFlashPlayer.put(swfVersion, flashPlayer);
}
}
for (String air : airToSwfVersion.keySet()) {
int swfVersion = airToSwfVersion.get(air);
if (!swfVersionToAir.containsKey(swfVersion)) {
swfVersionToAir.put(swfVersion, air);
}
}
}
/**
* Gets Flash player version by SWF version
*
* @param swfVersion SWF version
* @return Flash player version or null if not found
*/
public static String getFlashPlayerBySwfVersion(int swfVersion) {
if (swfVersion > 51) {
return "51.0"; //??
}
return swfVersionToFlashPlayer.get(swfVersion);
}
/**
* Gets SWF version by Flash player version.
*
* @param flashPlayerVersion Flash player version
* @return SWF version or -1 if not found
*/
public static int getSwfVersionByFlashPlayer(String flashPlayerVersion) {
if (!flashPlayerToSwfVersion.containsKey(flashPlayerVersion)) {
return -1;
}
return flashPlayerToSwfVersion.get(flashPlayerVersion);
}
/**
* Gets Air version by SWF version
*
* @param swfVersion SWF version
* @return Air version or null if not found
*/
public static String getAirBySwfVersion(int swfVersion) {
if (swfVersion > 51) {
return "51.0"; //??
}
return swfVersionToFlashPlayer.get(swfVersion);
}
/**
* Gets SWF version by Air version.
*
* @param air Air version
* @return SWF version or -1 if not found
*/
public static int getSwfVersionByAir(String air) {
if (!airToSwfVersion.containsKey(air)) {
return -1;
}
return airToSwfVersion.get(air);
}
}