OSDN Git Service

1a98d790e2a9fc07dbc57f418dd2e1b0c4151cfa
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / ToonMap.java
1 /*
2  * toon file mapping
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd;
9
10 import java.util.Collections;
11 import java.util.Map;
12 import java.util.TreeMap;
13
14 /**
15  * インデックス化されたトゥーンファイル構成。
16  * 既存のトゥーンファイル構成と異なるトゥーンファイル名を用いることが可能。
17  * <h1>デフォルトのトゥーンファイル構成。</h1>
18  * <ul>
19  * <li>0x00:toon01.bmp
20  * <li>0x01:toon02.bmp
21  * <li>.....
22  * <li>0x09:toon10.bmp
23  * <li>0xff:toon0.bmp
24  * </ul>
25  */
26 public class ToonMap {
27
28     private static final Map<Integer, String> DEF_TOONMAP;
29
30     static{
31         Map<Integer, String> map = new TreeMap<Integer, String>();
32
33         map.put(0x00, "toon01.bmp");
34         map.put(0x01, "toon02.bmp");
35         map.put(0x02, "toon03.bmp");
36         map.put(0x03, "toon04.bmp");
37         map.put(0x04, "toon05.bmp");
38         map.put(0x05, "toon06.bmp");
39         map.put(0x06, "toon07.bmp");
40         map.put(0x07, "toon08.bmp");
41         map.put(0x08, "toon09.bmp");
42         map.put(0x09, "toon10.bmp");
43         map.put(0xff, "toon0.bmp");
44
45         DEF_TOONMAP = Collections.unmodifiableMap(map);
46     }
47
48     private final Map<Integer, String> toonMap =
49             new TreeMap<Integer, String>(DEF_TOONMAP);
50
51     /**
52      * コンストラクタ。
53      */
54     public ToonMap(){
55         super();
56         return;
57     }
58
59     /**
60      * 指定したインデックス値に対応したトゥーンファイル名を返す。
61      * @param idx インデックス値
62      * @return トゥーンファイル名。該当するものがなければnull
63      */
64     public String getIndexedToon(int idx){
65         String result = this.toonMap.get(idx);
66         return result;
67     }
68
69     /**
70      * 指定したインデックス値にトゥーンファイル名を設定する。
71      * @param idx インデックス値
72      * @param toonFileName トゥーンフィル名
73      * @throws NullPointerException トゥーンファイル名がnull
74      */
75     public void setIndexedToon(int idx, String toonFileName)
76             throws NullPointerException{
77         if(toonFileName == null) throw new NullPointerException();
78         this.toonMap.put(idx, toonFileName);
79         return;
80     }
81
82     /**
83      * このトゥーンファイル構成がデフォルトのトゥーンファイル構成と等しいか判定する。
84      * @return 等しければtrue
85      */
86     public boolean isDefaultMap(){
87         if(this.toonMap.equals(DEF_TOONMAP)) return true;
88         return false;
89     }
90
91     /**
92      * 指定インデックスのトゥーンファイル名がデフォルトと等しいか判定する。
93      * @param idx インデックス
94      * @return デフォルトと等しければtrue。
95      */
96     public boolean isDefaultToon(int idx){
97         String thisToon = this.toonMap.get(idx);
98         if(thisToon == null) return false;
99
100         String defToon = DEF_TOONMAP.get(idx);
101         if(thisToon.equals(defToon)) return true;
102
103         return false;
104     }
105
106     /**
107      * このトゥーンファイル構成をデフォルト構成内容でリセットする。
108      */
109     public void resetDefaultMap(){
110         this.toonMap.clear();
111         this.toonMap.putAll(DEF_TOONMAP);
112         return;
113     }
114
115     /**
116      * 指定インデックスのトゥーンファイル名をデフォルトのトゥーンファイル名にリセットする。
117      * @param idx インデックス値
118      */
119     public void resetIndexedToon(int idx){
120         String toonFile = DEF_TOONMAP.get(idx);
121         this.toonMap.put(idx, toonFile);
122         return;
123     }
124
125     /**
126      * {@inheritDoc}
127      * @return {@inheritDoc}
128      */
129     @Override
130     public String toString(){
131         StringBuilder result = new StringBuilder();
132
133         boolean dumped = false;
134         for(Map.Entry<Integer, String> entry : this.toonMap.entrySet()){
135             Integer idx = entry.getKey();
136             String toonFile = entry.getValue();
137
138             if(dumped) result.append(", ");
139             result.append('(').append(idx).append(')');
140             result.append(toonFile);
141             dumped = true;
142         }
143
144         return result.toString();
145     }
146
147 }