>サイトトップへ >このカテゴリの一覧へ

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

(1) 

まえがき

この規格は,工業標準化法に基づいて,日本工業標準調査会の審議を経て,通商産業大臣が制定した日

本工業規格である。

JIS X 4346

には,次に示す附属書がある。

附属書 A(規定)  ASN.1 表記法

附属書 B(規定)  テキスト表記法

附属書 C(規定)  MHEG-5 API

附属書 D(参考)  基本操作と MHEG-5 AP1 演算との対応付け

附属書 E(参考)  MHEG-6 アプレットと World Wide Web アプレットとの関係

附属書 F(参考)  主な特徴

附属書 G(参考)  知的財産権


日本工業規格

JIS

 X

4346

: 1999

 (ISO/IEC

13522-6

: 1998

)

情報処理技術ーマルチメディア・

ハイパメデイア情報符号化−

第 6 部:拡張対話型応用

Information technology

−Coding of multimedia and

 hypermedia information

Part 6 : Support for enhanced interactive applications

序文  この規格は,1998 年に第 1 版として発行された ISO/IEC 13522-6, Information technology−Coding of

multimedia and hypermedia information

−Part 6 : Support for enhanced interactive applications を翻訳し,技術的

内容を変更することなく作成した日本工業規格である。

1.

適用範囲

1.1

適用範囲の背景  この一群の規格“マルチメディア・ハイパメディア情報符号化”は,マルチメデ

ィア・ハイパメディア情報オブジェクト(MHEG オブジェクト)の符号化表現を規定する。この規定によ

って MHEG オブジェクトは,ローカルエリアネットワーク,広域な通信又は放送ネットワーク,記憶媒体

を通じて,複数のサービス及び応用内,更にこれらをまたがって,最終形式の単位で交換される。MHEG

オブジェクトは,マルチメディアスクリプト言語を用いて設計されたマルチメディア応用のソースプログ

ラムを入力として,計算機ツールによって作り出される。この意味合いからすると,MHEG スクリプト(言

い換えればプログラム)クラスは,他の MHEG クラスと相補いあって,スクリプト言語で広く利用されて

いる機能を表現する。スクリプト(プログラム)オブジェクトは,より強力な制御機構を表現し,MHEG

操作オブジェクト及びリンクオブジェクトだけで表現できる範囲を超えて,MHEG オブジェクト間のより

複雑な関係を記述できる。更に,スクリプト(プログラム)オブジェクトは,実行時環境が提供してくれ

る外界との対話サービスをも表現する。

JIS X 4345

は,情報交換と利用のための基本レベルの応用における MHEG オブジェクトクラスを定義す

る。これは,対話的な広帯域サービスを実現するアダプタ(セットトップユニット)など,最小限の端末

で動作することを意図している。

JIS X 4345

は,開かれた方法でプログラムオブジェクトの符号化表現を定義する。

これは,プログラムオブジェクトが標準化されたか否かを問わず,プログラムコードをカプセル化する

ことを可能とする。

JIS X 4345

は,応用領域で定義されている符号化形式であれば,どの符号化されたプログラムであって

も,プログラムオブジェクトが内蔵又は参照することを可能とする。


2

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

1.2

この規格の適用範囲  この規格は,拡張対話型マルチメディア応用を交換する際の最終形式符号化

表現及び意味を定義する。

これらの応用は,計算機能(データ処理)

,拡張された通信機能(サーバ,ローカルデバイスなどの外部

環境とのやりとり)などを総合することによって,JIS X 4345 によって実現される応用を拡張する。

これらの応用は,放送形式,クライアントサーバ形式,又は会話形式 (peer-to-peer) などの,どのよう

な通信環境においても利用することができる。しかし,主な対象は,対話型検索(クライアントサーバ)

応用である。これらは,下りチャネルにおける実時間映像音声を伴う非対称データ交換を含む限られた資

源のセットトップユニットで動作する。

この規格で定義する符号化表現は,JIS X 4345 によって定義される符号化表現を特殊化する。特に,こ

の規格は,MHEG-5 の交換プログラム (Interchanged Program) クラスにおける OriginalContent 属性のため

の符号化表現を定義する。加えてこの規格は,アプレット (Applet) クラスを定義する。アプレットクラス

は,交換プログラムのサブクラスであっては,エンジンからの委託によって自身の表示及び対話を管理す

る能力をもつ。

この符号化表現は,次の性質をもつ。

−  JIS X 4345 で定義されたものと両立できる。

−  JIS X 4345 で示された最小限の資源制約と同じ条件のセットトップユニットで実行するのに適してい

る。

この規格は,次の事項を規定する。

− MHEG-5 の交換プログラムクラスにおける OriginalContent 属性のための交換様式

−  符号化表現の意味

−  アプレットクラスの符号化表現及び意味

−  JIS X 4345 による MHEG-5 エンジンの振る舞いに対する意味の拡張

−  JIS X 4345 による MHEG-5 交換様式の意味の制約

−  交換プログラムオブジェクトのコードから MHEG-5 エンジンの出力機能を呼び出す MHEG-5 API

− MHEG-5 エンジン実行モデルと,プログラム内容交換様式の基礎になる実行モデルとの間の協調動作

の要件

MHEG

エンジンは,MHEG オブジェクトを扱い,解釈し,出力するシステム又は応用の構成要素で

ある。この規格は,MHEG-6 符号化表現の意味を規定する。これらの意味は,MHEG-6 エンジンの振

る舞いに関する最小限の要件として規定する。

この規格は,マルチメディア・ハイパメディアの情報を交換するすべての応用に適用できる。

2.

引用規格及び参照仕様

2.1

引用規格  次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成

する。これらの引用規格は,その最新版を適用する。

JIS X 0201

  7 ビット及び 8 ビットの情報交換用符号化文字集合

備考  ISO/IEC 646 : 1991, Information technology− ISO 7-bitcoded character set for information

interchange

からの引用事項は,この規格の該当事項と同等である。

JIS X 0221

  国際符号化文字集合 (UCS) −第 1 部  体系及び基本

備考  ISO/IEC 10646-1 : 1993, Information Technology−Universal Multiple−Octet Coded Character Set

(UCS) 

Part 1 : Architecture and Basic Multilingual Plane がこの規格と一致している。


3

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

JIS X 4345

  情報処理技術−マルチメディア・ハイパメディア情報符号化−第 5 部  基本レベル対話

型応用

備考  ISO/IEC 13522-5 : 1997, Information Technlogy − Coding of multimedia and hypermedia

information

−Part 5 : Support for Base-level interactive applications がこの規格と一致してい

る。

JIS X 5605-1 : 1998

  情報技術−抽象構文記法 1 (ASN.1)  仕様−第 1 部:基本記法の仕様

備考  ISO/IEC 8824-1 : 1995, ITU-T Recommendation X.680 (1994), Information Technology−Abstract

Notation One (ASN.1) : Specification of basic notation

からの引用事項は,この規格の該当事

項と同等である。

JIS X 5606-1 : 1998

  情報技術−ASN.1  符号化規則−第 1 部:基本符号化規則 (BER),標準符号化規

則 (CER) 及び識別符号化規則 (DER) の仕様

備考  ISO/IEC 8825-1 : 1995, ITU-T Recommendation X.690 (1994), Information technology−ASN.1

encoding rules : Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER)

and Distinguished Encoding Rules (DER)

からの引用事項は,この規格の該当事項と同等で

ある。

2.2

参照仕様  ここでは,原国際規格発行の時点で有効であった参照仕様を示す。これらの参照仕様は,

この規格でその一部分だけを参照して用いる。参照仕様そのものは,それ以上のものではない。特に,こ

こに示してあるからといって,国際規格であることにはならない。

a)  Lindholm, Tim and Yellin, Frank (September 1996), The Java Virtual machine specification. ISBN :

0-201-63452-X, Addison-Wesley Publishing Co. : Reading, Massachusetts.

b)  Gosling, James, Yellin, Frank and the Java team (May 1996), The Java Application Programming Interface,

Volume 1 : Core Packages. ISBN : 0-201-63453-8, Addison-Wesley Publishing Co. : Reading, Massachusetts.

3.

定義  この規格で用いる主な用語の定義は,JIS X 4345 によるほか,次による。

3.1

アプレット (applet)   ホストの枠組みの中でだけ実行することができる自律したプログラム。

3.2

アプリケーションクラス (application class)   JVM 命令語で書かれ,MHEG-6 応用の一部として交

換対象となる Java のクラス。

3.3

API (application programming interface) 

  応用ソフトウエアからプログラム言語の機能を通してソ

フトウエアサービスを利用するためのインタフェース。

3.4

属性 (attribute)   オブジェクトと値との対応。名前と型とが付与され,クラスのインタフェースの

一部として宣言される。属性には,次のものがある。

a) MHEG-5

属性(JIS X 4345 参照)

b) JVM

クラスの属性(2.2 参照)

3.5

クラス (class)   交換対象となる一群の情報オブジェクトに共通するデータ(属性)及び振る舞いを

抽象化した定義。クラスには,次のものがある。

a) MHEG-5

クラス(JIS X 4345 参照)

b) JVM

クラス(2.2 参照)

3.6

例外 (exception)   演算要求の実行中に例外的な条件が生じた場合に発生する信号。特に,JVM 例

外がある[2.2a)参照]


4

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

3.7

ハイパメディア (hypermedia)   明示的なリンクを介しての,モノメディア及びマルチメディアの情

報へのアクセスを伴う場合の形容詞。

3.8

実体 (instance)     指定されたクラスの属性及び振る舞いをもつオブジェクト。

3.9

インタフェース (interface)   クライアントがオブジェクトに対して要求できる一群の演算の記述。

a) API

b) JVM

インタフェース[2.2b)参照]

3.10  JVM (Java Virtual Machine) 

  2.2a)の参照仕様で定義された抽象機械。MHEG-6 交換プログラムオ

ブジェクトの OriginalContent 属性に対して,その交換用表現及び実行モデルとして用いる。

3.11

メソッド (method)   クラスで定義されている演算。特に,JVM メソッド[2.2a)参照]がある。

3.12  MHEG-5 API

  MHEG-6 交換プログラムオブジェクトの OriginalContent に使う命令バイト語から,

MHEG-5

オブジェクトの属性にアクセスしたりその振る舞いを制御したりするための API。

3.13  MHEG-5

交換プログラムオブジェクト (MHEG-5 InterchangedProgram object)   命令列をなす解

釈実行語又は機械語として表現された処理単位を駆動する手段を与える MHEG-5 オブジェクト。

3.14  MHEG-5

オブジェクト (MHEG-5 object)   MHEG-5 クラスの実体の命令語表現。

3.15  MHEG-6

  この規格に適合していることを示す形容詞。

3.16  MHEG-6

アプレットオブジェクト (MHEG-6 Applet object)   8.に規定するアプレットクラスの実

体。

3.17  MHEG-6

応用 (MHEG-6 application)   MHEG-5 交換プログラムオブジェクトの OriginalContent 属

性となっているプログラム及び MHEG-5 オブジェクトの交換を含んだ応用。単独の応用のこともあれば,

他の応用の一部となっていることもあり,この規格での規定に従った表現をもつ。

3.18  MHEG-6

エンジン (MHEG-6 engine)   この規格の規定に従って,MHEG-6 オブジェクト(JVM プ

ログラムを含む。

)を解釈実行するプロセス又はプロセス群。

3.19  MHEG-6

交換プログラムオブジェクト (MHEG-6 Interchanged Program object)   この規格に適合

する MHEG-5 交換プログラムオブジェクト。

3.20  MHEG-6

オブジェクト (MHEG-6 object)   7.に規定する意味拡張に適合した MHEG-5 オブジェク

ト,又は 8.に規定するアプレットクラスのオブジェクト。

3.21  MHEG-6

プロファイル (MHEG-6 profile)   この規格に対するプロファイル。

3.22  MHEG-6

プ ロ グ ラ ム  (MHEG-6 program)   MHEG-6 交 換 プ ロ グ ラ ム オ ブ ジ ェ ク ト の

OriginalContent

属性に直接書かれるか,そこから参照されるかしている JVM クラスの一覧。

3.23

マルチメディア (multimedia)   複数の表現媒体を扱う場合の形容詞。

3.24

マルチメディア・ハイパメディア応用 (multimedia and hypermedia application)    マルチメディア

情報を表現し,利用者がその上を対話的に行き来できる機能を備えた応用。

3.25

マルチメディア応用 (multimedia application)   利用者にマルチメディア情報の表現を供する応用。

3.26

演算 (operation)   オブジェクトが提供し,オブジェクトに対して要求することのできるサービス。

インタフェースの中で,その名前,引数及び返却値の型を指定するシグネチャ,並びにその駆動中に発生

し得る例外の一覧が宣言してある。

3.27

プログラム (program)   計算機での振る舞いを表現した 2 進命令語列。適切な計算機環境下で走ら

せることによって,その振る舞いが実現する。

3.28

プログラム交換様式  (program content interchange format)    MHEG-6 交換プログラムオブジェクト

の OriginalContent 属性(IncludedContent 型である場合)に対する構文及び符号化様式(12.1 参照)


5

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

3.29

スクリプト言語 (script language)   応用プログラムが非専門プログラマによっても簡単にかつ迅速

に設計できるようにしたプログラム言語。

3.30

スタック (stack)   後入れ先出し (LIFO, last-in-first-out) で要素を追加(プッシュ)し削除(ポップ)

することができる情報蓄積機構。

3.31

システムクラス (system class)   JVM クラスのうち,その実装が(少なくとも部分的に)システム

依存になって(したがって,機械語で作られて)いることから,VM から使えるように実行時環境に備わ

っていなければならないクラス。

3.32

仮想機械,VM (virtual machine)    マイクロプロセッサ及びその振る舞いに対する抽象的な仕様。

備考 VM の実装対象となるプロセッサの機種は,様々である。VM は,どの機種に対しても同じ命

令群を実行できるように実装される。VM と同一の命令群をもったマイクロプロセッサを設計

することも可能である。VM 命令語は,ソフトウェアを可搬にするためにも使うことができる。

4.

記号及び短縮形  この規格で用いる主な記号及び短縮形を次に示す。

API Application

Programming

Interface

ASN.1

Abstract Syntax Notation One

ETSI

European Telecommunications Standards Institute

(欧州通信規格機関)

IEC

International Electrotechnical Commission

(国際電気標準会議)

ISO

Internationai Organisation for Standardisation

(国際標準化機構)

ITU-T

International Telecommunication Union, Telecommunication standardisation sector

(国際電気通信連合,電気通信標準化部門)

JVM Java

Virtual

Machine

(Java 仮想機械)

HTML

HyperText Mark-up Language

(ハイパテキストマーク付け言語)

MHEG

Multimedia and Hypermedia information coding Expert Group

(マルチメディア・ハイパメディア情報符号化)

VM Virtual

Machine

(仮想機械)

WWW

World Wide Web

5.

適合性の要件  この規格は,次の事項に対する適合性要件を定義する。

−  情報オブジェクト。すなわち,MHEG-6 オブジェクト。

−  実装。すなわち,MHEG-6 エンジンの実装。

5.1

情報オブジェクトの適合性  適合した MHEG-6 オブジェクトは,次のすべての基準を満たさなけれ

ばならない。

−  オブジェクトの符号化及び構文は,5.1.1 の規定に適合しなければならない。

−  オブジェクトの意味は,5.1.2 の規定に適合しなければならない。

情報オブジェクトの適合性は,端末において実行されることを目的として交換される情報オブジェクト

に対して調べられる。

5.1.1

符号化及び構文  適合した MHEG-6 オブジェクトは,附属書 に定義した符号化規則及び構文,

又は

附属書 に定義した符号化規則及び構文のいずれかに従って符号化しなければならない。さらに,適

合した MHEG-6 交換プログラムオブジェクトの属性は,7.1 の構文及び符号化の規定に従わなければなら

ない。

5.1.2

意味  適合した MHEG-6 オブジェクトの構成要素は,JIS X 4345 及びこの規格の 7.12.に定義す

る意味規則に合致しなければならない。

5.1.3

プロファイル  この規格は,いかなるプロファイルも定義しない。


6

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

5.2

実装の適合性  この規格の実装は,MHEG-6 エンジンとする。

この規格は,MHEG-6 オブジェクトの意味を定義する。これは,情報オブジェクトではなく,MHEG-6

エンジンの振る舞いに関する適合性の要件にほかならない。

5.2.1

適合性の要件  MHEG-6 エンジンの適合性は,JIS X 4345 の 4.に定義されるように,応用領域の定

義に照らしてはじめて判断できる。

JIS X 4345

の 4.に列挙された必す(須)のクラスのすべてに加え,いかなる MHEG-6 エンジンも,次の

クラスのすべての属性と内部振る舞いとを解釈できなければならない。

−  交換プログラム

−  オクテット型変数,整数型変数,論理型変数,コンテント参照型変数及びオブジェクト参照型変数

いかなる適合した MHEG-6 エンジンも,応用領域の定義に含まれる任意の MHEG-6 適合のオブジ

ェクトの解釈を行えなければならない。特に,MHEG-6 適合のエンジンは,次の基準に合致しなけれ

ばならない。

−  JIS X 4345 に適合する。

−  7.に定義する MHEG-5 交換プログラムオブジェクトに関する意味の規定を解釈する。

−  アプレットクラスが応用領域の定義に含まれる場合,MHEG-6 適合のエンジンは,MHEG-6 のアプレ

ットクラスを,8.に定義する属性,事象,内部振る舞い,及び基本操作とともに解釈する。

−  9.に定義するとおりに,JVM コードを実行する。

− JVM コードから 10.に定義するカーネル API に対する完全なアクセスを可能にする。

− JVM コードから 11.及び

附属書 に定義する MHEG-5 API の全体又はその一部に対してアクセスする

ことが可能である。

−  12.に定義する MHEG-5 と JVM との相互動作を可能にする。

5.2.2

適合性宣言文書  この規格に対する適合性を主張するには,次の情報をもつ適合性記述文書を用意

しなければならない。この適合性宣言文書は,次の基準のすべてを満たさなければならない。

−  この規格及び JIS X 4345 で要求される必ず機能に,適切な箇条番号及び細別符号を付けて列挙する。

−  適用する規格の正式名称,規格番号及び発効年を示す。

−  この規格及び JIS X 4345 に定義された任意選択機能のうち,

いずれの機能が実装されているかを記す。

この目的で,JIS X 4345 の 4.に規定されるように,応用領域に依存する機能のすべてを記載する。

−  この規格及び JIS X 4345 に定義される実装依存機能のすべてに対して,実装の振る舞いを記述する。

この要件を満たすためには,それらの機能を列挙し,更に,システムの文書に対する参照又はそれら

の機能に関する完全な構文と意味とを与えなければならない。適合性宣言文書は,この規格又は JIS X 

4345

で実装依存としている機能,又はこれらの規格で未定義若しくは未記述と認められる機能に対し

ては,実装の動作を示してもよい。

5.3

応用の適合性  適合した MHEG-6 応用(3.17 参照)に含まれる任意の交換プログラムオブジェクト

は,適合した MHEG-6 交換プログラムオブジェクトでなくてはならない。さらに,適合した MHEG-6 応

用のすべてのオブジェクトは,

附属書 又は附属書 のいずれかに定義する表記法に従い,同一の表記法

で符号化しなければならない。

6.

この規格の構成  MHEG-6 の仕様は,次の事項で構成する。

a)

交換単位としての MHEG-5 オブジェクトに関する事項

1)

JIS X 4345

の構文及び意味への適合。


7

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

2)

交換プログラムオブジェクトヘの構文制限及び意味拡張(7.参照)

3)

アプレットクラス及び Invoke 基本操作の新設(8.参照)

4)

符号化表現(

附属書 参照)。JIS X 4345 附属書 の符号化表現の拡張版。

5)

符号化表現(

附属書 参照)。JIS X 4345 附属書 の符号化表現の拡張版。オブジェクトは,4)

は 5)のいずれかの表現をとる。

b)

交 換 様 式 と し ての JVM 命 令 語 列 に 関 す る 事項   こ れら は , 交換 プ ロ グラ ムオ ブ ジ ェク ト の

OriginalContent

属性の交換に用いる。

1) JVM

の命令語表現及び意味(9.参照)

2)

カーネル API(Java. lang,Java. util 及び Java. io の各パッケージ,10.参照)

。常駐して,必要な機能

を JVM 命令語列に提供する。

3) MHEG-5

API

(iso. mheg5 パッケージ,11.及び

附属書 参照)。MHEG-5 オブジェクトの取扱い機能

及び MHEG-5 振る舞いの制御機能を JVM 命令語列に提供する。

4)

協調実行に関する要件(12.参照)

。MHEG-5 オブジェクトから JVM のメソッドの駆動及び JVM ク

ラスからの MHEG-5 基本操作の駆動の意味を与える。

7.

MHEG-6

交換プログラムクラス  交換プログラムクラス及びその下位クラスに適用する意味拡張及

び構文制限,並びにこれらのクラスに関する基本操作を規定する。

7.1

交換プログラムオブジェクトの構文  MHEG-6 オブジェクトは,7.1 で特に規定する場合を除き,JIS 

X 4345

の規定による MHEG-5 クラスの構文に従わなければならない。7.1 では,MHEG-6 オブジェクトの

適合要件として,MHEG-5 オブジェクトの構文に対する制限(値,任意選択機能又はその組合せ)を規定

する。

7.1.1

交換プログラムクラスの構文  MHEG-6 交換プログラムオブジェクトは,1 個以上の JVM クラス

をカプセル化するのに使う。

カプセル化する JVM クラスは,

交換プログラムオブジェクトに直接含めるか,

そこから参照しておくかする。

7.1.1.1

Name

属性  MHEG-6 交換プログラムオブジェクトの Name 属性は,空文字 (NUL) で終端した

UTF-8

符号での文字列を並べた列として符号化しなければならない。それぞれの文字列は,交換プログラ

ムオブジェクトがカプセル化する JVM クラスの名前を表す。

備考  文字列の UTF-8 符号による表現は,9.2 で引用する JVM クラスのファイル形式によって定まる。

それは,JIS X 0221 (UCS)  文字の可変長列であり,空文字以外のすべての基本ラテン文字を 1

バイトだけで表す。

7.1.1.2

OriginalContent

属性  MHEG-6 交換プログラムオブジェクトの OriginalContent 属性は,次のとお

りに符号化しなければならない。

a) OriginalContent

属性が IncludedContent 型である場合,その OctetString 値は,12.1 に規定するプログラ

ムコンテンツ交換形式で定まる構文に従わなければならない。

b) OriginalContent

属性が ReferenceContent 型である場合,その ContentReference 要素は,次のいずれかで

なければならない。

1)

空文字で終端した JIS X 0201 

表 の符号化による文字列を並べた列。それぞれの文字列は,JVM

クラスのデータを収めたファイルの名前を表す。この列は,Name 属性の列と同じ要素数をもち,

Name

属性に並んだクラスの順に対応するファイル名を並べていなければならない。

2)

空の文字列 1 個。この場合,

(Name 属性に並べられた)JVM クラスの名前には,処理系依存の対応


8

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

規則に従ってファイルの名前が対応付けられる。

7.1.1.3

ContentHook

属性  MHEG-6 交換プログラムオブジェクトの ContentHook 属性は,0 に設定する。

この値は,JVM 命令語で符号化されたプログラムを意味する。

7.1.1.4

Shared

属性  Application オブジェクトの一部として交換対象となる MHEG-6 交換プログラムオ

ブジェクト(応用全体が有効範囲)の Shared 属性は,True に設定する。

7.1.2

交換プログラムオブジェクトに適用する基本操作の構文  MHEG-6 交換プログラムオブジェクト

を対象とする Call 基本操作及び Fork 基本操作は,その引数 Parameters の中に,GenericInteger 型の第 1 引

数 Class 及び GenericOctetString 型の第 2 引数 Method をもっていなければならない。

第 1 引数 Class は,InterchangedProgram オブジェクトの Name 属性に与えられた JVM クラスの列の要素

番号(1 から始める。

)を表す。

第 2 引数 Method は,UTF-8 符号による文字列として,第 1 引数 Class が示すクラスがもつ静的メソッド

の名前を表す。

この Call 基本操作又は Fork 基本操作の Activation 振る舞いは,Class で指定されたクラスの Method が示

すメソッドを,その基本操作への Parameters として与えられた残りの引数を(値渡しで)引数として与え

て駆動することを意味する。

備考 Call 基本操作又は Fork 基本操作への Parameters に,そのプログラムの入力引数又は出力引数の

意味で MHEG-5 変数(GenericObjectReference 型として)を使うこともできる。出力引数として

使う場合は,プログラムの中で,MHEG-5 API Variable クラスの SetVariable 操作を用いて明示的

に値を入れる必要がある。

7.2

交換プログラムオブジェクトの意味  ここでは,MHEG-5 の用語を用いて,MHEG-5 オブジェクト

の振る舞いの記述に対する意味の拡張について示す。

7.2.1

InitiallyAvailable

属性  ある MHEG-6 交換プログラムオブジェクトの InitiallyAvailable 属性が True

である場合,その交換プログラムオブジェクトの Preparation 振る舞いは,その交換オブジェクトが附属し

ている MHEG-5 のグループ(シーン又はアプリケーション)オブジェクトの Preparation 振る舞いによって

引き起こされなければならない。

7.2.2

交換プログラムオプジェクトの有効範囲  要素クラスのサブクラスの 1 実体として,任意の

MHEG-5

交換プログラムオブジェクトは,シーンオブジェクト又はアプリケーションオブジェクトに附属

する。

MHEG-6

交換プログラムオブジェクトの有効範囲は,その交換プログラムオブジェクトが附属する

MHEG-5

のグループ(シーン又はアプリケーション)オブジェクトとする。MHEG-6 交換プログラムオブ

ジェクトのクラスによってメソッドが起動される任意の JVM クラスは,

次のいずれかに該当するものでな

くてはならない。

−  システムクラス(3.31 参照)であり,カーネル API のような標準的なパッケージによって提供される

もの。

−  アプリケーションクラス(3.2 参照)であり,MHEG-6 交換プログラムオブジェクト呼出しの適用範

囲内であり,ある MHEG-6 交換プログラムオブジェクトによって交換されるもの。

備考  言い換えると,交換プログラム 1 のクラスが交換プログラム 2 のクラスを呼び出す場合,

−  交換プログラム 1 がシーンの一部である場合には,交換プログラム 2 は同じシーンの一部であるか,

そのシーンを含むアプリケーションの一部でなくてはならない。

−  交換プログラム 1 がアプリケーションの一部である場合には,交換プログラム 2 は同じアプリケーシ


9

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

ョンの一部でなくてはならない。

適合した MHEG-6 アプリケーションオブジェクトは,適用範囲外のアプリケーションクラスのメソ

ッドに対する呼出しを含む Java クラスの交換プログラムオブジェクトを包含してはならない。

備考  非適合のオブジェクトがエンジンにもたらされた場合,そのエンジンの振る舞いについては規

定しない。

MHEG-6

準拠のアプリケーションオブジェクト全体に対し,交換プログラムによって包含又は参照され

る JVM クラスは,すべて相異なるクラス名をもたなければならない。

7.2.3

交換プログラムオブジェクトに適用可能な基本操作の効果

7.2.3.1

Preparation

振る舞い  任意の MHEG-6 交換プログラムオブジェクトを対象として Preload 基本操

作を実行することで,

その交換プログラムオブジェクトの内容を取得する。

それがカプセル化している Java

クラス又はそれが参照している Java クラスが,MHEG エンジンによって VM にロードされる。このロー

ディングは非同期に実施される。すなわち,このローディングは Activation 振る舞いが始まるまでの任意

の時点に行えばよい。

あるクラスの名前がすでに VM にロードされたクラスと同じ名前である場合,新しいクラスは無視され

なければならない。

7.2.3.2

Activation

振る舞い  MHEG-6 交換プログラムオブジェクトの Activation 振る舞いは,そのオブ

ジェクトに対して Call 基本操作又は Fork 基本操作が実行されたときに引き起こされる。Activation 振る舞

いの主な効果は,次のとおりに,クラスのメソッドを起動することにある。

−  クラスは,Call 基本操作又は Fork 基本操作の Parameters 引数の中の,最初の Parameter で指定する。

その値で,交換プログラムオブジェクトの Name 属性の中での,そのクラスのインデックスを示す。

−  メソッドは,Call 基本操作又は Fork 基本操作の Parameters 引数の中の,2 番目の Parameter で指定す

る。その値で,そのメソッドの名前を示す。

−  メソッドヘの引数は,

(必要であるならば)Call 基本操作又は Fork 基本操作の Parameters 引数の中の

以後の Parameter で指定する。すなわち,3 番目の Parameter がそのメソッドヘの第 1 引数となり,以

後,同様に対応する。

次に示すすべての場合,Call 基本操作又は Fork 基本操作の結果の変数(CallSucceeded 引数又は

ForkSucceeded

引数)を Activation 振る舞いの一部として False に設定したうえで,Activation 振る舞い

を終了しなければならない。

− Parameters の中の Parameter の個数が 2 個未満である場合

−  最初の Parameter 又は 2 番目の Parameter の型が,7.1.2 の規定に照らして正しくない場合

−  最初の Parameter が Name 属性の中の正当なインデックス(1 からリストの長さまでの整数)を示して

いない場合

−  2 番目の Parameter が示す名前のメソッドが,指定された JVM クラスにない場合

−  指定された JVM クラスのメソッドが静的メソッドでない場合

−  指定された JVM クラスのメソッドが Parameters 引数と(JVM の型一致規則を用いて)型解決可能な

シグネチャをもっていない場合,すなわち,そのメソッドの引数の型と Parameters の中の(3 番目以

降の)Parameter の型とを順に型一致させることができない場合

−  交換プログラムオブジェクトがすでに活性化している場合

MHEG-5

引数の型は,

表 のとおりに JVM の型に対応させる。

例  { : interchgprg 100 : name "Prog"}


10

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

次の基本操作呼出しを考える。

: fork (100 99 "ginteger 1 : goctetstring " start "

"gobjectref 150 : goctetstring : indirectref 2)

これは,次のシグネチャと静的に型解決することができる。

public static void Prog. start (ObjectReference, OctetString)

備考 Call 基本操作又は Fork 基本操作の Parameters 引数の中の Parameter がちょうど 2 個である場合,

メソッド呼出しのシグネチャは,次のものとなる。

void <method_name> ( )

ただし,<method_name>部分を対象メソッドの名前に置き換えて考える。

表 1  MHEG-5 引数の型と JVM の型との対応

MHEG-5

引数の型 JVM の型

Boolean Boolean

OctetString OctetString

Integer Integer

ContentReference ContentReference

ObjectReference ObjectReference

備考 JVM の型 Boolean 及び Integer は,カーネル API(java.lang パッケージ)が定義している。JVM

の型 OctetString, Content Reference 及び Object Reference は,MHEG-5API(iso.mheg5 パッケージ)

が定義している(

附属書 参照)。

7.2.3.3

Deactivation

振る舞い  MHEG-6 交換プログラムオブジェクトの Deactivation 振る舞いは,次の事

由のいずれかによって引き起こされる。

−  当該オブジェクトを対象とした Stop 基本操作が実行された場合。

−  当該オブジェクトを活性化した Call 基本操作又は Fork 基本操作によって起動されたメソッドから生

成されたすべてのスレッドが正常終了した場合。

Stop

基本操作は,非同期のプログラム,すなわち,Fork 基本操作によって起動されたプログラムにだけ

適用されなければならない。その効果として,Fork 基本操作から生成されたすべての VM スレッドを停止

することでプログラムを終了させなければならない。

Fork

基本操作によって起動されたメソッドから生成されたすべてのスレッドの正常終了によって,

AsynchStopped

事象が発生する。

7.2.3.4

Destruotion

振る舞い  MHEG-6 交換プログラムオブジェクトの Destruction 振る舞いは,Unload

基本操作,又は当該交換プログラムオブジェクトが附属するグループオブジェクトの Destruction の一環と

して引き起こされる。

いずれの場合においても,カプセル化されたすべての VM クラス及び VM オブジェクトは,別の交換プ

ログラムによって使用されない限り,エンジンから利用不可能な状態とならなければならない。

MHEG-5

アプリケーションの Destruction の場合には,すべての VM オブジェクト及びすべての VM クラ

ス(すなわち,システムクラス以外のすべて)をエンジンから利用不可能な状態とし,エンジンは,これ

らの VM オブジェクト及び VM クラスを,

後に解釈される MHEG-6 アプリケーションのクラスとのあらゆ

る不整合を避けるようにしなければならない。

8.

アプレットクラス

記述

表示及び対話能力を供給する JVM コードのカプセル化を定義


11

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

基底クラス

交換プログラム,対話及び可視

サブクラス

なし

状態

具象クラス

8.

では JIS X 4345 の 7.で定義された表記法を用いてアプレットクラスを定義する。

他の MHEG-5 クラスと異なり,アプレットクラスは,要素クラスの二つのクラスを継承する。菱形の継

承によって起こる不都合が生じたときは常に,最初にリストされたクラスで定義された継承経路によって

特徴を継承しなけれならない。つまり,特に指定のない限り,すべての要素クラスの特徴(属性,振る舞

い,事象及び基本操作の効果)は,可視クラスではなく,交換プログラムクラスから継承しなければなら

ない。

8.1

属性  アプレットに対して,継承属性,交換属性及び内部属性を定める。

8.1.1

継承属性  アプレットクラスは,その基底クラスのすべての属性をもつ。ただし,次の制約をおく。

属性名

基底クラス

制約

InitiallyActive Ingredient

JIS X 4345 14.1.1

のプログラムクラスの定義に従う。

OriginalContent Ingredient 7.1.1.2

及び JIS X 4345 17.1.1 の MHEG-6 交換プログラムの定義に従う。

ContentHook Ingredient

7.1.1.3

及び JIS X 4345 17.1.1 の MHEG-6 交換プログラムの定義に従う。

Shared Ingredient

7.1.1.4

の MHEG-6 交換プログラムの定義に従う。

Name Program

7.1.1.1

の MHEG-6 交換プログラムの定義に従う。

InitiallyAvailable Program

7.2.1

の MHEG-6 交換プログラムの定義に従う。

OriginalPaletteRef

Visible

アプレットクラスの中で直接に用いてはならない。

8.1.2

交換属性  アプレットクラスは,(継承した属性を除いて)それ自身の交換属性をもたない。

8.1.3

内部属性  アプレットクラスは,(継承した属性を除いて)それ自身の内部属性をもたない。

8.2

事象  アプレットクラスは,その基底クラスにあるすべての事象をもつ。これらの事象の意味は,

基底クラスでの意味と同じとする。ただし,事象 AsynchStopped については,次のとおりとする。

AsynchStopped

この事象は,アプレットオブジェクトの基本 JVM スレッドが終了した時点に生じ
る。関連データは,もたない。

8.3

内部振る舞い  アプレットクラスは,その基底クラスの内部振る舞いのすべてをもつ。ただし,次

の制約をおく。

Preparation

7.2.3.1

及び JIS X 4345 8.3 で定義した MHEG-6 交換プログラムに対する Preparation

振る舞いのとおりとする。ただし,次のとおりに変更を加える。

1. AvailabilityStatus

を True に設定する直前に,JIS X 4345 31.3 で定義した可視ク

ラスに対する Preparation 振る舞いの第 2 ステップを実行する。

Destruction

7.2.3.4

及び JIS X 4345 8.3 で定義した MHEG-6 交換プログラムに対する Destruction

振る舞いのとおりとする。

Activation

次の一連の操作を逐次実行する。

1.  JIS X 4345 8.3

で定義したルートクラスに対する Activation 振る舞いを行う。

2.

アプレットオブジェクトに対して基本 JVM スレッドを生成する。

3.

対象クラスのコンストラクタを起動し,コンストラクタが生成した VM オブジ
ェクトを,活性化しようとしている MHEG アプレットオブジェクトに結合す
る。ここで,対象クラスとは,アプレットオブジェクトの OriginalContent 属性

の中での,そのインデックスが Fork 基本操作の(Parameters 引数の中の)最初
の Parameter で指定されたクラスをいう(7.1.2 参照)

。Fork 基本操作に以後の

Parameter

がない場合は,引数をもたないコンストラクタを起動する。そうでな

い場合は,2 番目以降の Parameter の型と一致する引数列をもつコンストラクタ
を起動する。ここでの型一致規則は,7.2.3.2 による。

例  { : APPlet 200 : name "APP"}

次の基本操作を考える。

: fork (200 99 : ginteger 1 : goctetstring "go")


12

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

型解決の結果,次のコンストラクタを引数 "go" 付きで起動する。

public void App (OctetString)

4.

コンストラクタを正当に起動することができない次の場合には,ForkSucceeded
引数を False に設定し,直ちにこの振る舞いを終了する。

− Fork 基本操作に Parameter がない場合

− Fork 基本操作の最初の Parameter が,Name 属性の中の正当なインデックス(1

からその長さまでの整数)を示していない場合

−  指定されたクラスに適切なシグネチャのコンストラクタがない場合

5.

可視オブジェクトを表示する。表示は,オブジェクトが DisplayStack の中でど
こに位置しているかに対応させ,オブジェクトの Position 属性及び BoxSize 属
性が示す位置及び境界長方形に対応させて行う(下に示す備考も参考のこ

と。

6. ForkSucceeded

引数に True を設定する。

7. RunningStatus

属性に True を設定する。

8. IsRunning

事象を発生する。

Deactivation

次の一連の操作を逐次実行する。

1.

オブジェクトの RunningStatus 属性が False である場合は,直ちにこの振る舞い

を終了する。

2.

オブジェクトの InteractionStatus 属性が True である場合,その Interaction 振る
舞いを中止し,InteractionStatus 属性に False を設定する。

3.

オブジェクトの表示を停止する。

4.

アプレットオブジェクトに対する基本 JVM スレッドを終了させ,そのスレッ
ドから派生していたスレッドもすべて終了させる。MHEG-6 オブジェクトから

の,この JVM アプレットオブジェクトに対する参照をすべて除去する。この

JVM

アプレットオブジェクトは,それへの参照が VM の中に一つもなくなっ

た後,いずれはゴミとして回収されることになる。

5.  RunningStatus

属性に False を設定する。

6. IsStopped

事象を発生する。

Interaction

この振る舞いは,Interactible クラスに対する定義どおりとする。

オブジェクトの InteractionStatus 属性が True である場合,利用者からの入力事象す
べては,エンジンがアプレットにそのまま受け渡す。このとき,入力事象が JVM
のプログラム列にどのようにして渡されるかは,利用者インタフェース API によ

る。利用者インタフェース API は,応用領域ごとにその仕様を定めてよい。

備考  境界長方形の寸法を 0 としてアプレットクラスを使うことで,実体化できても可視でないプロ

グラムを実現することができる。この方法は,利用者インタフェース API がない状況でも使え

る。

8.4

MHEG-5

の基本操作の効果  アプレットクラスは,その基底クラスの MHEG-5 基本操作をすべてそ

のままもつ。ただし,次の制約をおく。

SetData

プログラムクラスに対してと同様に,アプレットオブジェクトを対象としてこの基

本操作を用いてはならない。

SetPaletteRef

アプレットオブジェクトを対象としてこの基本操作を用いてはならない。

Run

アプレットオブジェクトを対象としてこの基本操作を用いてはならない。

Call

アプレットオブジェクトを対象としてこの基本操作を用いてはならない。

Fork Activation

振る舞いを適用する。ただし,次の制約をおく。

(ForkSucceded,

Parameters)

− ForkSucceded 引数には,BooleanVanable オブジェクトを指定しなければならな

い。

− Parameters 引数の最初の Parameter は,評価すると正の整数となるものでなけれ

ばならない。

− Parameters 引数のそれ以降の Parameter には,オブジェクトの startup クラスの

コンストラクタの引数列に渡す値を並べなければならない。Parameters に並べ


13

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

る順序は,コンストラクタの引数の順序に従っていなければならない。すべて
の引数は,値渡しとする。

Stop Deactivation

振る舞いを適用する。

アプレットクラスは,次の MHEG-5 基本操作を定義する。

Invoke

この基本操作は,オブジェクトに結合したアプレットがもつメソッドの実行を行
う。

(InvokeSucceeded,

次の一連の操作を逐次実行する。

 Method,

Parameters)

1.

アプレットオブジェクトが活性化していない場合は,この基本操作を終了す
る。

  2.

アプレットオブジェクトを活性化した Activation 振る舞いが生成した JVM オブ

ジェクトの中の,Method 引数が示すメソッドを予約する。Parameters が空であ
る場合,予約するメソッドは,次に示すシグネチャをもったメソッドとする。

 public

void<method_name>0

ここで,<method_name>はそのメソッドの名前に置き換えて考える。

 Parameters

が空でない場合,予約するメソッドは,その引数列の型が,Invoke 基本

操作の Parameters 引数の中の Parameter 列の型に型一致するメソッドとする。この

型一致規則は,7.2.3.2 による。

例  { : APPlet 200 : name "App"}

次の基本操作呼出しは,型解決の結果,次のメソッドを 1 を引数として呼

び出すことを予約する。

3.

何らかの理由から予約ができない場合には,InvokeSucceeded 引数に False を設
定し,この振る舞いを終了する。例えば,正しいシグネチャをもったメソッド

が存在しない場合が,これに当たる。

4.

予約したメソッドの呼出しを,そのアプレットの待ち行列に入れる。

それまでの Invoke 基本操作によって予約されたメソッド呼出しがすべて実行完了

した時点で,この待ち行列に入れたメソッド呼出しを,Activation 振る舞いが生成
した JVM スレッドの中で実行する。

備考 Invoke 基本操作からは,4.が終わった時点で,呼出し元へ戻る。すなわ

ち,予約するメソッドを見定め,そのメソッド呼出しを待ち行列に入れ
終わると,Invoke 基本操作から戻る。

 Invoke

基本操作には,次の制約をおく。

− InvokeSucceeded 引数には,BooleanVariable オブジェクトを指定しなければなら

ない。

− Method 引数は,評価するとオクテット列が得られるものでなければならない。

そのオクテット列は,メソッドの名前を表した,UTF-8 符号化による文字列で
なければならない。

− Parameters 引数には,予約するメソッドの引数列に対応する値を並べなければ

ならない。

 Parameters

に並べる順序は,メソッドの引数の順序に従っていなければなら

ない。すべての引数は,値渡しとする。


14

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

構文記述

Invoke -->

Target,

InvokeSucceeded,

Method,

Parameters?

Target -->

GenericObjectReference

InvokeSucceeded -->  ObjectReference

Method -->

GenericOctetString

Parameters -->

Parameter

Parameter -->

GenericBoolean

    |    GenericInteger    |

GenericOctetString

  |   GenericObjectReference

|

GenericContentReference

8.5

形式記述

Applet Class

-->

InterchangedProgram class,

Interactible

class,

OriginalBoxSize,

OriginalPosition?

OriginalBoxSize --> XLength,

Ylength

Xlength -->

INTEGER

YLength -->

INTEGER

OriginalPosition --> XYPosition

9.

仮想機械  仮想機械は,VM コードを解釈するあらゆる計算実体の抽象的な仕様とする。この仕様は,

MHEG-6

プログラムへ意味の定義を与える。

MHEG-6

プログラムは, "The Java

TM

 Virtual machine specification"

2.2 参照)の 2章に詳しく述べら

れている JVM によって定義された表現及び意味をもたなければならない。

仮想機械コードの構文及び意味の要件を規定するこの参照仕様のこの部分だけが,この規格の基準条項

を構成する。

2

章はすべてこれらの要件を含んでいるが,命令集合及びクラスファイル形式を決めている二つの章

は特に重要である。

9.1

VM

命令集合  VM 命令集合は,VM コードのコード部分を構成する仮想プロセッサの命令集合を定

義する。

すべての MHEG-6 プログラムのメソッドは, "The Java

TM

 Virtual machine specification"

2.2 参照)の 6

章  "The Java Virtual Machine Instruction Set"  の 151∼338 ページに記載されている VM 命令集合を使用しな

くてはならない。

9.2

VM

交換形式  VM 交換形式は,クラスに編成された VM コードの構文及び符号化を定義する。ク

ラスファイルは,データ(定数,変数,属性及び値)だけでなくクラスの構造,及びクラスを構成する符

号(一連の命令)を定義する。

MHEG-6

プログラムのすべてのクラスは, "The Java

TM

 Virtual machine specification"

2.2 参照)の 

"The class File Format"

の 83∼138 ページに記されている交換形式を使用しなくてはならない。

備考  符号化表現した MHEG-6 プログラムは,12.1 に規定するクラスファイルの集合からなる。


15

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

10.

カーネル API  カーネル API は,すべての MHEG-6 応用の JVM 命令語を遂行するのに必要な基本機

能からなる。

備考  これらの機能には,次のものが含まれる。

−  オブジェクト及びクラスの概念

−  基本データ型を含んだクラス

−  文字データの取扱い

− VM スレッドの管理

−  クラスのロード

−  数学的な演算

−  例外及び誤りの取扱い

−  補助的なデータ構造

−  ストリームの入出力

10.1

カーネル API の仕様  カーネル API は,次に示す java. lang パッケージ,java. util パッケージ及び java.

io

パッケージとする。

− java.

lang

パッケージは,The Java Application Programming Interface, Volume 1 : Core Package(2.2 参照)

の  "Java Language Package"  の章(1∼185 ページ)に定義されたパッケージとする。

− java.

io

パッケージは,The Java Application Programming Interface, Volume 1 : Core Package(2.2 参照)の

"Java I/O Package"

の章(187∼326 ページ)に定義されたパッケージとする。

− java.

util

パッケージは,The Java Application Programming Interface, Volume 1 : Core Package(2.2 参照)

の  "Java Utilities Package"  の章(327∼371 ページ)に定義されたパッケージとする。

上で引用した仕様のうち,それぞれのパッケージの構文及び意味に対する要件を与えている部分だけを,

この規格での要件とする。

10.2

構文に対する要件  MHEG-6 プログラムは,カーネル API の機能を呼び出すに際して,カーネル API

に含まれたバイト命令語を使わなければならない。

MHEG-6

エンジンは,カーネル API の定義どおりのシグネチャをもったすべてのクラス,インタフェー

ス及び例外へのインタフェースをもっていなければならない。

10.3

意味に対する要件  カーネル API のすべてのクラス,インタフェース及び例外は,MHEG-6 エンジ

ンにとって,

10.1

で引用したカーネル API の仕様どおりの振る舞いをするように具現しなければならない。

カーネル API は,MHEG-6 エンジンの動作開始直後からその動作中である限り,MHEG-6 エンジンから使

えなければならない。

備考  この要件を満たす自明な方法は,JVM カーネル API を常駐させておくことである。しかし,そ

うしなければならないわけではない。

10.4

運用に対する要件  運用は,その応用分野での要求による。場合によっては,幾つかの機能がいら

ないこともある。プロファイル又は応用分野によって,幾つかの振る舞いに制限を置くこともあるし,幾

つかの振る舞いを選択事項とすることもある。さらに,そうした場合にそれらの振る舞いの望ましい具現

方法を与えることもある。

11.  MHEG-5 API

  MHEG-5 API は,JVM 命令語から MHEG-5 オブジェクトの動的属性の値を読み出した

り,

MHEG-5

オブジェクトに対する基本動作を駆動したりするための一群のインタフェース機能からなる。


16

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

11.1  MHEG-5 API

の仕様  MHEG-5 API は,附属書 に規定する iso. mheg5 パッケージの公開インタフ

ェースからなる。このインタフェースは,iso. mheg5 パッケージのクラス及びインタフェースが提供する

メソッドのシグネチャで定まる。VM 交換形式(9.2 参照)は,これらのクラス宣言をパッケージとして具

現する際の一意的な符号化方式を与える。VM 命令群(9.1 参照)は,そうしたパッケージが提供するイン

タフェースの駆動を VM 命令語に一意的に符号化する手段を与える。

11.1.1

設計方針  MHEG-5 API の設計は,次に示す方針による。

− MHEG-5 のクラスは,それぞれ,1 個の Java のクラスに対応付ける。

− MHEG-5 の基本操作は,それぞれ,その操作の対象となる MHEG-5 のクラスに対応付けた Java のク

ラスでの 1 個の Java のメソッドに対応付ける。

− MHEG-5 の動的属性の値の読み出しは,

それぞれ,

その属性をもつ MHEG-5 のクラスに対応付けた Java

のクラスが提供する 1 個の Java の "get" メソッドに対応付ける。

−  マルチメディア・ハイパメディア機能(表示,会話及び同期)を直接駆動する基本操作だけを,MHEG-5

API

として提供する。

−  演算の駆動を実行できないときは,MhegException 例外を発生させる。この例外は,Exception 例外の

拡張とする。

備考1.  基本操作の MHEG-5 AP1演算への対応付けは,附属書 に示す。

2. MHEG-5

API

演算は,基本操作に対応するものの,基本演算を実際に引き起こすことはなく,

MHEG-5

の内部データを直接に取り扱う(12.2.5 参照)

11.1.2

版  MHEG-5 API に,次に示す二つの版を設ける。

完全版  すべての MHEG-5 クラスの機能に対して直接の取扱いができるだけのクラスを用意する。

簡略版  次に示すクラスだけを用意する。

0bjectReference, ContentReference, MhegException, OctetString, Root, Group, Application, Scene,

Ingredient, Variable, BooleanVariable, IntegerVariable, OctetStringVariable, ObjectRefVariable,

ContentRefVariable

備考1. Variable クラス,Group クラス及びその上位クラス・下位クラス,並びにこれらのクラスが引

用する補助的なクラスだけが必すである(簡略版に相当する)

。これら以外のクラスを用意す

る場合は,すべてのクラスをパッケージに含めなければならない(完全版となる)

2.

簡略版であっても,MHEG-6 プログラムからは完全版と同じ機能を扱うことができるが,不

便になる。実際,簡略版を使うプログラムでは,基本操作に対応する機能を直接呼び出すこ

とができず,代わりに,その基本操作への引数に当たる値を Variable. setVariable を使って

MHEG-5

変数に設定しておいたうえで,Scene. sendEvent を使って,設定した MHEG-5 変数

への参照を添え,その基本操作を本体とする MHEG-5 リンクを引き起こさなければならない

ことがある。

11.2

構文に対する要件  MHEG-5 API 演算の駆動を表す VM 命令語列に,適合要件を設ける。MHEG-6

プログラムは,マルチメディア機能を駆動するに当たって,MHEG-5 API のシグネチャ(

附属書 参照)

に合致するメソッドシグネチャのオペランドをもった JVM 命令

(invokevirtual, invokenonvirtual, invokestatic

及び invokeinterface)を使わなければならない。

備考  この規定から,MHEG-5 オブジェクトの取扱いについて,iso. mheg5 パッケージを使って Java

で書いた場合に作られるバイト命令語と同じバイト命令語に翻訳される限りは,どんなプログ

ラム言語を使い,MHEG-5 オブジェクトの機能に対するどんな API を使っても応用プログラム


17

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

が作れることになる。この原則は,カーネル API にも当てはまる。

MHEG-6

エンジンは,MHEG-5 API のシグネチャに従って,すべてのクラス,インタフェース及び例外

に対するインタフェースをもっていなければならない。

11.3

意味に対する要件  MHEG-5 API は,完全版又は簡略版の形で,MHEG-6 エンジンの動作開始直後

からその動作中である限り,MHEG-6 エンジンから使えなければならない。MHEG-5 API のすべてのクラ

ス,インタフェース及び例外は,MHEG-6 エンジンにとって,11.1 で引用したカーネル API の仕様どおり

の振る舞いをするように具現しなければならない。

11.4

運用に対する要件  運用は,その応用分野での要求による。応用分野によっては,JIS X 4345 の規

定に従って,幾つかの振る舞いに制限を置くこともあるし,幾つかの振る舞いを選択事項とすることもあ

る。例えば,MHEG-6 の応用分野によっては,完全版を用意するか簡略版を用意するかを指定することも

ある。しかしながら,これによって用意する iso. mheg5 パッケージの構文が影響を受けることはない。い

ずれの場合にしても,選択した版のすべてのクラス及びメソッドを用意しなければならない。もちろん,

選択可能な機能又は準備しないとされた機能に対応付けられたクラス及びメソッドの振る舞いは保証され

ない。応用分野での指定外の機能及びエンジンの具現で準備しない機能を MHEG-6 プログラムが呼び出し

たときは,いつでも,OPTION_NOT_SUPPORTED 例外が返されなければならない。

11.5

協調  MHEG-5 クラス(Root クラス及びその下位クラス)に対応する JVM クラスのすべてのコンス

トラクタは,保護対象となる。したがって,MHEG-5 オブジェクトヘの Java の参照は,Root クラスの静的

な getObject メソッドを使って行わなければならない。この参照を使って演算を駆動したとき,その参照が

もはや MHEG-5 オブジェクトを指していなければ,例外を発生しなければならない。

MHEG-5

オブジェクトに対応する JVM の“代理”オブジェクトは,その MHEG-5 オブジェクトの

Preparation

振る舞いが駆動された時点又はその MHEG-5 オブジェクトに対する getObject 演算が初めて呼

び出された時点で生成するのがよい。

MHEG-5

オブジェクトの Destraction 振る舞いが駆動された時点では,

API

を実現している命令列にその事実を知らせ,代理オブジェクトが JVM 命令列から使えなくすることが

できるようにするのがよい。

備考1.  このとき,代理オブジェクトを取り除く必要はない。これは,Java のオブジェクトのモデル

から導ける。

2. MHEG-5API

は,MHEG-6 エンジンの設計に何らの想定をおかない。例えば,JVM と MHEG-5

エンジンとが,互いに MHEG-5 API を介して通信し合う形の独立したプロセスであってもよ

いし,MHEG-5 API に対する“代理”オブジェクトが,MHEG-5 エンジン内の MHEG-5 オブ

ジェクトを表した実際の具現上のオブジェクトであってもよい。MHEG-5 API は,プログラ

ムの命令列が移植可能であることを保証するための手段にすぎない。

3. groupidentifier

が書いてない参照は,一意的でないが,getObject を呼び出す時点で参照対象が

決められる。

12.  MHEG-5

と JVM との協調

12.1

プログラムコンテンツの交換形式  MHEG-6 交換プログラムオブジェクトにあっては,その

IncludedContent

型の OriginalContent 属性は,12.1 の規定に従わなければならない。ここでの形式化は,9.2

での JVM クラスのファイルに対するものと同じとする。

IncludedProgramContentData {

    u4 [class_count] offsets;


18

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

    ClassFile [class_count] classes;

}

offsets [i]

の値は,i 番目のクラス (classes [i]) のデータの最初のバイトの,OngmalContent オクテット列

の先頭からの相対位置とする。

class_count

は,MHEG-6 InterchangedProgram オブジェクトの Name 属性の値である文字列の列の長さに

等しい値とする。この値は,MHEG-6 InterchangedProgram オブジェクトがカプセル化している JVM クラス

の個数を示す。

classes [i]

は,JVM クラスのデータを 9.2 で規定するクラスのファイル形式に従って符合化したものとす

る。

offsets

及び classes は,MHEG-6 InterchangedProgram オブジェクトの Name 属性に並んだクラスの順に従

っていなければならない。

12.2

基本操作の意味

12.2.1  Call

基本操作  call 基本操作は,ライブラリ機能の呼出しの意味をもつ。call 基本操作の効果は,

指定されたクラスの指定されたメソッドを実行すること,及びこのメソッドが完了し,このメソッドが作

り出すすべての JVM スレッドが完了するまで,MHEG-5 エンジンの演算を停止することにある。

call

基本操作によって駆動された MHEG-6 InterchangedProgram オブジェクトは,次に示す MHEG-5 演算

だけしか使ってはならない。

− MHEG-5 内部の属性の値を直接読み出す演算

(これらの演算の大部分は,

 "get"

で始まる名前をもつ。

− Variable クラスの下位クラスが提供する setVariable メソッド

備考 call 基本操作で駆動された MHEG-6 InterchangedProgram オブジェクトから使うことのできる

MHEG-5 API

のメソッドは,その一覧を

附属書 に示す。

call

基本操作によって活性化した InterchangedProgram オブジェクトが MHEG-5 の基本操作を起動するこ

とは,プログラムの誤りとする。

備考1.  これを徹底するために,MHEG-5 API の具現は,VM 命令語列が MHEG-5の基本操作を要求

してきたとき,その VM 命令語列の VM スレッドが非同期プログラム(Fork 基本操作によっ

て駆動されたプログラム)であることを確認するようにし,そうでなければすべてを終了す

る例外を発生させるのがよい。

2.

許容された演算("get"  演算及び setVariable)の具現は,したがって(12.2.5 のとおりに)

MHEG-5

の基本操作を駆動するのではなく,直接データにアクセスする仕組みとするのがよ

い。

3. MHEG-5

エンジンは,Call 基本操作が使われたとき,その呼出しが終了するまでどんな基本

操作も処理しないでおくのがよい。

12.2.2  Fork

基本操作  Fork 基本操作は,新しいスレッドを作ってプログラムを走らせる意味をもつ。Fork

基本操作の効果は,ForkSucceeded 変数引数に結果を入れて MHEG-5 エンジンに通知し,MHEG-5 エンジ

ンが停止していた演算を再開できるようにすることにある。作り出されたスレッドは,MHEG-5 エンジン

が処理を再開しても,走り続ける。Fork 基本操作によって駆動された MHEG-6 InterchangedProgram オブジ

ェクト又は Applet オブジェクトは,MHEG-5 API のどの演算を駆動してもよい。

備考 Fork 基本操作と Call 基本操作との違いを徹底するのに,MHEG-5 API の具現では,Fork 基本操

作によって作られた Java のスレッド及びそこから作られたスレッドを,Call 基本操作に呼応す

る Java 命令語列の実行で使うスレッドのグループとは別のグループに入れるとよい。


19

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

InterchangedProgram

オブジェクト又は Applet オブジェクトは,他の親をもつスレッドのグループを作り

出してはならない。

備考  これは,プログラムの誤りとなり,SecurityManager による例外が発生する。

12.2.3  Invoke

基本操作  Invoke 基本操作は,アプレットのメソッドを駆動する意味をもつ。Invoke 基本

操作の効果は,そのメソッドの呼出しを待ち行列に入れ,InvokeSucceeded 変数引数に結果を入れて

MHEG-5

エンジンに通知し,MHEG-5 エンジンが停止していた演算を再開できるようにすることにある。

待ち行列に入れられたメソッド呼出しは,同じ待ち行列に入っていた他のメソッド呼出しの処理がすべて

終わり次第,Applet クラスの主スレッドの中で実行される。

12.2.4  Stop

基本操作  Stop 基本操作の効果は,その時点で実行中のメソッドを終了し,そのプログラム

から駆動されたすべての VM スレッドを停止することにある。

備考1. Stop 基本操作は,Fork 基本操作によって駆動されたプログラムにだけ適用する。

2.

応用プログラムの設計者は,システムが“クラッシュ”して制御不能になることを避けるた

め,そのプログラムで Java のすべての例外を処理し,プログラムをきれいに終了させたうえ

で,元の Call 基本操作又は Fork 基本操作に戻るようにするのがよい。

12.2.5  MHEG-5 API

演算  すべての MHEG-5 API 演算は,逐次実行の意味をもつ。VM 命令語列から

MHEG-5 API

演算を呼び出すと,その命令語列の実行が行われていた VM スレッドは,呼び出した MHEG-5

API

演算が終わるまで,実行を停止する。基本操作に対応する MHEG-5 API 演算からは,その MHEG-5 基

本演算の起動が終わり,それから生じる MHEG-5 の逐次処理(起動されたリンクの基本操作の実行)がす

べて終わり次第,元へ戻る。属性値の取扱いに使う MHEG-5 API 演算からは,その属性の値の読み書きが

終わり次第,元へ戻る。

12.3

実行  JVM 側から見たときの,MHEG-6 交換プログラムオブジェクトに適用できる操作の効果を規

定する。この目的で,ClassMapper という概念を導入して,7.2.3 に規定した機構を説明し,そのうえで,

具現についての推奨事項を規定する。

備考  この説明は,エンジンの振る舞いについての基準として使うことを意図したもので,このとお

りに MHEG-6 を具現しなくてよい。

ClassMapper

は,仮想的な実体であって,MHEG-6 交換プログラムオブジェクトと JVM クラスとの間の

関連が,

(MHEG-5 エンジンの制御下にある)MHEG-6 オブジェクト及び(VM に知られるようになった)

JVM

アプリケーションクラスの両方の生涯を通じて,動的に維持される方法を示すために使用する。

12.3.1

エンジンの立上げ  MHEG-6 エンジンは,MHEG-6 応用の Prepare 振る舞いを駆動する前に“ロー

ド”しておく。これは,次の示すことがらが応用の解釈実行中いつでも成り立っていることを意味する。

− MHEG-5 エンジンは,活性化した Link を処理することができる。

− ClassMapper は,どんな要求も受け付けられる。

− JVM は,VM 命令語列を実行することができる。

12.3.2  ClassMapper

の始動  Application オブジェクトを駆動すると,新しい応用プログラムが動き始めた

ことがその GroupIdentifier をもつ ClassMapper に通知される。

備考  この目的に合わせて,ClassMapper には次に示すとおりの関数があるものとする。

public void setApplication (MHEGId application_id)

グループオブジェクトが準備されるとすぐに,このグループに附属したすべての MHEG-6 交換プログラ

ムの説明的な情報が,ClassMapper に提供される。各 MHEG-6 交換プログラムオブジェクトに対して,こ

の説明的な情報は,

(Name 属性によって提供される)クラスの名前及び(IncludedContent 属性に対するク


20

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

ラスデータオフセット及び/又は ReferencedContent 属性に対するクラスファイル名を通じての)内容デー

タヘの参照を含む。クラスの各々に対して,ClassMapper は,説明的な情報を利用し,エントリを内部ク

ラス対応表に追加する。ここで,内部クラス対応表とは,カプセル化した MHEG-6 交換プログラムオブジ

ェクトにクラス名を対応付けし,クラスデータに参照を対応付けるものとする。

この通知を使用して,ClassMapper は,解決を要求されたときにはいつでも,これらクラスをロード可

能と知る。

備考  java. lang. package の ClassLoader クラスは,抽象クラスである。(java. lang. ClassLoader から継

承する)MHEG-6 ClassLoader は,MHEG-6 文脈に従って実装する必要がある。

(含まれる内容

データに対する)プログラム交換形式の構文解析及び(参照される内容データに対する)クラ

スファイルのアクセスは,実行時環境で利用可能な(Java. io. DataInput などの)データ入力機

構を通じて,ClassLoader クラスの loadClass メソッドによって実行される(このデータ入力機

構は,この規格では規定しない)

例  応用プログラムが,(その応用プログラムを通して使用される)クラス Add をもつ MHEG-6 交換

プログラムオブジェクトを含むと仮定する。その名前及び位置は,ClassMapper に通知されるが,

そのクラスは VM にロードされない。さらに,シーン 1 が,

(そのシーン内でだけ使用する)ク

ラス Fact をもつ交換プログラムを含むと仮定する。このとき,その InitiallyAvailable 属性は True

に設定されているとする。そこで,クラス Fact を VM にロードしなければならない。クラス Fact

のメソッドがクラス Add のメソッドを呼び出すので,クラス Fact のロードは,クラス Add の参

照が解決されるまで実行できない。そこで,ClassMapper によって保持されている対応付けを使用

し,MHEG-5 エンジンの演算を妨げることなく,クラス Add のコードをロードする。

備考  この目的のために,ClassMapper は,次の関数を提供できる。

public void notify (MHEGId object_id, String [ ] class. names,

                      ByteStreamReference [ ] class_data)

ClassMapper

が保持する対応付けの構造は,次のとおりとすることができる。

ClassEntry [ ] class_map;

ClassEntry {

            CONSTANT_Utf8_info name;

            MHEGId program_id;

            ByteStreamReference location;

}

ここで,ByteStreamReference は,実装依存の型をもち,参照される及び/又は含まれる内容

を保持するために使用する大規模データ領域へのハンドルを表現する。

12.3.3

プログラムの準備  MHEG-6 交換プログラムオブジェクトの準備の際に,その OriginalContent デー

タが検索され,ClassMapper に提供される。そのとき,ClassMapper は,クラスファイル形式を構文解析し,

そのクラスを VM にロードする。

備考  この目的のために,ClassMapper は,次の関数を提供できる。

public Error load (String class_name)

12.3.4

プログラムの活性化  交換プログラム上の Call 基本操作又は Fork 基本操作を引き起こす際に,

MHEG-5

エンジンは,その最初の引数(クラスインデックス)を処理し,Name 属性を使用して対象とな

るクラスの名前を検索する。さらに,ClassMapper は,次のことを行う。


21

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

−  起動されたクラスが,2 番目の引数 (method) で与えられる名前のメソッドをもつことを検査する。

−  他の MHEG-5 引数を JVM オブジェクト引数に転送する。

−  メソッドが起動できない場合(7.2.3 参照)は,False を返す(これは,MHEG-5 エンジンが,CallSucceeded

引数又は ForkSucceeded 引数を設定するために使用する。

−  実際には,転送された引数で JVM クラスの要求されたメソッドを呼び出す。

− Call の場合には,要求されたメソッドの終了において終了コードを返す(これは,MHEG-5 エンジン

が,CallSucceeded 引数を設定するために使用する。

− Fork の場合には,新しく生成された ThreadGroup の識別子を,後で参照するために一時的に記憶する

MHEG-5

エンジンに返す(12.3.5 参照)

。要求されたメソッドの終了において,ForkSucceeded 引数を

設定するために使用する終了コードをもつ通知を,MHEG-5 エンジンに送る。

備考  この目的のために,ClassMapper は,次の関数を提供できる。

public boolean call (String class_name, String method_name, Param [ ] args)

public int fork (String class_name, String method_name, Param [ ] args)

12.3.5

プログラムの非活性化  交換プログラム上の Stop 基本操作を引き起こす際に,MHEG-5 エンジン

は,一時的に記憶したスレッドグループ識別子を使用してプログラムの終了を要求する。Stop 基本操作の

効果は,初期スレッドを含む,プログラムが生成したすべてのスレッドを終了することとする。

備考  この目的のために,ClassMapper は,次の関数を提供できる。

public void stop (int ThreadGroupId)

12.3.6

プログラムの破壊  MHEG-6 交換プログラムオブジェクトの破壊に際して,この交換プログラムに

よって運ばれた名前が Name 属性によって定義されたクラスは,VM 内で削除という印が付けられる。

備考1.  この目的のために,ClassMapper は,次の関数を提供できる。

public void unload (String class_name)

これは,ClassMap 内のエントリをも削除する。MHEG-5 アプリケーションオブジェクトの

破壊に際して ClassMapper はその初期状態に復帰する。

2. JVM

クラス及びオブジェクトは,そのカプセル化した交換プログラムを破壊したときに削除

と印を付けられているが,これらのオブジェクトが実際に削除されるときを知る方法は存在

しない。これは JVM 実装のガーベジコレクションの方針に依存するためである。

3. JVM

オブジェクトがクラス変数によって参照される場合,そのオブジェクト(及びそのオブ

ジェクトが参照する任意のオブジェクト)は,クラスがアンロードされるまで維持される。

4.

シーン適用範囲をもつクラスのオブジェクトがアプリケーション適用範囲をもつクラスのオ

ブジェクトによって参照される場合,このクラスのコードは,シーンの破壊の後,VM メソ

ッド領域内に維持される必要があるかもしれない。しかし,こうしたプログラミングはしな

いほうがよい。より一般的に,破壊された交換プログラムが,まだ利用可能な他の交換プロ

グラムによって使用される場合,このクラスのコードは,もはや参照されなくなるまで VM

メソッド領域に維持されている必要があるかもしれない。

12.3.7

アプレットに対する ClassMapper  ClassMapper は,MHEG-6 アプレットオブジェクトに対して同

様の振る舞いをするものとする。それに加えて,ClassMapper は,次のことを行う。

−  アプレットの MHEG 参照を,対応する Java 実体及びスレッドオブジェクトに対応付ける。対象とな

るクラスのコンストラクタにおける活性化振る舞い呼出しの後,これら両方は,MHEG アプレットオ

ブジェクトの寿命を通じて記憶されなければならない。


22

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

− Invoke 基本操作を,待ち行列に加えるメソッド呼出しに変換する。


23

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 A(規定)  ASN.1 表記法

附属書 では,MHEG-6 オブジェクトの構文のための ASN.1 表記法について規定する。

ASN.1

表記法の使用は,サービスの配布及び配置を行うために推奨される。実際,ASN.1 表記法は,一

般的にテキスト表記法よりも 1/3∼1/4 の大きさのバイナリ形式を生成すると考えられる。

ASN.1

表記法を用いて符号化される MHEG-6 オブジェクトは,すべて次の ASN.1 構文を使用して記述

されなければならない。また,ISO/IEC 8825-1 : 1995 | ITU-T 勧告 X.690 で定義される識別符号化規則

(DER)

に従って符号化されなければならない。

次の構文は,JIS X 4345 

附属書 で定義されるものと互換性がある。したがって,JIS X 4345 の附属

書 に従って符号化された MHEG-5 オブジェクトは,すべて MHEG-6 オブジェクトでもある。すなわち,

この

附属書の構文に適合している。

--Copyright statement:

--© International Organisation for Standardisation 1998

--Permission to copy in any form is granted for use with conforming MHEG-6 engines

and applications

--provided this notice is included in all copies

--$PREFIX=ISOMHEG-mheg-6 : mheg-6

-- Module : mheg-6

ISO13522-MHEG-6 {joint-iso-itu-t (2) mheg (19) version (1) mheg-6 (18)}

DEFINITIONS IMPLICIT TAGS : : = BEGIN

-- This module defines the MHG-6 abstract syntax which consists of data values of

type:

-- ISO13522-MHEG-6. InterchangedObject.

-- This abstract syntax is identified by the name:

-- {joint-iso-itu-t (2) mheg (19) version (1) mheg-6 (18)}.

InterchangedObject 

  : : = CHOICE {

  application  [0]  ApplicationClass,

  scene

    [1] SceneClass

}

-- <A.1> Root Class 

RootClass 

  : : = ObjectReference

-- <A.2> Group Class 


24

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

GroupClass 

  : : = SET {

  RootClass  (WITH  COMPONENTS

    {external-reference (WITH COMPONENTS {..., object-number (0)}) PRESENT}),

  standard-identifier

          [2] StandardIdentifier OPTIONAL,

  standard-version

            [3] INTEGER (1) OPTIONAL,

  object-information

          [4] OCTET STRING OPTIONAL,

  on-start-up

                  [5] ActionClass OPTIONAL,

  on-close-down

                [6] ActionClass OPTIONAL,

  original-group-cache-priority

  [7] INTEGER (0..255) DEFAULT 127,

  items

                          [8] SEQUENCE SIZE (1..MAX) OF GroupItem OPTIONAL

}

StandardIdentifier 

  : : = SEQUENCE {

  joint-iso-itu

  INTEGER (2),

  mheg

  INTEGER (19)

}

GroupItem 

  : : = CHOICE {

  resident-program

        [9] ResidentProgramClass,

  remote-program

          [10] RemoteProgramClass,

  interchanged-program

    [11] InterchangedProgramClass,

  palette

                    [12] PaletteClass,

  font

                        [13] FontClass,

  cursor-shape

              [14] CursorShapeClass,

  boolean-variable

          [15] BooleanVariableClass,

  integer-variable

          [16] IntegerVariableClass,

  octet-string-variable

    [17] OctetStringVariableClass,

  object-ref-variable

      [18] ObjectRefVariableClass,

  content-ref-variable

    [19] ContentRefVariableClass,

  link

                        [20] LinkClass,

  stream

                      [21] StreamClass,

  bitmap

                      [22] BitmapClass,

  line-art

                    [23] LineArtClass,

  dynamic-line-art

          [24] DynamicLineArtClass,

  rectangle

                  [25] RectangleClass,

  hotspot

                    [26] HotspotClass,

  switch-button

              [27] SwitchButtonClass,

  push-button

                [28] PushButtonClass,

  text

                        [29] TextClass,


25

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  entry-field

                [30] EntryFieldClass,

  hyper-text

                [31] HyperTextClass,

  slider

                    [32] SliderClass,

  token-group

              [33] TokenGroupClass,

  list-group

                [34] ListGroupClass

  applet

                [237] AppletClass

}

-- <A.3> Application Class 

ApplicationClass 

  : : = SET

  COMPONENTS  OF  GroupClass,

  on-spawn-close-down

    [35] ActionClass OPTIONAL,

  on-restart

              [36] ActionClass OPTIONAL,

  default-attributes

    [37] SEQUENCE SIZE (1..MAX) OF DefaultAttribute OPTIONAL

}

DefaultAttribute

  : : = CHOICE {

  character-set

          [38] INTEGER,

  background-colour

      [39] Colour,

  text-content-hook

      [40] INTEGER,

  text-colour

            [41] Colour,

  font

                    [42] FontBody,

  font-attributes

        [43] OCTET STRING,

  interchanged-program-content-hook

  [44] INTEGER,

  stream-content-hook

    [45] INTEGER,

  bitmap-content-hook

    [46] INTEGER,

  line-art-content-hook

  [47] INTEGER,

  button-ref-colour

      [48] Colour,

  highlight-ref-colour

  [49] Colour,

  slider-ref-colour

      [50] Colour.

}

FontBody 

  : : = CHOICE {

  direct-font

  OCTET STRING,

  indirect-font  ObjectReference  }

-- <A.4> Scene Class 

SceneClass 

  : : = SET {

  COMPONENTS  OF  GroupClass,


26

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  input-event-register

      [51] INTEGER,

  scene-coordinate-system

  [52] SceneCoordinateSystem,

  aspect-ratio

                [53] AspectRatio DEFAULT {width 4, height 3},

  moving-cursor

              [54] BOOLEAN DEFAULT FALSE,

  next-scenes

                [55] SEQUENCE SIZE (1..MAX) OF NextScene OPTIONAL

}

SceneCoordinateSystem 

  : : = SEQUENCE {

  x-scene  INTEGER,

  y-scene  INTEGER

}

AspectRatio 

  : : = SEQUENCE {

  width INTEGER,

  height INTEGER

}

NextScene 

  : : = SEQUENCE {

  scene-ref   OCTET STRING,

  scene-weight INTEGER (0..255)

}

-- <A.5> Ingredient Class 

IngredientClass 

  : : = SET {

  RootClass (WITH COMPONENTS

    {..., external-reference (WITH COMPONENTS (..., object-number (1..MAX)})}),

  initially-active    [56] BOOLEAN DEFAULT TRUE,

  content-hook        [57] INTEGER OPTIONAL,

  original-content    [58] ContentBody OPTIONAL,

  shared                [59] BOOLEAN DEFAULT FALSE

}

ContentBody 

  : : = CHOICE {

  included-content   OCTET STRING,

  referenced-content ReferencedContent

}

ReferencedContent 

  : : = SEQUENCE {

  content-reference   ContentReference,


27

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  content-size                [60] INTEGER OPTIONAL,

  content-cache-priority    [61] INTEGER (0..255) DEFAULT 127

}

-- <A.6> Link Class 

LinkClass 

  : : = SET {

  COMPONENTS OF IngredientClass (WITH COMPONENTS

    (..., content-hook ABSENT, original-content ABSENT}),

  link-condition    [62] LinkCondition,

  link-effect        [63] ActionClass

}

LinkCondition

  : : = SEQUENCE {

  event-source ObjectReference,

  event-type   EventType,

  event-data   EventData OPTIONAL

}

EventType 

  : : = ENUMERATED {

  is-available          (1),

  content-available     (2),

  is-deleted              (3)

  is-running              (4),

  is-stopped              (5),

  user-input              (6),

  anchor-fired            (7),

  timer-fired              (8),

  asynch-stopped          (9),

  interaction-completed  (10),

  token-moved-from       (11),

  token-moved-to          (12),

  stream-event            (13),

  stream-playing          (14),

  stream-stopped          (15),

  counter-trigger        (16),

  highlight-on            (17),

  highlight-off          (18),

  cursor-enter            (19),

  cursor-leave            (20),


28

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  is-selected            (21),

  is-deselected          (22),

  test-event              (23),

  first-item-presented   (24),

  last-item-presented   (25),

  head-items              (26),

  tail-items              (27),

  item-selected          (28),

  item-deselected        (29),

  entry-field-full       (30),

  engine-event          (31),

}

EventData 

  : : = CHOICE {

  octetstring OCTET STRING,

  boolean       BOOLEAN,

  integer       INTEGER

}

-- <A.7> Program Class 

ProgramClass 

  : : = SET {

  COMPONENTS OF IngredientClass (WITH COMPONENTS {..., initially-active (FALSE)

PRESENT}),

  name                      [64] OCTET STRING,

  initially-available     [65] BOOLEAN DEFAULT TRUE

}

-- <A.8> ResidentProgram Class 

ResidentProgramClass

  : : = ProgramClass

  (WITH COMPONENTS (..., content-hook ABSENT, original-content ABSENT})

-- <A.9> RemoteProgram Class 

RemoteProgramClass 

  : : = SET {

  COMPONENTS OF ProgramClass (WITH COMPONENTS {..., content-hook ABSENT,

original-content ABSENT}),

  program-connection-tag     [66] INTEGER OPTIONAL

}


29

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

-- <A.10> InterchangedProgram Class 

InterchangedProgramClass

  : : = ProgramClass (WITH   COMPONENTS

  {..., original-content PRESENT, content-hook (0)})

-- <A.11> Palette Class 

PaletteClass 

  : : = IngredientClass (WITH COMPONENTS

  (..., content-hook PRESENT, original-content PRESENT, initially-active (TRUE)})

-- <A.12> Font Class 

FontClass 

  : : = IngredientClass (WITH COMPONENTS

  (..., content-hook PRESENT, original-content PRESENT, initially-active (TRUE)})

-- <A.13> CursorShape Class 

CursorShapeClass 

  : : = IngredientClass (WITH COMPONENTS

  {..., content-hook PRESENT, original-content PRESENT, initially-active (TRUE)})

-- <A.14> Variable Class 

VariableClass 

  : : = SET {

  COMPONENTS OF IngredientClass (WITH COMPONENTS

    (..., content-hook ABSENT, original-content ABSENT, initially-active (TRUE)}),

  original-value    [67] OriginalValue

}

OriginalValue 

  : : = CHOICE {

  boolean           BOOLEAN,

  integer           INTEGER,

  octetstring       OCTET STRING,

  object-reference     [68] ObjectReference,

  content-reference     [69] ContentReference

}

--<A.15> BooleanVariable Class 

BooleanVariableClass 

  : : = VariableClass (WITH COMPONENTS

  {..., original-value (WITH COMPONENTS {boolean PRESENT})})


30

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

-- <A.16> IntegerVariable Class 

IntegerVariableClass 

  : : = VariableClass (WITH COMPONENTS

  {..., original-value (WITH COMPONENTS {integer PRESENT})})

-- <A.17> OctetStringVariable Class 

OctetStringVariableClass

  : : = VariableClass (WITH COMPONENTS

  {..., original-value (WITH COMPONENTS {octetstring PRESENT})})

-- <A.18> ObjectReferenceVariable Class 

ObjectRefVariableClass 

  : : = VariableClass (WITH COMPONENTS

  {..., original-value (WITH COMPONENTS {object-reference PRESENT})})

-- <A.19> ContentReferenceVariable Class 

ContentRefVariableClass 

  : : = VariableClass (WITH COMPONENTS

  {..., original-value (WITH COMPONENTS {content-reference PRESENT})})

-- <A.20> Presentable Class 

PresentableClass 

  : : = IngredientClass

-- <A.21> TokenManager Class 

TokenManagerClass

  : : = SET {

  movement-table [70] SEQUENCE SIZE (1..MAX) OF Movement OPTIONAL

}

Movement 

  : : = SEQUENCE SIZE (1..MAX) OF INTEGER

-- <A.22> TokenGroup Class 

TokenGroupClass 

  : : = SET {

  COMPONENTS OF PresentableClass (WITH COMPONENTS

    {..., content-hook ABSENT, original-content ABSENT}),

  COMPONENTS OF TokenManagerClass,

  token-group-items         [71] SEQUENCE SIZE (1..MAX) OF TokenGroupItem,


31

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  no-token-action-slots    [72] SEQUENCE SIZE (1..MAX) OF ActionSlot OPTIONAL

}

TokenGroupItem 

  : : = SEQUENCE {

  a-visible ObjectReference,

  action-slots SEQUENCE SIZE (1..MAX) OF ActionSlot OPTIONAL

}

ActionSlot 

  : : = CHOICE {

  action-class ActionClass,

  null   NULL

}

-- <A.23> ListGroup Class 

ListGroupClass 

  : : = SET {

  COMPONENTS OF TokenGroupClass,

  positions              [73] SEQUENCE SIZE (1..MAX) OF XYPosition,

  wrap-around            [74] BOOLEAN DEFAULT FALSE,

  multiple-selection   [75] BOOLEAN DEFAULT FALSE

}

-- <A.24> Visible Class 

VisibleClass

  : : = SET {

  COMPONENTS OF PresentableClass,

  original-box-size     [76] OriginalBoxSize,

  original-position     [77] XYPosition DEFAULT {x-position 0, y-position 0},

  original-palette-ref     [78] ObjectReference OPTIONAL

}

OriginalBoxSize 

  : : = SEQUENCE {

  x-length INTEGER (0..MAX),

  y-length INTEGER (0..MAX)

}

-- <A.25> Bitmap Class 

BitmapClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS {..., original-content PRESENT}),


32

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  tiling    [79] BOOLEAN DEFAULT FALSE,

  original-transparency     [80] INTEGER (0..100) DEFAULT 0

}

-- <A.26> LineArt Class 

LineArtClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS {..., original-content PRESENT}),

  bordered-bounding-box     [81] BOOLEAN DEFAULT TRUE,

  original-line-width       [82] INTEGER DEFAULT 1,

  original-line-style       [83] INTEGER {solid (1), dashed (2), dotted (3)} DEFAULT

solid,

  original-ref-line-colour   [84] Colour OPTIONAL,

  original-ref-fill-colour   [85] Colour OPTIONAL

}

-- <A.27> Rectangle Class 

RectangleClass 

  : : = LineArtClass (WITH COMPONENTS

  {..., content-hook ABSENT, original-content ABSENT, bordered-bounding-box

ABSENT})

-- <A.28> DynamicLineArt Class 

DynamicLineArtClass 

  : : = LineArtClass (WITH COMPONENTS

  {..., content-hook ABSENT, original-content ABSENT})

-- <A.29> Text Class 

TextClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS {..., original-content PRESENT}),

  original-font              [86] FontBody OPTIONAL,

  font-attributes            [43] OCTET STRING OPTIONAL,

  text-colour              [41] Colour OPTIONAL,

  background-colour       [39] Colour OPTIONAL,

  character-set            [38] INTEGER OPTIONAL,

  horizontal-justification   [87] Justification DEFAULT start,

  vertical-justification   [88] Justification DEFAULT start,

  line-orientation           [89] LineOrientation DEFAULT horizontal,

  start-corner                [90] StartCorner DEFAULT upper-left,


33

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  text-wrapping              [91] BOOLEAN DEFAULT FALSE

}

Justification 

  : : = ENUMERATED {start (1), end (2), centre (3), justified (4)}

LineOrientation 

  : : = ENUMERATED {vertical (1), horizontal (2)}

StartCorner

  : : = ENUMERATED {upper-left (1), upper-right (2), lower-left (3),

lower-right (4)}

-- <A.30> Stream Class 

StreamClass 

  : : = SET {

  COMPONENTS OF PresentableClass (WITH COMPONENTS {..., original-content PRESENT}),

  multiplex       [92] SEQUENCE SIZE (1..MAX) OF StreamComponent,

  storage        [93] Storage DEFAULT stream,

  looping        [94] INTEGER {infinity (0)} DEFAULT 1

}

StreamComponent 

  : : = CHOICE {

  audio        [95] AudioClass,

  video        [96] VideoClass,

  rtgraphics   [97] RTGraphicsClass

}

Storage 

  : : = ENUMERATED {memory (1), stream (2)}

-- <A.31> Audio Class 

AudioClass 

  : : = SET {

  COMPONENTS OF PresentableClass (WITH COMPONENTS

    {...,content-hook ABSENT, original-content ABSENT, shared ABSENT}),

  component-tag    [98] INTEGER,

  original-volume  [99] INTEGER DEFAULT 0

}

-- <A.32> Video Class 

VideoClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS


34

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

    {..., content-hook ABSENT, original-content ABSENT, shared

ABSENT,original-palette-ref ABSENT}),

  component-tag      [98] INTEGER,

  termination        [100] Termination DEFAULT disappear

}

Termination 

  : : = ENUMERATED {freeze (1), disappear (2)}

-- <A.33> RTGraphics Class 

RTGraphicsClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS

    {..., content-hook ABSENT, original-content ABSENT, shared ABSENT}),

  component-tag    [98] INTEGER,

  termination      [100] Termination DEFAULT disappear

}

-- <A.34> Interactible Class 

InteractibleClass 

  : : = SET {

  engine-resp               [101] BOOLEAN DEFAULT TRUE,

  highlight-ref-colour     [49] Colour OPTIONAL

}

-- <A.35> Slider Class 

SliderClass 

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS {..., content-hook ABSENT,

original-content ABSENT}),

  COMPONENTS OF InteractibleClass,

  orientation            [102] Orientation,

  max-value              [103] INTEGER,

  min-value                [104] INTEGER DEFAULT 1,

  initial-value          [105] INTEGER OPTIONAL,

  initial-portion        [106] INTEGER OPTIONAL,

  step-size              [107] INTEGER DEFAULT 1,

  slider-style          [108] SliderStyle DEFAULT normal,

  slider-ref-colour     [50] Colour OPTIONAL

}


35

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

Orientation 

  : : = ENUMERATED {left (1), right (2), up (3), down (4)}

SliderStyle 

  : : = ENUMERATED {normal (1), thermometer (2), proportional (3)}

-- <A.36> EntryField Class 

EntryFieldClass 

  : : = SET {

  COMPONENTS OF TextClass,

  COMPONENTS OF InteractibleClass,

  input-type            [109] InputType DEFAULT any,

  char-list            [110] OCTET STRING OPTIONAL,

  obscured-input      [111] BOOLEAN DEFAULT FALSE,

  max-length          [112] INTEGER DEFAULT 0

}

InputType 

  : : = ENUMERATED {alpha (1), numeric (2), any (3), listed (4)}

-- <A.37> HyperText Class 

HyperTextClass

  : : = SET {

  COMPONENTS OF TextClass,

  COMPONENTS OF InteractibleClass

}

-- <A.38> Button Class 

ButtonClass

  : : = SET {

  COMPONENTS OF VisibleClass (WITH COMPONENTS {..., content-hook ABSENT,

original-content ABSENT}),

  COMPONENTS OF InteractibleClass,

  button-ref-colour     [48] Colour OPTIONAL

}

--<A.39> Hotspot Class 

HotspotClass

  : : = ButtonClass

-- <A.40> PushButton Class 

PushButtonClass 

  : : = SET {


36

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  COMPONENTS OF ButtonClass,

  original-label        [113] OCTET STRING OPTIONAL,

  character-set          [38] INTEGER OPTIONAL

}

-- <A.41> SwitchButton Class 

SwitchButtonClass 

  : : = SET {

  COMPONENTS OF PushButtonClass,

  button-style      [114] ButtonStyle

}

ButtonStyle 

  : : = ENUMERATED {pushbutton (1), radiobutton (2), checkbox (3)}

-- <A.42> Applet Class 

AppletClass 

  : : = SET {

  COMPONENTS OF InterchangedProgramClass,

  COMPONENTS OF InteractibleClass,

  original-box-size     [76] OriginalBoxSize,

  original-position     [77] XYPosition DEFAULT {x-position 0, y-position 0}

}

-- <A.43> Action Class 

ActionClass

  : : = SEQUENCE SIZE (1..MAX) OF ElementaryAction

ElmentaryAction 

  : : = CHOICE {

  activate                [115] GenericObjectReference,

  add                      [116] Add,

  add-item                [117] AddItem,

  append                  [118] Append,

  bring-to-front        [119] GenericObjectReference,

  call                    [120] Call,

  call-action-slot      [121] CallActionSlot,

  clear                    [122] GenericObjectReference,

  clone                    [123] Clone,

  close-connection       [124] CloseConnection,

  deactivate              [125] GenericObjectReference,

  del-item                [126] DelItem,


37

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  deselect                [127] GenericObjectReference,

  deselect-item          [128] DeselectItem,

  divide                  [129] Divide,

  draw-arc                [130] DrawArc,

  draw-line              [131] DrawLine,

  draw-oval              [132] DrawOval,

  draw-polygon        [133] DrawPolygon,

  draw-polyline      [134] DrawPolyline,

  draw-rectangle    [135] DrawRectangle,

  draw-sector        [136] DrawSector,

  fork                [137] Fork,

  get-availability-status     [138] GetAvailabilityStatus,

  get-box-size        [139] GetBoxSize,

  get-cell-item      [140] GetCellItem,

  get-cursor-position     [141] GetCursorPosition,

  get-engine-support    [142] GetEngineSupport,

  get-entry-point    [143] GetEntryPoint,

  get-fill-colour    [144] GetFillColour,

  get-first-item    [145] GetFirstItem,

  get-highlight-status     [146] GetHighlightStatus,

  get-interaction-status     [147] GetInteractionStatus,

  get-item-status    [148] GetItemStatus,

  get-label            [149] GetLabel,

  get-last-anchor-fired     [150] GetLastAnchorFired,

  get-line-colour      [151] GetLineColour,

  get-line-style      [152] GetLineStyle,

  get-line-width       [153] GetLineWidth,

  get-list-item      [154] GetListItem,

  get-list-size      [155] GetListSize,

  get-overwrite-mode     [156] GetOverwriteMode,

  get-portion              [157] GetPortion,

  get-position            [158] GetPosition,

  get-running-status     [159] GetRunningStatus,

  get-selection-status    [160] GetSelectionStatus,

  get-slider-value         [161] GetSlidervalue,

  get-text-content         [162] GetTextContent,

  get-text-data            [163] GetTextData,

  get-token-position       [164] GetTokenPosition,

  get-volume                [165] GetVolume,

  invoke                    [238] Invoke,


38

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  launch                    [166] GenericObjectReference,

  lock-screen              [167] GenericObjectReference,

  modulo                    [168] Modulo,

  move                      [169] Move,

  move-to                  [170] MoveTo,

  multiply                [171] Multiply,

  open-connection         [172] OpenConnection,

  preload                  [173] GenericObjectReference,

  put-before              [174] PutBefore,

  put-behind              [175] PutBehind,

  quit                    [176] GenericObjectReference,

  read-persistent        [177] ReadPersistent,

  run                      [178] GenericObjectReference,

  scale-bitmap          [179] ScaleBitmap,

  scale-video            [180] ScaleVideo,

  scroll-items          [181] ScrollItems,

  select                  [182] GenericObjectReference,

  select-item            [183] SelectItem,

  send-event            [184] SendEvent,

  send-to-back          [185] GenericObjectReference,

  set-box-size          [186] SetBoxSize,

  set-cache-priority     [187] SetCachePriority,

  set-counter-end-position     [188] SetCounterEndPosition,

  set-counter-position     [189] SetCounterPosition,

  set-counter-trigger     [190] SetCounterTrigger,

  set-cursor-position     [191] SetCursorPosition,

  set-cursor-shape     [192] SetCursorShape,

  set-data              [193] SetData,

  set-entry-point    [194] SetEntryPoint,

  set-fill-colour    [195] SetFillColour,

  set-first-item    [196] SetFirstItem,

  set-font-ref      [197] SetFontRef,

  set-highlight-status     [198] SetHighlightStatus,

  set-interaction-status     [199] SetinteractionStatus,

  set-label          [200] SetLabel,

  set-line-colour    [201] SetLineColour,

  set-line-style    [202] SetLineStyle,

  set-line-width    [203] SetLineWidth,

  set-overwrite-mode     [204] SetOverwriteMode,

  set-palette-ref    [205] SetPaletteRef,


39

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  set-portion        [206] SetPortion,

  set-position      [207] SetPosition,

  set-slider-value     [208] SetSlidervalue,

  set-speed        [209] SetSpeed,

  set-timer        [210] SetTimer,

  set-transparency     [211] SetTransparency,

  set-variable        [212] SetVariable,

  set-volume          [213] SetVolume,

  spawn                [214] GenericObjectReference,

  step                [215] Step,

  stop                [216] GenericObjectReference,

  store-persistent     [217] StorePersistent,

  subtract          [218] Subtract,

  test-variable    [219] TestVariable,

  toggle            [220] GenericObjectReference,

  toggle-item      [221] ToggleItem,

  transition-to    [222] TransitionTo,

  unload            [223] GenericObjectReference,

  unlock-screen    [224] GenericObjectReference

}

Add 

  : : = SEQUENCE {

  target   GenericObjectReference,

  value     GenericInteger

}

AddItem 

  : : = SEQUENCE {

  target             GenericObjectReference,

  item-index         GenericInteger,

  visible-reference   GenericObjectReference

}

Append 

  : : = SEQUENCE {

  target           GenericObjectReference,

  append-value   GenericOctetString

}

Call 

  : : = SEQUENCE {

  target             GenericObjectReference,

  call-succeeded   ObjectReference,


40

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  parameters       SEQUENCE SIZE (1..MAX) OF Parameter OPTIONAL

}

CallActionSlot

  : : = SEQUENCE {

  target   GenericObjectReference,

  index   GenericInteger

}

Clone 

  : : = SEQUENCE {

  target           GenericObjectReference,

  clone-ref-var   ObjectReference

}

CloseConnection 

  : : = SEQUENCE {

  target           GenericObjectReference,

  connection-tag   GenericInteger

}

DelItem 

  : : = SEQUENCE {

  target         GenericObjectReference,

  visible-reference   GenericObjectReference

}

DeselectItem 

  : : = SEQUENCE {

  target           GenericObjectReference,

  item-index       GenericInteger

}

Divide 

  : : = SEQUENCE {

  target           GenericObjectReference,

  value             GenericInteger

}

DrawArc 

  : : = SEQUENCE {

  target           GenericObjectReference,

  x                 GenericInteger,

  y                 GenericInteger,

  ellipse-width   GenericInteger,

  ellipse-height   GenericInteger,

  start-angle       GenericInteger,


41

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  arc-angle         GenericInteger

}

DrawLine 

  : : = SEQUENCE {

  target   GenericObjectReference,

  x1       GenericInteger,

  y1       GenericInteger,

  x2       GenericInteger,

  y2       GenericInteger

}

DrawOval 

  : : = SEQUENCE {

  target           GenericObjectReference,

  x                 GenericInteger,

  y                 GenericInteger,

  ellipse-width   GenericInteger,

  ellipse-height   GenericInteger

}

DrawPolygon 

  : : = SEQUENCE {

  target   GenericObjectReference,

  pointlist   SEQUENCE SIZE (1..MAX) OF Point

}

DrawPolyline 

  : : = SEQUENCE {

  target   GenericObjectReference,

  pointlist   SEQUENCE SIZE (1..MAX) OF Point

}

DrawRectangle 

  : : = SEQUENCE {

  target   GenericObjectReference,

  x1       GenericInteger,

  y1       GenericInteger,

  x2       GenericInteger,

  y2       GenericInteger

}

DrawSector 

  : : = SEQUENCE {

  target           GenericObjectReference,

  x                 GenericInteger,


42

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  y                 GenericInteger,

  ellipse-width   GenericInteger,

  ellipse-height   GenericInteger,

  start-angle     GenericInteger,

  arc-angle       GenericInteger

}

Fork 

  : : = SEQUENCE {

  target           GenericObjectReference,

  fork-succeeded  ObjectReference,

  parameters       SEQUENCE SIZE (1..MAX) OF Parameter OPTIONAL

}

GetAvailabilityStatus 

  : : = SEQUENCE {

  target           GenericObjectReference,

  availability-status-Var  ObjectReference

}

GetBoxSize 

  : : = SEQUENCE {

  target           GenericObjectReference,

  x-box-size-var  ObjectReference,

  y-box-size-var  ObjectReference

}

GetCellItem 

  : : = SEQUENCE {

  target         GenericObjectReference,

  cell-index     GenericInteger,

  item-ref-var  ObjectReference

}

GetCursorPosition 

  : : = SEQUENCE {

  target   GenericObjectReference,

  x-out    ObjectReference,

  y-out    ObjectReference

}

GetEngineSupport 

  : : = SEQUENCE {

  target     GenericObjectReference,

  feature   GenericOctetString,

  answer    ObjectReference

}


43

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

GetEntryPoint 

  : : = SEQUENCE {

  target           GenericObjectReference,

  entry-point-var  ObjectReference

}

GetFillColour 

  : : = SEQUENCE {

  target             GenericObjectReference,

  fill-colour-var  ObjectReference

}

GetFirstItem 

  : : = SEQUENCE {

  target             GenericObjectReference,

  first-item-var    ObjectReference

}

GetHighlightStatus 

  : : = SEQUENCE {

  target             GenericObjectReference,

  highlight-status-var  ObjectReference

}

GetInteractionStatus 

  : : = SEQUENCE {

  target               GenericObjectReference,

  interaction-status-var  ObjectReference

}

GetItemStatus 

  : : = SEQUENCE {

  target             GenericObjectReference,

  item-index         GenericInteger,

  item-status-var  ObjectReference

}

GetLabel 

  : : = SEQUENCE {

  target           GenericObjectReference,

  label-var        ObjectReference

}

GetLastAnchorFired 

  : : = SEQUENCE {

  target           GenericObjectReference,

  last-anchor-fired-var  ObjectReference


44

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

}

GetLineColour 

  : : = SEQUENCE {

  target         GenericObjectReference,

  line-colour-var  ObjectReference

}

GetLineStyle 

  : : = SEQUENCE {

  target           GenericObjectReference,

  line-style-var  ObjectReference

}

GetLineWidth 

  : : = SEQUENCE {

  target           GenericObjectReference,

  line-width-var  ObjectReference

}

GetListItem 

  : : = SEQUENCE {

  target         GenericObjectReference,

  item-index     GenericInteger,

  item-ref-var  ObjectReference

}

GetListSize 

  : : = SEQUENCE {

  target         GenericObjectReference,

  size-var      ObjectReference

}

GetOverwriteMode 

  : : = SEQUENCE {

  target         GenericObjectReference,

  overwrite-mode-var  ObjectReference

}

GetPortion 

  : : = SEQUENCE {

  target         GenericObjectReference,

  portion-var    ObjectReference

}

GetPosition 

  : : = SEQUENCE {

  target         GenericObjectReference,


45

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  x-position-var  ObjectReference,

  y-position-var  ObjectReference

}

GetRunningStatus 

  : : = SEQUENCE {

  target           GenericObjectReference,

  running-status-var  ObjectReference

}

GetSelectionStatus 

  : : = SEQUENCE {

  target               GenericObjectReference,

  selection-status-var  ObjectReference

}

GetSlidervalue 

  : : = SEQUENCE {

  target           GenericObjectReference,

  slider-value-var  ObjectReference

}

GetTextContent 

  : : = SEQUENCE {

  target             GenericObjectReference,

  text-content-var  ObjectReference

}

GetTextData 

  : : = SEQUENCE {

  target             GenericObjectReference,

  text-data-var    ObjectReference

}

GetTokenPosition 

  : : = SEQUENCE {

  target             GenericObjectReference,

  token-position-var  ObjectReference

}

GetVolume 

  : : = SEQUENCE {

  target             GenericObjectReference,

  volume-var        ObjectReference

}

Invoke 

  : : = SEQUENCE {


46

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  target             GenericObjectReference,

  invoke-succeeded  ObjectReference,

  method             GenericOctetString,

  parameters         SEQUENCE SIZE (1..MAX) OF Parameter OPTIONAL

}

Modulo 

  : : = SEQUENCE {

  target   GenericObjectReference,

  value   GenericInteger

}

Move 

  : : = SEQUENCE {

  target           GenericObjectReference,

  movement-identifier   GenericInteger

}

MoveTo 

  : : = SEQUENCE {

  target     GenericObjectReference,

  index     GenericInteger

}

Multiply 

  : : = SEQUENCE {

  target   GenericObjectReference,

  value     GenericInteger

}

OpenConnection 

  : : = SEQUENCE {

  target           GenericObjectReference,

  open-succeeded  ObjectReference,

  protocol         GenericOctetString,

  address         GenericOctetString,

  connection-tag   GenericInteger

}

PutBefore 

  : : = SEQUENCE {

  target                 GenericObjectReference,

  reference-visible   GenericObjectReference

}

PutBehind 

  : : = SEQUENCE {


47

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  target                 GenericObjectReference,

  reference-visible   GenericObjectReference

}

ReadPersistent 

  : : = SEQUENCE {

  target           GenericObjectReference,

  read-succeeded  ObjectReference,

  out-variables   SEQUENCE SIZE (1..MAX) OF ObjectReference,

  in-file-name     GenericOctetString

}

ScaleBitmap 

  : : = SEQUENCE {

  target     GenericObjectReference,

  x-scale   GenericInteger,

  y-scale   GenericInteger

}

ScaleVideo 

  : : = SEQUENCE {

  target     GenericObjectReference,

  x-scale   GenericInteger,

  y-scale   GenericInteger

}

ScrollItems 

  : : = SEQUENCE {

  target             GenericObjectReference,

  items-to-scroll   GenericInteger

}

SelectItem 

  : : = SEQUENCE {

  target     GenericObjectReference,

  item-index   GenericInteger

}

SendEvent

  : : = SEQUENCE {

  target                     GenericObjectReference,

  emulated-event-source   GenericObjectReference,

  emulated-event-type     EventType,

  emulated-event-data     EmulatedEventData OPTIONAL

}


48

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

SetBoxSize 

  : : = SEQUENCE {

  target             GenericObjectReference,

  x-new-box-size   GenericInteger,

  y-new-box-size   GenericInteger

}

SetCachePriority 

  : : = SEQUENCE {

  target                 GenericObjectReference,

  new-cache-priority   GenericInteger

}

SetCounterEndPosition 

  : : = SEQUENCE {

  target               GenericObjectReference,

  new-counter-end-position   GenericInteger

}

SetCounterPosition 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-counter-position   GenericInteger

}

SetCounterTrigger 

  : : = SEQUENCE {

  target             GenericObjectReference,

  trigger-identifier   GenericInteger,

  new-counter-value   GenericInteger OPTIONAL

}

SetCursorPosition 

  : : = SEQUENCE {

  target     GenericObjectReference,

  x-cursor   GenericInteger,

  y-cursor   GenericInteger

}

SetCursorShape

  : : = SEQUENCE {

  target               GenericObjectReference,

  new-cursor-shape   GenericObjectReference OPTIONAL

}

SetData 

  : : = SEQUENCE {

  target         GenericObjectReference,


49

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  new-content   NewContent

}

SetEntryPoint 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-entry-point   GenericInteger

}

SetFillColour 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-fill-colour   NewColour OPTIONAL

}

SetFirstItem 

  : : = SEQUENCE {

  target         GenericObjectReference,

  new-first-item   GenericInteger

}

SetFontRef 

  : : = SEQUENCE {

  target     GenericObjectReference,

  new-font   NewFont

}

SetHighlightStatus 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-highlight-status   GenericBoolean

}

SetInteractionStatus 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-interaction-status   GenericBoolean

}

SetLabel 

  : : = SEQUENCE {

  target         GenericObjectReference,

  new-label     GenericOctetString

}

SetLineColour 

  : : = SEQUENCE {

  target         GenericObjectReference,

  new-line-colour   NewColour


50

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

}

SetLineStyle 

  : : = SEQUENCE {

  target           GenericObjectReference,

  new-line-style   GenericInteger

}

SetLineWidth 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-line-width   GenericInteger

}

SetOverwriteMode 

  : : = SEQUENCE {

  target                 GenericObjectReference,

  new-overwrite-mode   GenericBoolean

}

SetPaletteRef 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-palette-ref   GenericObjectReference

}

SetPortion 

  : : = SEQUENCE {

  target           GenericObjectReference,

  new-portion   GenericInteger

}

SetPosition 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-x-position   GenericInteger,

  new-y-position   GenericInteger

}

SetSliderValue 

  : : = SEQUENCE {

  target               GenericObjectReference,

  new-slider-value   GenericInteger

}

SetSpeed 

  : : = SEQUENCE {

  target             GenericObjectReference,


51

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  new-speed Rational

}

SetTimer 

  : : = SEQUENCE {

  target       GenericObjectReference,

  timer-id     GenericInteger,

  new-timer     NewTimer OPTIONAL

}

NewTimer 

  : : = SEQUENCE {

  timer-value     GenericInteger,

  absolute-time   GenericBoolean OPTIONAL

}

SetTransparency 

  : : = SEQUENCE {

  target             GenericObjectReference,

  new-transparency   GenericInteger

}

SetVariable 

  : : = SEQUENCE {

  target                 GenericObjectReference,

  new-variable-value   NewVariableValue

}

SetVolume 

  : : = SEQUENCE {

  target       GenericObjectReference,

  new-volume   GenericInteger

}

Step 

  : : = SEQUENCE {

  target         GenericObjectReference,

  nb-of-steps   GenericInteger

}

StorePersistent 

  : : = SEQUENCE {

  target             GenericObjectReference,

  store-succeeded  ObjectReference,

  in-variables     SEQUENCE SIZE (1..MAX) OF  ObjectReference,

  out-file-name   GenericOctetString

}


52

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

Subtract 

  : : = SEQUENCE {

  target   GenericObjectReference,

  value   GenericInteger

}

TestVariable 

  : : = SEQUENCE {

  target           GenericObjectReference,

  operator       GenericInteger,

  comparison-value   ComparisonValue

}

ToggleItem 

  : : = SEQUENCE {

  target       GenericObjectReference,

  item-index   GenericInteger

}

TransitionTo 

  : : = SEQUENCE {

  target               GenericObjectReference,

  connection-tag-or-null   ConnectionTagOrNull,

  transition-effect   GenericInteger OPTIONAL

}

ConnectionTagOrNull 

  : : = CHOICE {

  connection-tag   GenericInteger,

  null               NULL

}

ComparisonValue 

  : : = CHOICE {

  new-generic-boolean            [225] GenericBoolean,

  new-generic-integer            [226] GenericInteger,

  new-generic-octetstring        [227] GenericOctetString,

  new-generic-object-reference   [228] GenericObjectReference,

  new-generic-content-reference   [229] GenericContentReference

}

EmulatedEventData 

  : : = CHOICE {

  new-generic-boolean            [225] GenericBoolean,

  new-generic-integer            [226] GenericInteger,

  new-generic-octet-string     [227] GenericOctetString

}


53

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

NewColour 

  : : = CHOICE {

  new-colour-index        [230] GenericInteger,

  new-absolute-colour    [231] GenericOctetString

}

NewContent 

  : : = CHOICE {

  new-included-content     GenericOctetString,

  new-referenced-content   NewReferencedContent

}

NewFont 

  : : = CHOICE {

  new-font-name          [232] GenericOctetString,

  new-font-reference    [233] GenericObjectReference

}

NewReferencedContent 

  : : = SEQUENCE

  generic-content-reference   GenericContentReference,

  new-content-size              [234] NewContentSize,

  new-content-cache-priority   [235] GenericInteger OPTIONAL

}

NewContentSize 

  : : = CHOICE {

  content-size   GenericInteger,

  null             NULL

}

NewVariableValue 

  : : = CHOICE {

  new-generic-boolean          [225] GenericBoolean,

  new-generic-integer          [226] GenericInteger,

  new-generic-octetstring    [227] GenericOctetString,

  new-generic-object-reference   [228] GenericObjectReference,

  new-generic-content-reference   [229] GenericContentReference

}

Parameter 

  : : = CHOICE {

  new-generic-boolean        [225] GenericBoolean,

  new-generic-integer        [226] GenericInteger,

  new-generic-octetstring    [227] GenericOctetString,

  new-generic-object-reference   [228] GenericObjectReference,


54

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  new-generic-content-reference   [229] GenericContentReference

}

Point 

  : : = SEQUENCE {

  x   GenericInteger,

  y   GenericInteger

}

Rational 

  : : = SEQUENCE {

  numerator       GenericInteger,

  denominator     GenericInteger OPTIONAL

}

-- <A.44> Miscellaneous data types 

ObjectReference 

  : : = CHOICE {

  external-reference ExternalReference,

  internal-reference INTEGER (1..MAX)

}

ExternalReference 

  : : = SEQUENCE {

  group-identifier   OCTET STRING,

  object-number     INTEGER (0..MAX)

}

IndirectReference 

  : : = [236] ObjectReference

ContentReference 

  : : = OCTET STRING

GenericObjectReference

  : : = CHOICE {

  direct-reference   ObjectReference,

  indirect-reference   IndirectReference

}

GenericContentReference 

  : : = CHOICE {

  content-reference     [69] ContentReference,

  indirect-reference   IndirectReference

}

GenericInteger 

  : : = CHOICE {

  integer                INTEGER,


55

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

  indirect-reference   IndirectReference

}

GenericBoolean 

  : : = CHOICE {

  boolean              BOOLEAN,

  indirect-reference   IndirectReference

}

GenericOctetString 

  : : = CHOICE {

  octetstring            OCTET STRING,

  indirect-reference   IndirectReference

}

Colour 

  : : = CHOICE {

  colour-index      INTEGER,

  absolute-colour   OCTET STRING

}

XYPosition 

  : : = SEQUENCE {

  x-position   INTEGER,

  y-position   INTEGER

}

END


56

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 B(規定)  テキスト表記法

附属書 では,MHEG-6 オブジェクトの構文のためのテキスト表記法について規定する。これは,附属

書 で定義する ASN.1 表記法の代替表記法である。

テキスト表記法は,特にオブジェクトの作成及び試験を目的として導入された。オブジェクトを表記す

る能力に関しては,テキスト表記法は ASN.1 表記法と等価であるので,一方の表記法から他方の表記法を

導くことは容易である。

次の構文は,JIS X 4345 

附属書 で定義されるものと互換性がある。したがって,JIS X 4345 の附属

書 に従って符号化された MHEG-5 オブジェクトは,すべてこの附属書の構文に適合する MHEG-6 オブ

ジェクトでもある。

B.1

一般的な定義

B.1.1

文字符号  テキスト表記法は,JIS X 0201 の符号化文字集合の 0x20 (SP)  から 0x7e (∼)  までの範囲

にある符号化文字を用い,JIS X 0201 

附属書 に示された 0x09 (HT),0x0a (LF),0x0c (FF)  及び 0x0d (CR)

の制御機能を用いなければならない。それ以外の文字を使用してはならない。

備考1.  テキスト表記法は,使用できる文字符号を制限しているという事実にもかかわらず,8ビット

データを,QPRINTABLE(B.3.4参照)

,BASE64(B.3.5参照)及び ContentReference によって

外部参照される内容によって符号化することができる。

2.

応用領域は,文法に違反しない限り,使用できる文字符号を拡張してもよい。例えば,0x80

から 0xfe までの文字を STRING 又は注釈として使用してもよい。

B.1.2

区切り子  0x09 (HT),0x0a (LF),0x0c (FF),0x0d (CR)  及び 0x20 (SP)  は,区切り子と呼ばれる。

テキスト表記法によって記述される文法は,単語に基づく。単語は,括弧[

“又は”

,波括弧[

“{“又

は”}”

,タグ(B.1.4 参照)又は終端記号(B.3 参照)のいずれかである。任意の二つの隣り合う単語の

間に,任意の数の区切り子が挿入されても,単語の解釈は変わらない。しかし,少なくとも一つの区切り

子が任意の二つの終端記号の間及びタグと終端記号との間に存在しなければならない。そうでないと,そ

れらは単一の終端記号又は単一のタグと解釈されてしまうからである。

B.1.3

注釈  STRING,QPRINTABLE 及び BASE64(それぞれ,B.3.3B.3.4 及び B.3.5 参照)の内部にな

い// (0x2f0x2f) を注釈の開始を示すために使用する。そのような//(//自身も含む。

)から次の 0x0a (LF),

0x0c (FF)

又は 0x0d (CR)  までの,すべての文字を無視しなければならない。

備考 0x09

(HT)

及び 0x20 (SP)  は,注釈の終了を示すものではない。

B.1.4

タグ   (0x3a) で始まるトークンを“タグ”と呼ぶ。タグは,MHEG-5 オブジェクトの始まりで使用

されるときは,{(0x7b)  で始まる。一般的に,タグは,MHEG-5 オブジェクトとそれらに付随する属性値

とを識別するために使用される。タグには,大文字と小文字との区別はない。例えば, ": Root",": root",

": ROOT"

,": rOOt"  などは,すべて同じとみなす。しかし,テキスト表記法では,読みやすさを向上させ,

理解しやすくするために,タグ内で大文字と小文字との組合せを使用する。

B.2

記号の定義  表 B.1 は,テキスト表記法で使用される記号とその意味とを示している。


57

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

表 B.1  テキスト表記における記号の定義

記号 

定義 

: : =

定義する。

|

代替

<”>

二重引用符 (Ox22)

“text”

二重引用符で囲まれるリテラル

<text>

この位置に記述できる文字符号を説明する文章

*

前にある文法上の単位を 0 回以上繰り返してもよい。

+

前にある文法上の単位を 1 回以上繰り返してもよい。

[]

囲まれた文法上の単位は,省略可能である。それを,0 回又は 1 回だけ表記しても

よい。

.

節の終わり

B.3

終端記号  テキスト表記法で使用されるすべての終端記号を,次のように定義する。

B.3.1  INTEGER 

  10 進数又は正の 16 進数の整数値。

定義: 

INTEGER

: : = DECINT | HEXINT | "0".

DECINT

: : = [ "-" ] DIGIT [DIGITO]

.

DIGIT

: : = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".

DIGIT0

: : = DIGIT | "0".

HEXINT

: : = HEXPREFIX HEXDIGIT0 [HEXDIGIT0]

.

HEXPREFIX

: : = "0x" | "0X".

HEXDIGIT0

: : = DIGIT "0" | "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" |

"F".

B.3.2 B00LEAN

  真理値は,真 (True) 又は偽 (False) のいずれかとする。B00LEAN 終端記号には,大文

字と小文字との区別はない。つまり, "True","TRUE"  及び "true" は等価とし, "False","FALSE"  及び

"false"

は,等価とする。

定義:BOOLEAN  : : = "true" | "false".

B.3.3  STRING

  二重引用符で囲まれる文字列は,任意の数の表示可能な文字(0x20 から 0x7e まで)を含

んでもよい。STRING 内の二重引用符 (0x22) は,¥” (0x5c 0x22) として符号化しなければならない。

STRING

内の円記号

*

 (0x5c)

は,¥¥ (0x5c 0x5c)  として符号化しなければならない。STRING 内に改行を含

んではいけない。すなわち,複数行のテキストは,QPRINTABLE 又は BASE64 を使用して符号化しなけれ

ばならない。

*

JIS X 0201

での円記号は,ISO/IEC 646 国際基準版の逆スラッシュに対応している。

定義:STRING    : : = <"> STRINGCHAR

 <">.

      STRINGCHAR    : : = <<">  と "¥" とを除く任意の表示可能な文字> | "¥" " | " ¥¥".

B.3.4  QPRINTABLE

  一重引用符で囲まれた文字列は,RFC-1521 で定義されている Quoted−Printable で

符号化されたデータを含まなければならない。しかしながら,' (0x27)  を=27 として符号化しなければなら

ない。a,b,c,d,e,f などの小文字を,RFC-1521 の 5.1rule#1 で定義されている一般的な 8 ビット表現

として使用してもよい。1 行に含まれる文字数は,制限しない。改行は,CR LF に変換する必要はないが,

LF (0x0a)

FF (0x0c)

又は CR (0x0d)  の中の少なくとも一つを,

改行を表すために使用しなければならない。

定義:

QPRINTABLE

: : = " ' " QPRINTABLECHAR

  " ' ".

      QPRINTABLECHAR  : : = <上のように定義される文字> |


58

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

                              <上のように定義される文字符号化列>.

B.3.5  BASE64

  逆引用符で囲まれた文字列は,RFC-1521 で定義されている BASE64 で符号化されたデー

タを含まなければならない。しかし,この規格では,1 行に含まれる文字数を制限しない。BASE64 で符

号化されたデータを,LF (0x0a),FF (0x0c)  又は CR (0x0d)  の中の少なくとも一つの文字符号によって,幾

つかの区分に分割してもよい。しかし,これらの文字符号を無視しなければならない。入力された BASE64

で符号化された区分を,あたかも 1 行であるかのように扱わなければならない。

定義:BASE64: : = "`" BASE64CHR

  "

`".

      BASE64CHAR    : : = <上のように定義される文字符号化列>.

B.3.6

Null  Null は特別な終端を表し,その意味は,MHEG-5 オブジェクト定義に依存する。Null 終端

記号には,大文字と小文字との区別はなく, "NULL" と "null" とは,等価である。

定義:Null    : : = "NULL".

B.3.7

列挙値  ラテン文字で始まる終端記号を“列挙値”と呼ぶ(すべての列挙値は,次の文法において

二つの二重引用符で囲まれる。

。列挙値は,その用法に依存した特定の意味を表す終端記号の一つとして

使用される。すべての列挙値には,大文字と小文字との区別はない。すなわち, "IsAvailable" と "isavailable"

とは等価である。

B.4  MHEG-5

オブジェクト定義  MHEG-5 オブジェクトのテキスト表記法は,次のとおり定義される。

表 B.2 は,タグ内で使用される短縮形の要約である。

表 B.2  タグ内の短縮形

Bordered Bounding Box

BBBox

Content Cache Priority

CCPriority

Content Hook

Chook

Coordinate System

CS

Generic G

Group Cache Priority

GCPriority

Horizontal Justification

Hjustification

Identifier ID

Information Info

Interchanged Interchg

OctetString OString

Original Orig

Program Prg

Reference Ref

Register Reg

Standard Std

Variable

Var

(基本操作タグを除く。

Vertical Justification

Vjustification

--Copyright statement:

--

ã International Organisation for Standardisation 1998

--Permission to copy in any form is granted for use with conforming MHEG-6 engines and applications

--provided this notice is included in all copies

B.4.1  Root Class

Root

: : =  ObjectIdentifier.


59

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

ObjectIdentifier

: : =  ObjectReference.

B.4.2  Group Class

Group :

: =

 Root  [StandardIdentifier]

[StandardVersion]

[ObjectInformation]

[OnStartUp]

[OnCloseDown]

[OriginalGroupCachePriority]

[Items].

StandardIdentifier :

: : =

" : StdID" JointIsoItuIdentifier

MHEGStandardIdentifier.

JointIsoItuIdentifier

: : = INTEGER.

MHEGStandardIdentifier

: : = INTEGER.

StandardVersion : : = ": StdVersion" INTEGER.

ObjectInformation

: : =  " : ObjectInfo" OctetString.

OnStartUp

: : =  " : OnStartUp" ActionClass.

OnCloseDown

: : =  " : OnCloseDown" ActionClass.

OriginalGroupCachePriority : : = " : OrigGCPriority" INTEGER.

Items

: : =  " : Items" "(" GroupItem+ ")".

GroupItem

: : = ResidentProgramClass

|

RemoteProgramClass

|

InterchangedProgramClass

|

PaletteClass

|

FontClass

|

CursorShapeClass

|

BooleanVariableClass

|

IntegerVariableClass

|

OctetStringVariableClass

|

ObjectRefVariableClass

|

ContentRefVariableClass

|

LinkClass

|

StreamClass

|

BitmapClass

|

LineArtClass

|

DynamicLineArtClass

|

RectangleClass

|

HotspotClass

|

SwitchButtonClass

|

PushButtonClass

|

TextClass

|

EntryFieldClass

|

HyperTextClass

|

SliderClass

|


60

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

TokenGroupClass

|

ListGroupClass.

B.4.3  Application Class

ApplicationClass

: : =  "{ : Application" Group

[OnSpawnCloseDown]

[OnRestart]

[DefaultAttributes]

")".

OnSpawnCloseDown

: : =  " : OnSpawnCloseDown" ActionClass.

OnRestart

: : =  " : OnRestart" ActionClass.

DefaultAttributes

: : = DefaultAttribute+.

DefaultAttribute

: : =  CharacterSet | BackgroundColour

|

TextContentHook

| TextColour | Font

|

FontAttributes

|

TnterchangedProgramContentHook

|

StreamContentHook

|

BitmapContentHook

| LineArtContentHook | ButtonRefColour

| HighlightRefColour | SliderRefColour.

CharacterSet

: : =  " : CharacterSet" INTEGER.

BackgroundColour

: : =  " : BackgroundColour" Colour.

TextContentHook : : = ": TextCHook" INTEGER.

TextColour

: : =  " : TextColour" Colour.

Font

: : =  " : Font" FontBody.

FontBody

: : =  DirectFont | IndirectFont.

DirectFont

: : = OctetString.

IndirectFont

: : = ObjectReference.

FontAttributes

: : =  " : FontAttributes" OctetString.

InterchangedProgramContentHook : : = " : InterchgPrgCHook" INTEGER.

StreamContentHook

: : =  " : StreamCHook" INTEGER.

BitmapContentHook

: : =  " : BitmapCHook" INTEGER.

LineArtContentHook

: : =  " : LineArtCHook" INTEGER.

ButtonRefColour : : = " : ButtonRefColour" Colour.

HighlightRefColour

: : =  " : HighlightRefColour" Colour.

SliderRefColour : : = " : SliderRefColour" Colour.

B.4.4  Scene Class

SceneClass

: : =  "{ : Scene" Group InputEventRegister

SceneCoordinateSystem

[AspectRatio]

[MovingCursor] [NextScenes] "}".

InputEventRegister

: : =

" : InputEventReg" INTEGER.

SceneCoordinateSystem

: : =  " : SceneCS" XScene YScene.


61

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

XScene

: : = INTEGER.

YScene

: : = INTEGER.

AspectRatio

: : =  " : AspectRatio" Width Height.

Width

: : = INTEGER.

Height

: : = INTEGER.

MovingCursor

: : =  " : MovingCursor" BOOLEAN.

NextScenes

: : =  " : NextScenes" "(" NextScene+ ")".

NextScene

: : =  "(" SceneRef SceneWeight ")".

SceneRef

: : =

OctetString.

SceneWeight

: : = INTEGER.

B.4.5  Ingredient Class

Ingredient

: : =  Root [InitiallyActive] [ContentHook]

[OriginalContent]

[Shared]

InitiallyActive : : = ": InitiallyActive" BOOLEAN.

ContentHook

: : =  " : CHook" INTEGER.

OriginalContent : : = ": OrigContent" ContentBody.

ContentBody

: : =  IncludedContent | ReferencedContent.

IncludedContent : : = OctetString.

ReferencedContent

: : =  " : ContentRef" "(" ContentReference

[ContentSize]

[ContentCachePriority]

")".

ContentSize

: : =  " : ContentSize" INTEGER.

ContentCachepriority

: : =  " : CCPriority" INTEGER.

Shared

: : =  " : Shared" BOOLEAN.

B.4.6  Link Class

LinkClass

: : =  "{ : Link' Ingredient LinkCondition

LinkEffect

"}".

LinkCondition

: : =  EventSource EventType [EventData].

EventSource

: : =  " : EventSource " ObjectReference.

EventType

: : =  " : EventType " EventTypeEnum.

EventTypeEnum

: : =  " IsAvailable " | " ContentAvailable "

| " IsDeleted " | " IsRunning "

| " IsStopped " | " UserInput "

| " AnchorFired " | " TimerFired "

| " AsynchStopped " | " InteractionCompleted "

| " TokenMovedFrom " | " TokenMovedTo "

| " StreamEvent " | " StreamPlaying "

| " Streamstopped " | " CounterTrigger "

| " HighlightOn " | " HighlightOff "

| " CursorEnter " | " CursorLeave "


62

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

| " IsSelected " | " IsDeselected "

| " TestEvent " | " FirstItemPresented "

| " LastItemPresented " | " HeadItems "

| " TailItems " | " ItemSelected "

| " ItemDeselected " | " EntryFieldFull " | "

EngineEvent ".

EventData

: : =  " : EventData " EventDataBody.

EventDataBody

: : =  OctetString | BOOLEAN | INTEGER.

LinkEffect

: : =  " : LinkEffect " ActionClass.

B.4.7  Program Class

Program

: : =

Ingredient Name [InitiallyAvailable].

Name

: : =  " : Name " OctetString.

InitiallyAvailable

: : =  " : InitiallyAvailable " BOOLEAN.

B.4.8  ResidentProgram Class

ResidentProgramClass

: : =  "{ : ResidentPrg " Program "}".

B.4.9  RemoteProgram Class

RemoteProgramClass

: : =

"{ : RemotePrg " Program

[ProgramConnectionTag]

"}".

ProgramConnectionTag

: : =  " : ConnectionTag " INTEGER.

B.4.10   InterchangedProgram Class

InterchangedProgramClass   : : =  "{ : InterchgPrg " Program "}".

B.4.11    Palette Class

PaletteClass

: : =  "{ : Palette " Ingredient "}".

B.4.12    Font Class

FontClass

: : =  "{ : Font " Ingredient "}".

B.4.13    CursorShape Class

CursorShapeClass

: : =  "{ : CursorShape " Ingredient "}".

B.4.14    Variable Class

Variable

: : = Ingredient

Originalvalue.

OriginalValue

: : =

" : OrigValue " OriginalValueBody.

OriginalValueBody

: : =  BOOLEAN | INTEGER | OctetString

|

ObjectReferenceValue

|

ContentReferenceValue.

ObjectReferenceValue

: : =  " : ObjectRef " ObjectReference.

ContentReferenceValue

: : =  " : ContentRef " ContentReference.

B.4.15    BooleanVariable Class

BooleanVariableClass

: : =  "{ : BooleanVar " Variable "}"

B.4.16    IntegerVariable Class

IntegerVariableClass

: : =  "{ : IntegerVar " Variable "}".

B.4.17    OctetStringVariable Class


63

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

OctetStringVariableClass   : : =  "{ : OStringVar " Variable "}".

B.4.18   ObjectRefVariable Class

ObjectRefVariableClass

: : =  "{ : ObjectRefVar " Variable "}".

B.4.19   ContentRefVariable Class

ContentRefVariableClass

: : =

"{ : ContentRefVar " Variable "}"

B.4.20    Presentable Class

Presentable

: : =

Ingredient.

B.4.21    TokenManager Class

TokenManager

: : = [MovementTable].

MovementTable

: : =

" : MovementTable " "(" Movement+ ")".

Movement

: : =  "(" TargetElement+ ")".

TargetElement

: : = INTEGER.

B.4.22    TokenGroup Class

TokenGroupClass : : = "{ : TokenGroup " TokenGroupBody "}".

TokenGroupBody

: : =  Presentable TokenManager TokenGroupItems

[NoTokenActionSlots].

TokenGroupItems : : = " : TokenGroupItems " "(" TokenGroupItem+ ")".

TokenGroupItem

: : =  "(" AVisible [ActionSlots] ")".

AVisible

: : = ObjectReference.

ActionSlots

: : =  " : ActionSlots " "(" ActionSlot+ ")".

ActionSlot

: : =  ActionClass | Null.

NoTokenActionSlots

: : = "

 : NoTokenActionSlots

"

"

(

"

 ActionSlot+

"

)

"

.

B.4.23   ListGroup Class

ListGroupClass

: : =  "{ : ListGroup " TokenGroupBody

Positions

[WrapAround]

[MultipleSelection]

"}".

Positions

: : =  " : Positions " "(" Position+ ")".

Position

: : =  "(" XYPosition ")".

WrapAround

: : =  " : WrapAround " BOOLEAN.

MultipleSelection

: : =  " : MultipleSelection " BOOLEAN.

B.4.24    Visible Class

Visible

: : =

Presentable OriginalBoxSize

[OriginalPosition]

[OriginalPaletteRef].

OriginalBoxSize : : = " : OrigBoxSize " BoxSize.

BoxSize

: : = XLength

YLength.

XLength

: : = INTEGER.

YLength

: : = INTEGER.

OriginalPosition

: : =  " : OrigPosition " XYPosition.

OriginalPaletteRef

: : =  " : OrigPaletteRef " ObjectReference.

B.4.25    Bitmap Class


64

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

BitmapClass

: : =  "{ : Bitmap " Visible [Tiling]

[OriginalTransparency]

"}".

Tiling

: : =  " : Tiling " BOOLEAN.

OriginalTransparency

: : =  " : OrigTransparency " INTEGER.

B.4.26   LineArt Class

LineArtClass

: : =  "{ : LineArt " LineArtBody "}".

LineArtBody

: : = Visible

[BorderedBoundingBox]

[OriginalLinewidth]

[OriginalLineStyle]

[OriginalRefLineColour]

[OriginalRefFillColour].

BorderedBoundingBoX

: : =  " : BBBox " BOOLEAN.

OriginalLineWidth

: : =  " : OrigLineWidth " INTEGER.

OriginalLineStyle

: : =  " : OrigLinestyle " INTEGER.

OriginalRefLineColour

: : =

" : OrigRefLineColour " Colour.

OriginalRefFillColour

: : =  " : OrigRefFillColour " Colour.

B.4.27    Rectangle Class

RectangleClass

: : =  "{ : Rectangle " LineArtBody "}".

B.4.28    DynamicLineArt Class

DynamicLineArtClass

: : =  "{ : DynamicLineArt " LineArtBody "}".

B.4.29   Text Class

TextClass

: : =  "{ : Text " TextBody "}".

TextBody

: : =

Visible [OriginalFont] [FontAttributes]

[TextColour]

[BackgroundColour]

[CharacterSet]

[HorizontalJustification]

[VerticalJustification]

[LineOrientation]

[StartCorner]

[TextWrapping].

OriginalFont : : = " : OrigFont " FontBody.

HorizontalJustification

: : =  " : HJustification " JustificationEnum.

JustificationEnum

: : = "

 start

"

 |

"

 end

"

 |

"

 center

"

 |

"

 justified

"

.

VerticalJustification

: : =  " : VJustification " JustificationEnum.

LineOrientation : : = " : LineOrientation " LineOrientationEnum.

LineOrientationEnum

: : =  " vertical " | " horizontal ".

StartCorner

: : =  " : StartCorner " StartCornerEnum.

StartCornerEnum : : = " upper-left " | " upper-right "

| " lower-left " | " lower-right ".

TextWrapping

: : =  " : TextWrapping " BOOLEAN.

B.4.30    Stream Class


65

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

StreamClass

: : =  "{ : Stream " Presentable Multiplex

[Storage] [Looping] "}".

Multiplex

: : =

" : Multiplex " "(" StreamComponent+ ")".

StreamComponent : : = AudioClass | VideoClass | RTGraphicsClass.

Storage

: : =  " : Storage " StorageEnum.

StorageEnum

: : =

" memory " | stream".

Looping

: : =  " : Looping" INTEGER.

B.4.31    Audio Class

AudioClass

: : =  "{ : Audio" Presentable ComponentTag

[Originalvolume]

"}".

ComponentTag

: : =  " : ComponentTag" INTEGER.

Originalvolume

: : =  " : OrigVolume" INTEGER.

B.4.32   Video Class

VideoClass

: : =  "{ : Video" Visible ComponentTag

[Termination]

"}".

Termination

: : =  " : Termination" TerminationEnum.

TerminationEnum : : = "freeze" | "disappear".

B.4.33   RTGraphics Class

RTGraphicsClass

: : =

"{ : RTGraphics" Visible ComponentTag

[Termination]

"}".

B.4.34    Interactible Class

Interactible

: : =

[EngineResp] [HighlightRefColour].

EngineResp

: : =  " : EngineResp" BOOLEAN.

B.4.35    Slider Class

SliderClass

: : =  "{ : Slider" Visible Interactible

Orientation MaxValue [MinValue]

[InitialValue]

[InitialPortion]

[StepSize]

[SliderStyle]

[SliderRefColour]

"}".

Orientation

: : =  " : Orientation" OrientationEnum.

OrientationEnum : : = "left" | "right" | "up" | "down".

MaxValue

: : =  " : MaxValue" INTEGER.

MinValue

: : =  " : MinValue" INTEGER.

InitialValue

: : =

" : InitialValue" INTEGER.

InitialPortion

: : =  " : InitialPortion" INTEGER.

StepSize

: : =  " : StepSize" INTEGER.

SliderStyle

: : =  " : SliderStyle" SliderStyleEnum.

SliderStyleEnum : : = "normal" | "thermometer" | "proportional ".

B.4.36    EntryField Class

EntryFieldClass

: : =

"{ : EntryField " TextBody Interactible


66

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

[InputType]

[CharList]

[ObscuredInput] [MaxLength] "}".

InputType

: : =

" : InputType " InputTypeEnum.

InputTypeEnum

: : =  " alpha " | " numeric " | " any " | " listed ".

CharList

: : =  " : CharList " OctetString.

ObscuredInput

: : =  " : ObscuredInput " BOOLEAN.

MaxLength

: : =  " : MaxLength " INTEGER.

B.4.37    HyperText Class

HyperTextClass

: : =

"{ : HyperText " TextBody Interactible "}".

B.4.38   Button Class

Button

: : =

Visible Interactible [ButtonRefColour].

B.4.39   Hotspot Class

HotspotClass

: : =  "{ : Hotspot " Button "}".

B.4.40   PushButton Class

PushButtonClass : : = " { : PushButton " PushButtonBody "}".

PushButtonBody

: : =  Button [OriginalLabel] [CharacterSet].

OriginalLabel

: : =  " : OrigLabel " OctetString.

B.4.41    SwitchButton Class

SwitchButtonClass

: : =  "{ : SwitchButton " PushButtonBody

ButtonStyle

"}".

ButtonStyle

: : =  " : ButtonStyle " ButtonStyleEnum.

ButtonStyleEnum : : = " pushutton " | " radiobutton " | " checkbox ".

B.4.42    Applet Class

AppletClass

: : =

"{ " " : Applet " Program Interactible

OriginalBoxSize [OriginalPosition] "}".

B.4.43   Action Class

ActionClass

: : =  "( " ElementaryAction+ ")".

ElementaryAction

: : =

 Activate

Add

|

AddItem

|

Append

|

BringToFront

Call

|

CallActionSlot

Clear

Clone

|

CloseConnection

|

Deactivate

|

DelItem

|

Deselect


67

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

|

DeselectItem

|

Divide

|

DrawArc

|

DrawLine

|

DrawOval

|

DrawPolygon

|

DrawPolyline

|

DrawRectangle

|

DrawSector

Fork

|

GetAvailabilitystatus

|

GetBoxSize

|

GetCellItem

|

GetCursorPosition

|

GetEngineSupport

|

GetEntryPoint

|

GetFillColour

|

GetFirstItem

|

GetHighlightStatus

|

GetInteractionStatus

|

GetItemStatus

|

GetLabel

|

GetLastAnchorFired

|

GetLineColour

|

GetLineStyle

|

GetLineWidth

|

GetListItem

|

GetListSize

|

GetOverwriteMode

|

GetPortion

|

GetPosition

|

GetRunningStatus

|

GetSelectionStatus

|

GetSliderValue

|

GetTextContent

|

GetTextData

|

GetTokenPosition

|

GetVolume

|

Invoke

|

Launch


68

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

|

LockScreen

|

Modulo

Move

|

MoveTo

|

Multiply

|

OpenConnection

|

Preload

|

PutBefore

|

PutBehind

Quit

|

ReadPersistent

Run

|

ScaleBitmap

|

ScaleVideo

|

ScrollItems

|

Select

|

SelectItem

|

SendEvent

|

SendToBack

|

SetBoxSize

|

SetCachePriority

|

SetCounterEndPosition

|

SetCounterPosition

|

SetCounterTrigger

|

SetCursorPosition

|

SetCursorShape

|

SetData

|

SetEntryPoint

|

SetFillColour

|

SetFirstItem

|

SetFontRef

|

SetHighlightStatus

|

SetInteractionStatus

|

SetLabel

|

SetLineColour

|

SetLineStyle

|

SetLineWidth

|

SetOverwriteMode

|

SetPaletteRef

|

SetPortion


69

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

|

SetPosition

|

SetSlidervalue

|

SetSpeed

|

SetTimer

|

SetTransparency

|

SetVariable

|

SetVolume

Spawn

Step

Stop

|

StorePersistent

|

Subtract

|

TestVariable

|

Toggle

|

ToggleItem

|

TransitionTo

|

Unload

|

UnlockScreen.

Activate

: : =  " : Activate " "(" Target ")".

Add

: : =  " : Add " "(" Target Value ")".

AddItem

: : =  " : AddItem " "(" Target ItemIndex

VisibleReference

")".

Append

: : =  " : Append " "(" Target AppendValue ")".

BringToFront

: : =  " : BringToFront " "(" Target ")".

Call

: : =  " : Call " "(" Target CallSucceeded

[Parameters]

")".

CallActionSlot

: : =  " : CallActionSlot " "(" Target Index ")".

Clear

: : =  " : Clear " "(" Target ")".

Clone

: : =  " : Clone " "(" Target CloneRefVar ")".

CloseConnection : : = " : CloseConnection " "(" Target

ConnectionTag

")".

Deactivate

: : =  " : Deactivate " "(" Target ")".

DelItem

: : =  " : DelItem " "(" Target VisibleReference

")".

Deselect

: : =  " : Deselect " "(" Target ")".

DeselectItern

: : =  " : DeselectItem " "(" Target ItemIndex ")"

Divide

: : =  " : Divide " "(" Target Value ")".

DrawArc

: : =  " : DrawArc " "(" Target X Y EllipseWidth

EllipseHeight StartAngle ArcAngle ")".

DrawLine

: : =  " : DrawLine " "(" Target X1 Y1 X2 Y2 ")".


70

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

DrawOval

: : =  " : DrawOval " "(" Target X Y EllipseWidth

EllipseHeight

")".

DrawPolygon

: : =  " : DrawPolygon " "(" Target PointList ")".

DrawPolyline

: : =  " : DrawPolyline " "(" Target PointList ")".

DrawRectangle

: : =  " : DrawRectangle " "(" Target X1 Y1 X2 Y2

")".

DrawSector

: : =  " : DrawSector " "(" Target X Y EllipseWidth

EllipseHeight StartAngle ArcAngle ")"

Fork

: : =  " : Fork " "(" Target ForkSucceeded

[Parameters] ")".

GetAvailabilityStatus

: : =  " : GetAvailabilityStatus " "(" Target

AvailabilityStatusVar

")".

GetBoxSize

: : =  " : GetBoxSize " "(" Target XBoxSizeVar

YBoxSizeVar

")".

GetCellItem

: : =  " : GetCellItem "(" Target CellIndex

IternRefVar

")".

GetCursorPosition

: : =  "GetCursorPosition" "(" Target XOut YOut

")".

GetEngineSupport

: : =  " : GetEngineSuppOrt" "(" Target Feature

Answer

")".

GetEntryPoint

: : =  " : GetEntryPoint" "(" Target EntryPointVar

")".

GetFillColour

: : =  " : GetFillColour" "(" Target FiliColourVar

")".

GetFirstItem

: : =  " : GetFirstItem" "(" Target FirstItemVar

")".

GetHighlightStatus

: : =  " : GetHighlightStatus" "(" Target

HighlightStatusVar

")".

GetInteractionStatus

: : =  " : GetInteractionStatus" "(" Target

InteractionStatusVar

")".

GetItemStatus

: : =  " : GetItemStatus" "(" Target

ItemIndex ItemStatusVar ")".

GetLabel

: : =  " : GetLabel" "(" Target LabelVar ")".

GetLastAnchorFired

: : =  " : GetLastAnchorFired" "(" Target

LastAnchorFiredVar

")".

GetLineColour

: : =  " : GetLineColour" "(" Target LineColourVar

")".

GetLineStyle

: : =  " : GetLineStyle" "(" Target LineStyleVar

")".

GetLineWidth

: : =  " : GetLineWidth" "(" Target LineWidthVar


71

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

")".

GetListItem

: : =  " : GetListItem" "(" Target ItemIndex

ItemRefVar

")".

GetListSize

: : =  " : GetListSize" "(" Target SizeVar ")".

GetOverwriteMode

: : =  " : GetOverwriteMode" "(" Target

OverwriteModeVar

")".

GetPortion

: : =  " : GetPortion" "(" Target PortionVar ")".

GetPosition

: : =  " : GetPosition" "(" Target XPositionVar

YPositionVar

")".

GetRunningStatus

: : =  " : GetRunningStatus" "(" Target

RunningStatusVar

")".

GetSelectionStatus

: : =  " : GetSelectionStatus" "(" Target

SelectionStatusVar

")".

GetSliderValue

: : =  " : GetSliderValue" "(" Target

SliderValueVar

")".

GetTextContent

: : =  " : GetTextContent" "(" Target

TextContentVar

")".

GetTextData

: : =  " : GetTextData" " (" Target TextDataVar ")".

GetTokenPosition

: : =  " : GetTokenPosition" "(" Target

TokenPositionVar

")".

GetVolume

: : =  " : GetVolume" "(" Target VolumeVar ")".

Invoke

: : =  " : Invoke" "(" Target InvokeSucceedeed Method

[Parameters] ")".

Launch

: : =  " : Launch" "(" Target ")".

LockScreen

: : =  " : LockScreen" "(" Target ")".

Modulo

: : =  " : Modulo" "(" Target Value ")".

Move

: : =  " : Moves" "(" Target MovementIdentifier ")".

MoveTo

: : =  " : MoveTo" "(" Target Index ")".

Multiply

: : =  " : Multiply" "(" Target Value ")".

OpenConnection

: : =  " : OpenConnection" "(" Target OpenSucceeded

Protocol Address ConnectionTag ")".

Preload

: : =  " : Preload" "(" Target ")".

PutBefore

: : =  " : PutBefore" "(" Target ReferenceVisible

")".

PutBehind

: : =  " : PutBehind" "(" Target ReferenceVisible

")".

Quit

: : =  " : Quit" "(" Target ")".

ReadPersistent

: : =  " : ReadPersistent" "(" Target ReadSucceeded

OutVariables InFileName ")".

Run

: : =  " : Run" "(" Target ")".


72

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

ScaleBitmap

: : =  " : ScaleBitmap" "(" Target XScale YScale

")".

ScaleVideo

: : =  " : ScaleVideo" "(" Target XScale YScale ")".

ScrollItems

: : =  " : ScrollItems" "(" Target ItemsToScroll ")".

Select

: : =  " : Select" "(" Target ")".

SelectItem

: : =  " : SelectItem" "(" Target ItemIndex ")".

SendEvent

: : =  " : SendEvent" "(" Target EmulatedEventSource

ErnulatedEventType

[EmulatedEventData]

")".

SendToBack

: : =  " : SendToBack" "(" Target ")".

SetBoxSize

: : =  " : SetBoxSize" "(" Target XNewBoxSize

YNewBoxSize

")".

SetCachePriority

: : =  " : SetCachePriority" "(" Target

NewCachePriority

")".

SetCounterEndPosition

: : =  " : SetCounterEndPosition" "(" Target

NewCounterEndPosition

")".

SetCounterPosition

: : =  " : SetCounterPosition" "(" Target

NewCounterPosition

")".

SetCounterTrigger

: : =  " : SetCounterTrigger" "(" Target

TriggerIdentifier

[NewCounterValue]

")".

SetCursorPosition

: : =  " : SetCursorPosition" "(" Target XCursor

YCursor

")".

SetCursorShape

: : =  " : SetCursorShape" "(" Target

[NewCursorShape]

")".

SetData

: : =

" : SetData" "(" Target NewContent ")".

SetEntryPoint

: : =  " : SetEntryPoint" "(" Target NewEntryPoint

")".

SetFillColour

: : =  " : SetFillColour" "(" Target [NewColour]

")".

SetFirstItem

: : =  " : SetFirstItern" "(" Target NewFirstItem

")".

SetFontRef

: : =  " : SetFontRef" "(" Target NewFont ")".

SetHighlightStatus

: : =  " : SetHighlightStatus" "(" Target

NewHighlightStatus

")".

SetInteractionStatus

: : =  " : SetInteractionStatus" "(" Target

NewInteractionStatus

")".

SetLabel

: : =  " : SetLabel" "(" Target NewLabel ")".

SetLineColour

: : =  " : SetLineColour" "(" Target NewColour ")".

SetLineStyle

: : =  " : SetLineStyle" "(" Target NewLineStyle


73

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

")".

SetLineWidth

: : =  " : SetLineWidth" "(" Target NewLineWidth

")".

SetOverwriteMode

: : =  " : SetOverwriteMode" "(" Target

NewOverwriteMode

")".

SetPaletteRef

: : =  " : SetPaletteRef" "(" Target NewPaletteRef

")".

SetPortion

: : =  " : SetPortion" "(" Target NewPortion ")".

SetPosition

: : =  " : SetPosition" "(" Target NewXPosition

NewYPosition

")".

SetSliderValue

: : =  " : SetSliderValue" "(" Target

NewSliderValue

")".

SetSpeed

: : =  " : SetSpeed" "(" Target NewSpeed ")".

SetTimer

: : =  " : SetTimer" "(" Target TimerID

[TimerValue] [AbsoluteTime] ")".

SetTransparency : : = ": SetTransparency" "(" Target NewTransparency ")".

SetVariable

: : =  " : SetVariable" "(" Target

NewVariableValue

")".

SetVolume

: : =  " : SetVolume" "(" Target NewVolume ")".

Spawn

: : =  " : Spawn" "(" Target ")".

Stop

: : =  " : Stop" "(" Target ")".

Step

: : =  " : Step" "(" Target NbOfSteps ")".

StorePersistent : : = ": StorePersistent" "(" Target

StoreSucceeded InVariables OutFileName

")".

Subtract

: : =  " : Subtract" "(" Target Value ")".

TestVariable

: : =  " : TestVariable" "(" Target Operator

ComparisonValue

")".

Toggle

: : =  " : Toggle" "(" Target ")".

ToggleItem

: : =  " : ToggleItem" "(" Target ItemIndex ")".

TransitionTo

: : =  " : TransitionTo" "(" Target [ConnectionTag]

[TransitionEffect]

")".

Unload

: : =  " : Unload" "(" Target ")".

UnlockScreen

: : =  " : UnlockScreen" "(" Target ")".

AbsoluteTime

: : =  " : AbsoluteTime" GenericBoolean.

Address

: : = GenericOctetString.

Answer

: : = ObjectReference.

AppendValue

: : = GenericOctetString.

ArcAngle

: : = GenericInteger.

AvailabilityStatusVar

: : = ObjectReference.


74

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

CallSucceeded

: : = ObjectReference.

CellIndex

: : = GenericInteger.

CloneRefVar

: : = ObjectReference.

ComparisonValue : : = NewGenericBoolean | NewGenericInteger

|

NewGenericOctetString

|

NewGenericObjectReference

|

NewGenericContentReference.

ConnectionTag

: : =  " : ConnectionTag" GenericInteger.

Denominator

: : = GenericInteger.

EllipseHeight

: : = GenericInteger.

EllipseWidth

: : = GenericInteger.

EmulatedEventData

: : =  NewGenericBoolean | NewGenericInteger

|

NewGenericOctetString.

EmulatedEventSource

: : = GenericObjectReference.

EmulatedEventType

: : = EventTypeEnum.

EntryPointVar

: : = ObjectReference.

ForkSucceeded

: : = ObjectReference.

Feature

: : = GenericOctetString.

FillColourVar

: : = ObjectReference.

FirstItemVar

: : = ObjectReference.

HighlightStatusVar

: : = ObjectReference.

Index

: : = GenericInteger.

InFileName

: : = GenericOctetString.

InteractionStatusVar

: : = ObjectReference.

InVariables

: : =  "(" ObjectReference+ ")".

InvokeSucceeded

: : = ObjectReference.

ItemIndex

: : = GenericInteger.

ItemRefVar

: : = ObjectReference.

ItemStatusVar

: : = ObjectReference.

ItemsToScroll

: : = GenericInteger.

LabelVar

: : = ObjectReference.

LastAnchorFiredVar

: : =

ObjectReference.

LineColourVar

: : = ObjectReference.

LineStyleVar

: : = ObjectReference.

LineWidthVar

: : = ObjectReference.

Method

: : = GenericOctetString.

MovementIdentifier

: : = GenericInteger.

NbOfSteps

: : = GenericInteger.

NewAbsoluteColour

: : =  " : NewAbsoluteColour" GenericOctetString.

NewCachePriority

: : = GenericInteger.


75

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

NewColour

: : =  NewColourIndex | NewAbsoluteColour.

NewColourIndex

: : =  " : NewColourIndex" GenericInteger.

NewContent

: : =  NewIncludedContent | NewReferencedContent.

NewContentCachePriority

: : =  " : NewCCPriority" GenericInteger.

NewCounterEndPosition

: : = GenericInteger.

NewCounterPosition

: : = GenericInteger.

NewContentSize

: : =  " : NewContentSize" GenericInteger.

NewCounterValue : : = GenericInteger.

NewCursorShape

: : = GenericObjectReference.

NewEntryPoint

: : = GenericInteger.

NewFirstItem

: : = GenericInteger.

NewFont

: : =  NewFontName | NewFontReference.

NewFontName

: : = NewGenericOctetString.

NewFontReference

: : = NewGenericObjectReference.

NewGenericBoolean

: : =  " : GBoolean" GenericBoolean.

NewGenericInteger

: : =  " : GInteger" GenericInteger.

NewGenericOctetString

: : =  " : GOctetString" GenericOctetString.

NewGenericObjectReference : : = " : GObjectRef" GenericObjectReference.

NewGenericContentReference : : = " : GContentRef" GenericContentReference.

NewHighlightStatus

: : = GenericBoolean.

NewIncludedContent

: : = GenericOctetString.

NewInteractionStatus

: : = GenericBoolean.

NewLabel

: : = GenericOctetString.

NewLineStyle

: : = GenericInteger.

NewLineWidth

: : = GenericInteger.

NewOverwriteMode

: : = GenericBoolean.

NewPaletteRef

: : = GenericObjectReference.

NewPortion

: : = GenericInteger.

NewReferencedContent

: : =  " : NewRefContent" "(" GenericContentReference

[NewContentSize]

[NewContentCachePriority]

")".

NewSliderValue

: : = GenericInteger.

NewSpeed

: : = Rational.

NewTransparency

: : = GenericInteger.

NewVariablevalue

: : =  NewGenericInteger | NewGenericBoolean

|

NewGenericOctetString

|

NewGenericObjectReference

|

NewGenericContentReference.

NewVolume

: : = GenericInteger.

NewXPosition

: : = GenericInteger.


76

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

NewYPosition

: : = GenericInteger.

Numerator

: : =

GenericInteger.

OpenSucceeded

: : = ObjectReference.

Operator

: : = GenericInteger.

OutFileName

: : = GenericOctetString.

OutVariables

: : =  "(" ObjectReference+ ")".

OverwriteModeVar

: : = ObjectReference.

Parameter

: : =  NewGenericBoolean | NewGenericInteger

|

NewGenericOctetString

|

NewGenericObjectReference

|

NewGenericContentReference.

Parameters

: : = Parameter+.

Point

: : =  "(" X Y ")".

PointList

: : =  "(" Point+ ")".

PortionVar

: : = ObjectReference.

Protocol

: : = GenericOctetString.

Rational

: : = Numerator

[Denominator].

ReadSucceeded

: : = ObjectReference.

ReferenceVisible

: : = GenericObjectReference.

RunningStatusVar

: : = ObjectReference.

SelectionStatusVar

: : = ObjectReference.

SizeVar

: : = ObjectReference.

SliderValueVar

: : = ObjectReference.

StartAngle

: : = GenericInteger.

StoreSucceeded

: : = ObjectReference.

Target

: : = GenericObjectReference.

TextContentVar

: : = ObjectReference.

TextDataVar

: : = ObjectReference.

TimerID

: : = GenericInteger.

TimerValue

: : = GenericInteger.

TokenPositionVar

: : = ObjectReference.

TransitionEffect

: : = GenericInteger.

TriggerIdentifier

: : = GenericInteger.

Value

: : = GenericInteger.

VisibleReference

: : = GenericObjectReference.

VolumeVar

: : = ObjectReference.

x

: : = GenericInteger.

x1

: : = GenericInteger.

X2

: : = Generic

Integer.

XBoxSizeVar

: : = ObjectReference.


77

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

XCursor

: : = GenericInteger.

XNewBoxSize

: : = GenericInteger.

XOut

: : = ObjectReference.

XPositionVar

: : = ObjectReference.

XScale

: : = GenericInteger.

Y

: : = GenericInteger.

Y1

: : = GenericInteger.

Y2

: : = GenericInteger.

YBoxSizeVar

: : = ObjectReference.

YCursor

: : = GenericInteger.

YNewBoxSize

: : = GenericInteger.

YOut

: : = ObjectReference.

YPositionVar

: : = ObjectReference.

YScale

: : = GenericInteger.

B.4.44   Miscellaneous data types

ObjectReference : : = ExternalReference | InternalReference.

ExternalReference

: : =  "(" GroupIdentifier ObjectNumber ")".

InternalReference

: : =  ObjectNumber.

GroupIdentifier : : = OctetString.

ObjectNumber

: : =  INTEGER.

ContentReference

: : =  OctetString.

GenericObjectReference

: : =  DirectReference  |  IndirectReference.

DirectReference : : = ObjectReference.

IndirectReference

: : =  " : IndirectRef" ObjectReference.

GenericContentReference

: : =  ContentReference  |  IndirectReference.

GenericInteger

: : =  INTEGER  |  IndirectReference.

GenericBoolean

: : =  BOOLEAN  |  IndirectReference.

GenericOctetString

: : =  OctetString  |  IndirectReference.

OctetString

: : =  STRING | QPRINTABLE | BASE64.

Colour

: : =  ColourIndex  |  AbsoluteColour.

ColourIndex

: : =  INTEGER.

AbsoluteColour

: : =  OctetString.

XYPosition

: : =  XPosition  YPosition.

XPosition

: : =

INTEGER.

YPosition

: : =  INTEGER


78

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 C(規定)  MHEG-5 API

MHEG-5 API

は,Java の仕様として定義され,iso. mheg5 と呼ばれる一つの Java パッケージから構成さ

れる。

備考  次の仕様は,ETSI との協力によって決められたもので,技術的には ETS 300 777-1 に従う。iso.

mheg5

パッケージにおいては,次のとおりとする。

− MHEG-5 オブジェクトを表すすべての公開クラスは,引数なしの保護コンストラクタをもたなければ

ならない。

− MHEG-5 オブジェクトを表す公開クラスのすべての公開メソッドは,MhegException 例外を発生する

ように宣言しなければならない。

備考  これらの保護コンストラクタ及び例外は,ここでは示していない。これらに相当する Java のコ

ードは,以降の宣言をクラスごとのファイルに分割し,保護コンストラクタを追加し,上に定

めたとおりに例外を宣言して,更に,クラスのメソッド宣言にその本体部を付け加え,その他

の宣言にセミコロンを付け加えることによって得られる。

完全版の仕様は,この附属書に規定するすべてのクラスから構成する。簡易版の仕様は,C.1C.3C.5

C.10 及び C.19C.24 に規定するクラスから構成する。

C.1  ObjeotReference

public class

ObjectReference

フィールド

public OctetString

groupIdentifier

public int

objectNumber

コンストラクタ

public

ObjectReference ( )

public

ObjectReference (int objectNumber)

public

ObjectReference (OcetetString groupIdentifier,

                                int objectNumber)

最初の二つのコンストラクタは,グループ ID の属性(提供されない)を,長さ 0 のオクテット列に構

成する。

備考 ObjectReference は,公開フィールドをもっているため,修正が可能である。これによって,

ObjectReference

オブジェクトを一時的に別に保存することができる。これは,多くの場合,後

で再利用するために,あるオブジェクトにアクセスするための一時的な変数として用いられる。

プログラマは,ObjectReference オブジェクトの値は,オブジェクトが渡される JVM によって変

更される可能性があることに注意する必要がある。

C.2  ContentReference

public class

ContentReference

コンストラクタ

public

ContentReference ( )


79

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public

ContentReference (OctetString reference)

C.3  OctetString

public class

OctetString

コンストラクタ

public

OctetString (String value)

public

OctetString (byte[ ] value)

メソッド

byte

byteAt (int index)

オクテット列中の index で示される位置にあるバイト型の値を取得する。

int

length ( )

オクテット列のバイト数を取得する。返される値は正の数でなければならない。

byte[ ]

toByteArray ( )

オクテット列をバイト配列として取得する。

String

toString ( )

適切な MHEG-5 テキスト形式を用いて,オクテット列に対応する文字列を取得する。

C.4  Colour

public class

Colour

コンストラクタ

public

Colour (int colourIndex)

public

Colour (OctetString absoluteColour)

メソッド

boolean

isAbsolute ( )

Colour

オブジェクトが絶対値指定色として作成された場合に TRUE を返し,色インデックスとして作

成された場合に FALSE を返す。

int

getIndexColour ( )

色インデックスを取得する。オブジェクトが絶対値指定色として作成された場合は,例外を発生しな

ければならない。

OctetString

getAbsoluteColour ( )

色名を取得する。オブジェクトが色インデックスとして作成された場合は,例外を発生しなければな

らない。

C.5  MhegException

public class

MhegException extends java. lang. Exception

フィールド

public short

parameterRank

public short

exceptionCode

exceptionCode

に対する有効な値は,次のとおりとする。

TARGET_NOT_AVAILABLE, INVALID_TARGET, ILLEGAL_PARAMETER,


80

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

OPTION_NOT_SUPPORTED.

定数

exceptionCode

に対する有効な値は,次のとおりとする。

public static final short TARGET_NOT_AVAILABLE = 1

この例外は,使用できない MHEG-5 オブジェクトに対してメソッドが与えられたときに発生しなけれ

ばならない。

public static final short INVALID_TARGET = 2

この例外は,参照が無効な MHEG-5 オブジェクトに対してメソッドが与えられたときに発生しなけれ

ばならない。

public static final short ILLEGAL_PARAMETER = 3

この例外は,メソッドが正しくないパラメタ値で起動されたときに発生しなければならない。

public static final short OPTION_NOT_SUPPORTED = 4

この例外は,メソッドが,エンジン又は,応用領域でサポートされていない付加機能を必要としたと

きに発生しなければならない。

コンストラクタ

public

MhegException (short reason)

MhegException

を,パラメタ reason で示される exceptionCode によって初期化する。

public

MhegException (short reason,

                       short position)

MhegException

を,パラメタ reason で示される exceptionCode,及びパラメタ position で示される

parameterRank

によって初期化する。

備考 ObjectReference と同様に,MHEGException は,しばしば一時的な用途に用いられる変更可能な

オブジェクトである。プログラマは,MHEGException オブジェクトのフィールドが,オブジェ

クトを渡された JVM によって変更される可能性があることに注意する必要がある。

C.6  Root

abstract public class

Root

メソッド

public static ObjectReference

getOwnId ( )

呼び出した InterchangedProgram 又は Applet の MHEG-5 識別子を取得する。

public static Root getObject (ObjectReference mheg5ObjectReference)

識別子が mheg5ObjectReference である MHEG-5 オブジェクトに対応した Java オブジェクトへの参照を

取得する。

Java

の代理オブジェクトが存在しない場合,最初にそれを作成する。

public ObjectReference

getReference ( )

オブジェクトへの参照を作成し,その参照を取得する。

public boolean

getAvailabilityStatus ( )

内部属性 AvailabilityStatus の値を取得する。

public boolean

getRunningStatus ( )

内部属性 RunningStatus の値を取得する。


81

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

C.7  Group

abstract public class

Group extends Root

メソッド

public void

setCachePriority (short cachePriority)

基本操作 SetCachePriority の実行を引き起こす。cachePriority の値は,0∼255 の範囲でなければならな

い。

public short

getCachePriority ( )

内部属性 GroupCachePriority の値を取得する。

C.8  Application

public class

Application extends Group

メソッド

public void

lockScreen ( )

基本操作 LockScreen の実行を引き起こす。

public void

unlockscreen ( )

基本操作 UnLockScreen の実行を引き起こす。

public int

getLockCount ( )

内部属性 LockCount の値を取得する。返却値は,正でなければならない。

public boolean

getEngineSupport (OctetString feature)

基本操作 GetEngineSupport の実行を引き起こす。

C.9  Scene

public class

Scene extends Group

定数

有効な eventType の値は,次のとおりとする。

public static final byte IS_AVAILABLE = 1

public static final byte CONTENT_AVAILABLE = 2

public static final byte IS_DELETED = 3

public static final byte IS_RUNNING = 4

public static final byte IS_STOPPED = 5

public static final byte USER_INPUT = 6

public static final byte ANCHOR_FIRED = 7

public static final byte TIMER_FIRED = 8

public static final byte ASYNCH_STOPPED = 9

public static final byte INTERACTION_COMPLETED = 10

public static final byte TOKEN_MOVED_FROM = 11

public static final byte TOKEN_MOVED_TO = 12

public static final byte STREAM_EVENT = 13

public static final byte STREAM_PLAYING = 14

public static final byte STREAM_STOPPED = 15


82

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public static final byte COUNTER_TRIGGER = 16

public static final byte HIGHLIGHT_ON = 17

public static final byte HIGHLIGHT_OFF = 18

public static final byte CURSOR_ENTER = 19

public static final byte CURSOR_LEAVE = 20

public static final byte IS_SELECTED = 21

public static final byte IS_DESELECTED = 22

public static final byte TEST_EVENT = 23

public static final byte FIRST_ITEM_PRESENTED = 24

public static final byte LAST_ITEM_PRESENTED = 25

public static final byte HEAD_ITEMS = 26

public static final byte TAIL_ITEMS = 27

public static final byte ITEM_SELECTED = 28

public static final byte ITEM_DESELECTED = 29

public static final byte ENTRY_FIELD_FULL = 30

public static final byte ENGINE_EVENT = 31

メソッド

public void

setTimer (int timerId)

public void

setTimer (int timerId,

                      int timerValue)

public void

setTimer (int timerId,

                      int timerValue,

                      boolean absoluteTime)

基本操作 SetTimer の実行を引き起こす。

public int

getTimerPosition (int timerId)

内部属性 Timers において,引数 timerId で指定されるタイマの TimerPosition フィールドの値を取得す

る。

timerId

が有効なタイマを指定していない場合は,例外を発生しなければならない。

public boolean

getAbsoluteTime (int timerId)

内部属性 Timers において,引数 timerId で指定されるタイマの AbsoluteTime フィールドの値を取得す

る。

timerId

が有効なタイマを指定していない場合は,例外を発生しなければならない。

public void

sendEvent (ObjectReference eventSource,

                byte eventType)

public void

sendEvent (ObjectReference eventSource,

                byte eventType,

                boolean eventData)

public void

sendEvent (ObjectReference eventSource,

                byte eventType,

                int eventData)


83

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public void

sendEvent (ObjectReference eventSource,

                byte eventType,

                OctetString eventData)

基本操作 SendEvent の実行を引き起こす。

public void

setCursorShape ( )

public void

setCursorShape (ObjectReference cursorShape)

基本操作 SetCursorShape の実行を引き起こす。

public ObjectReference

getCursorShape ( )

現在シーンに属する CursorShape オブジェクトへのオブジェクト参照を取得する。空オブジェクト参

照が返された場合は,そのシーンには現在移動カーソルがないことを示す。

public void

setCursorPosition (short xCursor,

                  short yCursor)

基本操作 SetCursorPosition の実行を引き起こす。

public short [ ] getCursorPosition ( )

内部属性 CursorPosition の値を取得する。返される配列は二つの要素をもたなければならず,最初の要

素は XCursor,もう一つは YCursor とする。

C.10

  Ingredient

abstract public class

Ingredient extends Root

メソッド

public void

setContentData (OctetString includedContent)

包含された内容に対して,基本操作 SetData の実行を引き起こす。

getContentData

の意味と整合性をもたせるため,SetData を包含された内容に適応させるメソッドは

SetContentData

と呼ばれる。

内容の属性が参照の場合の効果は,ここでは定義せず,応用領域で定義される。

public void

setContentReference (ContentReference referencedContent)

public void

setContentReference (ContentReference referencedContent,

 int

contentSize)

public void

setContentReference (ContentReference referencedContent,

 short

contentCachePriority)

public void

setContentReference (ContentReference referencedContent,

 int

contentSize,

 short

contentCachePriority)

参照された内容について,基本操作 SetData の実行を引き起こす。パラメタ contentCachePriority が指

定された場合,その値は,0∼255 の範囲でなければならない。

内容が“包含されている”の場合,例外を発生しなければならない。

public OctetString

getContentData ( )

Ingredient

の実際の内容を取得する。

内容が“包含されている”の場合,返却値は,内部属性 Content の値でなければならない。

内容が参照の場合,返却値は,内部属性 Content が参照する外部データの値のバイト列表現でなけれ


84

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

ばならない。

Ingredient

が Text オブジェクトの場合,このメソッドは,内部属性 TextData の値を取得することに注

意する。

public ContentReference

getContentReference ( )

内部属性 Content の ContentReference フィールドの値を取得する。

内容が“包含されている”の場合,空オブジェクト参照が返されなければならない。

public int

getContentSize ( )

内部属性 Content の ContentSize フィールドの値を取得する。

内容が“含まれている”の場合,例外を発生しなければならない。

フィールドが指定されていない場合,返却値は,負の値でなければならない。

public short

getContentCachePriority ( )

内部属性 Content の ContentCachePriority フィールドの値を取得する。内容が“包含されている”の場

合,例外を発生しなければならない。

フィールドが指定されていない場合,返却値は,負の値でなければならない。

それ以外の場合,返却値は,0∼255 の範囲でなければならない。

public ObjectReference

mhegClone ( )

基本操作 Clone の実行を引き起こす。

public void

preload ( )

基本操作 Preload の実行を引き起こす。

public void

unload ( )

基本操作 Unload の実行を引き起こす。

C.11

   Link

public class

Link extends Ingredient

メソッド

public void

activate ( )

基本操作 Activate の実行を引き起こす。

public void

deactivate ( )

基本操作 Deactivate の実行を引き起こす。

C.12

  Program

abstract public class

Program extends Ingredient

メソッド

public boolean

call (Object [ ] parameters)

基本操作の Call の実行を引き起こす。

引数 parameters 配列のすべての要素は,次のいずれかのデータ型を想定する。

Boolean

,Integer,OctetString,ObjectReference 又は ContentReference

それ以外の場合は,例外を発生しなければならない。

public boolean

fork (Object [ ] parameters)

基本操作 Fork の実行を引き起こす。


85

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

引数 parameters 配列のすべての要素は,次のいずれかのデータを想定する。

Boolean, Integer, OctetString, ObjectReference

又は ContentReference

それ以外の場合,例外を発生しなければならない。

返却値は,プログラムが正しく起動されたかどうかを示す。

public void

stop ( )

基本操作 Stop の実行を引き起こす。

C.13

  ResidentProgram

public class

ResidentProgram extends Program

C.14

  RemoteProgram

public class

RemoteProgram extends Program

C.15

  InterchangedProgram

public class

InterchangedProgram extends Program

C.16

  Palette

public class

Palette extends Ingredient

C.17

  Font

public class

Font extends Ingredient

C.18

  CursorShape

public class

CursorShape extends Ingredient

C.19

  Variable

abstract public class

Variable extends Ingredient

C.20

  BooleanVariable

public class

BooleanVariable extends Variable

メソッド

public void

setVariable (boolean value)

内部属性 Value の値を引数 value に設定する。

属性を取得するメソッドと同様,このメソッドは,対応する基本操作を起動するのでなく,値に直接

アクセスする。

public boolean

getVariable ( )

内部属性 Value の値を取得する。

C.21

  IntegerVariable

public class

IntegerVariable extends Variable


86

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

メソッド

public void

setVariable (int value)

内部属性 Value の値をパラメタ value に設定する。

属性を取得するメソッドと同様,このメソッドは,対応する基本操作を起動するのでなく,値に直接

アクセスする。

public int

getVariable ( )

内部属性 Value の値を取得する。

C.22

  OctetStringVariable

public class

OctetStringVariable extends Variable

メソッド

public void

setVariable (OctetString value)

内部属性 Value の値を引数 value に設定する。

属性を取得するメソッドと同様,このメソッドは,対応する基本操作を起動するのでなく,値に直接

アクセスする。

public OctetString

getVariable ( )

内部属性 Value の値を取得する。

C.23

  ObjectReferenceVariable

public class

ObjectRefVariable extends Variable

メソッド

public void

setVariable (ObjectReference value)

内部属性 Value の値を引数 value に設定する。

属性を取得するメソッドと同様,このメソッドは,対応する基本操作を起動するのでなく,値に直接

アクセスする。

public ObjectReference

getVariable ( )

内部属性 Value の値を取得する。

C.24

  ContentReferenceVariable

public class

ContentRefVariable extends Variable

メソッド

public void

setVariable (ContentReference value)

内部属性 Value の値を引数 value に設定する。

属性を取得するメソッドと同様,このメソッドは,対応する基本操作を起動するのでなく,値に直接

アクセスする。

public ContentReference getVariable ( )

内部属性 Value の値を取得する。

C.25

  Presentable

abstract public class

Presentable extends Ingredient


87

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

メソッド

public void

run ( )

基本操作 Run の実行を引き起こす。

public void

stop ( )

基本操作 Stop の実行を引き起こす。

C.26

  TokenGroup

public class

TokenGroup extends Presentable

メソッド

public void

move (short movementId)

基本操作 Move の実行を引き起こす。

public void

moveTo (short index)

基本操作 MoveTo の実行を引き起こす。

引数 index の値は,0 からグループ内の要素数までの範囲でなければならない。

public short

getTokenPosition ( )

内部属性 TokenPosition の値を取得する。

public void

callActionSlot (short index)

基本操作 CallActionSlot の実行を引き起こす。

引数 index の値は,0 からグループ内の要素数までの範囲でなければならない。

C.27

  ListGroup

public class

ListGroup extends TokenGroup

メソッド

public void

addItem (short itemIndex,

                ObjectReference visibleReference)

基本操作 AddItem の実行を引き起こす。

public void

delItem (ObjectReference visibleReference)

基本操作 DelItem の実行を引き起こす。

public ObjectReference

getListItem (short itemIndex)

内部属性 ItemList において,itemIndex をランクとしてもつ項目の値を取得する。

public ObjectReference

getCellItem (short cellIndex)

基本操作 GetCellItem の実行を引き起こす。

public boolean

getItemStatus (short itemIndex)

基本操作 GetItemStatus の実行を引き起こす。

public void

selectItem (short itemIndex)

基本操作 SelectItem の実行を引き起こす。

public void

deselectItem (short itemIndex)

基本操作 DeselectItem の実行を引き起こす。

public void

toggleItem (short itemIndex)

基本操作 ToggleItem の実行を引き起こす。


88

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public void

scrollItems (short itemsToScroll)

基本操作 ScrollItem の実行を引き起こす。

public void

setFirstItem (short iternIndex)

基本操作 SetFirstItem の実行を引き起こす。

public short

getFirstItem ( )

内部属性 FirstItem の値を取得する。返却値は,正でなければならない。

public short

getListSize ( )

内部属性 ItemList における現在の項目数を取得する。返却値は,正でなければならない。

C.28

  Visible

abstract public class

Visible extends Presentable

メソッド

public void

setPosition(short xPosition,

                short yPosition)

基本操作 SetPosition の実行を引き起こす。

public short [ ]

getPosition ( )

内部属性 Position の値を取得する。返される配列は二つの要素をもたなければならず,最初の要素は

XPosition,

もう一つの要素は YPosition とする。

public void

setBoxSize (short xBoxSize,

                short yBoxSize)

基本操作 SetBoxSize の実行を引き起こす。

引数 xBoxSize 及び yBoxSize の値は,正とし,0 以外の値でなければならない。

public short[]

getBoxSize ( )

内部属性 BoxSize の値を取得する。

返される配列は二つの要素をもたなければならず,最初の要素は XBoxSize,もう一つの要素は

YBoxSize

とする。

public void

bringToFront ( )

基本操作 BringToFront の実行を引き起こす。

public void

sendToBack ( )

基本操作 SendToBack の実行を引き起こす。

public void

putBefore (ObjectReference visibleReference)

基本操作 PutBefore の実行を引き起こす。

public void

putBehind (ObjectReference visibleReference)

基本操作 PutBehind の実行を引き起こす。

public void

setPaletteRef (ObjectReference paletteReference)

基本操作 SetPaletteRef の実行を引き起こす。

public ObjectReference

getPaletteRef ( )

内部属性 PaletteRef の値を取得する。

C.29

  Bitmap


89

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public class

Bitmap extends Visible

メソッド

public void

scaleBitmap (short xScale,

                      short yScale)

基本操作 ScaleBitmap の実行を引き起こす。

引数 xScale 及び yScale の値は,正でなければならない。

public void

setTransparency (byte transparency)

基本操作 SetTransparency の実行を引き起こす。

引数 transparency の値は,0∼100 の範囲でなければならない。

public byte

getTransparency ( )

内部属性 Transparency の値を取得する。

C.30

  LineArt

public class

LineArt extends Visible

定数

LineStyle

に対して有効な値は,次のとおりとする。

public static final byte SOLID = 1

public static final byte DASHED = 2

public static final byte DOTTED = 3

メソッド

public void

setLineWidth (byte lineWidth)

基本操作 SetLineWidth の実行を引き起こす。

引数 lineWidth の値は,正でなければならない。

public void

setLineStyle (byte lineStyle)

基本操作 SetLineStyle の実行を引き起こす。

引数 lineStyle の値は,SOLID,DASHED 又は DOTTED のいずれかでなければならない。

public void

setFillColour ( )

public void

setFillColour (Colour fillColour)

基本操作 SetFillColour の実行を引き起こす。

メソッドが引数なしで呼ばれた場合,塗りつぶしの色は,透明色に設定しなければならない。

public void

setLineColour (Colour lineColour)

基本操作 SetLineColour の実行を引き起こす。

C.31

  Rectangle

public class

Rectangle extends LineArt

C.32

  DynamicLineArt

public class

DynamicLineArt extends LineArt

メソッド

public byte

getLineWidth ( )


90

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

内部属性 LineWidth の値を取得する。

public byte

getLineStyle ( )

内部属性 LineStyle の値を取得する。

public Colour

getLineColour ( )

内部属性 RefLineColour の値を取得する。

public Colour

getFillColour ( )

内部属性 RefFillColour の値を取得する。空オブジェクトが返された場合,塗りつぶしの色がないこと

を示す(透明色)

public void

drawArc(short x,

                  short y,

                  short ellipseWidth,

                  short ellipseHeight,

                  short startAngle,

                  short arcAngle)

基本操作 DrawArc の実行を引き起こす。

public void

drawSector (short x,

                    short y,

                    short ellipseWidth,

                    short ellipseHeight,

                        short startAngle,

                    short arcAngle)

基本操作 DrawSector の実行を引き起こす。

public void

drawLine (short x1,

                        short y1,

                        short x2,

                        short y2)

基本操作 DrawLine の実行を引き起こす。

public void

drawOval (short x,

                        short y,

                    short ellipseWidth,

                    short ellipseHeight)

基本操作 DrawOval の実行を引き起こす。

public void

drawPolygon (short [ ] [ ] pointList)

基本操作 DrawPolygon の実行を引き起こす。

引数 pointList は,short データの配列 [n] [2] の形式,すなわち,各点が二つの short integer で表される

点の配列とする。

public void

drawPolyline (short [ ] [ ] pointList)

基本操作 DrawPolyline の実行を引き起こす。

引数 pointList は,short データの配列 [n] [2] の形式,すなわち,各点が二つの short integer で表される

点の配列とする。


91

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public void

drawRectangle(short x1,

                              short y1,

                              short x2,

                              short y2)

基本操作 DrawRectangle の実行を引き起こす。

public void

clear ( )

基本操作 Clear の実行を引き起こす。

C.33

  Text

public class

Text extends Visible

メソッド

public void

setFontRef (OctetString fontName)

public void

setFontRef (ObjectReference fontReference)

基本操作 SetFontRef の実行を引き起こす。

public Object

getFontRef ( )

内部属性 Font の値を取得する。

返却値は,ObjectReference(この場合,MHEG-5 Font オブジェクトヘの参照を表す。

)又は OctetString

(この場合,内蔵するフォント名を表す。

)のいずれかの形とする。

空オブジェクト参照が返された場合は,省略時のフォントを意味する。

C.34

  Stream

public class

Stream extends Presentable

メソッド

public void

setCounterTrigger (short triggerIdentifier)

public void

setCounterTrigger (short triggerIdentifier,

                                  int counterValue)

基本操作 SetCounterTrigger の実行を引き起こす。引数 counterValue が指定されていない場合,対象の

トリガを消去しなければならない。

public int

getCounterTrigger (short triggerIdentifier)

内部属性 CounterTrigger において,ID が triggerIdentifier であるトリガの CounterPosition フィールドの

値を取得する。対象トリガが存在しない場合,例外を発生しなければならない。

public void

setSpeed (byte numerator)

public void

setSpeed (byte numerator,

                      byte denominator)

基本操作 SetSpeed の実行を引き起こす。

public byte [ ]

getSpeed ( )

内部属性 Speed の値を取得する。

返される配列は二つの要素をもたなければならず,最初の要素は numerator,もう一つは denominator

とする。

public void

setCounterPosition (int counterPosition)


92

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

基本操作 SetCounterPosition の実行を引き起こす。

public int

getCounterPosition ( )

CounterPosition

属性の値を取得する。

public void

setCounterEndPosition (int counterEndPosition)

基本操作 SetCounterEndPosition の実行を引き起こす。

public int

getCounterEndPosition ( )

CounterEndPosition

属性の値を取得する。

C.35

  Audio

public class

Audio extends Presentable

メソッド

public void

setVolume (byte volume)

基本操作 SetVolume の実行を引き起こす。

public byte

getVolume ( )

内部属性 Volume の値を取得する。

C.36

  Video

public class

Video extends Visible

メソッド

public void

scaleVideo (short xScale,

                short yScale)

基本操作 ScaleVideo の実行を引き起こす。

引数 xScale 及び yScale は,正でなければならない。

C.37

  RTGraphics

public class

RTGraphics extends Visible

C.38

  Slider

public class

Slider extends Visible

メソッド

public void

setInteractionStatus (boolean interactionStatus)

基本操作 SetInteractionStatus の実行を引き起こす。

public boolean

getInteractionStatus ( )

内部属性 InteractionStatus の値を取得する。

public void

setHighlightStatus (boolean highlightStatus)

基本操作 SetHighlightStatus の実行を引き起こす。

public boolean

getHighlightStatus ( )

内部属性 HighlightStatus の値を取得する。

public void

step (short nbOfSteps)

基本操作 Step の実行を引き起こす。


93

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public void

setSliderValue (short sliderValue)

基本操作 SetSliderValue の実行を引き起こす。

public short

getSliderValue ( )

内部属性 SliderValue の値を取得する。

public void

setPortion (short portion)

基本操作 SetPortion の実行を引き起こす。

public short

getPortion ( )

内部属性 Portion の値を取得する。

C.39

  EntryField

public class

EntryField extends Text

メソッド

public void

setInteractionStatus (boolean interactionStatus)

基本操作 SetInteractionStatus の実行を引き起こす。

public boolean

getInteractionStatus ( )

内部属性 InteractionStatus の値を取得する。

public void

setHighlightStatus (boolean highlightStatus)

基本操作 SetHighlightStatus の実行を引き起こす。

public boolean

getHighlightStatus ( )

内部属性 HighlightStatus の値を取得する。

public void

setOverwriteMode (boolean overwriteMode)

基本操作 SetOverWriteMode の実行を引き起こす。

public boolean

getOverwriteMode ( )

内部属性 OverwriteMode の値を取得する。

public void

setEntryPoint (byte entryPoint)

基本操作 SetEntryPoint の実行を引き起こす。

引数 entryPoint の値は,正でなければならない。

public byte

getEntryPoint ( )

内部属性 EntryPoint の値を取得する。

C.40

  HyperText

public class

HyperText extends Text

メソッド

public void

setInteractionStatus (boolean interactionStatus)

基本操作 SetInteractionStatus の実行を引き起こす。

public boolean

getInteractionStatus ( )

内部属性 InteractionStatus の値を取得する。

public void

setHighlightStatus (boolean highlightStatus)

基本操作 SetHighlightStatus の実行を引き起こす。

public boolean

getHighlightStatus ( )


94

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

内部属性 HighlightStatus の値を取得する。

public OctetString

getLastAnchorFired ( )

内部属性 LastAnchorFired の値を取得する。

C.41

  Button

abstract public class

Button extends Visible

メソッド

public void

setInteractionStatus (boolean interactionStatus)

基本操作 SetInteractionStatus の実行を引き起こす。

public boolean

getInteractionStatus ( )

内部属性 InteractionStatus の値を取得する。

public void

setHighlightStatus (boolean highlightStatus)

基本操作 SetHighlightStatus の実行を引き起こす。

public boolean

getHighlightStatus ( )

内部属性 HighlightStatus の値を取得する。

public boolean

getSelectionStatus ( )

内部属性 SelectionStatus の値を取得する。

public void

select ( )

基本操作 Select の実行を引き起こす。

Public void deselect ( )

基本操作 DeSelect の実行を引き起こす。

C.42

  Hotspot

public class

Hotspot extends Button

C.43

  PushButton

public class

PushButton extends Button

メソッド

public void

setLabel (OctetString label)

基本操作 SetLabel の実行を引き起こす。

public OctetString

getLabel ( )

内部属性 Label の値を取得する。

C.44

  SwitchButton

public class

SwitchButton extends PushButton

メソッド

public void

toggle ( )

基本操作 Toggle の実行を引き起こす。

C.45

  Applet


95

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

public class

Applet extends InterchangedProgram

メソッド

public boolean

invoke (OctetString method,

                Object [ ] methodParameters)

基本操作 Invoke の実行を引き起こす。

配 列 methodParameters の す べ て の 要 素 は , Boolean , Integer , OctetString , ObjectReference 又 は

ContentReference

のいずれかのデータ型を想定する。

それ以外の場合は,例外を発生しなければならない。

public void

setPosition (short xPosition,

                    short yPosition)

基本操作 SetPosition の実行を引き起こす。

public short [ ]

getPosition ( )

内部属性 Position の値を取得する。

返された配列は,二つの要素をもたなければならず,最初の要素は XPosition,もう一つの要素は

YPosition

とする。

public void

setBoxSize (short xBoxSize,

                  short yBoxSize)

基本操作 SetBoxSize の実行を引き起こす。

引数 xBoxSize 及び yBoxSize は正で,0 以外の値でなければならない。

public short [ ]

getBoxSize ( )

内部属性 BoxSize の値を取得する。

返された配列は二つの要素をもたなければならず,最初の要素は XBoxSize,もう一つの要素は

YBoxSize

とする。

public void

bringToFront ( )

基本操作 BringToFront の実行を引き起こす。

public void

sendToBack ( )

基本操作 SendToBack の実行を引き起こす。

public void

putBefore (ObjectReference visibleReference)

基本操作 PutBefore の実行を引き起こす。

public void

putBehind (ObjectReference visibleReference)

基本操作 PutBehind の実行を引き起こす。

public void

setInteractionStatus (boolean interactionStatus)

基本操作 SetInteractionStatus の実行を引き起こす。

public boolean

getInteractionStatus ( )

内部属性 InteractionStatus の値を取得する。

public void

setHighlightStatus (boolean highlightStatus)

基本操作 SetHighlightStatus の実行を引き起こす。

public boolean

getHighlightstatus ( )

内部属性 HighlightStatus の値を取得する。


96

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 D(参考)  基本操作と MHEG-5 API 演算との対応付け

表 D.1 は,どのようにして MHEG-5 API が MHEG-5 のクラスを,Java のクラスとそのインタフェースに

対応付け,MHEG-5 の基本操作を Java のメソッドに対応付けるかを示す。

括弧の中の数値は,Java メソッドとして設定可能な異なるシグネチャの数を示している。太字は,同期

して動作するプログラムが利用可能なメソッドを示している。すなわち,これらは Call 基本操作を使って

起動されるプログラム群である。*印は簡易版に属さないクラスを示している。クラスの順番は,JIS X 4345

と同じである。

表 D.1  基本操作と MHEG-5 API 演算との対応付け

MHEG-5

クラス MHEG-5 基本操作 API 演算 API インタフェース又はクラス

ルート

getObject

ルート(抽象クラス)

getOwnId

getReference

 GetAvailabilityStatus

getAvailabilityStatus

 GetRunningStatus

getRunningStatus

グループ SetCachePriority

setCachePriority

グループ(抽象クラス)

getCaohePriority

アプリケーション StorePersistent

アプリケーション(具象クラス)

 ReadPersistent

 Launch

 Spawn

 Quit

 OpenConnection

 CloseConnection

 LockScreen

lockScreen

 UnlockScreen

unlockScreen

getLockCount

 GetEngineSupport

getEngineSupport

シーン TransitionTo

シーン(具象クラス)

 SetTimer

setTimer (3)

getTimerPosition

getAbsoluteTime

 SendEvent

sendEvent

(4)

 SetCursorShape

setCursorShape (2)

getCursorShape

 SetCursorPosition

setCursorPosition

 GetCursorPosition

getCursorPosition

要素 SetData

setContentData

要素(抽象クラス)

  setContentReference

(4

getContentData

getContentReference

getContentSize

getContentCachePriority

 Clone

mhegClone

 Preload

preload

 Unload

unload


97

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

MHEG-5

クラス MHEG-5 基本操作 API 演算 API インタフェース又はクラス

リンク

*

 Activate activate

リンク(具象クラス)

 Deactivate

deactivate

プログラム

*

 Call

call

プログラム(抽象クラス)

 Fork

fork

 Stop

stop

遠隔プログラム

*

遠隔(具象クラス)

内蔵プログラム

*

内蔵(具象クラス)

交換プログラム

*

交換(具象クラス)

パレット

*

パレット(具象クラス)

フォント

*

フォント(具象クラス)

カーソル形状

*

カーソル(具象クラス)

変数 SetVariable

(サブクラスを参照)

変数(抽象クラス)

 TestVariable

(サブクラスを参照)

論理型変数

(変数クラスを参照)

setVariable 

論理型変数(具象クラス)

(変数クラスを参照)

getVariable

整数型変数

(変数クラスを参照)

setVariable 

整数型変数(具象クラス)

(変数クラスを参照)

getVariable

 Add

 Subtract

 Multiply

 Divide

 Modulo

オクテット型変数

(変数クラスを参照)

setVariable

オクテット型変数(具象クラス)

(変数クラスを参照)

getVariable

 Append

コンテント参照型変数

(変数クラスを参照)

setVariable

コンテント参照型変数(具象クラス)

(変数クラスを参照)

getVariable

オブジェクト参照型変数

(変数クラスを参照)

setVariable

オブジェクト参照型変数(具象クラス)

(変数クラスを参照)

getVariable

出力

*

 Run  run

出力(抽象クラス)

 Stop

stop

トークングループ

*

 CallActionSlot

callActionSlot

トークングループ(具象クラス)

トークン管理

*

 Move

move

 MoveTo

moveTo

 GetTokenPosition

getTokenPosition

リストグループ

*

 AddItem

addItem

リストグループ(具象クラス)

 DelItem

delItem

 GetListItem

getListItem

 GetCellItem

getCellItem

 GetItemStatus

getItemStatus

 SelectItem

selectItem

 DeselectItem

deselectItem

 ToggleItem

toggleItem

 ScrollItems

scrollItems

 SetFirstItem

setFirstItem

 GetFirstItem

getFirstItem

 GetListSize

getListSize

可視

*

 SetPosition

setPosition

可視(抽象クラス)


98

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

MHEG-5

クラス MHEG-5 基本操作 API 演算 API インタフェース又はクラス

 GetPosition

getPosition

 SetBoxSize

setBoxSize

 GetBoxSize

getBoxSize

 BringToFront

bringToFront

 SendToBack

sendToBack

 PutBefore

putBefore

 PutBehind

putBehind

 SetPaletteRef

setPaletteRef

getPaletteRef

ビットマップ

*

 ScaleBitmap

scaleBitmap

ビットマップ(具象クラス)

 SetTransparency

setTransparency

getTransparency

ラインアート

*

 SetLineWidth  setLineWidth

ラインアート(具象クラス)

 SetLineColour

setLineColour

 SetFillColour

setFillColour

(2

 SetLineStyle

setLineStyle

長方形

*

長方形(具象クラス)

動的ラインアート

*

 GetLineWidth

getLineWidth

動的ラインアート(具象クラス)

 GetLineColour

getLineColour

 GetFillColour

getFillColour

 GetLineStyle

getLineStyle

 DrawArc

drawArc

 DrawSector

drawSector

 DrawLine

drawLine

 DrawOval

drawOval

 DrawPolygon

drawPolygon

 DrawPolyline

drawPolyline

 DrawRectangle

drawRectangle

 Clear

clear

テキスト

*

 SetFontRef setFontRef (2)

テキスト(具象クラス)

getFontRef

 GetTextContent

(要素クラスを参照)

 GetTextData

(要素クラスを参照)

ストリーム

*

 SetCounterTrigger

setCounterTrigger

(2)

ストリーム(具象クラス)

getCounterTrigger

 SetSpeed

setSpeed (2)

getSpeed

 SetCounterPosition

setCounterPosition

getCounterPosition

 SetCounterEndPosition

setCounterEndPosition

getCounterEndPosition

音響

*

 SetVolume

setVolume

音響(具象クラス)

 GetVolume

getVolume

動画

*

 ScaleVideo

scaleVideo

動画(具象クラス)

実時間グラフィックス

実時間グラフィックス

*

(具象クラス)

対話 SetInteractionStatus

(サブクラスを参照)

 GetInteractionStatus

(サブクラスを参照)


99

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

MHEG-5

クラス MHEG-5 基本操作 API 演算 API インタフェース又はクラス

 SetHighlightStatus

(サブクラスを参照)

 GetHighlightStatus

(サブクラスを参照)

スライダ

*

 Step

step

スライダ(具象クラス)

 SetSliderValue

setSliderValue

 GetSliderValue

getSliderValue

 SetPortion

setPortion

 GetPortion

getPortion

(対話クラスを参照)

setInteractionStatus

(対話クラスを参照)

getInteractionStatus

(対話クラスを参照)

setHighlightStatus

(対話クラスを参照)

getHighlightStatus

入力フィールド

*

 SetOverwriteMode setOverwriteMode

入力フィールド(具象クラス)

 GetOverwriteMode

getOverwriteMode

 SetEntryPoint

setEntryPoint

 GetEntryPoint

getEntryPoint

(対話クラスを参照)

setInteractionStatus

(対話クラスを参照)

getInteractionStatus

(対話クラスを参照)

setHighlightStatus

(対話クラスを参照)

getHighlightStatus

ハイパテキスト

*

 GetLastAnchorFired

getLastAnchorFired

ハイパテキスト(具象クラス)

(対話クラスを参照)

setInteractionStatus

(対話クラスを参照)

getInteractionStatus

(対話クラスを参照)

setHighlightStatus `

(対話クラスを参照)

getHighlightStaus

ボタン

*

getSelectionStatus

ボタン(抽象クラス)

 Select

select

 Deselect

deselect

(対話クラスを参照)

setInteractionStatus

(対話クラスを参照)

getInteractionStatus

(対話クラスを参照)

setHighlightStatus

(対話クラスを参照)

getHighlightStatus

ホットスポット

*

ホットスポット(具象クラス)

押しボタン

*

 SetLabel

setLabel

プッシュボタン(具象クラス)

 GetLabel

getLabel

スイッチボタン

*

 GetSelectionStatus

(ボタンクラスを参照)

スイッチボタン(具象クラス)

 Toggle

toggle

アプレット

*

 Invoke

invoke

アップレット(具象クラス)

(可視クラスを参照)

setPosition

(可視クラスを参照)

getPosition

(可視クラスを参照)

setBoxSize

(可視クラスを参照)

getBoxSize

(可視クラスを参照)

bringToFront

(可視クラスを参照)

sendToBack

(可視クラスを参照)

putBefore

(可視クラスを参照)

putBehind

(対話クラスを参照)

setInteractionStatus

(対話クラスを参照)

getInteractionStatus

(対話クラスを参照)

setHighlightStatus


100

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

MHEG-5

クラス MHEG-5 基本操作 API 演算 API インタフェース又はクラス

(対話クラスを参照)

getHighlightStatus


101

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 E(参考)  MHEG-6 アプレットと World Wide Web アプレットと

の関係

MHEG-6

アプレットクラスの仕様は,複数の MHEG-6 応用領域の World Wide Web (WWW) から,Java

アプレットを,ある範囲内で再利用するために使われる。この附属書は,二つのタイプのアプレット間の

関係を説明する。

E.1

アプレットオブジェクトヘのアクセス  HTML ページは受動的なので,いったんアプレットが開始さ

れてしまえば,HTML ページと Java アプレット間との通信は通常行われない。しかし,MHEG-5 は能動的

環境であるため,MHEG-6 アプレットは,アプレットコードが実行されている間,MHEG-5 環境と通信す

る。この規格は,アプレットの開始後の任意の時間に,アプレットオブジェクトで Java メソッドが起動さ

れるための基本操作 Invoke を規定する。MHEG-6 仕様によれば,Invoke 基本操作の引数によって,異なっ

たシグネチャをもった Java メソッドが起動される。

E.2

アプレット実行モデル  WWW 上の Java アプレットとして,java. applet. Applet は,init,start,stop 及

び destroy と呼ばれる四つの標準メソッドを規定している。これらは,WWW ブラウザによって自動的に

起動され,ライフサイクル上の臨界点をアプレットオブジェクトに通知するために利用される。これらの

四つのメソッドは MHEG-6 アプレットとしては標準化されておらず,なおかつ,MHEG-6 エンジンによっ

て自動的に呼び出されるメソッドも存在しない。しかし,Invoke 基本操作を利用すれば,MHEG-6 アプリ

ケーションは,これらのメソッドを適切な回数呼び出すことができる。これによって,WWW からの Java

アプレットは,期待している通知を受けることができる。

WWW

上の Java アプレットにとって,これらの四つの標準メソッドは,いつも同じ Java スレッドから

起動されているはずである。これらの一つを実行するのにかなりの時間がかかる場合,他のメソッドの呼

出しは,実行が終了するまで必要に応じて待ち行列に入れられる。同じモデルは,MHEG-6 のアプレット

としても使われる。すなわち,このことは,Invoke 基本操作を使って呼び出される,すべての Java メソッ

ドに適用できるように一般化される。MHEG-6 仕様において,基本的 Java スレッドは,MHEG オブジェク

トの活性化によって生成され,MHEG オブジェクトの非活性化によって消去される。Invoke 基本操作を経

由して呼び出されたすべてのメソッドは,このとき,このスレッドから起動される。

E.3

グラフィックス環境との統合  本体 8.3 で示したように MHEG-6 アプレットは,関連したグラフィッ

クス API なしに,実体化可能な交換プログラムとして単純に利用することができる。

この規格は,グラフィックス環境又はグラフィックス API を規定しない。しかし,応用領域は,アプレ

ットによって利用できる付加的な Java API を定義してもよい。さらに,アプレットが活性化されていると

きには,Fork 基本操作で Java クラスを規定しても何の制限もされない。応用領域は,MHEG-6 の Java コ

ードとグラフィックス領域との間のリンクを確立するために,そのような制限を規定してもよい。特に,

インタネットとの互換性を望む応用領域は,Fork 基本操作の引数として規定されるクラスが java. applet.

Applet

から継承される,という制限を規定するほうがよい。


102

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 F(参考)  主な特徴

この附属書は,多数の要求及び次に関する制約に応じる目的で開発されている。

−  応用

−  機能性

−  使用場面

−  性能

F.1

特徴  この規格は,次を特徴とする応用からの要求に適合させるように,JIS X 4345 を拡張する。

1) MHEG-5

実体の取扱い

2)

計算,変数の取扱い及び構造体の制御

3)

外部装置の制御

4)

データの取得

5)

外部データへのアクセス

6)

任意の外部実行時サービスへのアクセス

F.1.1  MHEG-5

実体の取扱い  応用は,通常,マルチメディアの提示を目的として MHEG-5 実体を取り扱

う。

F.1.2

計算,変数の取扱い及び構造体の制御  応用は,高度で動的な振る舞いを実装するために,これら

のデータ処理機能を必要とする。

F.1.3

外部装置の制御  装置は,しばしば,プラットホーム固有のインタフェースを提供する。JIS X 4345

及びそれにカプセル化されたモノメディア規格を実装した実行プラットホームの構成要素は,通常,多数

の装置を利用可能とする。加えて,幾つかの応用は,これらの装置又は利用対象となっていないその他の

装置を直接制御する必要がある。

F.1.4

データの取得  JIS X 4345 及びそれにカプセル化されたモノメディア規格を実装した実行プラット

ホームの構成要素は,通常,多数のデータの取得機構を利用可能とする。加えて,幾つかの応用は,これ

らの機構又は利用対象となっていないその他の機構から(例えば,よりよく同調するために)データの取

得を直接制御する必要がある。

F.1.5

外部データへのアクセス  幾つかの応用は,非 MHEG-5 データへのアクセスが必要。この非 MHEG-5

データは,局所記憶装置ストリーム,又は実行時環境の通信装置を使用して遠隔データリポジトリから,

取得しなければならないことがある。

F.1.6

任意の外部実行時サービスへのアクセス  実行時サービスは,どのようなサービスを参照してもよ

い。この場合,サービスのインタフェースが,応用プログラムの交換後に初めて分かるようなサービスを

も含む。

F.2

機能の特徴  この規格は,次のものを表現可能な VM コードを定める。

1)

データ処理演算(F.2.1 参照)

2)

外部データ及び外部機能へのアクセス(F.2.2 参照)

F2.1

データ処理演算  交換された VM コードで扱うことができるデータ処理演算には,次のものがある。

−  構成された数値データ型の取扱い


103

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

−  変数及びこれらの型の値

−  データへのアクセス又は変数の割当てを実行する命令

−  実行制御フローに影響を及ぼす命令

−  算術,論理及び比較演算を実行する命令

F.2.2

外部データ及び外部機能へのアクセス  外部データ及び外部機能へのアクセスには,協調作業が必

要となる。すなわち,次のものとの間で,機能の呼出し,メッセージの受取り,及びデータの交換を行う

必要がある。

− MHEG-5 エンジン

−  実行時環境内の他のモジュール

MHEG-5

エンジン及び実行環境内の他のモジュールとの協調作業は,交換された VM コードが実行環境

固有のインタフェースを呼び出すのに使う,機構と同一の機構によって実現される。

MHEG-5

エンジンとの協調に関して,この機構は,次を行うために使用される。

−  基本操作の起動

− MHEG-5 の動的な属性値の取得

−  変数及び MHEG-5 データ型の値の表示

実行環境内の他のモジュールとの協調に関して,この機構は,次を行うために使用される。

−  実行環境によって提供されるサービスインタフェースの宣言

−  実行環境によって提供されるサービスの起動

−  これらのサービスによって発生する例外への反応

−  構成された数値データ型及び高度な数値データ型の宣言

−  変数及びこれらの型の値の表示

加えて,VM コードは,VM パッケージ宣言の実際の実行環境構成要素への対応付けを定める。

F.3

技術的な特徴  VM コードは,次の技術的な要求を満たすように定められている。

−  ハードウェア,プラットホーム及びオペレーティングシステムからの独立性

−  安全なプログラム処理

−  最終形式表現

−  実時間交換のための規定

−  意味の検証

−  構文の検査可能性(汚染の危険に関して)

− MHEG-5 との双方向性の相互作用

− MHEG-5 機能との直交性

F.3.1

ハードウェアからの独立性  ハードウェアからの独立性,及びそれによる応用プログラムの可搬性

は,交換されるプログラムを表現する VM コードの定義及びこのコードを解釈する仮想機械の定義によっ

て達成される。

コード化された表現は,ハードウェアに依存しない符号化規則に基づいている。

インタフェースは,Java パッケージとして定義されている。これらのインタフェースの呼出しは,ハー

ドウェアに依存しない方法で VM コードに対応付けられる。


104

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

F.3.2

安全なプログラム処理  システム設計者は,故意又は偶然によって生じる欠陥のあるプログラムの

実行が,配達システムに最小限の影響しかもたらさない保証,及びすべての外部サービスヘのアクセスが

注意深く監視できる保証を望んでもよい。VM は,この目標を援助する次のような特徴をもつ。

−  すべての外部サービスは,強い型付けが行われた,明示的なインタフェースをもつ。

−  すべての命令は,強い型付けをもつ。したがって,演算及びオペランドは,その処理前又は実行時の

いずれかに検査を行うだけでよい。

−  意図しない副作用の可能性を防ぐために,記憶装置への直接参照はしない(すなわち,ポインタの計

算はない。

−  ハンドル,識別子又はポインタの直接の取扱いはしない。

F.3.3

最終形式表現  交換されたプログラムの最終形式表現は,次によって達成される。

−  交換されたプログラムの適正な符号化の使用

−  一般的な目的の計算機の主要なクラスに意味的に近い仮想機械符号化

−  能率のよい命令の符号化

F.3.4

実時間交換のための規定  この規格は,その一般的な構造が実時間交換の要求を満たすために設計

されている,ISO/IEC 13522 によって課せられた枠組みに適合する。

交換プログラムに対する構文及び構造から,交換されたプログラムは,直接に実行してもよいし,固有

のコードに即時にコンパイルしてもよい。

F.3.5

意味の検証  商用サービスの内容を実際に使用する前に,性能を検証する目的で,交換プログラム

の振る舞いを試験することが可能である。適合 VM 実装が交換プログラムの試験において,どのように振

る舞うかを示す,基準となる VM の実装を作成することも可能である。

F.3.6

構文の検査可能性(汚染の危険に関して)  VM 構文の形式定義を用いることで,交換プログラム

の正当性を検査ができるので,何らかの方法でシステムに損害を与えようとするウイルスのようなコード

の交換を制限するのにも役立つ。構文及び意味の検査が,実行時又はロード時のいずれに行うかは,実装

の選択である。

備考  計算機に独立なインタプリタ表現の使用は,汚染の危険性を減らす。残りの危険は,認証され

ていない実装又は正しくない実装によって生じる。伝送の場合の暗号化,認証,その他のセキ

ュリティ機構の規定は,この規格の範囲外である。

F.3.7  MHEG-5

との双方向性の相互作用  この規格は,MHEG-5 オブジェクトを取り扱うために VM コー

ドによって使用される,標準 API である MHEG-5 API を定める。

この規格は,特段の規定を設けて,MHEG-5 オブジェクトから VM コードがアクセスすることができる

ようにしてある。特に,MHEG-5 の交換プログラムクラスヘの意味の拡張を行った。

F.3.8  MHEG-5

の機能性と重複しないこと  この規格によって明記された環境は,重複した新しい手段を

定めることなしに,ISO/IEC 13522 によって定められたマルチメディア表現機能を完全に活用する。

F.4

技術的基準  この規格によって明記された環境は,十分に次の基準のすべてに答える。

−  開放性及び拡張性

−  多数の高水準言語からの効率のよいコンパイル

−  簡潔さ

−  解釈の効率

−  改変性がない


105

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

−  開放的及び完全な仕様

F.4.1

開放性及び拡張性  “開放性及び拡張性”の基準は,次によって満足される。

− VM コードからのアクセスを可能とするインタフェースの一般的な定義

− VM コード表現の構造を変更することのない新しい API の追加の可能性

F.4.2

多数の高水準言語からの効率のよいコンパイル  高水準言語からのコンパイルは可能であり,多く

の場合効率がよい。

命令集合は,コンパイル速度,及びセキュリティ要件を満足している限り生成したコードの品質に関し

てどのような制限もない。

F.4.3

簡潔さ  交換プログラムに関するコード表現の簡潔さは,次を含む最適化によって達成される。

− VM コードの定義がスタック方式の計算機に基づいているので,命令が幾つかのオペランドをもって

もよいし,もたなくてもよい。

−  交換形式としてバイトコードを使用することによって,

型−長さ−値 (TLV) コードに含まれるオーバ

ヘッドを回避する。

F.4.4

解釈の効率  “解釈の効率”の基準は,次によって満足される。

−  スタックに基づいた VM コードの使用

−  低水準な命令の使用

−  最終形式表現の使用

F.4.5

非改変性  非改変性は,最終形態及び/又は低水準な表現の使用によって達成される。この表現は,

特殊な計算機ツールによって制作されるためのもので,

スクリプト言語及び/又は編集作成環境を用いて,

人によって設計された元のソースコードへの復元を容易に許さない。したがって,プログラムの意味の不

当な改変が少なくなる。

F.4.6

公開及び完全な仕様  国際規格として,この仕様は,国際標準化団体の知的財産権の方針による。

仕様の改定は,これらの団体の管理下におかれ,また公知で,厳密に適用された規則によって管理される。


106

X 4346 : 1999 (ISO/IEC 13522-6 : 1998)

附属書 G(参考)  知的財産権

ISO/IEC JTC1/SC29/WG12

は,この規格に関連する知的財産権又は特許についての権利を主張する場合

にはその旨を宣言するようにという,公開要求を発行した。

この規格の最終版が承認された時点では,この規格に関連する特許又は知的財産権を主張するいかなる

貢献者や組織もなかった。

財団法人日本規格協会・情報技術標準化センター

画像処理技術調査研究委員会 MHEG JIS 化分科会 (WG6)   構成表

氏名

所属

(主査)

滝  川      啓 NTT ソフトウェア株式会社

内  山  光  一

株式会社東芝

大  森  淳  夫

パイオニア株式会社

加  井  謙二郎

日本放送協会

亀  山      渉

株式会社メディアグルー

楠  見  雄  規

松下電器産業株式会社

斎  藤  伸  雄

凸版印刷株式会社

出  羽  義  治

ソニー株式会社

羽  田  知  史

株式会社 KDD 研究所

濱  川      礼

日本電気株式会社

半  田  晶  彦

日本ビクター株式会社

矢  田  健  一 NTT ソフトウェア株式会社

山  田  勝  彦

沖電気工業株式会社

中  島  知  行

通商産業省工業技術院

(事務局)

川中子      肇

財団法人日本規格協会