// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/dev/DeviceConstants.java
// public interface DeviceConstants {
//     //    Brush Style
//     int BRUSH_SOLID = 0;
// 
//     //    Pen style
//     int PEN_SOLID = 0;
//     int PEN_DASH = 1;
// 
//     // Env type
//     int ENV_SIM = 0;
//     int ENV_9288 = 9288;
//     int ENV_9188 = 9188;
//     int ENV_9288T = 9287;
//     int ENV_9288S = 9286;
//     int ENV_9388 = 9388;
//     int ENV_9688 = 9688;
// 
//     /**
//      * Draw image with key color
//      */
//     int DRAW_KEY_COLOR = 1;
//     /**
//      * No font background
//      */
//     int BACKGROUND_TRANSPARENT = 1;
// 
//     /**
//      * With font background
//      */
//     int BACKGROUND_OPAQUE = 2;
// 
//     enum FontType implements IsInt {
//         FONT_12SONG(0, 12),
//         FONT_12KAI(1, 12),
//         FONT_12HEI(2, 12),
//         FONT_16SONG(3, 16),
//         FONT_16KAI(4, 16),
//         FONT_16HEI(5, 16),
//         FONT_24SONG(6, 24),
//         FONT_24KAI(7, 24),
//         FONT_24HEI(8, 24);
//         private final int value;
//         private final int size;
// 
//         FontType(int value, int size) {
//             this.value = value;
//             this.size = size;
//         }
// 
//         public int asInt() {
//             return value;
//         }
// 
//         public int getSize() {
//             return size;
//         }
//     }
// 
// //    enum BackgroundMode implements IsInt {
// //        /**
// //         * 透明显示，即字体的背景颜色无效。
// //         */
// //        TRANSPARENT(1),
// //        /**
// //         * 不透明显示，即字体的背景颜色有效
// //         */
// //        OPAQUE(2);
// //        private final int value;
// //
// //        BackgroundMode(int value) {
// //            this.value = value;
// //        }
// //
// //        public int asInt() {
// //            return value;
// //        }
// //    }
// 
//     @MagicConstant(intValues = {ENV_SIM, ENV_9188, ENV_9288, ENV_9288S, ENV_9288T, ENV_9388, ENV_9688})
//     @interface Env {
//     }
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/dev/ResourceManager.java
// public interface ResourceManager<M extends ResourceManager, R extends Resource> {
//     R getResource(int handler) throws ResourceMissingException;
// 
//     /**
//      * Close this resource, if the resource is not exists may not throw an exception
//      */
//     default R close(int handler) {
//         try {
//             R resource = getResource(handler);
//             resource.close();
//         } catch (ResourceMissingException e) {
//             // ignored
//         } catch (Exception e) {
//             Throwables.propagate(e);
//         }
// 
//         return null;
//     }
// 
//     @SuppressWarnings("unchecked")
//     default M reset() {
//         // If this resources do not need to reset
//         return (M) this;
//     }
// 
//     default R create() {
//         throw new UnsupportedOperationException();
//     }
// 
//     String getType();
// 
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/exception/ResourceMissingException.java
// public class ResourceMissingException extends ExecutionException {
//     private String type;
//     private int handler;
// 
//     public ResourceMissingException(String message, String type, int handler) {
//         super(message);
//         this.type = type;
//         this.handler = handler;
//     }
// 
//     public ResourceMissingException(String type, int handler) {
//         this.type = type;
//         this.handler = handler;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//             .add("type", type)
//             .add("handler", handler)
//             .add("message", getMessage())
//             .toString();
//     }
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/util/IntEnums.java
// public class IntEnums {
//     private static final Table<Class, Integer, Object> cache = HashBasedTable.create();
// 
//     @SafeVarargs
//     public static <T extends Enum & IsInt> void cache(Class<? extends T>... type) {
//         for (Class<? extends T> t : type) {
//             cache(t);
//         }
//     }
// 
//     private static <T extends Enum & IsInt> void cache(Class<? extends T> type) {
//         for (T item : type.getEnumConstants()) {
//             cache.put(type, item.asInt(), item);
//         }
//     }
// 
//     @SuppressWarnings("unchecked")
//     public static <T extends Enum & IsInt> T fromInt(Class<T> type, int value) {
//         return (T) cache.get(type, value);
//     }
// }


import com.google.inject.Module;
import me.wener.bbvm.dev.DeviceConstants;
import me.wener.bbvm.dev.ResourceManager;
import me.wener.bbvm.exception.ResourceMissingException;
import me.wener.bbvm.util.IntEnums;
package me.wener.bbvm.dev.swing;


/**
 * @author wener
 * @since 15/12/18
 */
public class Swings implements DeviceConstants {
    static {
        IntEnums.cache(FontType.class);
    }

// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/dev/DeviceConstants.java
// public interface DeviceConstants {
//     //    Brush Style
//     int BRUSH_SOLID = 0;
// 
//     //    Pen style
//     int PEN_SOLID = 0;
//     int PEN_DASH = 1;
// 
//     // Env type
//     int ENV_SIM = 0;
//     int ENV_9288 = 9288;
//     int ENV_9188 = 9188;
//     int ENV_9288T = 9287;
//     int ENV_9288S = 9286;
//     int ENV_9388 = 9388;
//     int ENV_9688 = 9688;
// 
//     /**
//      * Draw image with key color
//      */
//     int DRAW_KEY_COLOR = 1;
//     /**
//      * No font background
//      */
//     int BACKGROUND_TRANSPARENT = 1;
// 
//     /**
//      * With font background
//      */
//     int BACKGROUND_OPAQUE = 2;
// 
//     enum FontType implements IsInt {
//         FONT_12SONG(0, 12),
//         FONT_12KAI(1, 12),
//         FONT_12HEI(2, 12),
//         FONT_16SONG(3, 16),
//         FONT_16KAI(4, 16),
//         FONT_16HEI(5, 16),
//         FONT_24SONG(6, 24),
//         FONT_24KAI(7, 24),
//         FONT_24HEI(8, 24);
//         private final int value;
//         private final int size;
// 
//         FontType(int value, int size) {
//             this.value = value;
//             this.size = size;
//         }
// 
//         public int asInt() {
//             return value;
//         }
// 
//         public int getSize() {
//             return size;
//         }
//     }
// 
// //    enum BackgroundMode implements IsInt {
// //        /**
// //         * 透明显示，即字体的背景颜色无效。
// //         */
// //        TRANSPARENT(1),
// //        /**
// //         * 不透明显示，即字体的背景颜色有效
// //         */
// //        OPAQUE(2);
// //        private final int value;
// //
// //        BackgroundMode(int value) {
// //            this.value = value;
// //        }
// //
// //        public int asInt() {
// //            return value;
// //        }
// //    }
// 
//     @MagicConstant(intValues = {ENV_SIM, ENV_9188, ENV_9288, ENV_9288S, ENV_9288T, ENV_9388, ENV_9688})
//     @interface Env {
//     }
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/dev/ResourceManager.java
// public interface ResourceManager<M extends ResourceManager, R extends Resource> {
//     R getResource(int handler) throws ResourceMissingException;
// 
//     /**
//      * Close this resource, if the resource is not exists may not throw an exception
//      */
//     default R close(int handler) {
//         try {
//             R resource = getResource(handler);
//             resource.close();
//         } catch (ResourceMissingException e) {
//             // ignored
//         } catch (Exception e) {
//             Throwables.propagate(e);
//         }
// 
//         return null;
//     }
// 
//     @SuppressWarnings("unchecked")
//     default M reset() {
//         // If this resources do not need to reset
//         return (M) this;
//     }
// 
//     default R create() {
//         throw new UnsupportedOperationException();
//     }
// 
//     String getType();
// 
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/exception/ResourceMissingException.java
// public class ResourceMissingException extends ExecutionException {
//     private String type;
//     private int handler;
// 
//     public ResourceMissingException(String message, String type, int handler) {
//         super(message);
//         this.type = type;
//         this.handler = handler;
//     }
// 
//     public ResourceMissingException(String type, int handler) {
//         this.type = type;
//         this.handler = handler;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(this)
//             .add("type", type)
//             .add("handler", handler)
//             .add("message", getMessage())
//             .toString();
//     }
// }
// 
// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/util/IntEnums.java
// public class IntEnums {
//     private static final Table<Class, Integer, Object> cache = HashBasedTable.create();
// 
//     @SafeVarargs
//     public static <T extends Enum & IsInt> void cache(Class<? extends T>... type) {
//         for (Class<? extends T> t : type) {
//             cache(t);
//         }
//     }
// 
//     private static <T extends Enum & IsInt> void cache(Class<? extends T> type) {
//         for (T item : type.getEnumConstants()) {
//             cache.put(type, item.asInt(), item);
//         }
//     }
// 
//     @SuppressWarnings("unchecked")
//     public static <T extends Enum & IsInt> T fromInt(Class<T> type, int value) {
//         return (T) cache.get(type, value);
//     }
// }


// Path: jbbvm/bbvm-core/src/main/java/me/wener/bbvm/dev/swing/Swings.java
import com.google.inject.Module;
import me.wener.bbvm.dev.DeviceConstants;
import me.wener.bbvm.dev.ResourceManager;
import me.wener.bbvm.exception.ResourceMissingException;
import me.wener.bbvm.util.IntEnums;

package me.wener.bbvm.dev.swing;


/**
 * @author wener
 * @since 15/12/18
 */
public class Swings implements DeviceConstants {
    static {
        IntEnums.cache(FontType.class);
    }

    public static Module module() {