1 package charactermanaj.model.io;
\r
3 import java.util.List;
\r
4 import java.util.Map;
\r
6 import charactermanaj.graphics.filters.ColorConvertParameter;
\r
7 import charactermanaj.graphics.io.ImageResource;
\r
8 import charactermanaj.model.ColorInfo;
\r
9 import charactermanaj.model.Layer;
\r
10 import charactermanaj.model.PartsColorInfo;
\r
11 import charactermanaj.model.PartsFiles;
\r
12 import charactermanaj.model.PartsIdentifier;
\r
13 import charactermanaj.model.PartsSet;
\r
14 import charactermanaj.model.PartsSpec;
\r
15 import charactermanaj.model.PartsSpecResolver;
\r
18 * パーツセットから複合画像イメージを生成するために必要なイメージリソースを抽出する.
\r
22 public class PartsImageCollectionParser {
\r
25 * 抽出された複合画像イメージの個々のイメージソースと、カラー情報を受け取るハンドラ.<br>
\r
28 public interface PartsImageCollectionHandler {
\r
31 * 個々のイメージリソースとカラー情報を受け取るハンドラ.<br>
\r
33 * @param partsIdentifier 対象のパーツ識別子
\r
34 * @param layer パーツのレイヤー
\r
35 * @param imageResource パーツのレイヤーの画像リソース
\r
36 * @param param カラー情報、設定されていない場合はnull
\r
38 void detectImageSource(PartsIdentifier partsIdentifier,
\r
39 Layer layer, ImageResource imageResource,
\r
40 ColorConvertParameter param);
\r
44 * パーツ設定を解決するためのインターフェイス
\r
46 protected PartsSpecResolver partsSpecResolver;
\r
49 * パーツ設定のリゾルバを指定して構築する
\r
50 * @param partsSpecResolver パーツ設定のリゾルバ
\r
52 public PartsImageCollectionParser(PartsSpecResolver partsSpecResolver) {
\r
53 if (partsSpecResolver == null) {
\r
54 throw new IllegalArgumentException("resolver is null");
\r
56 this.partsSpecResolver = partsSpecResolver;
\r
59 public PartsSpecResolver getPartsSpecResolver() {
\r
60 return this.partsSpecResolver;
\r
64 * パーツセットを指定して複合画像を生成するために必要なイメージソースおよびカラー設定を解決する.<br>
\r
65 * protectedなので派生クラスで呼び出すか、publicに昇格させる.<br>
\r
66 * @param partsSet パーツセット
\r
68 public void parse(PartsSet partsSet, PartsImageCollectionHandler listener) {
\r
69 if (listener == null) {
\r
70 throw new IllegalArgumentException("listener is null");
\r
72 if (partsSet == null) {
\r
73 throw new IllegalArgumentException("PartsSet is null");
\r
76 for (List<PartsIdentifier> partsIdentifiers : partsSet.values()) {
\r
77 for (PartsIdentifier partsIdentifier : partsIdentifiers) {
\r
78 PartsColorInfo partsColorInfo = partsSet.getColorInfo(partsIdentifier);
\r
79 PartsSpec partsSpec = partsSpecResolver.getPartsSpec(partsIdentifier);
\r
80 if (partsSpec != null) {
\r
81 PartsFiles partsFiles = partsSpec.getPartsFiles();
\r
82 for (Map.Entry<Layer, ImageResource> entry : partsFiles.entrySet()) {
\r
83 Layer layer = entry.getKey();
\r
84 ImageResource file = entry.getValue();
\r
85 ColorConvertParameter param = null;
\r
86 if (partsColorInfo != null) {
\r
87 ColorInfo colorInfo = partsColorInfo.get(layer);
\r
88 if (colorInfo != null) {
\r
89 param = colorInfo.getColorParameter();
\r
92 listener.detectImageSource(partsIdentifier, layer, file, param);
\r