OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / BoneType.java
1 /*\r
2  * bone type\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.pmd;\r
9 \r
10 import java.util.Locale;\r
11 import java.util.ResourceBundle;\r
12 \r
13 /**\r
14  * ボーン種別。\r
15  * <ul>\r
16  * <li>0x00:回転\r
17  * <li>0x01:回転/移動\r
18  * <li>0x02:IK\r
19  * <li>0x03:不明\r
20  * <li>0x04:IK影響下(回転)\r
21  * <li>0x05:回転影響下\r
22  * <li>0x06:IK接続先\r
23  * <li>0x07:非表示\r
24  * <li>0x08:捩り\r
25  * <li>0x09:回転連動\r
26  * </ul>\r
27  */\r
28 public enum BoneType {\r
29 \r
30     /** 回転。 */\r
31     ROTATE(0x00),\r
32     /** 回転/移動。 */\r
33     ROTMOV(0x01),\r
34     /** IK。 */\r
35     IK(0x02),\r
36     /** 不明。 */\r
37     UNKNOWN(0x03),\r
38     /** IK影響下(回転)。 */\r
39     UNDERIK(0x04),\r
40     /** 回転影響下。 */\r
41     UNDERROT(0x05),\r
42     /** IK接続先。 */\r
43     IKCONNECTED(0x06),\r
44     /** 非表示。 */\r
45     HIDDEN(0x07),\r
46     /** 捩り。 */\r
47     TWIST(0x08),\r
48     /** 回転連動。 */\r
49     LINKEDROT(0x09),\r
50     ;\r
51 \r
52     private static final String FAMILY_NAME =\r
53             "jp.sourceforge.mikutoga.pmd.resources.BoneTypeName";\r
54 \r
55     private final byte encoded;\r
56 \r
57     /**\r
58      * コンストラクタ。\r
59      * @param code 符号化int値\r
60      */\r
61     private BoneType(int code){\r
62         this((byte)code);\r
63         return;\r
64     }\r
65 \r
66     /**\r
67      * コンストラクタ。\r
68      * @param code 符号化byte値\r
69      */\r
70     private BoneType(byte code){\r
71         this.encoded = code;\r
72         return;\r
73     }\r
74 \r
75     /**\r
76      * byte値からデコードする。\r
77      * @param code byte値\r
78      * @return デコードされた列挙子。該当するものがなければnull\r
79      */\r
80     public static BoneType decode(byte code){\r
81         BoneType result = null;\r
82 \r
83         for(BoneType type : values()){\r
84             if(type.encode() == code){\r
85                 result = type;\r
86                 break;\r
87             }\r
88         }\r
89 \r
90         return result;\r
91     }\r
92 \r
93     /**\r
94      * byte値にエンコードする。\r
95      * @return byte値\r
96      */\r
97     public byte encode(){\r
98         return this.encoded;\r
99     }\r
100 \r
101     /**\r
102      * デフォルトロケールでの表示名を返す。\r
103      * @return 表示名\r
104      */\r
105     public String getGuiName(){\r
106         Locale locale = Locale.getDefault();\r
107         return getGuiName(locale);\r
108     }\r
109 \r
110     /**\r
111      * ロケールに準じた表示名を返す。\r
112      * @param locale ロケール。nullならデフォルトロケールと解釈される。\r
113      * @return 表示名\r
114      */\r
115     public String getGuiName(Locale locale){\r
116         if(locale == null) return getGuiName();\r
117         ResourceBundle rb = ResourceBundle.getBundle(FAMILY_NAME, locale);\r
118         String key = name();\r
119         String result = rb.getString(key);\r
120         return result;\r
121     }\r
122 \r
123 }\r