/*
 * Copyright (C) 2005-2006 Kouji Sugisawa. All rights reserved.
 */

package jp.sourceforge.livez.ezweb;

import java.io.Serializable;

/**
 * 各種 EZweb サービス(データフォーマット)への対応情報のインターフェースです。
 * 
 * @author 杉澤 浩二
 */
public interface EZwebMultiMedia extends Serializable {

	public static final int UNSUPPORTED = 0;

	public static final int EZMOVIE_AMC_QCIF = 1;
	public static final int EZMOVIE_AMC_LIGHT = 2;
	public static final int EZMOVIE_AMC_SUBQCIF = 3;
	public static final int EZMOVIE_A1302SA = 4;

	/**
	 * EZムービー対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - AMC フォーマット (QCIF/Sub-QCIF/Light) 対応
	 * <li><code>2</code> - AMC フォーマット (Light) 対応
	 * <li><code>3</code> - AMC フォーマット (Sub-QCIF/Light) 対応
	 * <li><code>4</code> - A1302SA (仕様制限あり)
	 * <li><code>5</code> - 3GPP2 フォーマット (QCIF/Sub-QCIF/Light) 対応。AMC フォーマット (QCIF/Sub-QCIF/Light) 対応。ストリーミング再生タイプ非対応
	 * <li><code>6</code> - 3GPP2 フォーマット (QCIF/Sub-QCIF/Light) 対応。AMC フォーマット (QCIF/Sub-QCIF/Light) 対応。ストリーミング再生タイプ対応
	 * <li><code>7</code> - 3GPP2 フォーマット (QCIF/Sub-QCIF/Light) 対応。ストリーミング再生タイプ非対応
	 * <li><code>8</code> - 3GPP2 フォーマット (QCIF/Sub-QCIF/Light) 対応。ストリーミング再生タイプ対応
	 * <li><code>9</code> - 3GPP2 フォーマット (QVGA/240x180ピクセル/QCIF/Sub-QCIF/Light) 対応。ストリーミング再生タイプ対応 (QVGA/240x180ピクセル除く)
	 * </ul>
	 * 
	 * @return EZムービー対応状況
	 */
	public int getEZmovieFormat();

	/**
	 * 位置情報対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - 簡易位置情報対応
	 * <li><code>2</code> - EZナビ (MS-Assisted 方式) 対応
	 * <li><code>3</code> - EZナビ (MS-Based 方式) 対応
	 * </ul>
	 * 
	 * @return 位置情報対応状況
	 */
	public int getGps();

	public static final int EZAPPLI_PHASE_1		= 1;
	public static final int EZAPPLI_PHASE_2		= 2;
	public static final int EZAPPLI_PHASE_2_5_MA3	= 3;
	public static final int EZAPPLI_PHASE_2_5		= 4;
	public static final int EZAPPLI_PHASE_3_0		= 5;

	/**
	 * EZアプリ(Java)対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - Phase 1 対応
	 * <li><code>2</code> - Phase 2 対応
	 * <li><code>3</code> - Phase 2.5 (SMAF MA3 Phase データ再生機能のみ) 対応
	 * <li><code>4</code> - Phase 2.5 対応
	 * <li><code>5</code> - Phase 3.0 対応
	 * </ul>
	 * 
	 * @return EZアプリ(Java)対応状況
	 */
	public int getJava();

	public static final int CMIDI_1_0	= 1;
	public static final int CMIDI_2_0	= 2;
	public static final int CMIDI_3_0	= 3;

	/**
	 * C-MIDI 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - C-MIDI 1.0 対応
	 * <li><code>2</code> - C-MIDI 2.0 対応
	 * <li><code>3</code> - C-MIDI 3.0 対応
	 * </ul>
	 * 
	 * @return C-MIDI 対応状況
	 */
	public int getMidi();

	public static final int SMAF_MA1		= 1;
	public static final int SMAF_MA2		= 2;
	public static final int SMAF_MA2_EX	= 3;
	public static final int SMAF_MA3		= 4;
	public static final int SMAF_MA3_EX	= 5;
	public static final int SMAF_MA5		= 6;
	public static final int SMAF_MA5_EX	= 7;

	/**
	 * SMAF 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - MA1 対応
	 * <li><code>2</code> - MA2 (演奏系) 対応
	 * <li><code>3</code> - MA2 (演奏系/表示系) 対応
	 * <li><code>4</code> - MA3 (演奏系) 対応
	 * <li><code>5</code> - MA3 (演奏系/表示系) 対応
	 * <li><code>6</code> - MA5 (演奏系) 対応
	 * <li><code>7</code> - MA5 (演奏系/表示系) 対応
	 * </ul>
	 * 
	 * @return SMAF 対応状況
	 */
	public int getSmaf();

	public static final int ATMAIL_PHASE_1 = 1;
	public static final int ATMAIL_PHASE_2 = 2;
	public static final int ATMAIL_PHASE_3 = 3;
	public static final int ATMAIL_PHASE_4 = 4;

	/**
	 * ＠mail 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - Phase 1 対応
	 * <li><code>2</code> - Phase 2 対応 (※複数宛先/件名/本文指定対応)
	 * <li><code>3</code> - Phase 3 対応 (※送信 500 文字対応)
	 * <li><code>4</code> - Phase 4 対応 (※装飾メール対応)
	 * </ul>
	 * 
	 * @return ＠mail 対応状況
	 */
	public int getAtMail();

	public static final int VCARD_3_0 = 1;

	/**
	 * vCard 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - vCard 3.0 対応
	 * </ul>
	 * 
	 * @return vCard 対応状況
	 */
	public int getVCard();

	public static final int VCALENDAR_1_0 = 1;
	public static final int VCALENDAR_2_0 = 2;

	/**
	 * vCalendar 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - vCalendar 1.0 対応
	 * <li><code>2</code> - vCalendar 2.0 対応 (※iCalendar 対応)
	 * </ul>
	 * 
	 * @return vCalendar 対応状況
	 */
	public int getVCalendar();

	public static final int EMOJI_PHASE_1 = 0;
	public static final int EMOJI_PHASE_2 = 1;
	public static final int EMOJI_PHASE_3 = 2;

	/**
	 * 絵文字対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - Phase 1 (絵文字番号 1〜304) 対応
	 * <li><code>1</code> - Phase 2 (絵文字番号 1〜822) 対応
	 * <li><code>2</code> - Phase 3 (絵文字番号 1〜828) 対応
	 * </ul>
	 * 
	 * @return 絵文字対応状況
	 */
	public int getEmoji();

	/**
	 * 絵文字対応状況から使用可能な絵文字番号の最大値を返します。
	 * 
	 * @return 使用可能な絵文字番号の最大値
	 */
	public int getMaxEmojiNumber();

	public static final int BREW_2_0 = 1;
	public static final int BREW_2_1 = 2;
	public static final int BREW_3_1 = 3;

	/**
	 * EZアプリ(BREW) 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応 (C3003P 含む)
	 * <li><code>1</code> - BREW 2.0
	 * <li><code>2</code> - BREW 2.1
	 * <li><code>3</code> - BREW 3.1
	 * </ul>
	 * 
	 * @return EZアプリ(BREW) 対応状況
	 */
	public int getBrew();

	public static final int SMAF_PHOTO_MIXER_M3F_EDITOR		= 1;
	public static final int SMAF_PHOTO_MIXER_M3F_PLAYER		= 2;
	public static final int SMAF_PHOTO_MIXER_M3F_MQF_EDITOR	= 3;
	public static final int SMAF_PHOTO_MIXER_M3F_MQF_PLAYER	= 4;

	/**
	 * SMAF フォトミキサー対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非搭載
	 * <li><code>1</code> - 「m3f」(編集/再生) 対応
	 * <li><code>2</code> - 「m3f」(再生) 対応
	 * <li><code>3</code> - 「m3f」「mqf」(編集/再生) 対応
	 * <li><code>4</code> - 「m3f」「mqf」(再生) 対応
	 * </ul>
	 * 
	 * @return SMAF フォトミキサー対応状況
	 */
	public int getSmafPhotoMixer();

	public static final int VECTOR_FLASH = 1;

	/**
	 * Vector 対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - Flash 対応
	 * </ul>
	 * 
	 * @return Vector 対応状況
	 */
	public int getVector();

	public static final int EZCHANNEL_UNSUPPORTED = 0;
	public static final int EZCHANNEL_SUPPORTED = 1;

	/**
	 * EZチャンネル対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 非対応
	 * <li><code>1</code> - 対応
	 * </ul>
	 * 
	 * @return EZチャンネル対応状況
	 */
	public int getEZchannel();

	public static final int EXTERNAL_MEMORY_COPYRIGHT = 2;

	/**
	 * 外部メモリ保存制御対応状況を返します。<p>
	 * <ul>
	 * <li><code>0</code> - 外部メモリスロット非搭載
	 * <li><code>1</code> - 著作権フラグ付きデータの外部メモリ保存 (暗号化) 非対応
	 * <li><code>2</code> - 著作権フラグ付きデータの外部メモリ保存 (暗号化) 対応
	 * </ul>
	 * 
	 * @return 外部メモリ保存制御対応状況
	 */
	public int getExternalMemory();

}
