From fa07450606d5bf7759f6f674b8c64a92a95f12a5 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Sat, 14 Mar 2026 11:32:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0gui=E5=88=B0git?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + ui/video-encryptor/native_build.bat | 2 + ui/video-encryptor/native_build_all.bat | 7 + ui/video-encryptor/pom.xml | 73 + .../java/com/hnos/video/VideoEncryptor.java | 29 + .../com/hnos/video/VideoEncryptorGUI.java | 365 +++ .../META-INF/native-image/jni-config.json | 2102 +++++++++++++++++ .../predefined-classes-config.json | 8 + .../META-INF/native-image/proxy-config.json | 2 + .../META-INF/native-image/reflect-config.json | 411 ++++ .../native-image/resource-config.json | 59 + .../native-image/serialization-config.json | 8 + 12 files changed, 3068 insertions(+) create mode 100644 ui/video-encryptor/native_build.bat create mode 100644 ui/video-encryptor/native_build_all.bat create mode 100644 ui/video-encryptor/pom.xml create mode 100644 ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptor.java create mode 100644 ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptorGUI.java create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/jni-config.json create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/predefined-classes-config.json create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/proxy-config.json create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/reflect-config.json create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/resource-config.json create mode 100644 ui/video-encryptor/src/main/resources/META-INF/native-image/serialization-config.json diff --git a/.gitignore b/.gitignore index a000a40..ba23272 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ /app/src/androidTest/java/com/uiui/videoplayer/ /library/build/ /JZVideo/build/ +/ui/video-encryptor/.idea/ +/ui/video-encryptor/target/ diff --git a/ui/video-encryptor/native_build.bat b/ui/video-encryptor/native_build.bat new file mode 100644 index 0000000..eaec3fc --- /dev/null +++ b/ui/video-encryptor/native_build.bat @@ -0,0 +1,2 @@ +SET class_path=target/video-encryptor-1.0-SNAPSHOT.jar; +native-image --no-fallback -H:ConfigurationFileDirectories=META-INF/native-image --allow-incomplete-classpath -classpath %class_path% com.penngo.gralvm.MainSwing \ No newline at end of file diff --git a/ui/video-encryptor/native_build_all.bat b/ui/video-encryptor/native_build_all.bat new file mode 100644 index 0000000..58a7b3e --- /dev/null +++ b/ui/video-encryptor/native_build_all.bat @@ -0,0 +1,7 @@ +@REM 使用idea 的mvn clean package + +java -agentlib:native-image-agent=config-output-dir=./META-INF/native-image -jar video-encryptor-1.0.jar + +native-image -jar target\video-encryptor-1.0.jar --no-fallback -H:ConfigurationFileDirectories=.\src\main\resources\META-INF\native-image + +"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\editbin.exe" /SUBSYSTEM:WINDOWS video-encryptor-1.0.exe diff --git a/ui/video-encryptor/pom.xml b/ui/video-encryptor/pom.xml new file mode 100644 index 0000000..9c661df --- /dev/null +++ b/ui/video-encryptor/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + + com.hainaos + video-encryptor + 1.0 + + + 17 + 17 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.4.1 + + + package + + shade + + + + + com.hnos.video.VideoEncryptorGUI + + + + + + + + org.graalvm.buildtools + native-maven-plugin + 0.10.2 + true + + + build-native + + compile-no-fork + + package + + + + VideoEncryptor + com.hnos.video.VideoEncryptorGUI + + --no-fallback + + + + + + \ No newline at end of file diff --git a/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptor.java b/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptor.java new file mode 100644 index 0000000..03168af --- /dev/null +++ b/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptor.java @@ -0,0 +1,29 @@ +package com.hnos.video; + +import javax.crypto.Cipher; +import javax.crypto.CipherOutputStream; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.io.*; + +public class VideoEncryptor { + private static final String ALGORITHM = "AES/CTR/NoPadding"; + + public static void encryptFile(File inputFile, File outputFile, byte[] key, byte[] iv) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + IvParameterSpec ivSpec = new IvParameterSpec(iv); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + + try (FileInputStream fis = new FileInputStream(inputFile); + FileOutputStream fos = new FileOutputStream(outputFile); + CipherOutputStream cos = new CipherOutputStream(fos, cipher)) { + + byte[] buffer = new byte[8192]; + int read; + while ((read = fis.read(buffer)) != -1) { + cos.write(buffer, 0, read); + } + } + } +} \ No newline at end of file diff --git a/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptorGUI.java b/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptorGUI.java new file mode 100644 index 0000000..59cb99b --- /dev/null +++ b/ui/video-encryptor/src/main/java/com/hnos/video/VideoEncryptorGUI.java @@ -0,0 +1,365 @@ +package com.hnos.video; +import javax.crypto.Cipher; +import javax.crypto.CipherOutputStream; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.ExecutionException; + +/** + * 视频加密工具GUI + * 支持单文件加密和目录下所有视频文件批量加密 + * 加密后文件扩展名改为.hnv + */ +public class VideoEncryptorGUI extends JFrame { + // 加密算法常量(保持和VideoEncryptor一致) + private static final String ALGORITHM = "AES/CTR/NoPadding"; + // 视频文件扩展名列表(可根据需要扩展) + private static final List VIDEO_EXTENSIONS = Arrays.asList("mp4", "avi", "mov", "mkv", "flv", "wmv", + "rmvb"); + // 测试用AES密钥(16字节,AES-128),实际使用请替换为安全生成的密钥 + private static final byte[] TEST_KEY = "1234567890123456".getBytes(); + // 测试用IV向量(16字节,CTR模式要求IV长度等于块大小),实际使用请随机生成 + private static final byte[] TEST_IV = "1234567890123456".getBytes(); + + public VideoEncryptorGUI() { + // 初始化窗口 + initFrame(); + // 初始化界面组件 + initComponents(); + } + + /** + * 初始化窗口基本属性 + */ + private void initFrame() { + setTitle("视频加密工具"); + setSize(350, 400); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setLocationRelativeTo(null); // 居中显示 + setResizable(false); // 固定窗口大小 + } + + // 输入框组件 + private JTextField keyField; + private JTextField ivField; + // 状态文本框 + private JTextField statusField; + // 转换按钮 + private JButton convertBtn; + // 选中的文件或目录 + private File selectedFile; + private File selectedDir; + + /** + * 初始化界面组件(按钮、布局等) + */ + private void initComponents() { + // 创建面板和设置布局 + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + panel.setBorder(BorderFactory.createEmptyBorder(20, 40, 20, 40)); + + // 创建选择按钮 + JButton selectFileBtn = new JButton("选择单个视频文件"); + JButton selectDirBtn = new JButton("选择目录(批量加密)"); + + // 设置按钮大小 + Dimension btnSize = new Dimension(200, 30); + selectFileBtn.setPreferredSize(btnSize); + selectDirBtn.setPreferredSize(btnSize); + + // 添加按钮事件监听 + selectFileBtn.addActionListener(e -> selectSingleFile()); + selectDirBtn.addActionListener(e -> selectDirectory()); + + // 创建输入框标签 + JLabel keyLabel = new JLabel("密钥 (16字节):"); + JLabel ivLabel = new JLabel("IV向量 (16字节):"); + + // 创建输入框 + keyField = new JTextField("hainaos_key_123_", 20); + ivField = new JTextField("hainaos1hainaos1", 20); + + // 创建转换按钮 + convertBtn = new JButton("开始转换"); + convertBtn.setPreferredSize(btnSize); + convertBtn.addActionListener(e -> startConversion()); + + // 创建状态文本框 + statusField = new JTextField("准备就绪"); + statusField.setPreferredSize(btnSize); + statusField.setEditable(false); + statusField.setHorizontalAlignment(JTextField.CENTER); + + // 添加组件到面板(垂直排列) + panel.add(selectFileBtn); + panel.add(Box.createVerticalStrut(10)); // 垂直间距 + panel.add(selectDirBtn); + panel.add(Box.createVerticalStrut(20)); // 垂直间距 + panel.add(keyLabel); + panel.add(keyField); + panel.add(Box.createVerticalStrut(10)); // 垂直间距 + panel.add(ivLabel); + panel.add(ivField); + panel.add(Box.createVerticalStrut(20)); // 垂直间距 + panel.add(convertBtn); + panel.add(Box.createVerticalStrut(10)); // 垂直间距 + panel.add(statusField); + + // 添加面板到窗口 + add(panel); + } + + /** + * 选择单个视频文件 + */ + private void selectSingleFile() { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + fileChooser.setDialogTitle("选择要加密的视频文件"); + + // 过滤视频文件 + fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() { + @Override + public boolean accept(File f) { + if (f.isDirectory()) + return true; + String ext = getFileExtension(f); + return VIDEO_EXTENSIONS.contains(ext.toLowerCase()); + } + + @Override + public String getDescription() { + return "视频文件 (" + String.join(", ", VIDEO_EXTENSIONS) + ")"; + } + }); + + int result = fileChooser.showOpenDialog(this); + if (result == JFileChooser.APPROVE_OPTION) { + selectedFile = fileChooser.getSelectedFile(); + selectedDir = null; // 清除目录选择 + JOptionPane.showMessageDialog(this, "已选择文件:" + selectedFile.getName(), "选择成功", JOptionPane.INFORMATION_MESSAGE); + } + } + + /** + * 选择目录 + */ + private void selectDirectory() { + JFileChooser dirChooser = new JFileChooser(); + dirChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + dirChooser.setDialogTitle("选择要批量加密的目录"); + + int result = dirChooser.showOpenDialog(this); + if (result == JFileChooser.APPROVE_OPTION) { + selectedDir = dirChooser.getSelectedFile(); + selectedFile = null; // 清除文件选择 + JOptionPane.showMessageDialog(this, "已选择目录:" + selectedDir.getName(), "选择成功", JOptionPane.INFORMATION_MESSAGE); + } + } + + /** + * 开始转换过程 + */ + private void startConversion() { + // 检查是否选择了文件或目录 + if (selectedFile == null && selectedDir == null) { + JOptionPane.showMessageDialog(this, "请先选择要加密的文件或目录!", "错误", JOptionPane.ERROR_MESSAGE); + return; + } + + // 获取用户输入的key和iv + String keyStr = keyField.getText(); + String ivStr = ivField.getText(); + + // 验证key和iv的长度 + if (keyStr.length() != 16) { + JOptionPane.showMessageDialog(this, "密钥长度必须为16字节!", "错误", JOptionPane.ERROR_MESSAGE); + return; + } + if (ivStr.length() != 16) { + JOptionPane.showMessageDialog(this, "IV向量长度必须为16字节!", "错误", JOptionPane.ERROR_MESSAGE); + return; + } + + // 禁用转换按钮并更新状态 + convertBtn.setEnabled(false); + statusField.setText("转换中..."); + + // 转换为字节数组 + byte[] key = keyStr.getBytes(); + byte[] iv = ivStr.getBytes(); + + // 根据选择的是文件还是目录,开始加密 + if (selectedFile != null) { + File targetFile = getEncryptedFile(selectedFile); + encryptFileAsync(selectedFile, targetFile, key, iv); + } else if (selectedDir != null) { + traverseAndEncryptDir(selectedDir, key, iv); + } + } + + /** + * 遍历目录下所有视频文件并加密 + */ + private void traverseAndEncryptDir(File dir, byte[] key, byte[] iv) { + if (!dir.isDirectory()) { + JOptionPane.showMessageDialog(this, "选择的不是有效目录!", "错误", JOptionPane.ERROR_MESSAGE); + convertBtn.setEnabled(true); + statusField.setText("准备就绪"); + return; + } + + File[] files = dir.listFiles(); + if (files == null || files.length == 0) { + JOptionPane.showMessageDialog(this, "目录下无文件!", "提示", JOptionPane.INFORMATION_MESSAGE); + convertBtn.setEnabled(true); + statusField.setText("准备就绪"); + return; + } + + // 批量加密(使用SwingWorker避免UI卡顿) + new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + for (File file : files) { + if (file.isFile()) { + String ext = getFileExtension(file); + // 只处理视频文件 + if (VIDEO_EXTENSIONS.contains(ext.toLowerCase())) { + File targetFile = getEncryptedFile(file); + VideoEncryptor.encryptFile(file, targetFile, key, iv); + publish(file); // 发布进度 + } + } + } + return null; + } + + @Override + protected void process(List chunks) { + // 显示当前加密的文件(可选) + File lastFile = chunks.get(chunks.size() - 1); + System.out.println("已加密: " + lastFile.getName()); + } + + @Override + protected void done() { + try { + get(); // 捕获后台异常 + JOptionPane.showMessageDialog(VideoEncryptorGUI.this, + "目录下所有视频文件加密完成!", "完成", JOptionPane.INFORMATION_MESSAGE); + statusField.setText("转换完成"); + } catch (InterruptedException | ExecutionException e) { + JOptionPane.showMessageDialog(VideoEncryptorGUI.this, + "加密失败:" + e.getCause().getMessage(), + "错误", JOptionPane.ERROR_MESSAGE); + statusField.setText("转换失败"); + } finally { + convertBtn.setEnabled(true); + } + } + }.execute(); + } + + /** + * 异步加密单个文件(避免UI卡顿) + */ + private void encryptFileAsync(File sourceFile, File targetFile, byte[] key, byte[] iv) { + new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + VideoEncryptor.encryptFile(sourceFile, targetFile, key, iv); + return null; + } + + @Override + protected void done() { + try { + get(); // 捕获后台异常 + JOptionPane.showMessageDialog(VideoEncryptorGUI.this, + "文件加密成功!\n输出路径:" + targetFile.getAbsolutePath(), + "成功", JOptionPane.INFORMATION_MESSAGE); + statusField.setText("转换完成"); + } catch (InterruptedException | ExecutionException e) { + JOptionPane.showMessageDialog(VideoEncryptorGUI.this, + "加密失败:" + e.getCause().getMessage(), + "错误", JOptionPane.ERROR_MESSAGE); + statusField.setText("转换失败"); + } finally { + convertBtn.setEnabled(true); + } + } + }.execute(); + } + + /** + * 获取加密后的目标文件(替换扩展名为.hnv) + */ + private File getEncryptedFile(File sourceFile) { + String parentPath = sourceFile.getParent(); + String fileName = sourceFile.getName(); + String nameWithoutExt = fileName.substring(0, fileName.lastIndexOf(".")); + return new File(parentPath + File.separator + nameWithoutExt + ".hnv"); + } + + /** + * 获取文件扩展名 + */ + private String getFileExtension(File file) { + String name = file.getName(); + int lastDotIndex = name.lastIndexOf("."); + if (lastDotIndex == -1) + return ""; + return name.substring(lastDotIndex + 1); + } + + /** + * 加密核心类(原VideoEncryptor) + */ + static class VideoEncryptor { + private static final String ALGORITHM = "AES/CTR/NoPadding"; + + public static void encryptFile(File inputFile, File outputFile, byte[] key, byte[] iv) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); + IvParameterSpec ivSpec = new IvParameterSpec(iv); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); + + try (FileInputStream fis = new FileInputStream(inputFile); + FileOutputStream fos = new FileOutputStream(outputFile); + CipherOutputStream cos = new CipherOutputStream(fos, cipher)) { + + byte[] buffer = new byte[8192]; + int read; + while ((read = fis.read(buffer)) != -1) { + cos.write(buffer, 0, read); + } + } + } + } + + /** + * 程序入口 + */ + public static void main(String[] args) { + // 判断是否为native运行环境 + String classPath = System.getProperty("java.class.path"); + if(classPath == null || classPath.isBlank()) { + System.setProperty("java.home", "."); + } + + // Swing界面需在EDT线程中运行 + SwingUtilities.invokeLater(() -> { + VideoEncryptorGUI gui = new VideoEncryptorGUI(); + gui.setVisible(true); + }); + } +} \ No newline at end of file diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/jni-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/jni-config.json new file mode 100644 index 0000000..deb97bd --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/jni-config.json @@ -0,0 +1,2102 @@ +[ + { + "name": "[Ljava.util.Locale;" + }, + { + "name": "[Lsun.awt.shell.ShellFolderColumnInfo;" + }, + { + "name": "[Lsun.java2d.loops.GraphicsPrimitive;" + }, + { + "name": "com.hnos.video.VideoEncryptorGUI", + "methods": [ + { + "name": "main", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ] + }, + { + "name": "java.awt.AWTEvent", + "fields": [ + { + "name": "bdata" + }, + { + "name": "consumed" + }, + { + "name": "id" + } + ] + }, + { + "name": "java.awt.AlphaComposite", + "fields": [ + { + "name": "extraAlpha" + }, + { + "name": "rule" + } + ] + }, + { + "name": "java.awt.Color", + "methods": [ + { + "name": "getRGB", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.Component", + "fields": [ + { + "name": "appContext" + }, + { + "name": "background" + }, + { + "name": "cursor" + }, + { + "name": "enabled" + }, + { + "name": "focusable" + }, + { + "name": "foreground" + }, + { + "name": "graphicsConfig" + }, + { + "name": "height" + }, + { + "name": "parent" + }, + { + "name": "peer" + }, + { + "name": "visible" + }, + { + "name": "width" + }, + { + "name": "x" + }, + { + "name": "y" + } + ], + "methods": [ + { + "name": "getFont_NoClientCode", + "parameterTypes": [] + }, + { + "name": "getLocationOnScreen_NoTreeLock", + "parameterTypes": [] + }, + { + "name": "getToolkitImpl", + "parameterTypes": [] + }, + { + "name": "isEnabledImpl", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.Container", + "fields": [ + { + "name": "layoutMgr" + } + ] + }, + { + "name": "java.awt.Cursor", + "fields": [ + { + "name": "pData" + }, + { + "name": "type" + } + ], + "methods": [ + { + "name": "setPData", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "name": "java.awt.Dialog", + "fields": [ + { + "name": "title" + }, + { + "name": "undecorated" + } + ] + }, + { + "name": "java.awt.Dimension", + "fields": [ + { + "name": "height" + }, + { + "name": "width" + } + ] + }, + { + "name": "java.awt.Font", + "fields": [ + { + "name": "name" + }, + { + "name": "pData" + }, + { + "name": "size" + }, + { + "name": "style" + } + ], + "methods": [ + { + "name": "getFont", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "getFontPeer", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.FontMetrics", + "fields": [ + { + "name": "font" + } + ], + "methods": [ + { + "name": "getHeight", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.Frame", + "fields": [ + { + "name": "undecorated" + } + ] + }, + { + "name": "java.awt.Insets", + "fields": [ + { + "name": "bottom" + }, + { + "name": "left" + }, + { + "name": "right" + }, + { + "name": "top" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + } + ] + }, + { + "name": "java.awt.Point", + "fields": [ + { + "name": "x" + }, + { + "name": "y" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int" + ] + } + ] + }, + { + "name": "java.awt.Rectangle", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + } + ] + }, + { + "name": "java.awt.SequencedEvent", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.awt.AWTEvent" + ] + } + ] + }, + { + "name": "java.awt.Toolkit", + "methods": [ + { + "name": "getDefaultToolkit", + "parameterTypes": [] + }, + { + "name": "getFontMetrics", + "parameterTypes": [ + "java.awt.Font" + ] + } + ] + }, + { + "name": "java.awt.Window", + "fields": [ + { + "name": "autoRequestFocus" + }, + { + "name": "locationByPlatform" + }, + { + "name": "securityWarningHeight" + }, + { + "name": "securityWarningWidth" + }, + { + "name": "warningString" + } + ], + "methods": [ + { + "name": "calculateSecurityWarningPosition", + "parameterTypes": [ + "double", + "double", + "double", + "double" + ] + }, + { + "name": "getWarningString", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.Window$Type" + }, + { + "name": "java.awt.desktop.UserSessionEvent$Reason", + "fields": [ + { + "name": "CONSOLE" + }, + { + "name": "LOCK" + }, + { + "name": "REMOTE" + }, + { + "name": "UNSPECIFIED" + } + ] + }, + { + "name": "java.awt.event.ComponentEvent", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.awt.Component", + "int" + ] + } + ] + }, + { + "name": "java.awt.event.InputEvent", + "fields": [ + { + "name": "modifiers" + } + ], + "methods": [ + { + "name": "getButtonDownMasks", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.event.KeyEvent", + "fields": [ + { + "name": "extendedKeyCode" + }, + { + "name": "keyChar" + }, + { + "name": "keyCode" + }, + { + "name": "primaryLevelUnicode" + }, + { + "name": "rawCode" + }, + { + "name": "scancode" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.awt.Component", + "int", + "long", + "int", + "int", + "char", + "int" + ] + } + ] + }, + { + "name": "java.awt.event.MouseEvent", + "fields": [ + { + "name": "button" + }, + { + "name": "causedByTouchEvent" + }, + { + "name": "x" + }, + { + "name": "y" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.awt.Component", + "int", + "long", + "int", + "int", + "int", + "int", + "int", + "int", + "boolean", + "int" + ] + } + ] + }, + { + "name": "java.awt.geom.AffineTransform", + "fields": [ + { + "name": "m00" + }, + { + "name": "m01" + }, + { + "name": "m02" + }, + { + "name": "m10" + }, + { + "name": "m11" + }, + { + "name": "m12" + } + ] + }, + { + "name": "java.awt.geom.GeneralPath", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "", + "parameterTypes": [ + "int", + "byte[]", + "int", + "float[]", + "int" + ] + } + ] + }, + { + "name": "java.awt.geom.Path2D", + "fields": [ + { + "name": "numTypes" + }, + { + "name": "pointTypes" + }, + { + "name": "windingRule" + } + ] + }, + { + "name": "java.awt.geom.Path2D$Float", + "fields": [ + { + "name": "floatCoords" + } + ] + }, + { + "name": "java.awt.geom.Point2D$Float", + "fields": [ + { + "name": "x" + }, + { + "name": "y" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "float", + "float" + ] + } + ] + }, + { + "name": "java.awt.geom.Rectangle2D$Float", + "fields": [ + { + "name": "height" + }, + { + "name": "width" + }, + { + "name": "x" + }, + { + "name": "y" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "", + "parameterTypes": [ + "float", + "float", + "float", + "float" + ] + } + ] + }, + { + "name": "java.awt.image.BufferedImage", + "fields": [ + { + "name": "colorModel" + }, + { + "name": "imageType" + }, + { + "name": "raster" + } + ], + "methods": [ + { + "name": "getRGB", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "int", + "int" + ] + }, + { + "name": "setRGB", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "int", + "int" + ] + } + ] + }, + { + "name": "java.awt.image.ColorModel", + "fields": [ + { + "name": "colorSpace" + }, + { + "name": "colorSpaceType" + }, + { + "name": "isAlphaPremultiplied" + }, + { + "name": "is_sRGB" + }, + { + "name": "nBits" + }, + { + "name": "numComponents" + }, + { + "name": "pData" + }, + { + "name": "supportsAlpha" + }, + { + "name": "transparency" + } + ], + "methods": [ + { + "name": "getRGBdefault", + "parameterTypes": [] + } + ] + }, + { + "name": "java.awt.image.DirectColorModel", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + } + ] + }, + { + "name": "java.awt.image.IndexColorModel", + "fields": [ + { + "name": "allgrayopaque" + }, + { + "name": "colorData" + }, + { + "name": "lookupcache" + }, + { + "name": "map_size" + }, + { + "name": "rgb" + }, + { + "name": "transparent_index" + } + ] + }, + { + "name": "java.awt.image.Raster", + "fields": [ + { + "name": "dataBuffer" + }, + { + "name": "height" + }, + { + "name": "minX" + }, + { + "name": "minY" + }, + { + "name": "numBands" + }, + { + "name": "numDataElements" + }, + { + "name": "sampleModel" + }, + { + "name": "sampleModelTranslateX" + }, + { + "name": "sampleModelTranslateY" + }, + { + "name": "width" + } + ] + }, + { + "name": "java.awt.image.SampleModel", + "fields": [ + { + "name": "height" + }, + { + "name": "width" + } + ], + "methods": [ + { + "name": "getPixels", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "java.awt.image.DataBuffer" + ] + }, + { + "name": "setPixels", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "int[]", + "java.awt.image.DataBuffer" + ] + } + ] + }, + { + "name": "java.awt.image.SinglePixelPackedSampleModel", + "fields": [ + { + "name": "bitMasks" + }, + { + "name": "bitOffsets" + }, + { + "name": "bitSizes" + }, + { + "name": "maxBitSize" + } + ] + }, + { + "name": "java.lang.Boolean", + "methods": [ + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "name": "java.lang.Enum", + "methods": [ + { + "name": "name", + "parameterTypes": [] + } + ] + }, + { + "name": "java.lang.Thread", + "methods": [ + { + "name": "currentThread", + "parameterTypes": [] + } + ] + }, + { + "name": "java.util.Locale", + "methods": [ + { + "name": "forLanguageTag", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "name": "sun.awt.AWTAutoShutdown", + "methods": [ + { + "name": "notifyToolkitThreadBusy", + "parameterTypes": [] + }, + { + "name": "notifyToolkitThreadFree", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.EmbeddedFrame" + }, + { + "name": "sun.awt.ExtendedKeyCodes", + "methods": [ + { + "name": "getExtendedKeyCodeForChar", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "name": "sun.awt.FontDescriptor", + "fields": [ + { + "name": "nativeName" + }, + { + "name": "useUnicode" + } + ] + }, + { + "name": "sun.awt.LightweightFrame" + }, + { + "name": "sun.awt.PlatformFont", + "fields": [ + { + "name": "componentFonts" + }, + { + "name": "fontConfig" + } + ], + "methods": [ + { + "name": "makeConvertedMultiFontString", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "name": "sun.awt.SunHints", + "fields": [ + { + "name": "INTVAL_STROKE_PURE" + } + ] + }, + { + "name": "sun.awt.SunToolkit", + "methods": [ + { + "name": "isTouchKeyboardAutoShowEnabled", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.TimedWindowEvent", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.awt.Window", + "int", + "java.awt.Window", + "int", + "int", + "long" + ] + } + ] + }, + { + "name": "sun.awt.Win32GraphicsConfig", + "fields": [ + { + "name": "visual" + } + ] + }, + { + "name": "sun.awt.Win32GraphicsDevice", + "fields": [ + { + "name": "dynamicColorModel" + } + ] + }, + { + "name": "sun.awt.Win32GraphicsEnvironment", + "methods": [ + { + "name": "dwmCompositionChanged", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "name": "sun.awt.im.InputMethodWindow" + }, + { + "name": "sun.awt.image.BufImgSurfaceData$ICMColorData", + "fields": [ + { + "name": "pData" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "name": "sun.awt.image.ByteComponentRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataOffsets" + }, + { + "name": "pixelStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "name": "sun.awt.image.GifImageDecoder", + "fields": [ + { + "name": "outCode" + }, + { + "name": "prefix" + }, + { + "name": "suffix" + } + ], + "methods": [ + { + "name": "readBytes", + "parameterTypes": [ + "byte[]", + "int", + "int" + ] + }, + { + "name": "sendPixels", + "parameterTypes": [ + "int", + "int", + "int", + "int", + "byte[]", + "java.awt.image.ColorModel" + ] + } + ] + }, + { + "name": "sun.awt.image.ImageRepresentation", + "fields": [ + { + "name": "numSrcLUT" + }, + { + "name": "srcLUTtransIndex" + } + ] + }, + { + "name": "sun.awt.image.IntegerComponentRaster", + "fields": [ + { + "name": "data" + }, + { + "name": "dataOffsets" + }, + { + "name": "pixelStride" + }, + { + "name": "scanlineStride" + }, + { + "name": "type" + } + ] + }, + { + "name": "sun.awt.image.SunVolatileImage", + "fields": [ + { + "name": "volSurfaceManager" + } + ] + }, + { + "name": "sun.awt.image.VolatileSurfaceManager", + "fields": [ + { + "name": "sdCurrent" + } + ] + }, + { + "name": "sun.awt.shell.ShellFolderColumnInfo", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String", + "int", + "int", + "boolean" + ] + } + ] + }, + { + "name": "sun.awt.shell.Win32ShellFolder2", + "fields": [ + { + "name": "FDATE" + }, + { + "name": "FNAME" + }, + { + "name": "FSIZE" + }, + { + "name": "FTYPE" + }, + { + "name": "displayName" + }, + { + "name": "folderType" + }, + { + "name": "pIShellIcon" + } + ], + "methods": [ + { + "name": "setIShellFolder", + "parameterTypes": [ + "long" + ] + }, + { + "name": "setRelativePIDL", + "parameterTypes": [ + "long" + ] + } + ] + }, + { + "name": "sun.awt.windows.WClipboard", + "methods": [ + { + "name": "lostSelectionOwnershipImpl", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WComponentPeer", + "fields": [ + { + "name": "hwnd" + }, + { + "name": "winGraphicsConfig" + } + ], + "methods": [ + { + "name": "disposeLater", + "parameterTypes": [] + }, + { + "name": "handleExpose", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + }, + { + "name": "postEvent", + "parameterTypes": [ + "java.awt.AWTEvent" + ] + }, + { + "name": "replaceSurfaceData", + "parameterTypes": [] + }, + { + "name": "replaceSurfaceDataLater", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WDefaultFontCharset", + "fields": [ + { + "name": "fontName" + } + ] + }, + { + "name": "sun.awt.windows.WDesktopPeer", + "methods": [ + { + "name": "systemSleepCallback", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "userSessionCallback", + "parameterTypes": [ + "boolean", + "java.awt.desktop.UserSessionEvent$Reason" + ] + } + ] + }, + { + "name": "sun.awt.windows.WDesktopProperties", + "fields": [ + { + "name": "pData" + } + ], + "methods": [ + { + "name": "setBooleanProperty", + "parameterTypes": [ + "java.lang.String", + "boolean" + ] + }, + { + "name": "setColorProperty", + "parameterTypes": [ + "java.lang.String", + "int", + "int", + "int" + ] + }, + { + "name": "setFontProperty", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "int", + "int" + ] + }, + { + "name": "setIntegerProperty", + "parameterTypes": [ + "java.lang.String", + "int" + ] + }, + { + "name": "setSoundProperty", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + }, + { + "name": "setStringProperty", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + } + ] + }, + { + "name": "sun.awt.windows.WDialogPeer" + }, + { + "name": "sun.awt.windows.WFontPeer", + "fields": [ + { + "name": "textComponentFontName" + } + ] + }, + { + "name": "sun.awt.windows.WFramePeer", + "methods": [ + { + "name": "getExtendedState", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WGlobalCursorManager", + "methods": [ + { + "name": "nativeUpdateCursor", + "parameterTypes": [ + "java.awt.Component" + ] + } + ] + }, + { + "name": "sun.awt.windows.WInputMethod", + "methods": [ + { + "name": "inquireCandidatePosition", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WObjectPeer", + "fields": [ + { + "name": "createError" + }, + { + "name": "destroyed" + }, + { + "name": "pData" + }, + { + "name": "target" + } + ], + "methods": [ + { + "name": "getPeerForTarget", + "parameterTypes": [ + "java.lang.Object" + ] + } + ] + }, + { + "name": "sun.awt.windows.WPanelPeer", + "fields": [ + { + "name": "insets_" + } + ] + }, + { + "name": "sun.awt.windows.WToolkit", + "methods": [ + { + "name": "displayChanged", + "parameterTypes": [] + }, + { + "name": "paletteChanged", + "parameterTypes": [] + }, + { + "name": "windowsSettingChange", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WWindowPeer", + "fields": [ + { + "name": "windowType" + } + ], + "methods": [ + { + "name": "draggedToNewScreen", + "parameterTypes": [] + }, + { + "name": "getActiveWindowHandles", + "parameterTypes": [ + "java.awt.Component" + ] + }, + { + "name": "notifyWindowStateChanged", + "parameterTypes": [ + "int", + "int" + ] + }, + { + "name": "setBackground", + "parameterTypes": [ + "java.awt.Color" + ] + } + ] + }, + { + "name": "sun.font.CharToGlyphMapper", + "methods": [ + { + "name": "charToGlyph", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "name": "sun.font.Font2D", + "methods": [ + { + "name": "canDisplay", + "parameterTypes": [ + "char" + ] + }, + { + "name": "charToGlyph", + "parameterTypes": [ + "int" + ] + }, + { + "name": "charToVariationGlyph", + "parameterTypes": [ + "int", + "int" + ] + }, + { + "name": "getMapper", + "parameterTypes": [] + }, + { + "name": "getTableBytes", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "name": "sun.font.FontStrike", + "methods": [ + { + "name": "getGlyphMetrics", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "name": "sun.font.FreetypeFontScaler", + "methods": [ + { + "name": "invalidateScaler", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.font.GlyphList", + "fields": [ + { + "name": "gposx" + }, + { + "name": "gposy" + }, + { + "name": "images" + }, + { + "name": "lcdRGBOrder" + }, + { + "name": "lcdSubPixPos" + }, + { + "name": "len" + }, + { + "name": "positions" + }, + { + "name": "usePositions" + } + ] + }, + { + "name": "sun.font.PhysicalStrike", + "fields": [ + { + "name": "pScalerContext" + } + ], + "methods": [ + { + "name": "adjustPoint", + "parameterTypes": [ + "java.awt.geom.Point2D$Float" + ] + }, + { + "name": "getGlyphPoint", + "parameterTypes": [ + "int", + "int" + ] + } + ] + }, + { + "name": "sun.font.StrikeMetrics", + "methods": [ + { + "name": "", + "parameterTypes": [ + "float", + "float", + "float", + "float", + "float", + "float", + "float", + "float", + "float", + "float" + ] + } + ] + }, + { + "name": "sun.font.TrueTypeFont", + "methods": [ + { + "name": "readBlock", + "parameterTypes": [ + "java.nio.ByteBuffer", + "int", + "int" + ] + }, + { + "name": "readBytes", + "parameterTypes": [ + "int", + "int" + ] + } + ] + }, + { + "name": "sun.font.Type1Font", + "methods": [ + { + "name": "readFile", + "parameterTypes": [ + "java.nio.ByteBuffer" + ] + } + ] + }, + { + "name": "sun.java2d.Disposer", + "methods": [ + { + "name": "addRecord", + "parameterTypes": [ + "java.lang.Object", + "long", + "long" + ] + } + ] + }, + { + "name": "sun.java2d.InvalidPipeException" + }, + { + "name": "sun.java2d.NullSurfaceData" + }, + { + "name": "sun.java2d.SunGraphics2D", + "fields": [ + { + "name": "clipRegion" + }, + { + "name": "composite" + }, + { + "name": "eargb" + }, + { + "name": "lcdTextContrast" + }, + { + "name": "pixel" + }, + { + "name": "strokeHint" + } + ] + }, + { + "name": "sun.java2d.SurfaceData", + "fields": [ + { + "name": "pData" + }, + { + "name": "valid" + } + ] + }, + { + "name": "sun.java2d.d3d.D3DGraphicsDevice$1", + "methods": [ + { + "name": "run", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.java2d.d3d.D3DRenderQueue$1", + "methods": [ + { + "name": "run", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.java2d.d3d.D3DSurfaceData", + "fields": [ + { + "name": "nativeHeight" + }, + { + "name": "nativeWidth" + } + ], + "methods": [ + { + "name": "dispose", + "parameterTypes": [ + "long" + ] + }, + { + "name": "setSurfaceLost", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "name": "sun.java2d.d3d.D3DSurfaceData$1", + "methods": [ + { + "name": "run", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.java2d.d3d.D3DSurfaceData$D3DWindowSurfaceData" + }, + { + "name": "sun.java2d.loops.Blit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.BlitBg", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.CompositeType", + "fields": [ + { + "name": "AnyAlpha" + }, + { + "name": "Src" + }, + { + "name": "SrcNoEa" + }, + { + "name": "SrcOver" + }, + { + "name": "SrcOverNoEa" + }, + { + "name": "Xor" + } + ] + }, + { + "name": "sun.java2d.loops.DrawGlyphList", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawGlyphListAA", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawGlyphListLCD", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawLine", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawParallelogram", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawPath", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawPolygons", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.DrawRect", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.FillParallelogram", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.FillPath", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.FillRect", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.FillSpans", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.GraphicsPrimitive", + "fields": [ + { + "name": "pNativePrim" + } + ] + }, + { + "name": "sun.java2d.loops.GraphicsPrimitiveMgr", + "methods": [ + { + "name": "register", + "parameterTypes": [ + "sun.java2d.loops.GraphicsPrimitive[]" + ] + } + ] + }, + { + "name": "sun.java2d.loops.MaskBlit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.MaskFill", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.ScaledBlit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.SurfaceType", + "fields": [ + { + "name": "Any3Byte" + }, + { + "name": "Any4Byte" + }, + { + "name": "AnyByte" + }, + { + "name": "AnyColor" + }, + { + "name": "AnyInt" + }, + { + "name": "AnyShort" + }, + { + "name": "ByteBinary1Bit" + }, + { + "name": "ByteBinary2Bit" + }, + { + "name": "ByteBinary4Bit" + }, + { + "name": "ByteGray" + }, + { + "name": "ByteIndexed" + }, + { + "name": "ByteIndexedBm" + }, + { + "name": "FourByteAbgr" + }, + { + "name": "FourByteAbgrPre" + }, + { + "name": "Index12Gray" + }, + { + "name": "Index8Gray" + }, + { + "name": "IntArgb" + }, + { + "name": "IntArgbBm" + }, + { + "name": "IntArgbPre" + }, + { + "name": "IntBgr" + }, + { + "name": "IntRgb" + }, + { + "name": "IntRgbx" + }, + { + "name": "OpaqueColor" + }, + { + "name": "ThreeByteBgr" + }, + { + "name": "Ushort4444Argb" + }, + { + "name": "Ushort555Rgb" + }, + { + "name": "Ushort555Rgbx" + }, + { + "name": "Ushort565Rgb" + }, + { + "name": "UshortGray" + }, + { + "name": "UshortIndexed" + } + ] + }, + { + "name": "sun.java2d.loops.TransformHelper", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] + }, + { + "name": "sun.java2d.loops.XORComposite", + "fields": [ + { + "name": "alphaMask" + }, + { + "name": "xorColor" + }, + { + "name": "xorPixel" + } + ] + }, + { + "name": "sun.java2d.pipe.Region", + "fields": [ + { + "name": "bands" + }, + { + "name": "endIndex" + }, + { + "name": "hix" + }, + { + "name": "hiy" + }, + { + "name": "lox" + }, + { + "name": "loy" + } + ] + }, + { + "name": "sun.java2d.pipe.RegionIterator", + "fields": [ + { + "name": "curIndex" + }, + { + "name": "numXbands" + }, + { + "name": "region" + } + ] + }, + { + "name": "sun.java2d.windows.WindowsFlags", + "fields": [ + { + "name": "d3dEnabled" + }, + { + "name": "d3dSet" + }, + { + "name": "offscreenSharingEnabled" + }, + { + "name": "setHighDPIAware" + } + ] + } +] diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/predefined-classes-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/predefined-classes-config.json new file mode 100644 index 0000000..86de6bb --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/predefined-classes-config.json @@ -0,0 +1,8 @@ +[ + { + "type": "agent-extracted", + "classes": [ + ] + } +] + diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/proxy-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/proxy-config.json new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/proxy-config.json @@ -0,0 +1,2 @@ +[ +] diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/reflect-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/reflect-config.json new file mode 100644 index 0000000..5ca2816 --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/reflect-config.json @@ -0,0 +1,411 @@ +[ + { + "name": "[B" + }, + { + "name": "[C" + }, + { + "name": "[Ljava.awt.event.MouseMotionListener;" + }, + { + "name": "com.hnos.video.VideoEncryptorGUI", + "methods": [ + { + "name": "coalesceEvents", + "parameterTypes": [ + "java.awt.AWTEvent", + "java.awt.AWTEvent" + ] + } + ] + }, + { + "name": "com.sun.crypto.provider.AESCipher$General", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "default" + }, + { + "name": "java.awt.Image" + }, + { + "name": "java.awt.SequencedEvent" + }, + { + "name": "java.awt.event.KeyEvent", + "fields": [ + { + "name": "VK_A" + }, + { + "name": "VK_BACK_SLASH" + }, + { + "name": "VK_BACK_SPACE" + }, + { + "name": "VK_C" + }, + { + "name": "VK_CONTEXT_MENU" + }, + { + "name": "VK_COPY" + }, + { + "name": "VK_CUT" + }, + { + "name": "VK_DELETE" + }, + { + "name": "VK_DOWN" + }, + { + "name": "VK_END" + }, + { + "name": "VK_ENTER" + }, + { + "name": "VK_ESCAPE" + }, + { + "name": "VK_F10" + }, + { + "name": "VK_F2" + }, + { + "name": "VK_F5" + }, + { + "name": "VK_H" + }, + { + "name": "VK_HOME" + }, + { + "name": "VK_INSERT" + }, + { + "name": "VK_KP_DOWN" + }, + { + "name": "VK_KP_LEFT" + }, + { + "name": "VK_KP_RIGHT" + }, + { + "name": "VK_KP_UP" + }, + { + "name": "VK_LEFT" + }, + { + "name": "VK_O" + }, + { + "name": "VK_PAGE_DOWN" + }, + { + "name": "VK_PAGE_UP" + }, + { + "name": "VK_PASTE" + }, + { + "name": "VK_RIGHT" + }, + { + "name": "VK_SLASH" + }, + { + "name": "VK_SPACE" + }, + { + "name": "VK_UP" + }, + { + "name": "VK_V" + }, + { + "name": "VK_X" + } + ] + }, + { + "name": "java.io.InputStream" + }, + { + "name": "java.io.Reader" + }, + { + "name": "java.lang.String" + }, + { + "name": "java.net.URL" + }, + { + "name": "java.nio.ByteBuffer" + }, + { + "name": "java.nio.CharBuffer" + }, + { + "name": "java.rmi.MarshalledObject", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "get", + "parameterTypes": [] + } + ] + }, + { + "name": "java.rmi.Remote" + }, + { + "name": "java.security.SecureRandomParameters" + }, + { + "name": "java.util.List" + }, + { + "name": "java.util.concurrent.atomic.AtomicBoolean", + "fields": [ + { + "name": "value" + } + ] + }, + { + "name": "javax.swing.plaf.basic.BasicListUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.basic.BasicOptionPaneUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + }, + { + "name": "loadActionMap", + "parameterTypes": [ + "javax.swing.plaf.basic.LazyActionMap" + ] + } + ] + }, + { + "name": "javax.swing.plaf.basic.BasicPanelUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.basic.BasicPopupMenuUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.basic.BasicViewportUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalButtonUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalComboBoxUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalFileChooserUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalLabelUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalRootPaneUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalScrollBarUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalScrollPaneUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalTextFieldUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "javax.swing.plaf.metal.MetalToggleButtonUI", + "methods": [ + { + "name": "createUI", + "parameterTypes": [ + "javax.swing.JComponent" + ] + } + ] + }, + { + "name": "sun.awt.Symbol", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.Win32FontManager", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.shell.Win32ShellFolderManager2", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.awt.windows.WingDings", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.java2d.marlin.DMarlinRenderingEngine", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "name": "sun.security.provider.DRBG", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.security.SecureRandomParameters" + ] + } + ] + } +] diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/resource-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/resource-config.json new file mode 100644 index 0000000..0c6e375 --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/resource-config.json @@ -0,0 +1,59 @@ +{ + "resources": { + "includes": [ + { + "pattern": "java.datatransfer:\\Qsun/datatransfer/resources/flavormap.properties\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/computer.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/directory.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/file.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/floppy.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/hardDrive.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/homeFolder.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/info.png\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/newFolder.gif\\E" + }, + { + "pattern": "java.desktop:\\Qjavax/swing/plaf/metal/icons/ocean/upFolder.gif\\E" + } + ] + }, + "bundles": [ + { + "name": "com.sun.swing.internal.plaf.basic.resources.basic", + "classNames": [ + "com.sun.swing.internal.plaf.basic.resources.basic", + "com.sun.swing.internal.plaf.basic.resources.basic_zh_CN" + ] + }, + { + "name": "com.sun.swing.internal.plaf.metal.resources.metal", + "classNames": [ + "com.sun.swing.internal.plaf.metal.resources.metal", + "com.sun.swing.internal.plaf.metal.resources.metal_zh_CN" + ] + }, + { + "name": "sun.awt.resources.awt", + "classNames": [ + "sun.awt.resources.awt", + "sun.awt.resources.awt_zh_CN" + ] + } + ] +} diff --git a/ui/video-encryptor/src/main/resources/META-INF/native-image/serialization-config.json b/ui/video-encryptor/src/main/resources/META-INF/native-image/serialization-config.json new file mode 100644 index 0000000..681d9fd --- /dev/null +++ b/ui/video-encryptor/src/main/resources/META-INF/native-image/serialization-config.json @@ -0,0 +1,8 @@ +{ + "types": [ + ], + "lambdaCapturingTypes": [ + ], + "proxies": [ + ] +}