JP2008536384A - リソースが制限されたセットトップボックス環境においてアプリケーションを実行するシステム - Google Patents

リソースが制限されたセットトップボックス環境においてアプリケーションを実行するシステム Download PDF

Info

Publication number
JP2008536384A
JP2008536384A JP2008504271A JP2008504271A JP2008536384A JP 2008536384 A JP2008536384 A JP 2008536384A JP 2008504271 A JP2008504271 A JP 2008504271A JP 2008504271 A JP2008504271 A JP 2008504271A JP 2008536384 A JP2008536384 A JP 2008536384A
Authority
JP
Japan
Prior art keywords
top box
application
uipane
graphics
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008504271A
Other languages
English (en)
Other versions
JP2008536384A5 (ja
Inventor
シーサラマン ロガナンス
リュウ ミン
ジー.クロニン デニス
ティー.モリス アダム
ジー.ラジ ビジャイ
ティー.バレット ピーター
エイチ.ルイ エドムンド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008536384A publication Critical patent/JP2008536384A/ja
Publication of JP2008536384A5 publication Critical patent/JP2008536384A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/20Adaptations for transmission via a GHz frequency band, e.g. via satellite
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4437Implementing a Virtual Machine [VM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/44Receiver circuitry for the reception of television signals according to analogue transmission standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/162Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
    • H04N7/163Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing by receiver means only

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Astronomy & Astrophysics (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

特にリソースが制限されたセットトップボックス環境おける使用のために適合されているシステムが説明される。システムは、特にセットトップボックス環境における使用のために構成されたインタープリタベースの共通言語ランタイム(CLR)を使用する。また、システムは、特にセットトップボックス環境における使用のために構成された独特なアプリケーションマネージャおよびUIpaneマネージャを含む。アプリケーションマネージャは、別のアプリケーションが現在のアプリケーションのユーザインターフェースの表示を妨げるユーザインターフェースの表示をもたらすときに現在のアプリケーションを中断する。さらに、システムは、ユーザがカラーパレットおよび解像度を変更することなどを可能にするために遷移効果などを提供するグラフィックス機能を含む。グラフィックス機能は、可能なときはいつでもセットトップボックスのグラフィックス機能(セットトップボックスのライン制御レジスタなど)を直接使用して、アプリケーションがより高速に実行されることを可能にする。

Description

本発明は、リソースが制限されたセットトップボックス環境などのリソースが制限された環境においてアプリケーションを開発および実行することに関する。
セットトップボックスは、ソース(ヘッドエンド配信サイトなど)からメディア情報を受信し、メディア情報を処理し、処理されたメディア情報を出力デバイス(従来のテレビジョンユニットなど)上に表示する。既存のおよび将来のテレビジョンセットトップボックスがより多用途に使用できて魅力的なアプリケーションを実行することを可能にする機能を提供することに対する増大しつつある要求がある。例示的なアプリケーションは、ゲームアプリケーション、ビデオオンデマンド(VOD)および電子番組案内(EPG)アプリケーション、ニュース表示アプリケーションなどを含む。
セットトップボックスの多用途性を向上することに対する1つのアプローチは、セットトップボックスのプラットフォームに「完全な」デスクトッププログラミング環境の機能を複製することである。今日使用されている1つの例示的なフレームワークは、Microsoft Corporationの.NET Frameworkである。.NET技術は、概してプログラムの実行を実施するために使用される物理的プラットフォームにおける根本的な複雑性に影響されないやり方でプログラムを実行するためのバーチャルマシン(VM)環境を提供する。概観として、.NET Frameworkは、ソースコード(例えばC#のソースコード)を中間言語(IL)コードおよびメタデータに変換するためのコンパイラを使用する。実行フェーズにおいて、.NET Frameworkは、共通言語ランタイム(CLR)ローダおよびジャストインタイム(JIT)コンパイラを使用してILおよびメタデータを特定の実行プラットフォームに固有のネイティブコードに変換する。
その他の技術が、リソースが制限されたコンピューティングデバイスにおける使用のための上述のバーチャルマシンの原理を拡張する。(リソースが制限された環境におけるジャストインタイムコンパイラの使用を採用するそのような技術は、本明細書においては「コンパクトなJITベースの技術」と呼ばれる。例えば、Microsoft Corporationの.NET Compact Framework(.NET CF)は、リソースが制限されたコンピューティングデバイスに用いるために上述の「完全な」.NET Frameworkを適合させる。そのようなコンパクトなJITベースの技術は、共通言語ランタイム(CLR)の完全な.NET Frameworkアーキテクチャを継承することができ、.NET Frameworkのクラスライブラリのサブセットをサポートし、.NET CF専用に設計されたクラスを含む。動作中、そのようなコンパクトなJITベースの技術は、JITコンパイラを使用して中間言語の命令を実行することができる。サポートされるデバイスは、携帯情報端末(PDA)(ポケットPCなど)と、携帯電話と、一部のセットトップボックスと、自動車用コンピューティングデバイスと、特別に設計された組み込みデバイスとを含む。概して、そのようなコンパクトなJITベースの技術(.NET CFなど)は、少なくとも8〜16MBのRAMを備えたシステムに対して最適に設計される。
David Chappell, Understanding .NET: A Tutorial and Analysis, Addison-Wesley publishers, 2002 David S. Platt, Introducing Microsoft .NET, Microsoft Press, 2003 "What are Set-top Boxes" Donald Thomson, "Smart Personal Object Technology (SPOT): Part I: An introduction to hardware, network, and system software."
上述のコンパクトなJITベースの技術は、多くの種類のセットトップボックスにおいて実行可能な解決策を提供する。しかし、この技術は、特に制限された量のリソースを有するセットトップボックスなどの全てのセットトップボックスにおける使用に関して十分に満足できるものではない。例えば、イリノイ州SchaumburgのMotorola Inc.により供給される人気の高いDCT2000セットトップボックスは、27MHzのCPUと制限された量のメモリ(例えば、1.5MBのRAMおよび1.25MBのフラッシュメモリ)とを含む。これらのリソースは、そのプラットフォーム上でコンパクトなJITベースのアプリケーションを実行するための最適なプラットフォームを提供しない。例えば、従来の.NET環境で使用されるJITは、元のILのアセンブリと「JIT化された」ネイティブコードとを両方ともメモリ内に保持する必要がある。この要件は、リソースが制限されたセットトップボックスのメモリリソースを酷使する可能性がある。さらに、JITベースの技術は、全てのマネージコードを実行するのに先立ってその全てのマネージコードをJITコンパイルすることによって機能する。この手続きは、アプリケーションを起動するときに望ましくない遅延をもたらす。
上で確認された要因の結果として、厳しくリソースが制限されたセットトップボックスに対するコンパクトなJITベースの技術の使用は低い性能をもたらす。例えば、この解決策は、アプリケーションが許容できないほど低速に実行される原因となる可能性がある。この解決策は、いくつかの新しいアプリケーションの機能の開発を明らかに妨げる可能性もある。
少なくとも上で確認された理由によって、リソースが制限されたセットトップボックス、およびその他のリソースが制限された環境でアプリケーションを開発および実行するためのより十全なシステムに対する典型的なニーズが存在する。
1つの例示的な実装によれば、セットトップボックスによって提供されるハードウェア機能を表すハードウェアレイヤと、セットトップボックス環境における使用のために構成されたインタープリタベースのコアランタイムエンジン(core runtime engine)(例えば、インタープリタベースの共通言語ランタイム)とを含むセットトップボックスシステムが本明細書において説明される。セットトップボックスシステムは、ハードウェアレイヤとインタープリタベースのコアランタイムエンジンとを使用して機能を実行することができるアプリケーションを実行するように構成される。
別の例示的な特徴によれば、セットトップボックスシステムは、5MB未満のメモリを含む。
別の例示的な特徴によれば、セットトップボックスシステムは、セットトップボックス環境における使用のために構成された、アプリケーションを管理するためのアプリケーションマネージャをさらに含む。
別の例示的な特徴によれば、アプリケーションマネージャは、別のアプリケーションがアクティブ化されるときに現在のアプリケーションを中断するように、およびその別のアプリケーションが非アクティブ化されるときに現在のアプリケーションを再開するように構成される。
別の例示的な特徴によれば、セットトップボックスシステムは、セットトップボックス環境における使用のために構成された、ユーザインターフェースの表示を管理するためのUIpaneマネージャをさらに含む。
別の例示的な特徴によれば、セットトップボックスシステムは、
1つのグラフィカルな表示から別のグラフィカルな表示に切り換えるときに遷移効果を提供する(デシメーション(decimation)、フェーディング、スクロール、露出(exposing)など)
グラフィカルな表示のカラーパレットを変更する
グラフィカルな表示の解像度を変更する
フォントファイルから情報を取り除くことによってフォントの処理を簡素化する
フォントに対してアンチエイリアシングを提供する
のうちの1つまたは複数を実行するように構成されたグラフィックス機能をさらに含む。
別の例示的な特徴によれば、セットトップボックスシステムの上述のハードウェア機能は、ディスプレイデバイスの各ラインに対応する記憶域を提供するライン制御レジスタ(line control register)(LCR)を含み、セットトップボックスシステムは、LCRを操作することによってグラフィカルな効果を提供するように構成されたグラフィックス機能をさらに含む。
さらなる例示的な実装が以下で説明される。
同様のコンポーネントおよび機能を参照するために開示および図の全体を通じて同じ番号を使用する。100番台の番号は図1で初めて見られた機能を参照し、200番台の番号は図2で初めて見られた機能を参照し、300番台の番号は図3で初めて見られた機能を参照し、その他同様である。
以下の説明は、セットトップボックス環境、およびその他のリソースが制限された環境でアプリケーションを開発および実行するためのシステムについて述べる。1つの例示的な実装において、システムは、セットトップボックス環境における使用のために適合されたインタープリタベースの共通言語ランタイム(CLR)を使用する。例えば、インタープリタベースのCLRは、これに限定されないが、Microsoft CorporationのSmart Personal Objects Technology(SPOT)の機能を使用して実装されることができる。
改善点の中でもとりわけ、本明細書において説明されるシステムは以下の特徴を提供する。
・システムは、デジタルビデオレコーダ(DVR)アプリケーション、選局に関連するアプリケーション、ペアレンタルコントロールに関連するアプリケーション、番組案内および検索アプリケーション、ビデオオンデマンド(VOD)アプリケーション、ゲームアプリケーション、情報(例えばニュース)表示アプリケーション、投票アプリケーション、インスタントメッセンジャ(IM)アプリケーション、その他多数などのリッチアプリケーションを開発するための柔軟で効果的なフレームワークを提供する。さらに、システムは(言語の中でもとりわけ)C#言語を使用して書かれたユーザアプリケーションをサポートする。
・システムは、(「完全な」.NET Frameworkまたはその知られた簡易バージョンと比較して)セットトップボックス上でのプログラミングを簡素化するために新しい「TV」名前空間を提供する。概して、この名前空間によって参照される機能は、完全な.NET環境またはその簡易バージョンと比較してはるかに少ないリソースしか消費しない。同時に、システムは、.NET Frameworkを補完するプログラミングフレームワークを使用し、プログラマが非常に少ない追加のトレーニングだけでセットトップボックスのためのプログラミングを始めることを可能にする。
・システムは、同時に実行される複数のアプリケーションをサポートするための独特なアプリケーションマネージャを提供する。特徴の中でもとりわけ、アプリケーションマネージャは、同時に実行される異なるアプリケーションを(たとえこれらのアプリケーションが異なるシステムカラーパレット、異なるディスプレイ解像度などを使用する可能性があったとしても)管理するための中断/再開メカニズムおよび通知フレームワークを提供する。例えば、(第2のアプリケーションに関連する)第2のユーザインターフェースの表示が(第1のアプリケーションに関連する)第1のユーザインターフェースの表示に取って代わるときに、システムは自動的に第1のアプリケーションを中断し、第2のアプリケーションがシステムの処理能力の大半を受け取ることを可能にすることができる。このように、それによってシステムはユーザインターフェースの表示が互いに重なることを防止することができる。
・システムは、制限されたセットトップボックスのリソースを用いて(セットトップボックス環境に適合された)より適切なユーザ管理を提供するためのUIpaneマネージャを提供する。例えば、システムは新しいUIpaneフォームを採用する。
・システムは、セットトップボックスのハードウェアに対してできるだけ多くのレンダリングを割り当てるグラフィックス機能を提供する。このことは、最小限のリソースを消費しながら非常に高速に実行されるグラフィックス機能をもたらす。特徴の中でもとりわけ、グラフィックス機能は、全256色サポートを提供し、あるアプリケーションから別のアプリケーションに切り換えると同時にカラーパレットおよび解像度を切り換える機能を提供する。さらに、グラフィックス機能は、1つのアプリケーションから別のアプリケーションに切り換えるときに遷移効果(transition effect)を提供する。遷移効果は、セットトップボックスのライン制御レジスタ(LCR)を直接操作することによって働く。さらに、システムは、線、楕円、角丸長方形などをレンダリングするためのアルゴリズムなどの、その他のシステムにおいて提供される最速のアルゴリズムの一部を活用する。
・さらに、システムは、リソースの利用効率のよいフォントのインストールおよび管理アルゴリズムと、リソースの利用効率のよいアンチエイリアシングされたTrue Typeフォントのレンダリングアルゴリズムとを提供する。さらにリソースの消費を低減するために、システムは、フォントファイルから情報の一部を取り除くためのフォントストリッピングメカニズム(font stripping mechanism)も使用する。
本明細書において説明される方策(Strategies)は多くの利点をもたらす。1つの主な利点によれば、システムは、大きくリソースが制限されたセットトップボックス上で魅力的な多用途に使用できるアプリケーションを開発するための強力なフレームワークを提供する。同時に、システムは従来のフレームワークを補完し、したがってそれらのフレームワーク(およびC#などの関連するプログラミング言語)のプログラマの今ある知識を活用することができる。
本方策のさらなる特徴および付随する利点がこの説明で述べられる。最初に、以下の検討は主にセットトップボックス環境内に備えるためのインタープリタベースのCLR技術(上述のSPOT技術など)の使用との関連で組み立てられるが、システムを構築するための基礎としてその他の種類のリソースの利用効率のよい技術が使用されることができる。さらに、そのようなその他のメモリの利用効率のよい技術は、.NETのパラダイム(またはいずれかのバーチャルマシンフレームワークのパラダイム)を採用する必要がない。さらに、システムはリソースが制限された環境内に備えるのに最適であるが、システムはそのような環境に限定されず、例えば、システムは完全な.NETの配備に対応するのに十分なだけの処理リソースを有する環境において使用されることができる。さらに、システムは、任意の種類のウェアラブルデバイス(例えば、腕時計デバイス)、携帯情報端末(PDA)デバイス、携帯電話などの(セットトップボックス以外の)その他のデバイス上で使用されることができる。
用語に関して、用語「メディア情報」は、ユーザによって消費されることができる、電子的な形式で表された任意のデータを指す。メディア情報は、オーディオリソース(例えば、音楽、言葉で語られた対象など)、静止画リソース(例えば、デジタル写真など)、動画リソース(例えば、オーディオビジュアルテレビ番組、映画など)、コンピュータプログラム(例えば、ゲームなど)などのオーディオおよび/またはビデオ情報を運ぶ任意の情報を含むことができる。
用語「UIpane」は、ユーザに対する表示のためのグラフィックスオブジェクトを表す。ある場合、UIpaneはWindows(登録商標)型のユーザインターフェースのペインに対応する可能性がある。
用語「オンスクリーンディスプレイ(OSD)」はセットトップボックスによって可能にされるディスプレイ表示を指す。
上記の用語に加えて、本開示は多くの標準的な.NETの用語を使用する。読者は、.NETの概念の背景理解のために多くの入門テキスト(例えば、非特許文献1および非特許文献2)を参照させられる。.NET環境に関するさらに追加的な情報は、MicrosoftのMSDNサイトによってオンラインで提供されるMicrosoft Corporationの技術ライブラリ上で見つけることができる。本開示内の広く用いられている用語を含む以下の用語解説は、MSDNサイトで提供される情報から得られる。
・「アセンブリ」は、バージョン管理され、構成単位として配置される1つまたは複数のファイルの集まりを指す。アセンブリは、.NET Frameworkアプリケーションの主要な基本構成要素である。全てのマネージタイプおよびマネージリソース(managed types and resources)はアセンブリ内に含まれ、当該アセンブリ内でのみアクセス可能であるように、またはその他のアセンブリ内のコードからアクセス可能であるように特徴付けられる。
・「C#」(「シーシャープ」と発音される)言語は、.NET Framework上で実行されるアプリケーションを構築するために設計された1つのプログラミング言語を指す。CおよびC++の発展であるC#は、型安全であり、オブジェクト指向である。
・「コールバック関数」は、決められたイベントが発生するときにシステムまたはサブシステムが呼び出す、アプリケーションにより定義された関数を指す。
・「クラス」は、データ(定数およびフィールド)と、動作(メソッド、プロパティ、インデクサ、イベント、オペレータ、インスタンスコンストラクタ、スタティックコンストラクタ、およびデストラクタ)とをカプセル化する参照型であり、入れ子にされた型を含むことができる。クラス型は、それによって派生クラスがベースクラスを拡張し、特殊化することができるメカニズムである継承をサポートする。
・「コンストラクタ」は、クラスのインスタンスが宣言される度に自動的に呼び出される特殊な初期化関数を指す。コンストラクタはクラス自体と同じ名前を持つ必要があり、値を返してはならない。
・「デリゲート」は、C++関数ポインタのマネージバージョンである参照型である。
・共通言語ランタイム(CLR)は、マネージコードの実行の中核をなすエンジンを指す。ランタイムは、マネージコードと共に、言語間の統合、コードアクセスセキュリティ、オブジェクトの有効期間の管理、ならびにデバッグおよびプロファイルのサポートなどのサービスを提供する。用語「コアランタイムエンジン」は、本明細書においては、上述の種類のサービスを提供し、したがってCLR技術を包含する機能を説明するために使用されるが、用語「コアランタイムエンジン」はCLR技術に限定されない(およびさらに言えば.NET技術にも限定されない)。
・「コンテキスト」は、その環境内に常駐するオブジェクトのために環境を定義する順序付けられた一連のプロパティを指す。
・「列挙型(enum)」は、System.Enumから継承し、基になるプリミティブ型の値に対して別名を与える特別な形式の値型を指す。列挙型は、名前と、基になる型と、フィールドの組とを有する。
・「フォーム」(Windows(登録商標)型のフォームなど)は、アプリケーション内で、またはアプリケーション間で一貫した動作およびユーザインターフェースを提供する複合的なコントロールを指す。
・「ガベージコレクション(GC)」は、もはや使用されていないオブジェクトを削除するためのプロセスを指す。
・「JITコンパイル」は、実行時にコードが必要とされる時点で中間言語(MSIL)をマシンコードに変換する(従来の「完全な」.NET環境における)コンパイルを指す。
・「有効期間」は、オブジェクトがメモリに割り当てられるときに始まり、ガベージコレクタがメモリから当該オブジェクトを削除するときに終わる期間を指す。
・「マネージコード」は、共通言語ランタイム環境によって実行されるコードを指す。マネージデータは、共通言語ランタイムによって管理される有効期間を有するオブジェクトを指す。
・「名前空間」は、関連する型をグループ化するための論理的な名前付けスキームを指す。.NET Frameworkは、関連する機能の論理的なカテゴリに型をグループ化するための階層型の名前付けスキームを使用する。
・「プライベート」アセンブリは、当該アセンブリと同じディレクトリ構造内のクライアントだけが使用できるアセンブリを指す。
・「リフレクション」は、アセンブリとそれらのアセンブリ内で定義される型についての情報を取得し、実行時に型のインスタンスを作成し、呼び出し、アクセスするプロセスを指す。
・「ユニフォームリソース識別子(Uniform Resource Identifier)(URI)」は、要素または属性を一意に識別する番号または名前を指す。URIは、ユニフォームリソース名(Uniform Resource Names)(URN)およびユニフォームリソースロケータ(URL)の両方を含む。
・「アンマネージコード」は、共通言語ランタイム環境外で直接実行されるコードを指す。
・拡張可能なマーク付け言語(XML)は、Web上での送達に最適化された標準一般化マーク付け言語(SGML)のサブセットを指す。XMLは、アプリケーションまたはベンダによらない構造化されたデータを記述および交換するための一貫した方法を提供する。
本開示は以下のセクションを含む。
A.システム概要(図1および2)
A.1.システム
A.2.セットトップボックス
B.例示的なシステムのソフトウェア機能(図3〜6)
B.1.機能の概要
B.2.ApplicationBase機能
B.3.UIpane機能
B.4.アプリケーションマネージャ
B.4.1.初期化動作
B.4.2.実行およびメモリ管理動作
B.4.3.中断および再開動作
B.4.4.アンロード/終了動作
B.4.5.その他の動作
B.4.6.要約(図5)
B.5.UIpaneマネージャ
B.5.1.UIpane管理動作
B.5.2.イベントルーティング動作
B.5.2.UIpaneフォーカスおよびナビゲーション動作
B.6.グラフィックス機能
B.6.1.遷移効果
B.6.2.パレットおよび解像度効果
B.6.3.Blt効果
B.6.4.フォントレンダリング機能
C.例示的な動作方法(図7)
D.付録
D.1.IUIpaneインターフェース
D.2.ABC_Co.TV.Lite.UIpanes
D.2.1.ABC_Co.TV.Lite.UIpanes名前空間の概要
D.2.2.ABC_Co.TV.Lite.UIpanes.UIpaneBase
D.2.3.ABC_Co.TV.Lite.UIpanes.Form
D.2.4.ABC_Co.TV.Lite.UIpanes.Control
D.2.5.ABC_Co.TV.Lite.UIpanes.Button
D.2.6.ABC_Co.TV.Lite.UIpanes.UIpaneEventHandler
D.2.7.ABC_Co.TV.Lite.UIpanes.KeyEventHandler
D.2.8.ABC_Co.TV.Lite.UIpanes.Transition
D.2.9.ABC_Co.TV.Lite.UIpanes.TransitionEventHandler
D.2.10.ABC_Co.TV.Lite.UIpanes.ButtonStyle
D.2.11.ABC_Co.TV.Lite.UIpanes.Keys
D.3.ABC_Co.TV.Lite.Shell.TVLiteApplicationBase
D.4.ABC_Co.TV.Lite.Drawing名前空間
D.4.1.概要
D.4.2.ABC_Co.TV.Lite.Drawing.Graphicsクラス
D.4.3.ABC_Co.TV.Liteで使用されるRLE圧縮画像フォーマット
D.5.フォントメソッド
D.5.1.フォントのインストールおよびアンインストール
D.5.2.グラフィックスオブジェクトのフォントに関連するメソッド
D.6.ネイティブイベントおよびマネージ非同期コールバック(Managed Async CallBack)
A.システム概要(図1および2)
概して、図を参照して説明される機能のいずれも、ソフトウェア、ファームウェア(例えば、固定の論理回路)、手動による処理、またはこれらの実装の組合せを使用して実装されることができる。概して、本明細書において使用される用語「論理」、「モジュール」、または「機能」は、ソフトウェア、ファームウェア、またはソフトウェアおよびファームウェアの組合せを表す。例えば、ソフトウェアによる実装の場合、用語「論理」、モジュール、または「機能」は、1つの処理デバイスまたは複数の処理デバイス上で実行されるときに指定されたタスクを実行するプログラムコード(および/または宣言型の命令)を表す。プログラムコードは、1つまたは複数のコンピュータ可読メモリデバイスに記憶されることができる。より全般的に言って、論理、モジュール、および機能の別々のユニットへの図示された分割は、そのようなソフトウェアおよび/またはハードウェアの実際の物理的なグループ化および割り当てを反映する可能性があるか、または単一のソフトウェアプログラムおよび/またはハードウェアユニットによって実行される異なるタスクの概念的な割り当てに対応する可能性がある。図示された論理、モジュール、および機能は、(例えば、1つの処理デバイスによって実装されるように)単一の場所に配置されることができるか、または複数の場所に渡って分散されることができる。
A.1.システム
図1は、そのシステムに本明細書において説明される改善された機能が備えられることができるシステム100の概要を示す。概要として、システム100は、接続メカニズム108を介してソース106からメディア情報(またはその他の情報)を受信するための複数のリソースが制限されたデバイス(102、104)を含む。
メディア配信の場合、ソース106は、メディア情報を受信デバイス(102、104)に送達するためのヘッドエンドインフラストラクチャを表す可能性がある。例えば、ソース106は、従来のケーブルメディア配信インフラストラクチャ、従来の無線メディア配信インフラストラクチャ(衛星メディア配信インフラストラクチャなど)などを表す可能性がある。または、ソース106は、1つまたは複数のデジタルネットワークを介してメディア情報を送達するメディア情報のネットワークソースを表す可能性がある。さらに別の場合には、ソース106は、受信デバイス(102、104)に対してローカルな場所から受信デバイス(102、104)にメディア情報を供給するエンティティ(ビデオジュークボックスなど)を表す可能性がある。いずれの場合も、ソース106は、例えば電子番組案内(EPG)によって反映されるように、決められた時間スケジュールに従っていくつかの放送チャネルにおいて受信デバイス(102、104)にメディア情報を送達することができる。または、ソース106は、オンデマンドの方法を使用して受信デバイス(102、104)にメディア情報を送達することができる。
接続メカニズム108は、ソース106を受信デバイス(102、104)に接続する。この接続メカニズム108は、異なる技術的および商業的環境に適合するために異なるやり方で実装されてよい。例えば、接続メカニズム108は、ケーブルルーティングインフラストラクチャ、衛星ルーティングインフラストラクチャ、地上波アンテナルーティングインフラストラクチャ(およびそのようなルーティングインフラストラクチャの任意の組合せ)などの任意の種類の従来の配信インフラストラクチャを含んでよい。または、接続メカニズム108は、広域ネットワーク(例えばインターネット)、イントラネットなどのデジタルネットワーク(またはネットワークの組合せ)を含んでよい。情報を配信するためにデジタル加入者線(DSL)インフラストラクチャが使用される場合、接続メカニズム108は、電話接続インフラストラクチャのサービスを一部利用することができる。
この説明の例示の目的のために、ソース106および接続メカニズム108は受信デバイス(102、104)へのメディア情報のケーブルまたは衛星による送達を提供するという簡略化の仮定がなされる。ソース106と受信デバイス(104、106)の間のリンクは、(情報がソース106から受信デバイスに向かってのみ流れる)単方向リンクとして、または好ましくは(受信デバイスのユーザがソース106にデータを送信することもできる)双方向リンクとして実装されることができる。双方向通信が使用される場合、デバイスからソースへのリンクは、デバイス(102、104)がソース106からメディア情報を受信するために使用する同じチャネルによって、または異なるチャネルによって実装されてよい。
受信デバイスは、セットトップボックス102を含む。セットトップボックス102は、ソース106からメディア情報を受信し、受信されたメディア情報に対して様々な処理を実行し(メディア情報を復号化する、および場合によってはメディア情報を解凍するなど)、処理された情報を出力デバイスに転送する。メディア配信環境の場合、出力デバイスはテレビジョンユニット110に対応する可能性がある。ある場合、セットトップボックス102は、テレビジョンユニット110とは別個のユニットとして実装されることができ、テレビジョンユニット110は任意の種類の接続メカニズム(例えば、物理的な配線、無線接続など)を介してセットトップボックス102に接続することができる。別の場合、セットトップボックス102は、テレビジョンユニット110内の一体型ユニットとして実装されることができる。さらに別の場合、セットトップボックス102からメディア情報を受信する出力デバイスは、従来のテレビジョン以外の別の種類のディスプレイデバイス(コンピュータモニタなど)、オーディオ出力デバイス(ステレオシステムなど)などを含むことができる。
その他の受信デバイス104は、任意の種類のウェアラブル処理メカニズム(例えば、MicrosoftのSPOTウォッチなどの腕時計)、携帯電話、携帯情報端末(PDA)、タブレット型デバイスなどの、処理および出力機能を有する任意のメカニズムを含むことができる。しかし、検討を容易にするために、この説明の残りの部分は、受信デバイスがセットトップボックス102(上述のように、テレビジョンユニット110と分かれていてよく、またはテレビジョンユニット110と一体化されていてもよい)に対応することを仮定する。
セットトップボックス102は、テレビジョンユニット110の画面114上にユーザインターフェースの表示112を表示することができる(これから説明されることになる)機能を含む。画面114は、本発明においてはオンスクリーンディスプレイ(OSD)とも呼ばれる。ユーザは、リモートコントロールデバイス116、または何らかのその他の種類の入力デバイスを介してユーザインターフェースの表示112と対話することができる。例えば、セットトップボックス102は、セットトップボックスの筐体に直接一体化された入力キー(図示せず)を含むことができる。
A.2.セットトップボックス
図2は、例示的なセットトップボックス102の構成を示す。セットトップボックス102は、以下で確認される、セットトップボックス102に付与されたタスクを実行するためのいくつかのモジュールを含むことができる。まず第1に、セットトップボックスはインターフェースモジュール202を含むことができる。インターフェースモジュール202は、任意の接続メカニズムを使用してソース106からメディア情報を受信するための任意の機能を表すことができる。例えば、インターフェースモジュール202は、DSLモデム、ケーブルモデム、無線ネットワークインターフェース、イーサネット(登録商標)NIC、またはその他の種類のネットワークインターフェース機器を含むことができる。
・セットトップボックス102は、メディア情報を復号化すること、場合によってメディア情報を解凍することなどの、受信されたメディア情報に対する任意の種類の初期的な処理を実行するためのチューナ/デコーダモジュール204も含むことができる。放送サービスの場合、選局/復号化モジュール204は、任意の種類の選局メカニズムを介して(所望のチャネルを提供する所定の物理的な周波数に同調することによるなどして)1つまたは複数のメディア情報のチャネルを選択することができる。メディア情報のネットワークによる送達の場合、選局/復号化メカニズムは、(例えば、メディア情報の所定のユニキャストまたはマルチキャストソースに「同調する」ことによって)チャネルを受信するための仮想的な選局メカニズムを利用することができる。
・セットトップボックス102は、セットトップボックス102の機能を実行する命令を実行するための1つまたは複数の処理装置206を含むことができる。
・セットトップボックス102は、メモリ208(RAMメモリ、フラッシュメモリなど)を含むことができる。メモリ208の一部は、メディア情報が復号化されるのに先立ってメディア情報を記憶するためのFIFO型のバッファ(図示せず)を含んでもよい。メモリの別の部分は、ライン制御レジスタ(LCR)210を含むことができる。LCR210は、出力デバイスの画面上の各ラインに対応するそれぞれの記憶域を含む。セットトップボックス102は、LCR210を使用して情報を出力デバイスにレンダリングすることができる。これから説明されるように、セットトップボックス102は、LCR210を操作することによって様々なグラフィックス効果(遷移効果など)を提供することもできる。
・セットトップボックス102は、1つまたは複数の入力デバイス(例えば、リモートコントローラ116など)を介してユーザとインタラクションするためのI/Oインターフェース212を含むことができる。
・セットトップボックス102は、テレビジョンユニット110(またはその他の出力デバイス)に適切なフォーマットのメディア情報を供給するためのA/Vインターフェースモジュール214を含むことができる。
・セットトップボックス102は、任意の種類のデータおよび/またはプログラム情報を記憶するためのオプションのローカルの記憶装置216を含むことができる。
・セットトップボックス102は、図に具体的に挙げられていない様々なその他のモジュール218を含むことができる。例えば、セットトップボックス102は、選局/復号化モジュール204からのメディア情報の映像コンポーネントをグラフィックス情報と合成するためのグラフィックス合成器を含むことができる。グラフィックス情報は、メディア情報の上に重ねられる様々なユーザインターフェースの表示を含んでよい。
最後に、セットトップボックス102は、上で確認されたコンポーネントを互いに接続するための1つまたは複数のバス220を含むことができる。
多様なセットトップボックスに関する追加的な情報は、いくつかのソース(例えば、非特許文献3内のオンラインTV辞書)で見つけることができる。
いずれにせよ、以下で説明されることになるシステムは、制限された処理リソースを有するセットトップボックスに特に適する(しかし、このシステムは制限されたリソースを有するボックスに限定されない)。例えば、Motorolaによって製造された人気の高いDCT2000ボックスは制限されたリソースを有する。このボックスの処理装置は27MHzで動作し、メモリは1.5MBのRAMおよび1.25MBのフラッシュメモリを含む。本発明によって対処される困難は、その環境においてアプリケーションを開発および実行するための、これらの種類のリソースが制限された環境に適するように多様な機能を提供することである。
1つの例示的な実装によれば、システムは、セットトップボックス環境における使用のために適合されたインタープリタベースの共通言語ランタイム(CLR)を使用することができる。このことは、上で概説されたコンパクトなジャストインタイムベースの(コンパクトなJITベースの)アプローチと対称的である。JITベースのアプローチでは、プラットフォームは、アプリケーションの起動に先立って全てのマネージコードのJITコンパイルを必要とする。このことは、少なくとも2つのデメリットを有する。第1に、JITコンパイルは、アプリケーションが実行される前の遅れをもたらす。第2に、JITコンパイルは、元のアセンブリおよび「JIT化された」ネイティブコードを記憶するために大量のメモリを必要とする。対称的に、インタープリタベースのCLRは、個別的に、すなわちコードを必要に応じて解釈することによってコードの解釈および実行を行う。このことは、アプリケーションを起動するために必要とされる時間、およびアプリケーションのメモリ要件の両方を低減し、後者の利点は制限されたメモリリソースを有するリソースが制限されたデバイスに対して特に有益である。
インタープリタベースのCLRは、様々な技術を使用して実装されることができる。1つの例示的で非限定的な事例では、インタープリタベースのCLRは、Microsoft CorporationのSmart Personal Objects Technology(SPOT)を使用して実装されることができる。SPOT技術は、いくつかのソース(例えば、非特許文献4によるオンライン論文を含む)で説明されている。.NET組み込み技術を説明している文献は、SPOT技術に関連している。より具体的には、ワシントン州シアトルのnetcpu(商標)Corporationは、SPOT技術に関連するnetcpu(商標)製品および関連するSDKを供給する。
上述の技術に特有の実装は、例示的であるに過ぎない。その他のインタープリタベースの機能は、Java(登録商標)プログラミングフレームワークなどの、.NET Framework以外のその他のプログラミングフレームワークを使用することができる。上で定義されたように、より包括的な用語「インタープリタベースのコアランタイムエンジン」は、インタープリタベースのCLR(SPOTのTinyCLRなど)の使用を包含するが、この技術に限定されない(およびさらに言えば.NET技術にも限定されない)。
インタープリタベースのCLRは、本開示の以降のセクションで十分に説明されるやり方でセットトップボックス環境における使用のために適合されることができる。概して、インタープリタベースのCLRは、「完全な」.NET Frameworkによって提供される機能と比較して少ない機能の組を提供することができる。それでも、インタープリタベースのCLRは、概して.NETのパラダイムに従い、開発者が大きくリソースが制限された環境において.NETのパラダイムを使用してアプリケーションを提供することを可能にすることが好ましい。
より具体的には、デスクトップ環境は、キーボードおよびマウスなどのいくつかの可能な入力デバイスを介してユーザから入力を受け取る。さらに、デスクトップ環境は、非常に複雑なUIpane管理の方策を要求する、複数の重なり合うUIpaneを用いた同様に複雑なユーザインターフェースの表示を提供するように構成される。一方、セットトップボックス環境は、概して制限された数の単純な入力メカニズム(例えば、リモートコントローラ)を介してユーザから入力を受け取る。さらに、概してセットトップ環境は複数のアプリケーションを提供するように期待されるが、(デスクトップ環境と異なり)概してこれらのアプリケーションを複雑なレイヤ化されたやり方で表示しない。したがって、本発明によれば、インタープリタベースのCLRプラットフォームは、セットトップボックス環境に最もよく役立つように適合される。
次のセクションで説明されるように、例示的な改善は、特にセットトップボックス環境に適合された名前空間と、アプリケーションを中断および再開するための独特なアプリケーションマネージャと、独特なウィンドウマネージャと、種々の独特なグラフィックスおよびフォント関連装備とを含む。
B.例示的なシステムのソフトウェア機能(図3〜6)
B.1.機能の概要
図3は、本明細書においてTV.Liteと呼ばれる(これはセットトップボックスシステムがテレビジョンセットトップボックス環境で用いるための比較的「軽い(lightweight)」機能を提供するためである)セットトップボックスシステムのソフトウェアスタック300の概要を提供する。上述のように、スタック300は、本明細書において説明される独特な装備によってセットトップボックス環境における使用のために適合された、インタープリタベースのCLRによって提供される機能を含むことができる。従来のやり方で、スタック300内のレイヤはシステムにおける異なる機能の相対的な依存性を示し、ここで最も低いレベルはシステムの最も基本的な機能を実行し、最も高いレベルはシステムにおける最も抽象的なまたは高レベルな機能を実行する。
まず第1に、最も低いセットトップボックスレイヤ302が、セットトップボックス102の様々なハードウェア機能を含む、セットトップボックス102の物理構造に対応する。例えば、このレイヤ302は、LCR210を含む、図2で確認されたセットトップボックスの構成要素を含む。
次に高いレイヤ、セットトップボックスOSレイヤ304は、セットトップボックス102によって実行される様々な基本機能を提供する。例えば、MotorolaのDCT2000セットトップボックスに関しては、セットトップボックスOSレイヤ304はMotorolaによって提供される「GIOS」オペレーティングシステムに対応する。このレイヤ304は、メモリ管理、スケジューリング、ハードウェア制御などを提供することができる。
次に高いレイヤは、インタープリタベースのCLR306(これに限定されないがSPOTベースのCLRなど)、およびGFXライブラリ308を提供する。概して、例示的な.NETによる実装において、インタープリタベースのCLR306は、特にセットトップボックス環境の要求に適合された、.NET共通言語ランタイム(CLR)機能のサブセットを含む。インタープリタベースのCLR306は、スタック内で(「完全な」.NET Frameworkと比べて)比較的低位であり、このことはアプリケーションの機能と低レベルのOS機能の間の差異を(従来のシステムと比較して)より小さくする。
GFXライブラリ308は、特にセットトップボックス環境の使用に適合された、セットトップボックスシステムにおいて用いるための様々なグラフィックス機能を提供する。
次に高いレイヤは、アプリケーションマネージャ310と、UIpaneマネージャ312と、フォームおよびコントロール314とを提供する。タスクの中でもとりわけ、アプリケーションマネージャ310は、複数のアプリケーションのロード、実行、およびシャットダウンを制御する。
UIpaneマネージャ312とフォームおよびコントロール314とは、UIpane(これらに限定されないが、Windows(登録商標)オペレーティングシステム環境において提供される表示オブジェクトと同様の表示オブジェクトなど)の表示を制御する様々な機能を提供する。セットトップボックス環境に不要な機能を除外するために、このUIpane機能において(従来のデスクトップ環境と比較して)APIの数が検討された。それでも、APIはデスクトップ環境において提供される完全なAPIの組を補完し、それによって開発者が全く新しいプログラミングのパラダイムを学ぶことなしにセットトップボックス環境のためのアプリケーションの記述を始めることを可能にする。
最上位のレイヤは、いくつかのアプリケーション(316、318、320、...322)を提供する。これらのアプリケーション(316、318、320、...322)は、任意の目的に役立つように設計された任意のコード機能を含むことができる。例えば、これらのアプリケーション(316、318、320、...322)は、デジタルビデオレコーダ(DVR)、選局に関連するアプリケーション、ペアレンタルコントロールに関連するアプリケーション、番組案内および検索アプリケーション、ビデオオンデマンド(VOD)アプリケーション、ゲームアプリケーション、情報(例えばニュース)表示アプリケーション、投票アプリケーション、インスタントメッセンジャ(IM)アプリケーションなどを提供することができる。アプリケーション(316、318、320、...322)は、(言語の中でもとりわけ)C#言語を使用して書かれたユーザアプリケーションをやはりサポートする。
以下のサブセクションは、図3に示されたソフトウェアスタック300に関する追加的詳細を提供する。
B.2.ApplicationBase機能
スタック300内の機能は、一部分において、セットトップボックス環境のために開発された独特な名前空間によって実装されることができる。その名前空間の基底において、名前空間は、そのシェルから追加的な機能が階層的なやり方で付加されることができるシェル、ABC_Co.TV.Lite.Shellを提供する。階層内の子機能は、継承によって親機能により提供されるツールを利用することができる。
このサブセクションは、TVLiteApplicationBaseと呼ばれる(以下では略してApplicationBaseと呼ばれる)名前空間にグループ化される機能を説明する。ApplicationBaseクラスは、ABC_Co.TV.Lite.Shellに従属する。ApplicationBaseは、セットトップボックスのアプリケーションを表す。すなわち、全てのアプリケーションは、抽象TVLiteApplicationBaseインターフェースから派生すべきである。この関係によって、アプリケーションは、ApplicationBaseにおいて指定された全ての抽象メソッドを実装することができる。セクションDの付録はApplicationBase機能の詳細な説明を提供し、本セクションはこの機能の例示的で主要な特徴を提供する。
ApplicationBaseクラスは、以下の例示的で非網羅的な列挙された特徴を提供することができる。(「メッセージポンプ」に関する以下の言及、およびその他の特徴は、アプリケーションマネージャ310の後の検討との関連で明確にされることになる。)
・Runメソッドは、現在のスレッド上で標準のアプリケーションメッセージループの実行を開始し、指定されたUIpaneを可視状態にする。Runメソッドは自動的に(以下で確認される)RegisterUIpaneを呼び出して最も高いレベルのUIpaneである主UIpaneを登録する。
・Initializeメソッドは、アプリケーションで定義された初期化を実行する。このメソッドにおいて、アプリケーションを起動するためのHTTPリクエストのURLが、URLに付加されるパラメータと共に、Initializeに対する呼び出しの中の「url」パラメータを介してアプリケーションに渡されることができる。以下は例示的なurlパラメータを与える。
http://appserver/monster.dat?param1=value1&param2=value2
・Exit()メソッドは、全てのメッセージポンプにそれらのメッセージポンプが終了すべきであることを知らせ、そしてメッセージが処理された後で全てのアプリケーションのUIpaneを閉じる。概して、Exitメソッドはメッセージループ内から呼び出され、Runメソッドに強制的にリターンさせる。より全般的に言って、アプリケーションはアプリケーションマネージャ310にアプリケーションが終了することを知らせるためにExitメソッドを呼び出すことができ、これはアプリケーションマネージャ310がシステムのリソースをクリーンナップするなどの適切な処置を実行することを可能にする。
・RegisterUIpaneメソッドは、アプリケーションがそのアプリケーションの最も高いレベルのUIpaneをUIpaneマネージャ312に登録することを可能にする。UIpaneマネージャ312は、UIpaneイベントを最も高いレベルのUIpaneにディスパッチすることになる。
・Pauseメソッドは、アプリケーションに中断するように要求するためにアプリケーションマネージャ310がアプリケーションに中断イベントを送信することを可能にする。アプリケーションマネージャ310は、アプリケーションに中断するように要求した後でスレッドを一時停止する。
・Resumeメソッドは、アプリケーションに再開するように要求するためにアプリケーションマネージャ310がアプリケーションに再開イベントを送信することを可能にする。
・Terminateメソッドは、アプリケーションに終了するように要求するためにアプリケーションマネージャ310がアプリケーションに終了イベントを送信することを可能にする。例えば、Terminateメソッドは、ユーザが適切なUIコマンドを介して高速終了命令を入力したとき、システムがシャットダウンするとき、システムリソースが不足しつつあるときなど、アプリケーションが終了されるべきときに呼び出されることができる。これらの状況において、アプリケーションマネージャ310は、Terminateメソッドを呼び出してアプリケーションに終了するように命令する。
・ReleaseResourceメソッドは、解放されることができる全てのリソースを解放するようにアプリケーションに要求するためにアプリケーションマネージャ310がアプリケーションにリソース解放イベントを送信することを可能にする。これは、ガベージコレクタのためのオブジェクトに対する参照を削除することを含む。
B.3.UIpane機能
シェルは、全てのUIpaneの根本として働く基底IUIpaneインターフェースも定義する。このインターフェースは、UIpaneマネージャがそれぞれのUIpaneの実装の詳細を「知ること」なしに全てのUIpaneを制御することを可能にする。
ABC_Co.TV.Lite.UIpanes名前空間は、低価格のセットトップボックス(STB)上での実行のために最適化された「軽いTVアプリケーション」を作成するためのクラスを含む。前のセクションで説明されたように、セットトップボックスはインタープリタベースのCLRシステムを実行することができる。
この名前空間内のクラスは、以下のカテゴリにグループ化されることができる。
・UIpaneBaseクラスのカテゴリは、TVアプリケーション上に表示される全てのUIpaneコントロールのための基本機能を提供する。ABC_Co.TV.Lite.UIpanes名前空間内のほとんどのクラスは、UIpaneBaseクラスから派生する。UIpaneBaseクラスはコンテナでもあり、このことはUIpaneBaseクラスが子UIpaneを含むことができることを意味する。
・UIpane Formsクラスのカテゴリは、最も高いレベルのコンテナUIpaneの作成を可能にする。
・UIpane Controlsクラスのカテゴリは、ユーザインターフェースの作成を可能にする。例えば、ButtonクラスはUIpaneコントロールである。
上述の要約で述べられたクラスのカテゴリに対するサポートを提供する、ABC_Co.TV.Lite.UIpanes名前空間内のいくつかのクラスがある。概要として、クラスに関して、
・ButtonクラスはTVのボタンコントロールを表す。
・Controlクラスは、コントロールのベースクラスを定義する。コントロールオブジェクトは、特定の機能を実行する視覚的な表示を持ったオブジェクトを定義する。
・Formクラスは、親のない最も高いレベルのコンテナUIpaneのためのベースクラスを定義する。このクラス(フォームオブジェクト)によって生成されたオブジェクトは、何らかの視覚的な表示を持つか、または視覚的な表示を持たず、子UIpaneを含むことができる。
・Transitionクラスは、フォームオブジェクトに遷移を適用するためのメソッドを定義する。
・UIpaneBaseクラスは、(視覚的な表示を有するオブジェクト、またはその他のUIpaneBaseオブジェクトを含むオブジェクトを定義する)UIpaneのためのベースクラスを定義する抽象クラスである。
デリゲートに関して、
・UIpaneEventHandlerクラスは、任意のUIpaneイベントを処理することになるメソッドを表す。
・KeyEventHandlerクラスは、キーイベントを処理することになるメソッドを表す。
・TransitionEventHandlerクラスは、遷移イベントを処理することになるメソッドを表す。
列挙型に関して、
・Keyクラスは、TVアプリケーション内で使用される全ての可能なキーコードを表す。
・ButtonStyleクラスは、全ての可能なボタンスタイルを表す。
さらに、付録、セクションDは、UIpane機能の完全な検討を提供する。さらに、図4はこの機能の例示的な階層構造を示し、このことは付録で十分に説明される機能の概要を提供する。
B.4.アプリケーションマネージャ
アプリケーションマネージャ310は、アプリケーションのロード、アンロード、および初期化を管理するためのメカニズムを提供する。さらに、アプリケーションマネージャ310は、メッセージポンプを管理すること、メモリ管理を実行すること、システムのセキュリティに関連する特質を処理することなどを行う。また、アプリケーションマネージャ310は、アプリケーションにアクティブ化、非アクティブ化、中断、再開、終了などを命令することによってアプリケーションの動作を管理する。
以下のサブセクションは、上述の話題に関する追加的な情報を提供する。
B.4.1.初期化動作
アプリケーションマネージャ310は、アプリケーションを起動するためのアプリケーション起動リクエストを受信することができる。例えば、1つの例示的な実装において、起動リクエストは、アプリケーションマネージャ310にフラッシュメモリ中のアプリケーションを起動するように、またはアプリケーションをダウンロードし、起動するためのHTTPリクエストを介してアプリケーションを起動するように要求することができる。
より具体的には、アプリケーションのシェルは、ABC_Co.TV.Lite.Shell名前空間内のpublicなDownloadクラスを使用してアプリケーションをダウンロードおよび実行することができる。複数のアセンブリを同時にダウンロードおよび実行するために、Downloadオブジェクトの複数のインスタンスが作成されることができる。各アセンブリは、そのアセンブリ専用のスレッド内で実行される。(いくつかのコンパクトな.NETによるJITベースのフレームワークにおいては、アプリケーションは異なるアプリケーションドメイン内で実行されることに留意されたい。一方、アプリケーションが異なる論理的なスレッド内で実行されるのでインタープリタベースのCLRの実装においてはアプリケーションドメインの概念は存在しない。)Downloadオブジェクトは、アプリケーションを起動するためのパーミッションをチェックすることができる。
アプリケーションは、Downloadオブジェクトを使用してその他のアプリケーションを起動することができる。起動される側のアプリケーションが終了するときに起動する側のアプリケーションが通知を受けることを望むならば、起動する側のアプリケーションはAutoResetEventをDownloadのコンストラクタに渡し、当該イベントを待つことができる。例えば、エンティティXがDownloadオブジェクトを使用してゲームアプリケーションを起動すると仮定する。エンティティXは、gameAppExitEventと呼ばれるAutoResetEventを作成し、そのAutoResetEventをDownloadオブジェクトに渡すことができる。エンティティXは、個別のスレッドを作成し、そのスレッドにおいてgameAppExitEventを待つことができる。ゲームアプリケーションが終了するとき、シェルはgameAppExitEventを信号で知らせることになる。エンティティXはやはりシステムイベント(中断イベント、再開イベント、終了イベントなど)に応答する必要があるので、エンティティXはメッセージポンプスレッド(以下で説明される)においてgameAppExitEventを待つべきでない。
Downloadクラスは、アセンブリをダウンロードおよび実行するためのExecuteAssemblyと呼ばれるpublicなメソッドを含む。ExecuteAssemblyメソッドは、アセンブリをダウンロードし、ロードし、実行するための新しいアプリケーションスレッドを開始することになる。(代替として、または追加として、Downloadオブジェクトは、アセンブリのバイト配列を返すことになるGetFileと呼ばれるメソッドをサポートすることができる。アプリケーションは、GetFileメソッドを使用してアセンブリのデータまたはファイルのバイトのブロックを読むことができる。)アセンブリがダウンロードされ、ロードされた後で、アプリケーションマネージャはリフレクション使用して、TVLiteApplicationBaseから派生したクラスを探索することによってアプリケーションのクラスを見つけることができる。
次に、アプリケーションマネージャ310は、TVLiteApplicationBaseのインスタンスをインスタンス化し、アプリケーションを起動するコマンド/URLを用いてInitializeメソッドを呼び出す。したがって、Initializeメソッドは、マネージアプリケーションに対する入り口を構成する。
アプリケーションは、Initializeメソッドが呼び出されるときにそのアプリケーションの主UIpaneを作成する。アプリケーションは、TVLiteApplicationBaseにおいて提供されるRegisterUIpane機能(以下で検討される)を使用して追加的な最も高いレベルのUIpaneを登録することもできる。
B.4.2.実行およびメモリ管理動作
アプリケーションは、そのアプリケーションが全ての初期化作業を終えるときにRunメソッドを呼び出す。これは、アプリケーションがイベント(例えば、フォーカスイベント、キーイベント、中断イベント、再開イベント、終了イベントなど)を受け取ることを可能にするメッセージポンプを開始する。Runメソッドはブロッキング呼び出しであり、アプリケーションがそのアプリケーション上でExitを呼び出すまでリターンしない。アプリケーションが終了されるとき、アプリケーションはアプリケーションのベースクラスTVLiteApplicationBaseにおいて提供されるExitメソッドを呼び出す。換言すれば、Runメソッドは、現在のスレッド上でメッセージループを開始し、指定されたUIpaneを可視状態にする。アプリケーションは、メッセージポンプを終了し、RunメソッドからリターンするためにExitメソッドを呼び出す。
アプリケーションを実行している間、ガベージコレクタは、マネージオブジェクトに割り当てられたメモリを、そのオブジェクトがもはや使用されていない場合に自動的に解放する。しかし、ガベージコレクションがいつ行われるのかは予測できない。TVLiteApplicationBaseは、ネイティブメモリのハンドル、オープンファイル、およびオープンストリームに直接アクセスできないマネージアプリケーションとして実装されることができる。したがって、TVLiteApplicationBaseのメモリ管理は、ガベージコレクタによって適切に処理されることができる。
アプリケーションマネージャ310は、アプリケーションスレッドにシステムがメモリ不足になりつつあることを知らせるためのPurgeメソッドを呼び出すことができる。アプリケーションは、Purgeメソッドが呼び出されたとき、できるだけ多くのマネージオブジェクトを(オブジェクトに対する参照を削除することによって)解放すべきである。システムがまだ最小メモリ閾値未満で実行されている場合、アプリケーションマネージャ310は、利用可能なメモリの量を最小メモリ閾値を超えるようにさせるためにアプリケーションを終了させることができる。すなわち、アプリケーションマネージャ310は、先入れ先出しアルゴリズムに基づいて非アクティブなアプリケーションを終了させることができる。アプリケーションマネージャ310は、設定ファイルのKeepAliveセクションに列挙されたアプリケーションは終了させない。
B.4.3.中断および再開動作
アプリケーションマネージャ310は、アプリケーションスレッドが一時停止されようとしていることを示すためのアプリケーションのPauseメソッドを呼び出す。例えば、アプリケーションマネージャ310は、別のアプリケーションがアクティブ化されるときに現在実行中のアプリケーションを中断するためにPauseメソッドを自動的に呼び出すことができ、その新しいアプリケーションのUIpaneは現在のアプリケーションのUIpaneと重なる。Pauseメソッドは、アプリケーションがスレッドの中断の準備をする機会を提供する。アプリケーションは、スレッドが再開されるまでいかなるメッセージも受け取らない。アプリケーションマネージャ310は、所定の時間(例えば0.5秒)以内に中断しないアプリケーションを終了させることができる。
アプリケーションマネージャは、アプリケーションスレッドが再開されたことを示すためのアプリケーションのResumeメソッドを呼び出すことができる。これは、アプリケーションがそのアプリケーション自体をスレッドの中断前に存在した状態に回復する機会を提供する。次いで、アプリケーションマネージャ310は、スレッドのメッセージポンプを再スタートすることができる。アプリケーションマネージャ310は、所定の時間(例えば0.5秒)以内に再開しないアプリケーションを終了させることができる。
B.4.4.アンロード/終了動作
アプリケーションマネージャ310は、Exitメソッドの実装をその基底実装で提供する。すなわち、Exitメソッドは、アプリケーションマネージャ310に現在のアプリケーションを終了させるように知らせる。アプリケーションマネージャ310は、終了されたアプリケーションを削除し、前のアクティブなアプリケーションに制御を移す。
アプリケーションマネージャ310は、アプリケーションスレッドが終了すべきであることを示すためのアプリケーションのTerminateメソッドを呼び出すこともできる。これは、アプリケーションが適切に終了する機会を提供する。アプリケーションマネージャ310は、所定の時間の後に適切に終了しないアプリケーションを終了させることができる。
B.4.5.その他の動作
セキュリティの話題に関して、アプリケーションマネージャ310は、アプリケーションのリクエストを設定ファイルにおいて指定された規則に対して検証する。例えば、アプリケーションマネージャ310は、アプリケーションが別のアプリケーションを起動するパーミッション、ネットワークリソースにアクセスするパーミッションなどを有するかどうかをチェックすることができる。アプリケーションは、そのアプリケーションが使用するためのパーミッションを持っていない機能を要求する場合、例外を受け取ることになる。
登録の話題に関して、アプリケーションは、UIpaneイベントを受け取るためにアプリケーションの最も高いレベルのUIpaneをアプリケーションマネージャ310に登録することができる。より具体的には、Runメソッドが、そのメソッドのUIpaneパラメータに指定されたUIpaneを自動的に登録する。
B.4.6.要約(図5)
図5は、上で確認された概念の要約を提供する。この図において、アプリケーションランチャ502は、ダウンロードエンティティ504と連絡を取ることによってアプリケーションの起動を開始する。ダウンロードエンティティ504は、サンドボックスパーミッションエンティティ506にアクセスすることによって、アプリケーションをダウンロードおよび実行するパーミッションをそれが持っているかどうかを判定する。持っている場合、ダウンロードエンティティ504はタスクマネージャエンティティ508にタスクを追加してアプリケーションを実行する。アプリケーションを実行することは、当該アプリケーション専用のアプリケーションスレッド510を作成する。
アプリケーションマネージャ310およびウィンドウマネージャ312は、呼び出されたアプリケーションの実行を制御する。すなわち、これらのマネージャ(310、312)は、メッセージキューエンティティ512にキューアイテムを追加し、その結果アプリケーションエンティティ514によるこれらのアイテムの実行をもたらす。
B.5.UIpaneマネージャ
UIpaneマネージャ312は、十分に管理されたUIpane管理の実装を提供する。UIpaneマネージャ312は、UIpane管理、イベントのルーティング、およびフォーカス管理に関する役割を担う。このサブセクションは、winpageマネージャ312の動作に関する詳細を提供する。
B.5.1.UIpane管理動作
UIpaneは、それらのUIpaneの種類に基づいた所定の優先順位で表示される。サポートされるUIpaneの種類は、Notification(通知)、Floating(フローティング)(AlwaysOnTop属性が設定されたNotification)、およびNormal(標準)を含む。Floating UIpaneは、常に最も上のUIpaneとなる。例えば、ディスプレイが、異なるアプリケーションに対応する(または同じアプリケーションに対応する)複数のUIpaneを同時に表示すると仮定する。最も高い優先レベルを有するUIpaneがフォーカスを受け取ることになり、このことはユーザの入力作業がこのUIpaneを対象とすることになることを意味する。しかし、1つの例示的な実装によれば、UIpaneはディスプレイ上で重なることが許されない。
UIpaneマネージャ312は、アプリケーションを中断、再開、および終了させるためにアプリケーションマネージャ310と緊密に連動する。例えば、UIpaneマネージャ312は、(概して、上位に上がろうとしている別のアプリケーションのUIpaneが現在のUIpaneを妨げるために)現在のアプリケーションが一時停止されることを必要とするときに、現在のアプリケーションのメッセージポンプに中断イベントを送信するようにアプリケーションマネージャ310に要求する。このことは、現在のアプリケーションに、そのアプリケーションが一時停止状態になる前に、要求された動作を実行する機会を与えることになる。
より具体的には、アプリケーションは、そのアプリケーションがフォーカスを受け取るときおよび失うときに、アクティブ化イベントおよび非アクティブ化イベントをそれぞれ受け取る。例えば、実行中のアプリケーションの上に通知が現れる場合、アプリケーションは非アクティブ化イベント(それに中断イベントが続く)を受け取ることになる。通知が消されるとき、アプリケーションは(アプリケーションが再開イベントを送信された後で)アクティブ化イベント受け取ることになる。
B.5.2.イベントルーティング動作
UIpaneマネージャは、全てのイベントをアプリケーションスレッドのメッセージポンプにディスパッチする。より具体的には、ユーザ入力イベントは、当該イベントが処理されるか、またはUIpane包含階層が終了する(すなわち、イベントが、当該イベントを消費せず、親を持たないUIpaneに達するとき)まで、UIpane包含階層を「泡のように上がる」。
UIpaneが中断されなかった場合に限り、ペイントイベントが包含階層の最も高いレベルのUIpaneにディスパッチされる。最も高いレベルのUIpaneは、ペイントイベントをそのUIpaneの子にディスパッチする役割を負う。例えば、UIpaneがそのUIpaneの子としていくつかのボタンを有する場合、UIpaneはペイントイベントを受け取ることになり、UIpaneはボタン上でペイントを引き起こす役割を負う。
B.5.3.UIpaneフォーカスおよびナビゲーション動作
1つの例示的な実装によれば、子UIpaneの間のナビゲーションは、(例えば、リモートコントローラ116によって提供される)方向リモートキーを用いて達成される。例えば、下キーが押される場合、アクティブな子UIpaneの下方の最も近い子がフォーカスを受け取ることになる。方向キーイベントが処理されない場合、親UIpaneはそのUIpaneの兄弟のうちの1つにフォーカスを渡すことを試みる。
より具体的には、ナビゲーションは、様々なUIpaneの位置で生成される「ホットポイント(hot points)」によって決定される。ホットポイントの位置は、どの矢印キーが選択されるかに依存する。例えば、図6において、現在、コントロールAがフォーカスを持っていると仮定する。下キーが選択される場合、現在のフォーカスを持っているコントロールのホットポイントは、コントロールAの下端の中央に対応することになる。次いで、このホットポイントは、周辺のコントロールのそれぞれの上端に投影される。続いて、各ホットポイントの対の間の距離が測定される。最も短い正の距離を有する対が、フォーカスを受け取るべき次のコントロールを決定する。この場合、コントロールAとコントロールBの間のホットポイントの距離(線AB)が、コントロールAとコントロールCの間のホットポイントの距離(AC)よりも短く、その結果コントロールBが次にフォーカスを受け取ることになる。(Dは完全にAよりも上に置かれているのでDは考慮されない)。
2つのコントロールが重なり合っている場合は特別なケースが発生する。例えば、コントロールDの上端がコントロールAの上にあるようにコントロールDがコントロールAと重なる場合、コントロールDは下キーの押下時に考慮されることになる。したがって、この場合、線ADが線ABおよび線ACの両方よりも短い場合はコントロールDがフォーカスを受け取ることになる。
B.6.グラフィックス機能
グラフィックスに関連する機能の主要な目的は、(リソースが制限された環境の制約を考慮して)できるだけ経済的におよび効果的に開発者の要求を満たすAPIの組を提供することである。
1つの全体的な特徴によれば、上述の目的は、一部分において、(デスクトップ環境において提供される「完全な」APIと比較して)簡素化されたAPIの組を使用することによって達成される。例えば、線および楕円描画アルゴリズムなどの簡素化されたグラフィックスAPIが提供される。また、APIの組は、将来の拡張を可能にするように柔軟であるべきである。
別の特徴によれば、グラフィックス機能は、セットトップボックスのハードウェアと直接インタラクトし、可能な限りハードウェアの処理能力を活用する。例えば、このシステムにおいては、描画プリミティブはハードウェアに直接書き込むことができる。対称的に、従来のグラフィックスAPIは、「重い」デスクトップAPIの裏で過度に抽象化されている(したがって、リソースが制限されたセットトップボックス環境において適用されるときに遅くなる)。
より具体的には、グラフィックス機能は、可能ならばセットトップボックス102のハードウェアAPIに対して呼び出しが行われるようにコードパスを事前設定することができる。一例として、DCT2000セットトップボックスのハードウェアは、非常に高速に動作するブロックコピー機能を提供する。しかし、この機能は、コピー元ポインタおよびコピー先ポインタがワード整列されていることを要求する。グラフィックス機能は、この機能の要件に対応し、したがってこの機能を呼び出す。別の例として、M68000チップはDBRAと呼ばれる特殊機能を有する。グラフィックス機能は、このチップの要件(例えばアラインメント)に対応することができ、したがってこのチップを直接呼び出して非常に高速なメモリ転送を提供することができる。
別の例として、グラフィックス機能は、セットトップボックス102のライン制御レジスタ(LCR)210を利用して効果的なやり方で様々な特殊効果を提供することもできる。例えば、スクリーンの解像度が480ラインであると仮定する。開発者は、スクリーン上のデータのそれぞれのラインを指す、LCR210内の480個の記憶域を割り当てることができる。すなわち、これは、オンスクリーンディスプレイ全体に対してメモリビットマップバッファを割り当てることによって達成されることができる。通常の状態において、各LCR記憶域は、ビットマップの各ラインの始まりを指す。特殊効果は、様々なアルゴリズムに従ってLCR210を使用してラインの順番を操作することによって達成されることができる。簡単な事例を挙げると、LCR[10]がビットマップ内のライン9を指し、LCR[9]がビットマップ内のライン10を指すとした場合、セットトップボックス102は入れ換えた順番でこれらの2つのラインを表示する。
より具体的には、明細書において説明されるセットトップボックスシステムの例示的な独特なグラフィックス機能は、遷移効果、カスタムパレットのサポート、bltレンダリング機能、True Typeフォントのレンダリングなどを含む。これらの機能は、以下でより詳細に説明される。付録、セクションDは、これらの機能に関するさらなる詳細を提供する。
B.6.1.遷移効果
セットトップボックス102は、あるグラフィカルな表示を別のグラフィカルな表示に切り換えるときに効果を発するいくつかの遷移効果を提供する。以下の機能は、例示的な遷移効果を提供する。また、これらの機能は、上述のやり方でLCR210を直接操作することによって実行されることができる。
Scrollメソッドは、メソッドで指定される「offset」パラメータが正の数であればスクリーンを上にスクロールさせ、「offset」が負の数であれば下にスクロールさせる。この効果は、メソッドにおいて指定される「upBound」および「lowBound」パラメータによって定義される境界の中で提供される。
Decimateメソッドはデシメーション効果をシミュレートする。より具体的には、このメソッドは、効果のレベルを指示するための入力としてパーセンテージの数値を取る。デシメーション効果は、メソッドにおいて指定される「upBound」および「lowBound」パラメータの間で提供される。
RasterFadeメソッドは、ラスタフェード(raster fade)効果をシミュレートする。このメソッドは、効果のレベルを指示するための入力としてパーセンテージの数値を取る。デシメーション効果は、メソッドにおいて指定される「upBound」および「lowBound」パラメータの間で提供される。
Exposeメソッドは、UIpaneで指定された「upBound」および「lowBound」の中心において、メソッドで指定された「linesToExpose」パラメータによって指定されたいくつかのラインを露出する。
B.6.2.パレットおよび解像度効果
セットトップボックスシステムは、開発者が解像度およびカラーパレットを動的に変更することを可能にする。これは、より多様で、したがってより魅力的なユーザの体験をもたらすことができる。例えば、開発者は、第1のアプリケーションから第2のアプリケーションへの切換が場合によって(第2アプリケーションに対応する)カラーパレットおよび解像度を変更することをシステムに促すことになるようにシステムを設定することができる。
上述の効果を達成するために、システムはSetUserPaletteメソッドを提供する。このメソッドは、ユーザにグラフィックスオブジェクトに関連付けられるべきカスタムパレットを指定させる。
加えて、RestoreDefaultPaletteメソッドがデフォルトのオンスクリーンカラーパレットを復元する。
SetOSDResolutionメソッドは、呼び出し元がオンスクリーンディスプレイの解像度を設定することを可能にする。
RestoreDefaultOSDResolutionメソッドは、デフォルトのオンスクリーンディスプレイの解像度を復元する。
B.6.3.Blt効果
BitBltメソッドは、あるグラフィックスオブジェクトからの内容を別のグラフィックスオブジェクトにブロック転送する。この機能を用いて、アプリケーション開発者(特にゲームプログラマ)は、グラフィックスコンテンツの一部分を別のグラフィックスコンテンツに複製することができる。
B.6.4.フォントレンダリング機能
全体的なフォント処理機能として、セットトップボックスシステムは、フォントから不要な情報を取り除いてセットトップボックス環境においてフォントのより効率的な処理を提供することができる。すなわち、FontOptimizerツールが、コードセットファイル外の文字を除外し、文字を再マッピングし、ファイルサイズを最小化するためにグリフ情報を取り除くことによってフォントファイルを最適化する。したがって、この機能は、リソースが制限された環境において魅力的なアプリケーションを実行するという全体の目的に寄与する。
SetAntiAliasBackgroudColorメソッドは、アンチエイリアシングに使用されるべき色を設定する。より具体的には、この呼び出しは、アンチエイリアシングに用いる中間色のテーブルを構築するために使用される色を定める。
SetFontメソッドは、現在のフォントを文字列描画操作に使用されるように設定する。
DrawStringメソッドは、そのメソッドの様々なパラメータ(例えば、追加的な情報を得るために付録を参照されたい)によって管理される特定のやり方で、指定された色で文字列を描画する。
BreakStringメソッドは、現在設定されているフォントを使用して文字列を単語に分解するように試みる。
GetFontMetricsメソッドは、現在指定されているフォントの属性を取り出してテキストの正確なレイアウトを提供する。
C.例示的な動作方法
図7は、セットトップボックスシステムの動作をフローチャート形式で示す。検討を容易にするために、特定の動作が、特定の順序で実行される別個のステップを構成するものとして説明される。そのような実装は例示的であって限定的ではない。本明細書において説明される特定のステップは互いにグループ化され、単一の操作で実行されることができ、特定のステップは本開示において説明される例で使用される順序と異なる順序で実行されてもよい。このフローチャートで説明される機能は前のセクションで既に説明されたので、セクションCは主にそれらの機能の簡単なおさらいとして役立つことになる。
セット702において、セットトップボックス102は、上述のInitializeメソッドを使用してアプリケーションを起動およびロードする。これは、セットトップボックス102にアプリケーションのためのメッセージスレッドを確立するように促す。
ステップ704において、セットトップボックス102は、アプリケーションの実行中に必要に応じてアプリケーションを中断し、そして再開する。例えば、セットトップボックス102は、別のアプリケーションが現在のアプリケーションの上にくるUIpaneを生成する場合に現在のアプリケーションを中断することができる。セットトップボックスは、非アクティブなオブジェクトを取り除くことによって上述のやり方でプログラムの実行中にメモリ管理を実行する。
ステップ706において、セットトップボックス102はアプリケーションを抜ける/終了する。
D.付録
以下のセクションは、前のセクションで確認された種々の機能のより完全な一覧を提供する。
D.1.IUIpaneインターフェース
シェルは、全てのUIpaneの根本として働く基底IUIpaneインターフェースを定義する。このインターフェースは、UIpaneマネージャ312がそれぞれのUIpaneの実装の詳細を知ることなしに全てのUIpaneを制御することを可能にする。IUIpaneインターフェースは正式にはpublic interface IUIpaneと表されることができる。
IUIpaneインターフェースは、以下の例示的で非網羅的な列挙されたインターフェース機能を提供することができる。
・Graphics CreateGraphics()メソッドはUIpaneのためのグラフィックスオブジェクトを取得する。
・void Hide()メソッドは、UIpaneを不可視状態にする。
・void NotifyOnClose()メソッドは、UIpaneにそのUIpaneが閉じられたことを知らせるためにシェルによって呼び出される。
・void NotifyOnFocus(bool focus)は、UIpaneにそのUIpaneがフォーカスを取得したか、または失ったことを知らせるためにシェルによって呼び出される。パラメータ「focus」は、UIpaneがフォーカスを取得したのか、または失ったのかを指示する値である。
・void NotifyOnKey(int keyCode,ref bool handled)メソッドは、現在アクティブなUIpaneにユーザ入力イベントを通知するためにシェルによって呼び出される。そのとき、UIpaneはそのUIpaneの現在アクティブな子に当該イベントを適切にルーティングすることになる。
・void NotifyOnPaint(Rectangle rectangle)メソッドは、現在アクティブなUIpaneにペイントイベントを通知するためにシェルによって呼び出される。このメソッドにおいて、パラメータ「rectangle」はアクティブなUIpaneの「汚れた」領域を指す。全てのそのUIpaneの子にペイントの通知を送ることはアクティブな(親)UIpaneの役割である。
・void SetPaintThrottling(bool on)メソッドは、ペイントの抑制をオンにするか、またはオフにする。
・void Show()メソッドは、UIpaneを可視状態にする。
D.2.ABC_Co.TV.Lite.UIpanes
D.2.1.ABC_Co.TV.Lite.UIpanes名前空間の概要
概要として、ABC_Co.TV.Lite.UIpanes名前空間は、低価格のセットトップボックス上での実行のために最適化された「軽いTVアプリケーション」を作成するためのクラスを含む。前のセクションで説明されたように、セットトップボックスはインタープリタベースのCLRシステムを実行する。
この名前空間内のクラスは、以下のカテゴリにグループ化されることができる。
・UIpaneBaseクラスのカテゴリは、TVアプリケーション上に表示される全てのUIpaneコントロールのための基本機能を提供する。ABC_Co.TV.Lite.UIpanes名前空間内のほとんどのクラスは、UIpaneBaseクラスから派生する。UIpaneBaseクラスはコンテナでもあり、このことはUIpaneBaseクラスが子UIpaneを含むことができることを意味する。
・UIpane Formsクラスのカテゴリは、最も高いレベルのコンテナUIpaneの作成を可能にする。
・UIpane Controlsクラスのカテゴリは、ユーザインターフェースの作成を可能にする。例えば、ButtonクラスはUIpaneのコントロールである。
上述の要約で述べられたクラスのカテゴリに対するサポートを提供する、ABC_Co.TV.Lite.UIpanes名前空間内のいくつかのクラスがある。図4は、これらのクラスの例示的な階層構造を示す。
概要として、クラスに関して、
・ButtonクラスはTVのボタンコントロールを表す。
・Controlクラスは、コントロールのためのベースクラスを定義する。コントロールオブジェクトは、具体的な機能を実行する視覚的な表示を持ったオブジェクトを定義する。
・Formクラスは、親のない最も高いレベルのコンテナUIpaneのためのベースクラスを定義する。このクラス(フォームオブジェクト)によって生成されたオブジェクトは、何らかの視覚的な表示を持つか、または視覚的な表示を持たず、子UIpaneを含むことができる。
・Transitionクラスは、フォームオブジェクトに遷移を適用するためのメソッドを定義する。
・UIpaneBaseクラスは、UIpane(このクラスは視覚的な表示を有するオブジェクト、またはその他のUIpaneBaseオブジェクトを含むオブジェクトを定義する)のためのベースクラスを定義する抽象クラスである。
デリゲートに関して、
・UIpaneEventHandlerクラスは、任意のUIpaneイベントを処理することになるメソッドを表す。
・KeyEventHandlerクラスは、キーイベントを処理することになるメソッドを表す。
・TransitionEventHandlerクラスは、遷移イベントを処理することになるメソッドを表す。
列挙型に関して、
・Keyクラスは、TVアプリケーション内で使用される全ての可能なキーコードを表す。
・ButtonStyleクラスは、全ての可能なボタンスタイルを表す。
以下のサブセクションは、ABC_Co.TV.Lite.UIpanes名前空間の上で確認された特徴のそれぞれに関する追加的な詳細を提供する。
D.2.2.ABC_Co.TV.Lite.UIpanes.UIpaneBase
上で要約されたように、ABC_Co.TV.Lite.UIpanes.UIpaneBaseクラス(UIpaneBaseクラス)は、UIpaneのための抽象ベースクラスを指す(ここでUIpaneは視覚的な表示を有するオブジェクト、またはその他のUIpaneBaseオブジェクトを含むオブジェクトを定義する)。すなわち、UIpaneBaseクラスは、情報をユーザに対して表示するクラスによって必要とされる非常に基本的な機能を実装する。例えば、UIpaneBaseクラスは、UIpaneの境界を定義し、子UIpaneを管理し、キーイベントを介してユーザ入力を処理する。UIpaneBaseクラスは正式にはpublic abstract class UIpaneBase:IUIpaneと表されることができる。
レイアウトの話題に関して、UIpaneBaseクラスはコンテナであり、このことはUIpaneBaseクラスが任意の最も高いレベルではないUIpaneを保持することができることを意味する。UIpaneは、そのUIpaneBaseクラスの子のコレクション上でAdd、Insert、Remove、およびRemoveAtを呼び出すことによって追加されることができ、コンテナから削除されることができる。UIpaneの作成中にUIpaneの上端、左端、幅、および高さの値が設定される。全ての子は親UIpaneの境界の中になければならない。ユーザの入力キーイベントは、まず、フォーカスされているUIpaneに向かうことになる。UIpaneがキーイベントを処理しない場合、当該イベントはそのUIpaneの親UIpaneに渡されることになる。
UIpaneBaseクラスによって可能にされるナビゲーション動作は上で(例えば、サブセクションB.5.2において)説明された。
ペインティングの話題に関して、UIpaneBaseクラスはペインティングを実装しない。すなわち、1つの例示的な実装においては、開発者が背景を含む全てのペインティングに関する責任を負う。開発者は、ペインティングを実行するためのOnPaintメソッドをオーバーライドすることができる。しかし、UIpaneBaseは、そのUIpaneBaseの子のコレクションのうちの任意の子コントロールをペイントすることになる。
UIpaneBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなコンストラクタを提供することができる。
・public UIpaneBase(int left,int top,int width,int height,bool topLevel)コンストラクタは、特定の位置およびサイズを用いてUIpaneBaseクラスの新しいインスタンスを初期化する。UIpaneがスクリーンの範囲の外にある場合、例外が投げられる。このコンストラクタにおいて、パラメータ「left」は、UIpaneの左端と、そのUIpaneのコンテナのクライアント領域の左端との間の距離を画素数で示す。最小は0であり、最大はOSDの幅に対応する。値がこれらの範囲の外にある場合、例外が投げられる。「top」パラメータは、UIpaneの下端と、そのUIpaneのコンテナのクライアント領域の上端との間の距離を画素数で示す。最小は0であり、最大はOSDの高さに対応する。値がこれらの範囲の外にある場合、例外が投げられる。「width」パラメータは、UIpaneの幅を画素数で示す。最小は1であり、最大はOSDの幅からleftパラメータを引いた値に対応する。値がこれらの範囲の外にある場合、例外が投げられる。「height」パラメータは、UIpaneの高さを画素数で示す。最小は1であり、最大はOSDの高さからtopパラメータを引いた値に対応する。値がこれらの範囲の外にある場合、例外が投げられる。最後に、「topLevel」パラメータは、オブジェクトが最も高いレベルのUIpaneであるかどうかを示す。
UIpaneBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなプロパティを提供することができる。
・public virtual byte BackColorプロパティは、UIpaneに対する背景色のインデックスを取得または設定する。例示的なデフォルトは224である。
・public virtual bool CanFocusプロパティは、UIpaneがフォーカスを受け取ることができるかどうかを示す値を取得する。
・public ArrayList Childrenプロパティは、UIpaneに含まれるUIpaneのコレクションを取得する。
・public bool Enabledプロパティは、UIpaneがユーザのインタラクションに応答可能かどうかを示す値を取得または設定する。デフォルトはtrueである。このプロパティは、UIpaneが最も高いレベルのUIpaneでなく、最も高いレベルのUIpaneである親または親の親を持たない場合にfalseを返す。
・public bool Floatingプロパティは、最も高いレベルのUIpaneがフローティングUIpaneであるかどうかを示す値を取得または設定する。フローティングUIpaneは、キーをその他の最も高いレベルのUIpaneに渡すことになる最も高いレベルのUIpaneである。最も高いレベルでないUIpaneはフローティングUIpaneになることはできない。最も高いレベルでないUIpaneに対するFloatingプロパティの設定の試みは無視されることになる。
・public bool Focusedプロパティは、UIpaneが入力フォーカスを有するかどうかを示す値を取得する。
・public virtual byte ForeColorプロパティは、UIpaneBaseに対する前景色のインデックスを取得または設定する。例示的なデフォルトは227である。
・public int Heightプロパティは、UIpaneの高さを取得する。
・public int Leftプロパティは、UIpaneの左端と、そのUIpaneのコンテナのクライアント領域の左端との間の距離を画素数で取得する。
・public virtual IUIpane Parentプロパティは、UIpaneの親コンテナを取得および設定する。UIpaneが親の範囲の外にある場合、例外が投げられる。最も高いレベルのUIpaneは親を持つことができない。
・public int Topプロパティは、UIpaneの下端と、そのUIpaneのコンテナのクライアント領域の上端との間の距離を画素数で取得する。
・public bool Visibleプロパティは、UIpaneが表示されるかどうかを示す値を取得する。デフォルトは最も高いレベルのUIpaneに対してfalseであり、全てのその他のUIpaneに対してtrueである。このプロパティは、UIpaneが最も高いレベルでなく、最も高いレベルのUIpaneである親または親の親を持たない場合にfalseを返す。
・public int Widthプロパティは、UIpaneの幅を取得する。
UIpaneBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public Graphics CreateGraphics()メソッドは、UIpaneのためのグラフィックスオブジェクトを作成する。CreateGraphics()メソッドは、UIpaneに対するグラフィックスオブジェクトを返す。
・public bool Focus()メソッドは、UIpaneに入力フォーカスを設定する。デフォルトでは、コントロールはフォーカスを持たない。UIpaneにフォーカスを設定することは、前にフォーカスされていた任意のUIpaneからフォーカスを外す。フォーカスを設定することは非同期的であり、したがってUIpaneは実際にはすぐにフォーカスを取得するわけではない。このメソッドは、入力フォーカスのリクエストが成功した場合「true」を返し、そうでなければ「false」を返す。trueを返すことは、UIpaneがUIpaneマネージャ312にそのUIpaneがフォーカスを取得することを望んでいることを知らせることができることを意味することに留意されたい。trueを返すことはUIpaneが既にフォーカスを取得したことを意味せず、フォーカスを提供することはUIpaneマネージャ312の役割である。
・public void Hide()メソッドは、UIpaneをユーザから隠す。
・public void Invalidate(Rectangle region)メソッドは、UIpaneの指定された領域を無効化し(すなわち、このメソッドは、次のペイント操作時に再ペイントされることになる領域であるUIpaneの更新領域に領域を追加する)、ペイントメッセージが当該UIpaneに送信されるようにする。また、このメソッドはUIpaneに割り当てられた子UIpaneも無効化する。このメソッドにおいて、「region」パラメータは無効化されるべき領域を示す。regionパラメータがnullの場合は、UIpane全体が無効化される。
・public void Refresh()メソッドは、強制的にUIpaneにそのUIpaneのクライアント領域を無効化させ、そのUIpane自体と全ての子UIpaneとを直ちに再描画させる。
・public void Show()メソッドは、UIpaneをユーザに対して表示する。
・public void SuspendLayout(bool suspend)メソッドは、UIpaneに対するレイアウトロジックを一時的に停止する、または再開する。このメソッドにおいて、「suspend」パラメータは、レイアウトが一時停止されるべきであるかどうかを指示する。
UIpaneBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなイベントを提供することができる。
・public event UIpaneEventHandler EnabledChangedは、Enabledプロパティの値が変更されたときに発生する。
・public event UIpaneEventHandler FocusChangedは、UIpaneの入力フォーカスが変わるときに発生する。
・public event KeyEventHandler KeyPressは、UIpaneがフォーカスを有する間にキーが押されたときに発生する。
・public event UIpaneEventHandler VisibilityChangedは、UIpaneの可視性が変わったときに発生する。
UIpaneBaseクラスは、以下の例示的で非網羅的な列挙されたprotectedなメソッドを提供することができる。
・protected virtual void OnEnabledChanged()メソッドは、EnabledChangedイベントを引き起こす。
・protected virtual void OnFocusChanged()メソッドは、FocusChangedイベントを引き起こす。
・protected virtual void OnKeyPress(Keys keyCode,ref bool handled)メソッドは、KeyPressイベントを引き起こす。このメソッドにおいて、「keyCode」パラメータはキーイベントによって使用されるべきキーコードを示す。「handle」パラメータは、キーイベントが処理されかどうかを指示する値を示す。
・protected virtual OnPaint(Graphics graphics,Rectangle clipRectangle)メソッドは、基本的なペイントメソッドを提供する。すなわち、このメソッドは、clipRectangle内の子をペイントする。言い換えると、「clipRectangle」パラメータは、ペイントされるべき領域を示す。clipRectangleがnullの場合は、全てがペイントされる。「graphics」パラメータは、ペインティングを実行するために使用されるグラフィックスを示す。graphicsがnullの場合、例外が投げられる。
・protected virtual OnVisibilityChanged()メソッドは、VisibilityChangedイベントを引き起こす。
D.2.3.ABC_Co.TV.Lite.UIpanes.Form
ABC_Co.TV.Lite.UIpanes.Formクラス(Formクラス)は、上述のUIpaneBaseクラスから派生する。Formクラスは、親のない最も高いレベルのコンテナUIpaneのためのベースクラスを定義する。これらのオブジェクトは、何らかの視覚的な表示を持つか、または視覚的な表示を持たず、子UIpaneを含むことができる。より具体的には、インタープリタベースのCLRのアプリケーションは、主なおよびその他の最も高いレベルのUIpaneに対してフォームを使用することができる。アプリケーションは2つ以上のフォームを含むことができるが、それぞれのフォームはアプリケーションに登録されなければならない。主UIpaneはRunを呼び出すときに自動的に登録されるが、後続の最も高いレベルのUIpane(またはフォーム)は、キーイベントおよびペイントイベントを受け取るために明示的に登録されなければならない。Formクラスは正式にはpublic class Form:UIpaneBaseと表されることができる。
Formクラスは、以下の例示的で非網羅的な列挙されたpublicなコンストラクタを提供することができる。
・public Form()コンストラクタは、デフォルトの設定を用いてFormクラスの新しいインスタンスを初期化する。デフォルトでは、フォームはOSDと同じサイズである。
・public Form(int left,int top,int width,int height)コンストラクタは、特定の位置およびサイズを用いてFormクラスの新しいインスタンスを初期化する。UIpaneがスクリーンの範囲の外にある場合、例外が投げられる。left、top、width、およびheightパラメータは、(UIpaneBaseクラスとの関連で)上で説明された。
Formクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public void Close()メソッドはフォームを閉じる。フォームが閉じられるとき、このオブジェクト内で生成された全てのリソースが閉じられ、フォームが破棄される。
・public bool DoTransition()メソッドは遷移イベントを引き起こす。フォームがいずれかのその他のフォームと重なる場合、遷移イベントが引き起こされることができる。イベントが引き起こされる前に、フォームによって使用される水平の領域にスクリーンが固定される。固定されている間、その他のフォームが生成される、または固定された領域に移動されることはできない。このメソッドはイベントが引き起こされた場合に「true」を返し、そうでない場合に「false」を返す。
Formクラスは、以下の例示的で非網羅的な列挙されたpublicなイベントを提供することができる。
・public event UIpaneEventHandler Closedはフォームが閉じるときに発生する。
・public event TransitionEventHandler TransitionはDoTransition()が呼び出されるときに発生する。
Formクラスは、以下の例示的で非網羅的な列挙されたprotectedなメソッドを提供することができる。
・protected virtual void OnClosed()メソッドは、Closedイベントを引き起こす。
D.2.4.ABC_Co.TV.Lite.UIpanes.Control
ABC_Co.TV.Lite.UIpanes.Controlクラス(Controlクラス)は、UIpaneBaseから派生する。このクラスはコントロールのためのベースクラスを定義する。コントロールは、特定の機能を実行する視覚的な表示を持ったオブジェクトである。例えば、インタープリタベースのCLRのアプリケーションは、それらのアプリケーションのユーザインターフェース要素のためにコントロールを使用する。コントロールの例は、Buttonクラスから派生したオブジェクトである。Controlクラスは正式にはpublic class Control:UIpaneBaseと表されることができる。
Formクラスは、以下の例示的で非網羅的な列挙されたpublicなコンストラクタを提供することができる。
・public Control(int left,int top,int width,int height)コンストラクタは、特定の位置およびサイズを用いてControlクラスの新しいインスタンスを初期化する。コントロールがスクリーンの境界の外にある場合、例外が投げられる。left、top、width、およびheightパラメータは、(UIpaneBaseクラスとの関連で)上で説明された。
Controlクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public void BringToFront()メソッドは、UIpaneをz順の前面に持ってくる。z順は、親の子コレクション内のインデックスによって決定される。より大きなインデックスは、より前面に近く、すなわちインデックスが0である場合、子は後ろに現れる。
・public void SendToBack()メソッドは、UIpaneをz順の後ろに送る。
D.2.5.ABC_Co.TV.Lite.UIpanes.Button
ABC_Co.TV.Lite.UIpanes.Buttonクラス(Buttonクラス)はControlクラスから派生する。ButtonクラスはTVのボタンコントロールを表す。すなわち、ボタンは、当該ボタンが入力フォーカスを有する場合、TVリモコンのOKキーを使用して押されることができる。ボタンは子を含むこともできるが、これらの子はペイントされない。ボタンの外観は、Styleプロパティ(ButtonStyleを参照のこと)を使用して設定されることができる。例えば、左側が丸くなった端部と左揃えにされたテキストとを有するボタンを生成するために、Styleは、ButtonStyle.RoundedLeft|ButtonStyle.LeftAlignedに等しく設定されることができる。Buttonクラスは正式にはpublic class Button:Controlと表されることができる。
Buttonクラスは、以下の例示的で非網羅的な列挙されたpublicなコンストラクタを提供することができる。
・public Button(int left,int top,int width,int height)コンストラクタは、特定の位置、サイズ、またはスタイルを用いてButtonクラスの新しいインスタンスを初期化する。left、top、width、およびheightパラメータは、(UIpaneBaseクラスとの関連で)上で説明された。
Controlクラスは、以下の例示的で非網羅的な列挙されたpublicなプロパティコンストラクタを提供することができる。
・public override byte BackColorプロパティは、UIpaneに対する背景色のインデックスを取得または設定する。例示的なデフォルトは224である。
・public byte BorderColorプロパティは、UIpaneに対する境界の色のインデックスを取得または設定する。例示的なデフォルトは227である。
・public uint BorderWidthプロパティは、ボタンに関する境界の幅を画素数で取得または設定する。例示的なデフォルトは4である。
・public override byte ForeColorプロパティは、UIpaneに対する前景色のインデックスを取得または設定する。例示的なデフォルトは227である。
・public byte SelectedBorderColorプロパティは、ボタンの選択された境界の色を取得または設定する。例示的なデフォルトは211である。
・public ButtonStyle Styleプロパティは、ボタンのスタイルを表す値を取得または設定する。例示的なデフォルト値は0x3であり、全ての丸くなった端部と中央揃えされたテキストとを有する。
・public String Textプロパティは、ボタンのテキストラベルを表す値を取得または設定する。Textがnullに設定される場合、Textは空の文字列に設定される。例示的なデフォルトは空の文字列ある。
Buttonクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public virtual void GetFont(out string name,out int height,out int aspect)は、ボタンテキストのフォントパラメータを取得する。「name」パラメータは、ボタンテキストのフォント名を示す。nameに対する例示的なデフォルトは「Tiresias」である(しかし、言うまでもなくデフォルト名は任意の名前に設定されることができる)。「height」パラメータは、ボタンテキストのフォントの高さを示す。例示的なデフォルト値の高さは20である。「aspect」パラメータは、ボタンテキストのフォントの縦横比を示す。aspectに対する例示的なデフォルト値は100である。
・public virtual void SetFont(string name,int height,int aspect)メソッドは、ボタンテキストのフォントパラメータを設定する。例示的なデフォルト値は上述の通りである。
Buttonクラスは、以下の例示的で非網羅的な列挙されたpublicなイベントを提供することができる。
・public event UIpaneEventHandler Clickはボタンが押されたときに発生する。
Buttonクラスは、以下の例示的で非網羅的な列挙されたprotectedなメソッドを提供することができる。
・protected virtual void OnClick()メソッドは、Clickイベントを引き起こす。
・protected override void OnKeyPress(Keys keyCode,ref bool handled)メソッドは、KeyPressイベントを引き起こす。このメソッドにおいて、「keyCode」パラメータはキーイベントによって使用されるべきキーコードを示す。「handle」パラメータは、キーイベントが処理されたかどうかを指示する値に対する参照を提供する。
・protected override void OnPaint(Graphics graphics,Rectangle clipRectangle)メソッドは、ボタンをペイントし、ペイントイベントを引き起こす。このメソッドにおいて、graphicsパラメータは、ペイントするために使用されるグラフィックスを示す。graphicsがnullの場合、例外が投げられる。「clipRectangle」パラメータは、ペイントされるべき領域を示す。clipRectangleがnullの場合は、全てがペイントされる。
・protected virtual void OnPaintBackground(Graphics graphics)メソッドは、ボタンの背景を描画する。開発者は、それらの開発者独自の背景を描画したいと(例えば、装飾的なビットマップを描画したいと)望む可能性がある。これらの場合、開発者はこのメソッドをオーバーライドすることができる。このメソッドにおいて、「graphics」パラメータは、ペイントするために使用されるグラフィックスを示す。graphicsがnullの場合、例外が投げられる。
・protected override OnVisibilityChanged()メソッドは、VisibilityChangedイベントを引き起こす。
D.2.6.ABC_Co.TV.Lite.UIpanes.UIpaneEventHandler
UIpaneEventHandlerクラスは、UIpaneイベントを処理することになるメソッドを表す。このクラスは正式にはpublic delegate void UIpaneEventHandler(object sender)と表されることができる。このイベントハンドラの宣言は、UIpaneEventHandlerのデリゲートの宣言と同じパラメータを持つべきである。このクラスにおいて、「sender」パラメータは、イベントの発生源を示す。
D.2.7.ABC_Co.TV.Lite.UIpanes.KeyEventHandler
KeyEventHandlerクラスは、キーイベントを処理することになるメソッドを表す。このクラスは正式にはpublic delegate void KeyEventHandler(object sender,Keys keyCode,ref bool handled)と表されることができる。このイベントハンドラの宣言は、KeyEventHandlerのデリゲートの宣言と同じパラメータを持つべきである。「sender」パラメータは、イベントの発生源を示す。「keyCode」パラメータはキーイベントのキーコードを示す。「handled」パラメータは、このキーイベントが既に処理されたかどうかを指示する。
D.2.8.ABC_Co.TV.Lite.UIpanes.Transition
Transitionクラスは、スクリーンに遷移を適用するためのメソッドを提供する。より具体的には、Transitionクラスは、フォームオブジェクトに対して視覚的な遷移を提供するために使用されることができる。遷移オブジェクトを作成するために、初めに、開発者はForm.DoTransition()を呼び出すことによって遷移イベントを引き起こすことができる。このAPIは、指定された水平のスクリーン領域を固定し、遷移イベントを引き起こす。次に、開発者はイベントハンドラを作成して遷移イベントを処理することができる。続いて、このイベントハンドラは、有効な遷移オブジェクトを受け取ることになる。Transitionクラスは正式にはpublic class Transitionと表されることができる。
Figure 2008536384
Transitionクラスは、以下の例示的で非網羅的な列挙されたpublicなプロパティを提供することができる。
・public int Heightプロパティは、Transitionオブジェクトの高さを取得する。
Transitionクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public void Decimate(int numerator,int denominator,int offset,int top,int bottom)メソッドは、遷移オブジェクト上でデシメーション効果をシミュレートする。numeratorおよびdenominatorは、効果を受けることになる上端と下端の間のラインのパーセンテージを表す。すなわち、パーセンテージ=(numerator/denominator)×100である。このメソッドにおいて、パラメータ「numerator」はパーセンテージの値の分子を表す。パラメータ「denominator」はパーセンテージの値の分母を表す。パラメータ「offset」は、デシメーションによって影響を受けないままとなる上端からのライン数を(画素数で)表す。パラメータ「top」は、デシメーションを行うときに考慮されるべき領域の上端を示す。上側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。「bottom」パラメータは、デシメーションを行うときに考慮されるべき領域の下端を示す。下側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。
・public void Expose(int linesToExpose,int top,int bottom)メソッドは、topおよびbottomによって定められた領域の中心部の、linesToExposeによって指定されたいくつかのラインを露出する。すなわち、パラメータ「linesToExpose」は、指定されたtopおよびbottomによって定められる領域の中心部から露出すべきいくつかのラインを示す。パラメータ「top」は、ラインを露出するときに考慮されるべき領域の上端を示す。上側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。パラメータ「bottom」は、ラインを露出するときに考慮されるべき領域の下端を示す。下側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。
・public void RasterFade(int numerator,int denominator,int top,int bottom)メソッドは、遷移オブジェクト上でラスタフェード効果をシミュレートする。numeratorおよびdenominatorは、効果を受けることになる上端と下端の間のラインのパーセンテージを表す。すなわち、パーセンテージ=(numerator/denominator)×100である。パラメータ「numerator」はパーセンテージの値の分子を表す。パラメータ「denominator」はパーセンテージの値の分母を表す。パラメータ「top」は、ラスタフェードされるべき領域の上端を示す。上側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。「bottom」パラメータは、ラスタフェードされるべき領域の下端を示す。下側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。
・public void Scroll(int offset,int top,int bottom)メソッドは、topおよびbottomによって定められる領域を上または下のいずれかにスクロールする。パラメータ「offset」は、スクロールすべきライン数を指示するオフセットを示す。値が0を超える場合、領域は上にスクロールされ、そうでなければ領域は下にスクロールされる。パラメータ「top」は、スクロールされるべき領域の上端を示す。上側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。パラメータ「bottom」は、スクロールされるべき領域の下端を表す。下側の境界は、遷移オブジェクトに関連する。引数が範囲外の場合、例外が投げられる。
D.2.9.ABC_Co.TV.Lite.UIpanes.TransitionEventHandler
TransitionEventHandlerクラスは、遷移イベントを処理することになるメソッドを表す。このイベントハンドラの宣言は、TransitionEventHandlerのデリゲートの宣言と同じパラメータを持つべきである。このクラスは正式にはpublic delegate void TransitionEventHandler(object sender,Transition transition)と表されることができる。パラメータ「sender」は、イベントの発生源を示す。パラメータ「transition」は遷移オブジェクトを示す。
D.2.10.ABC_Co.TV.Lite.UIpanes.ButtonStyle
この列挙型は、利用可能なボタンスタイルを指定する。より具体的には、ButtonStyleはButtonオブジェクトの外観を指定する。ボタンスタイルが0x0に等しい場合、Buttonオブジェクトは湾曲した端部を持たず、左揃えされたテキストを持つ。LeftAlignedもRightAlignedも設定されない場合、テキストは中央揃えにされる。LeftAlignedおよびRightAlignedの両方が設定される場合、LeftAlignedが優先する。RoundedLeftもRoundedRightも設定されない場合、Buttonオブジェクトは湾曲した端部を持たない。ButtonStyle列挙型は正式にはpublic enum ButtonStyleと表されることができる。
この列挙型のその他の例示的なメンバは、以下の表中に明記される。
Figure 2008536384
D.2.12.ABC_Co.TV.Lite.UIpanes.Keys
この列挙型はキーコードを指定する。各キーは、仮想キーコードによって構成されるキー値によって特定される。この列挙型は正式にはpublic enum Keysと表されることができる。
この列挙型の例示的なメンバは、以下の表中に明記される。
Figure 2008536384
Figure 2008536384
Figure 2008536384
D.3.ABC_Co.TV.Lite.Shell.TVLiteApplicationBase
ABC_Co.TV.Lite.Shell名前空間は、とりわけ、軽いTVアプリケーションを作成するための抽象TVLiteApplicationBaseクラスを含む。すなわち、ABC_Co.TV.Lite.Shell.TVLiteApplicationBase(ApplicationBaseクラス)はTVアプリケーションを表す。全てのインタープリタベースのCLRのアプリケーションは、抽象TVLiteApplicationBaseインターフェースから派生し、要求される実装を提供するべきである。ApplicationBaseクラスは正式にはpublic abstract class TVLiteApplicationBaseと表されることができる。
ApplicationBaseクラスは、以下の例示的で非網羅的な列挙されたprotectedなメソッドを提供することができる。
・protected void Run(IUIpane mainUIpane)メソッドは、現在のスレッド上で標準のアプリケーションメッセージループの実行を開始し、指定されたUIpaneを可視状態にする。コンパクトな.NET環境においては、Runメソッドはスタティックメソッドである。しかし、インタープリタベースのCLR環境におけるスタティックメソッドは全ての実行中のスレッドに対してグローバルである。したがって、各アプリケーションがそのアプリケーション独自のメッセージポンプを有することができるように、Runメソッドは抽象ベースクラスTVLiteApplicationBaseにおいてprotectedなメソッドとして実装される。
Runメソッドは自動的にRegisterUIpaneを呼び出して最も高いレベルのUIpaneである主UIpaneを登録する。すなわち、パラメータmainUIpaneは、可視状態にされるUIpaneを示す。
ApplicationBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなプロパティを提供することができる。
・public bool EnhancedGraphicsModeプロパティはアプリケーションが「エンハンストグラフィックスモード(Enhanced Graphics Mode)(EGM)」になることを可能にする。EGMモードは、アプリケーションがユーザパレットを設定すること、OSDの解像度を変更することなどを可能にする。EGMモードは排他的なモードであり、したがって、アプリケーションがEGMモードに入ることを要求する(EnhancedGraphicsModeをtrueに設定する)ときに、全てのその他のマネージアプリケーションは一時停止されることになる。EGMモードに入るアプリケーションは、そのアプリケーションがEGMモードから離れたいと望むときにEnhancedGraphicsModeをfalseに設定すべきであり、その結果、その他の一時停止されたマネージアプリケーションが実行されることができるようになる。アプリケーションマネージャ310は、アプリケーションが終了するとき、アプリケーションを強制的にEGMモードから離れさせる。このプロパティのデフォルト値はfalseに設定される。このプロパティは、Runメソッドに対する呼び出しの前にのみtrueに設定されることができる。メッセージループを開始するためにRunメソッドが呼び出された後でこのプロパティがtrueに設定される場合、例外が投げられることになる。
ApplicationBaseクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public abstract void Initialize(string url)メソッドは、アプリケーションで定義された初期化を実行する。アプリケーションを起動するためのHTTPリクエストのURLが、URLに付加されるパラメータと共に、Initializeに対する呼び出しの中のurlパラメータを介してアプリケーションに渡される。以下は例示的なurlパラメータを与える。
http://appserver/monster.dat?param1=value1&param2=value2
処理されない例外をアプリケーションが生成する場合、アプリケーションは終了されることになる。
・public void Exit()メソッドは、全てのメッセージポンプにそれらのメッセージポンプが終了しなければならないことを知らせ、そしてメッセージが処理された後で全てのアプリケーションのUIpaneを閉じる。概して、Exitメソッドはメッセージループ内から呼び出され、Runメソッドを強制的にリターンさせる。アプリケーションが当該アプリケーションを終了するためにExitメソッドを呼び出したので、アプリケーションマネージャ310はTerminateメソッドを呼び出すことはない。
・public void RegisterUIpane(IUIpane topLevelUIpane)メソッドは、アプリケーションがそのアプリケーションの最も高いレベルのUIpaneをUIpaneマネージャ312に登録することを可能にする。UIpaneマネージャ312は、UIpaneイベントを最も高いレベルのUIpaneにディスパッチすることになる。
・public abstract void Pause()メソッドは、アプリケーションに中断するように要求するためにアプリケーションマネージャ310がアプリケーションに中断イベントを送信することを可能にする。アプリケーションマネージャ310は、アプリケーションに中断するように要求した後でスレッドを一時停止する。アプリケーションスレッドは、中断イベントを処理するときに、処理されない例外をアプリケーションが生成するとしても一時停止されることになる。
・public abstract void Resume()メソッドは、アプリケーションに再開するように要求するためにアプリケーションマネージャ310がアプリケーションに再開イベントを送信することを可能にする。アプリケーションマネージャ310は、アプリケーションに再開するように求める前にアプリケーションスレッドの一時停止を解除する。アプリケーションスレッドは、再開イベントを処理するときに、処理されない例外をアプリケーションが生成するとしても一時停止を解除されることになる。
・public abstract void Terminate()メソッドは、アプリケーションに終了するように要求するためにアプリケーションマネージャ310がアプリケーションに終了イベントを送信することを可能にする。アプリケーションマネージャ310は、アプリケーションスレッドが終了イベントの処理から戻った後にまだ実行されている場合、アプリケーションスレッドを終了する。アプリケーションスレッドは、終了イベントを処理するときに、処理されない例外をアプリケーションが生成するとしても終了されることになる。
・public abstract void ReleaseResource()メソッドは、解放されることができる全てのリソースを解放するようにアプリケーションに要求するためにアプリケーションマネージャ310がアプリケーションにリソース解放イベントを送信することを可能にする。これは、ガベージコレクタのためのオブジェクトに対する参照を削除することを含む。
D.4.ABC_Co.TV.Lite.Drawing名前空間
D.4.1.概要
ABC_Co.TV.Lite.Drawing(Drawing)名前空間は、開発者がインタープリタベースのCLRを使用してセットトップボックスプラットフォーム上でグラフィックスアプリケーションを記述することによって容易に使用されることができるAPIの組を提供する。
D.4.2.ABC_Co.TV.Lite.Drawing.Graphicsクラス
GraphicsクラスはDrawingクラスから派生する。Graphicsクラスは正式にはpublic class Graphicsと表されることができる。
Graphicsクラスは、以下の例示的で非網羅的な列挙されたpublicなコンストラクタを提供することができる。
・public Graphics(int x,int y,int width,int height)コンストラクタは、呼び出し元にスクリーン上の任意の位置にグラフィックスオブジェクトを作成させるメソッドを提供する。グラフィックスオブジェクトはTVディスプレイ領域を出ることはできない。これが発生するとき、このコンストラクタは、作成されているグラフィックスを有効なTVディスプレイ領域に自動的に留める。
・public Graphics(int width,int height)コンストラクタは、メモリバッファ内に画面外のグラフィックスオブジェクトを作成するメソッドを提供する。1つの例示的な実装において、上述の2つのGraphicsコンストラクタは「internal」なメソッドとして提供されることができる。これは、プログラミングモデルが、全てのアプリケーションが(Formクラスから派生された)フォームオブジェクトを有することを要求するためである。グラフィックスオブジェクトは、全ての描画が同期しているようにフォームオブジェクトによって制御される。例えば、このアプリケーションモデルにおいて、ボタンは従来のプログラミング環境における別個のUIpaneオブジェクトではなく、単にフォームの内側の長方形を表す。フォームオブジェクトは、ボタンをペイントする役割を担う。開発者がこのフォームに対してグラフィックスを作成することを許される場合、ボタンと、同じフォーム上に現れるその他の内容とを同期させることが難しくなる。(フォームクラスがメソッドCreateGraphics()を持つことになることを思い出されたい。)
Graphicsクラスは、以下の例示的で非網羅的な列挙されたpublicなプロパティを提供することができる。
・public Rectangle ClipBoundsプロパティは、現在のグラフィックスオブジェクトが機能しているクリッピング領域に対して使用される。
Graphicsクラスは、以下の例示的で非網羅的な列挙されたpublicなメソッドを提供することができる。
・public void Dispose()メソッドは、グラフィックスオブジェクトを破棄する。
・public void SetClip(Rectangle clipRect)メソッドは、現在のグラフィックスオブジェクト内にクリッピング領域を設定する。
・public void ResetClip()メソッドは、グラフィックスオブジェクト内のクリッピング領域をその領域のデフォルトの状態にリセットする。
・public void SetUserPalette(uint[] punPalette,byte startPos)メソッドは、ユーザに現在のグラフィックスオブジェクトに関連付けられるべきカスタムパレットを指定させる。1つの例示的な実装において、ユーザが指定することができるパレットエントリの最大数は253である。ユーザは、カスタムパレットがカラーパレット配列全体の中のどこで始まるべきかを指定することもできる。カスタムパレット中の色の数とカスタムパレットに対する開始位置とを足したものが253を超える場合、INVALID_PARAMETER例外が投げられる。
より具体的には、1つの例示的な実装において、カラーインデックス0はOS304によって受け取られて透明色を指示するので、呼び出し元はカラーインデックスを0にすることが許されない。また、インデックス255は、このプラットフォーム上でサポートされる画像フォーマットが符号化されるときにOSDの透明色のインデックスとして使用される。インデックス254は、RLEのエスケープキーとして使用される。したがって、このインデックスも禁止される。これは、この例示的な実装において、カスタムパレット中の色の数が253を超えることができない理由を説明する。
補足として、1つの例示的な実装において、このメソッドはグラフィックスシステムがEGMモードにあるときにのみ呼び出されることができる。そうでなければ、「INVALID_EGM_STATE」例外が投げられる。さらに、入力パラメータが妥当でないか、または開始位置が範囲外である場合、「INVALID_INPUT_PARAMETER」が投げられる。
・public static void RestoreDefaultPalette()メソッドはデフォルトのOSDカラーパレットを復元する。
・public void SetOSDResolution(OSDResolution resolution)メソッドは、呼び出し元にOSDディスプレイの解像度を設定させる。
1つの例示的な実装において、enum OSDResolutionメソッドは、以下の定義によって管理される。
Figure 2008536384
1つの例示的な実装において、このメソッドはグラフィックスシステムがEGMモードにあるときにのみ呼び出されることができ、そうでない場合は「INVALID_EGM_STATE」例外が投げられる。
・public void RestoreDefaultOSDResolution()メソッドは、デフォルトのOSDディスプレイの解像度を復元する。
・public void SetPixel(int x,int y,byte colorIndex)メソッドは、ユーザにグラフィックスコンテキスト上の指定された位置の色値を設定させる。
・public void GetPixel(int x,int y)メソッドは、ユーザにグラフィックスコンテキスト上の指定された位置のカラーインデックス値を取得させる。
・public void FillRectangle(byte colorIndex,int x,int y,int width,int height)メソッドは、指定された色で矩形を塗り潰す。
・public void DrawRectangle(byte colorIndex,int penWidth,int x,int y,int width,int height)メソッドは、指定された色およびペン幅を用いて矩形を描画する。
・public void FillEllipse(byte colorIndex,int x,int y,int width,int height)メソッドは、指定された色で楕円を塗り潰す。
・public void DrawEllipse(byte colorIndex,int penWidth,int x,int y,int width,int height)メソッドは、指定された色およびペン幅を用いて楕円を描画する。
・public void DrawLine(byte colorIndex,int penWidth,int startX,int startY,int endX,int endY)メソッドは、指定された色およびペン幅を用いて線を描画する。
・public void FillRoundRectangle(byte colorIndex,int x,int y,int width,int height,int radius,RoundingStyle style)メソッドは、指定された色で丸くなった端部を有する矩形を塗り潰す。このメソッドにおいて、「radius」パラメータは、「height」パラメータおよび「width」パラメータのうちの小さい方の半分以下でなければならない。radiusがこの値を超える場合、radiusはその限界値に切り捨てられることになる。「style」パラメータは、RoundingStyle.All、RoundingStyle.UpperLeft、RoundingStyle.UpperRight、RoundingStyle.LowerLeft、RoundingStyle.LowerRight、またはこれらの論理和を取った組合せを含むことができる。
・public void DrawRoundRectangle(byte colorIndex,int lineWidth,int x,int y,int width,int height,int radius,RoundingStyle style)メソッドは、指定された色を用いて指定された太さの角丸長方形の輪郭線を描画する。「radius」パラメータは、「height」パラメータおよび「width」パラメータのうちの小さい方の半分以下でなければならない。radiusがこの値を超える場合、radiusはその限界値に切り捨てられることになる。「style」パラメータは、RoundingStyle.All、RoundingStyle.UpperLeft、RoundingStyle.UpperRight、RoundingStyle.LowerLeft、RoundingStyle.LowerRight、またはこれらの論理和を取った組合せを含むことができる。
・public void BitBlt(int destX,int dextY,int destWidth,int destHeight,Graphics srcGraphics,int srcX,int srcY)メソッドは、あるグラフィックスオブジェクトからの内容を別のグラフィックスオブジェクトにブロック転送する。
・public void DrawImage(byte[] buffer,int x,int y)メソッドは、プラットフォーム上で現在サポートされている特別なフォーマットのビットマップを描画する。ユーザは、通常の画像をこの特別なフォーマットのビットマップに変換するための提供されたツールを使用することができる。画像がこのプラットフォームがサポートするフォーマットのうちの1つではない場合、INVALID_IMAGE_FORMAT例外が投げられる。
Graphicsクラスは、以下の例示的で非網羅的な列挙されたinternalなメソッドを提供することができる。
・internal Graphics()メソッドは、TVディスプレイUIpaneの全体をカバーするグラフィックスオブジェクトを作成するコンストラクタを提供する。
・internal static void EnterEGM()メソッドはアプリケーションが「エンハンストグラフィックスモード」(EGM)になることを可能にする。1つの例示的な実装においては、任意の特定の時点で1つのアプリケーションのみがEGMモードになることが許される。グラフィックスシステムが既にEGMモードであるときに呼び出し元がEGMモードになろうと試みる場合、「INVALID_EGM_STATE」例外が投げられる。EGMモードにおいてのみ、アプリケーションはユーザパレットを設定すること、OSDの解像度を変更することなどを許される。
・internal static void LeaveEGM()メソッドはEGMモードを離れる。このAPIを呼び出す前に、呼び出し元はデフォルトのカラーパレットおよびデフォルトのOSDの解像度を復元する責任を負う。(1)アプリケーションがEGMモードでない場合、(2)アプリケーションがデフォルトのカラーパレットを復元しなかった場合、または(3)アプリケーションがデフォルトのOSDの解像度を復元しなかった場合、このAPIから「INVALID_EGM_STATE」例外が投げられる。
・internal static void Scroll(int offset,int upBound,int lowBound)メソッドは、「オフセット」が正の数であればスクリーンを上にスクロールさせ、「オフセット」が負の数であれば下にスクロールさせる。この効果は、上/下境界の内側でのみ起こる。
・internal static void Decimate(int numerator,int denominator,int offset,int upBound,int lowBound)メソッドは、デシメーション効果をシミュレートする。このメソッドは、効果のレベルを指示するための入力としてパーセンテージの数値を取る。
・internal static void RasterFade(int numerator,int denominator,int upBound,int lowBound)メソッドは、ラスタフェード効果をシミュレートする。このメソッドは、効果のレベルを指示するための入力としてパーセンテージの数値を取る。
・internal static void Expose(int linesToExpose,int upBound,int lowBound)メソッドは、UIpaneで指定された「upBound」および「lowBound」の中心部の、「linesToExpose」によって指定されたいくつかのラインを露出する。
D.4.3.ABC_Co.TV.Liteで使用されるRLE圧縮画像フォーマット
このプラットフォームは様々な画像フォーマットを使用することができる。2種類の独自仕様の画像フォーマットは、未圧縮ビットマップフォーマットと、RLE圧縮ビットマップフォーマットとを含む。これらの独自仕様の画像フォーマットは、コンシューマに提供されることができる画像変換ツールを使用して生成されることができる。
RLE圧縮フォーマットの説明が次に続く。
Figure 2008536384
2つ以上の連続した画素が同じ画素値を持たない場合、このフォーマットは現在の画素を「そのまま」符号化する。同じ値を有する3つ以上の連続する画素が見つかった場合、このフォーマットはこれらの画素をRLE_ESCAPE、画素(インデックス)値、および個数であるRLE系列として符号化する。
D.5.フォントメソッド
以下のサブセクションはフォントのレンダリングを処理するための機能を説明する。
D.5.1.フォントのインストールおよびアンインストール
フォントの有効期間管理は、TVLiteApplicationBaseオブジェクトで処理される。フォントをインストールし、任意選択でアンインストールするための機能は以下を含む。
・void TVLiteApplicationBase.InstallFont(string name,byte[] fontData)メソッドは新しいフォントをインストールする。フォントは、(デスクトップ環境におけるそのようなフォントの使用と比較して)不要なヘッダ情報が取り除かれる。フォント名は大文字小文字を区別する。
このメソッドは、(1)同じ名前のフォントが既にインストールされているが、異なるデータを有する場合、(2)提供されたバイトが有効な不要な情報が取り除かれたTrue Typeフォントとして解析できない場合、または(3)その他の典型的なエラー状態が原因で例外を投げる。同一のデータを有するフォントをインストールする2度目の試行がなされる場合は、呼び出しは例外を投げない。すなわち、フォントをインストールするアプリケーションが最初に当該フォントをインストールしたアプリケーションと異なる場合、フォントに対する参照回数がインクリメントされることになる。同じアプリケーションが同じフォントを2度インストールする場合、2度目のインストールの試行は効果を持たない。
InstallFontメソッドは、以下の例示的な例外エラー返り値を提供する。
0−(MAX_FONTS−1)=このフォントに対するスロット数
FONT_DUP_NAME=同じ名前のフォントが既にインストールされているがデータが一致しない
FONT_TABLE_FULL=フォントテーブルが一杯である
FONT_DATA_VALIDATION_ERR=フォントデータの問題のあるロード
その他のアプリケーションはフォントがインストールされている間にこの同じフォントを使用することができるが、それらのアプリケーションが当該フォントをそれらのアプリケーション自体にインストールしていなかった場合、インストールしているアプリケーションが終了するときに当該フォントが消失する可能性がある。したがって、「便乗する」側のアプリケーションが終了する前に「ホスト」アプリケーションが終了しないことを保証できない場合、別のアプリケーションのインストールに便乗することはよくないやり方と考えられる。
・void TVLiteApplicationBase.DeinstallFont(string name)メソッドはフォントをアンインストールする。または、2つ以上のアプリケーションがフォントをインストールした場合には、DeinstallFontメソッドは呼び出し元のアプリケーションに関する参照回数を取り除く。
より具体的には、インストールされたフォントはアプリケーションの存続期間の間存在することになり、アプリケーションが終了するときに(この終了するアプリケーションが当該フォントを使用している最後のアプリケーションである場合は)自動的に削除されることになる。通常は、終了する前にDeinstallFontを呼び出す必要はない。しかし、フォントの一時的な利用のみを行う必要がある場合、開発者はフォントを明示的にアンインストールすることを考慮することができる。
DeinstallFontの呼び出しは、アプリケーションがフォントをインストールしなかったか、または既にフォントがアンインストールされている場合に例外を投げる。
D.5.2.グラフィックスオブジェクトのフォントに関連するメソッド
グラフィックスオブジェクトは、いくつかのその他のフォントに関連するAPI(メソッド)を提供する。例示的なそのようなメソッドは以下を含む。
・void SetAntiAliasBackgroudColor(int backIndex)メソッドは、アンチエイリアシングに使用されるべき色を設定する。より具体的には、この呼び出しは、アンチエイリアシングの目的に用いるべき中間色のテーブルを構築するために使用される色を定める。これはデフォルトのパレットが使用されているときに非常に効果的であり、前景色および背景色は6x6x6カラーキューブ内に入る。カスタムパレットが使用されるとき、または6x6x6空間の外側で色が使用されているとき、カラーテーブルの網羅的な巡回が実行されることになり、巡回はアンチエイリアシングテーブル内の各位置に対する最良の値を発見する。
−1の「backIndex」が指定される場合、アンチエイリアシングは実行されない。使用されている前景色と同一の背景色を設定することは、アンチエイリアシングを使用不可にする効果を有する。
例示的な例外エラーの返り値は以下を含む。
FONT_PARAM_OUT_OF_RANGE=パレットインデックスが範囲外である
FONT_SYSTEM_ERR=システムカラーパレット情報の誤ったフェッチ
・void SetFont(string name,int height,int aspect)メソッドは、現在のフォントを文字列の描画に使用されるように設定する。「aspect」パラメータは30と250の間(境界値を含む)のパーセンテージの値を定義し、ここで30は通常の幅の30%を意味し、25は通常の幅の250%を意味する。「height」パラメータは、4〜250の範囲(境界値を含む)内でフォントの高さを画素数で指定する。フォント名は大文字小文字を区別する。フォントがグリフのみのフォント(CMapテーブルを含まないフォント)である場合、heightおよびaspectは無視される。
例示的な例外エラーの返り値は以下を含む。
FONT_NOT_FOUND=そのスロットにフォントがない
FONT_PARAM_OUT_OF_RANGE=パラメータが範囲外である
・void DrawString(byte colorIndex,string s,int x,int y)メソッドは、位置(x,y)に、現在設定されているフォントを使用して指定された色で文字列を描画する。このメソッドはフォーマットを実行せず、このメソッドは単に一列のテキストを描画する。
例示的な例外エラーの返り値は以下を含む。
FONT_NOT_FOUND=そのスロットにフォントがない
FONT_PARAM_OUT_OF_RANGE=サイズまたは縦横比が範囲外である
・void DrawString(byte colorIndex,string s,int x,int y,int width,AlignStyle align,char truncation)メソッドは、指定された幅を超えないように必要に応じて切り捨てを行う左、右、または中央揃えで、現在設定されているフォントを使用して指定された色で文字列を描画する。文字列が切り捨てられ、0でない切り捨て文字(truncation character)が与えられるとき、この文字は文字列の前に付加されるか、または後ろに付加される。切り捨てられた中央揃えにされた文字列に関しては、切り捨て文字は前にも付加され後ろにも付加される。このメソッドにおいて、alignパラメータは、AlignStyle.Left、AlignStyle.Right、またはAlignStyle.Centerであることができる。
例示的な例外エラーの返り値は以下を含む。
FONT_NOT_FOUND=そのスロットにフォントがない
FONT_PARAM_OUT_OF_RANGE=サイズまたは縦横比が範囲外である
・void DrawString(byte colorIndex,byte[] utf8Bytes,int byteOffset,int characterCount,byte[] advances,int x,int y)メソッドは、現在選択されているフォントに応じて文字列または一連のグリフのいずれかを描画する。選択されているフォントがグリフのみを含む(CMapテーブルを含まない)場合、バイト領域の先頭からbyteOffsetの位置から始まるバイトがグリフインデックスとして復号化され、処理される。そうでない場合、バイトはUTF−8で符号化された文字の並びとして処理される。グリフは指定されたカラーインデックスを使用して描画され、現在のアンチエイリアシング背景色に対してアンチエイリアシングされる。「advances配列」は、描画されるべき各文字/グリフに対する横送りを含む。
0未満の送りをサポートするために、送りは以下のやり方で符号化される。各文字の送り幅は1または2バイトの長さである。0から127までの範囲内の送り幅は1バイトを使用して修正なしで記憶される。この範囲の外側では、最上位ビット(0x80)が2バイト系列の第1のバイトを示す。次のビット(0x40)は、復号化された値が否定されるべきかどうかを示す。ビット4および5(0x30)は無視されるが、0に設定されるべきである。下位4ビットおよび次のバイトは送り幅の大きさを表す。第1のバイトのビット6が設定される場合、幅が否定される。これは最大12ビットの長さの幅をサポートする。送りのリストが提供される場合、そのリストは少なくともcharacterCount個の文字の数をサポートするのに十分なエントリを含まなければならない。
例示的な例外エラーの返り値は以下を含む。
FONT_NOT_FOUND=フォントが選択されない
FONT_PARAM_OUT_OF_RANGE=サイズまたは縦横比が範囲外である
・int MeasureString(string s)メソッドは、現在設定されているフォントを使用して文字列の幅を画素数で返す。
例示的な例外エラーの返り値は以下を含む。
FONT_PARAM_ERR=NULL入力など
FONT_NOT_FOUND=有効なフォントが選択されない
FONT_PARAM_OUT_OF_RANGE=フォントのサイズまたは縦横比パラメータが範囲外である
FONT_BAD_UTF8_CODE=文字列中に無効なUTF8系列がある
・int BreakString(string s,int startIndex,int width,string sep)メソッドは、現在設定されているフォントを用いて、「sep」中の文字を使用して文字列を単語に分解することを試み、文字列が指定された幅に適合するように分解されることができる場合は区切り文字のインデックスを返す。このメソッドは、「sep」を使用して文字列が与えられた幅以内に適合するように分解されることができない場合、「1」を返す。効率の理由により、1つの例示的な実装において、「sep」文字列は最大8文字のみを含むことができる。これはほとんどの実用的な目的に対して十分であるはずである。この文字列が空の文字列である場合、テキストは任意の文字に分解されることになる。例えば、文字列「How now brown cow」が、スペース文字のみを含む区切り文字列、startIndex 0と共に渡されると仮定する。初めの3つの単語のみが適合する場合、BreakString()は「cow」の前のスペースのインデックスである13を返すことになる。文字列全体が適合する場合、このメソッドは文字列の長さである17を返すことになる。
例示的な例外エラーの返り値は以下を含む。
FONT_PARAM_ERR=NULLパラメータなど
FONT_NOT_FOUND=有効なフォントが選択されない
FONT_PARAM_OUT_OF_RANGE=フォントのサイズまたは縦横比パラメータが範囲外である、sep文字列が長すぎる
FONT_BAD_UTF8_CODE=「sep」文字列中に無効なUTF8系列がある
・void GetFontMetrics(out int ascent,out int descent,out int lineSpacing)メソッドは、テキストの正確なレイアウトのために必要とされる現在指定されているフォントのプロパティをフェッチする。「ascent」パラメータは、フォントのグリフがベースラインの何画素上を描画できるかを示す正の値である。「descent」パラメータは、フォントのグリフがベースラインの何画素下を描画できるかを示す正の値である。「lineSpacing」パラメータは、このフォントのテキストのライン間で必要とされる期待されるデフォルトの画素で表された間隔である。これは、フォントのascent、descent、および行間(line gap)の合計である。
例示的な例外エラーの返り値は以下を含む。
FONT_PARAM_ERR=NULLパラメータなど
FONT_NOT_FOUND=指定されたスロットにおけるフォントでない
D.5.3.フォントエラーコード
例示的なフォントエラーコードは以下を含む。
Figure 2008536384
D.6.ネイティブイベントおよびマネージ非同期コールバック
エンティティは、NotifyOnEventCallbackシステムメソッド(internalのみ)を呼び出してイベント通知に登録することができる。NotifyOnEventCallbackは非ブロッキング呼び出しであり、エンティティは、別個のスレッド上でこの呼び出しを行う何らかの明確な必要性がない場合、別個のスレッド上でこの呼び出しを行う必要はない。HTTP、MpegFiltering、Tuning、eTVなどの全てのコールバック指向のイベントの待機およびディスパッチを実行することになる単一のシステムスレッドが存在する。(例外はUserInput、AppLaunch、およびPingPongイベントであり、これらのイベントは専用のシステムスレッドで処理される)。
イベントの種類は、複数インスタンスのイベントおよび単一インスタンスのイベントの2つに大別されることができる。HTTPおよびGuideDB Searchは典型的な複数インスタンスモデルを表す。これらのモデルにおいては、概して動作を開始するためにリクエストが(エンティティによって)明示的になされる必要があり、複数のスレッドが異なるリクエストを生成することができる。このモデルにおいて、(NotifyOnEventに対する)呼び出し元は、同じイベントの複数のインスタンス(例えば、同じアプリケーション上の異なるスレッドからの、または異なるアプリケーションからの複数のHTTPリクエスト)の間を区別するために使用されることができる対応するNSLハンドルを渡すことになる。単一のインスタンスを用いる場合、概してエンティティはリクエストを開始するために明確に何らかのことを行う必要はない。ランタイムはこれらの種類のイベントを自動的に取得し、ランタイムはそれらのイベントを関係するものにディスパッチすることになる(そのデータを取得し、そのデータを適切に解析し、それらのAPIのコンシューマに対するさらなるディスパッチを行うことはエンティティの役目である)。
1つの例示的な実装において、任意の時点で、Event Type/Handleの組合せに関して1つの未処理のリクエストのみが存在することができる。例えば、1つの例示的な実装において、第1のHTTPリクエストが成功裏に完了する(例えば、コールバックが呼び出される)まで、同じハンドルに対する第2のHTTPリクエストを行うことはできない。これは融通の利かない要件ではなく、必要に応じて、およびいくつかの条件が満たされる場合にはある程度緩和されることができる。
SpotHostレイヤは、NSL環境とSPOT環境の中間として働く。単一インスタンスモデルを用いる場合、イベントは全てのサブスクライバにブロードキャストされる。SpotHostレイヤは、NSLレイヤからイベント(HttpResponseまたはMpegFilterなど)を取得し、そのイベントをHAL_DISPATCH_EVENT構造体にまとめ、Toba_EnqueueDispatchEvent関数を使用してその構造体をシステムキューに送る。エンティティは、SpotHostレイヤ内で適切な関数を実行する役割を担う。
システムが処理のためにキューからイベントを取得するとき、システムが適合するリクエストを発見することができない場合、または(例えば、当該リクエストを行ったアプリケーションが終了したために)そのリクエストをディスパッチすべきいかなる対象も発見することができない場合、システムは(適切なクリーンナップを行った後で)応答を破棄する。したがって、APIはそれらのAPIが開始する前に(NotifyOnEventを呼び出すことによって)初めに通知登録すべきである。そうでない場合、応答が破棄される原因となる恐れのある分かりづらい競合状態が存在する可能性がある。システムが適合するリクエストを発見する場合、システムは対応するデリゲートを呼び出す。エンティティはデリゲートハンドラ内でいかなる重要な作業も実行すべきでない。
NativeResponseオブジェクト上で(NativeResponse.freeNativeDataFunctionPtrによって示される関数を呼び出し、rawNativeDataPtrをパラメータとして渡す)Disposeメソッドが呼び出されるべきである。ネイティブデータを保持することが望ましい場合、NativeResponseオブジェクトを保有することができ、代替的には、freeNativeDataFunctionPtrフィールドを0に設定し、続いてDisposeを呼び出すことができる。コールバックによって例外が投げられる場合、システムは最悪を想定して、NativeResponseオブジェクト上でDisposeを呼び出す。システムおよびユーザの両方が保証されたクリーンナップを行うことができるので、Finalizerを使用してクリーンナップを実行する必要はない。
システムは、登録解除も行う明示的なAPI、例えばCancelNotification(HalDispatchEvents e,uint nativeHandle)を提供することもできる。この機能を使用すると、システムは自動的な登録解除に関する異常終了の事態にのみ対応する必要がある。
使用例
Figure 2008536384
Figure 2008536384
Figure 2008536384
ここでの目的は、ユーザがNSL/PALレイヤからの非同期コールバックおよびシステムイベントを受け取るための(各リクエストに対して別個のスレッドを生成することなしに)非常に軽量で「薄い」レイヤを提供することである。APIの作成者は、必要に応じてこの機能の上にIAsyncResult/AsyncCallbackに基づくコールバックメカニズムを構築することができる。
本発明が構造的特徴および/または方法の動作によって特定される言語で説明されたが、添付の特許請求の範囲で定義された本発明は説明された特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および動作は、特許請求の範囲に記載された発明を実装する例示的な形態として開示される。
本明細書で説明された改良されたシステムを実装するセットトップボックスを含むシステムの概要を示す図である。 図1のシステムで使用される例示的セットトップボックスの物理的な構成の概要を示す図である。 図2のセットトップボックスによって実装されることができるソフトウェア機能の階層を示す図である。 図3の機能によって提供されるUIpaneクラスの階層構造を示す図である。 図3の機能によって提供される、アプリケーションをロードおよび実行するために使用されるメカニズムを示す図である。 図3の機能によって提供されるナビゲーション機能の動作を示す図である。 図3の機能の動作の仕方を説明する手順を示す図である。

Claims (20)

  1. セットトップボックスシステムによって提供されるハードウェア機能を表すハードウェアレイヤと、
    セットトップボックス環境における使用のために構成されたインタープリタベースのコアランタイムエンジンと
    を含み、
    前記セットトップボックスシステムは、前記ハードウェアレイヤと前記インタープリタベースのコアランタイムエンジンとを使用して機能を実行することができるアプリケーションを実行するように構成されていることを特徴とするセットトップボックスシステム。
  2. 前記ハードウェア機能は5MB未満のメモリを含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  3. 前記セットトップボックス環境における使用のために構成された、アプリケーションを管理するためのアプリケーションマネージャをさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  4. 前記アプリケーションマネージャは、別のアプリケーションがアクティブ化されるときに現在のアプリケーションを中断するように、および前記別のアプリケーションが非アクティブ化されるときに前記現在のアプリケーションを再開するように構成されていることを特徴とする請求項3に記載のセットトップボックスシステム。
  5. 前記セットトップボックス環境における使用のために構成された、ユーザインターフェースの表示を管理するためのUIマネージャをさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  6. あるグラフィカルな表示から別のグラフィカルな表示に切り換えるときに遷移効果を提供するように構成されたグラフィックス機能をさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  7. 前記遷移効果は、デシメーション、フェーディング、スクロール、および露出のうちの1つまたは複数を含むことを特徴とする請求項6に記載のセットトップボックスシステム。
  8. グラフィカルな表示のカラーパレットを変更するように構成されたグラフィックス機能をさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  9. グラフィカルな表示の解像度を変更するように構成されたグラフィックス機能をさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  10. フォントファイルから情報を取り除くことによってフォント処理を簡素化するように構成されたグラフィックス機能をさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  11. フォントに対するアンチエイリアシングを提供するように構成されたグラフィックス機能をさらに含むことを特徴とする請求項1に記載のセットトップボックスシステム。
  12. 前記ハードウェア機能は、ディスプレイデバイスのそれぞれのラインに対応する記憶域を提供するライン制御レジスタ(LCR)を含み、
    前記セットトップボックスシステムは、前記LCRを操作することによってグラフィックス効果を提供するように構成されたグラフィックス機能をさらに含む
    ことを特徴とする請求項1に記載のセットトップボックスシステム。
  13. 制限された量のリソースを有するセットトップボックスシステムであって、
    前記セットトップボックスシステムによって提供されるハードウェア機能を表すハードウェアレイヤと、
    セットトップボックス環境における使用のために構成されたインタープリタベースの処理モジュールと
    を含み、
    前記ハードウェア機能は、ディスプレイデバイスのそれぞれのラインに対応する記憶域を提供するライン制御レジスタ(LCR)を含み、
    前記セットトップボックスシステムは、前記LCRを操作することによってグラフィックス効果を提供するように構成されたグラフィックス機能をさらに含む
    ことを特徴とするセットトップボックスシステム。
  14. 請求項13に記載のセットトップボックスシステムを実装するための命令を含むことを特徴とする1つまたは複数の機械可読媒体。
  15. 現在のアプリケーションをロードおよび初期化することと、
    セットトップボックス環境における使用のために構成されたインタープリタベースの処理モジュールを使用して前記現在のアプリケーションを実行することと、
    前記現在のアプリケーションのユーザグラフィックス表示を妨げる別のアプリケーションがアクティブ化されるときに前記現在のアプリケーションを中断することと、
    前記別のアプリケーションが非アクティブ化されるときに前記現在のアプリケーションを再開することと、
    終了イベントの発生と同時に前記現在のアプリケーションを終了することと
    を含むことを特徴とする、リソースが制限されたセットトップボックス環境においてアプリケーションを実行する方法。
  16. 前記初期化することは前記アプリケーションのためのメッセージスレッドを確立することを含むことを特徴とする請求項15に記載の方法。
  17. あるグラフィックス表示から別のグラフィックス表示に切り換えるときに遷移効果を提供することをさらに含むことを特徴とする請求項15に記載の方法。
  18. あるグラフィックス表示から別のグラフィックス表示に切り換えると同時にパレットおよび解像度のうちの1つまたは複数を変更することをさらに含むことを特徴とする請求項15に記載の方法。
  19. 請求項15に記載の方法を実行するための命令を含むことを特徴とする1つまたは複数の機械可読媒体。
  20. 請求項15に記載の方法を実行するように構成された論理を含むことを特徴とするセットトップボックスシステム。
JP2008504271A 2005-04-01 2006-03-29 リソースが制限されたセットトップボックス環境においてアプリケーションを実行するシステム Pending JP2008536384A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/097,840 US20060225107A1 (en) 2005-04-01 2005-04-01 System for running applications in a resource-constrained set-top box environment
PCT/US2006/011353 WO2006107662A2 (en) 2005-04-01 2006-03-29 System for running applications in a resource-constrained set-top box environment

Publications (2)

Publication Number Publication Date
JP2008536384A true JP2008536384A (ja) 2008-09-04
JP2008536384A5 JP2008536384A5 (ja) 2009-05-21

Family

ID=37072173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008504271A Pending JP2008536384A (ja) 2005-04-01 2006-03-29 リソースが制限されたセットトップボックス環境においてアプリケーションを実行するシステム

Country Status (6)

Country Link
US (1) US20060225107A1 (ja)
EP (1) EP1869883A4 (ja)
JP (1) JP2008536384A (ja)
KR (1) KR20070121707A (ja)
CN (1) CN101185328A (ja)
WO (1) WO2006107662A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013518733A (ja) * 2010-04-23 2013-05-23 サムスン ヘビー インダストリーズ カンパニー リミテッド ロボットシステムの制御方法及びその装置

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7933628B2 (en) 2004-08-18 2011-04-26 Ruckus Wireless, Inc. Transmission and reception parameter control
US7292198B2 (en) 2004-08-18 2007-11-06 Ruckus Wireless, Inc. System and method for an omnidirectional planar antenna apparatus with selectable elements
US8031129B2 (en) 2004-08-18 2011-10-04 Ruckus Wireless, Inc. Dual band dual polarization antenna array
US7899497B2 (en) 2004-08-18 2011-03-01 Ruckus Wireless, Inc. System and method for transmission parameter control for an antenna apparatus with selectable elements
US7696946B2 (en) 2004-08-18 2010-04-13 Ruckus Wireless, Inc. Reducing stray capacitance in antenna element switching
US7880683B2 (en) 2004-08-18 2011-02-01 Ruckus Wireless, Inc. Antennas with polarization diversity
US7965252B2 (en) 2004-08-18 2011-06-21 Ruckus Wireless, Inc. Dual polarization antenna array with increased wireless coverage
US7652632B2 (en) 2004-08-18 2010-01-26 Ruckus Wireless, Inc. Multiband omnidirectional planar antenna apparatus with selectable elements
US7193562B2 (en) 2004-11-22 2007-03-20 Ruckus Wireless, Inc. Circuit board having a peripheral antenna apparatus with selectable antenna elements
US8619662B2 (en) 2004-11-05 2013-12-31 Ruckus Wireless, Inc. Unicast to multicast conversion
US9240868B2 (en) 2004-11-05 2016-01-19 Ruckus Wireless, Inc. Increasing reliable data throughput in a wireless network
US8638708B2 (en) 2004-11-05 2014-01-28 Ruckus Wireless, Inc. MAC based mapping in IP based communications
US7505447B2 (en) 2004-11-05 2009-03-17 Ruckus Wireless, Inc. Systems and methods for improved data throughput in communications networks
US8792414B2 (en) 2005-07-26 2014-07-29 Ruckus Wireless, Inc. Coverage enhancement using dynamic antennas
US7358912B1 (en) 2005-06-24 2008-04-15 Ruckus Wireless, Inc. Coverage antenna apparatus with selectable horizontal and vertical polarization elements
US7646343B2 (en) 2005-06-24 2010-01-12 Ruckus Wireless, Inc. Multiple-input multiple-output wireless antennas
US7893882B2 (en) 2007-01-08 2011-02-22 Ruckus Wireless, Inc. Pattern shaping of RF emission patterns
US7789757B2 (en) * 2005-09-22 2010-09-07 At&T Intellectual Property I, L.P. Video games on demand with anti-piracy security
CN101322346A (zh) 2005-12-01 2008-12-10 鲁库斯无线公司 借助于无线基站虚拟化的按需服务
US20070266177A1 (en) * 2006-03-08 2007-11-15 David Vismans Communication device with indirect command distribution
US7788703B2 (en) 2006-04-24 2010-08-31 Ruckus Wireless, Inc. Dynamic authentication in secured wireless networks
US9769655B2 (en) 2006-04-24 2017-09-19 Ruckus Wireless, Inc. Sharing security keys with headless devices
US9071583B2 (en) 2006-04-24 2015-06-30 Ruckus Wireless, Inc. Provisioned configuration for automatic wireless connection
US8670725B2 (en) 2006-08-18 2014-03-11 Ruckus Wireless, Inc. Closed-loop automatic channel selection
KR100781918B1 (ko) * 2007-02-02 2007-12-04 가온미디어 주식회사 Mdu 방송 신호 분배 시스템
US8073882B2 (en) 2007-07-11 2011-12-06 Mats Stefan Persson Method, system and computer-readable media for managing software object handles in a dual threaded environment
US8547899B2 (en) 2007-07-28 2013-10-01 Ruckus Wireless, Inc. Wireless network throughput enhancement through channel aware scheduling
JP5092608B2 (ja) * 2007-08-01 2012-12-05 パナソニック株式会社 受信装置
US8127233B2 (en) * 2007-09-24 2012-02-28 Microsoft Corporation Remote user interface updates using difference and motion encoding
KR100974908B1 (ko) * 2007-12-15 2010-08-09 한국전자통신연구원 Smmd 기반 사용자 맞춤형 미디어 서비스 시스템 및방법
US8355343B2 (en) 2008-01-11 2013-01-15 Ruckus Wireless, Inc. Determining associations in a mesh network
US8695056B2 (en) * 2008-01-26 2014-04-08 International Business Machines Corporation Method for information tracking in multiple interdependent dimensions
BRPI0803717A2 (pt) * 2008-09-03 2010-06-15 Tqtvd Software Ltda sistema de execução de aplicativos para televisão digital, aparato de execução de aplicativos para televisão digital e método para implementar tal sistema
US8217843B2 (en) 2009-03-13 2012-07-10 Ruckus Wireless, Inc. Adjustment of radiation patterns utilizing a position sensor
US8698675B2 (en) 2009-05-12 2014-04-15 Ruckus Wireless, Inc. Mountable antenna elements for dual band antenna
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US8528037B2 (en) 2009-08-28 2013-09-03 CSC Holdings, LLC Dynamic application loader for set top box
EP2350863B1 (en) 2009-11-16 2015-08-26 Ruckus Wireless, Inc. Establishing a mesh network with wired and wireless links
US9979626B2 (en) 2009-11-16 2018-05-22 Ruckus Wireless, Inc. Establishing a mesh network with wired and wireless links
US8528005B2 (en) 2010-04-09 2013-09-03 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement in an IPTV terminal
CN101859261B (zh) * 2010-06-09 2015-05-13 中兴通讯股份有限公司 一种释放内存的控制方法及控制设备
CN102149017A (zh) * 2010-07-20 2011-08-10 华为终端有限公司 机顶盒应用的管理方法及机顶盒
US8898723B2 (en) * 2010-08-20 2014-11-25 Sony Corporation Virtual channel declarative script binding
US9407012B2 (en) 2010-09-21 2016-08-02 Ruckus Wireless, Inc. Antenna with dual polarization and mountable antenna elements
US20120278747A1 (en) * 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for user interface in a system having two operating system environments
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
WO2012151224A2 (en) 2011-05-01 2012-11-08 Ruckus Wireless, Inc. Remote cable access point reset
US8788863B2 (en) 2011-08-10 2014-07-22 Microsoft Corporation System and method for restoring and/or continuing execution functionality to various processes based on predefined power classifications while transitioning a computing environment from connected standby state to execution state
US9952897B2 (en) 2011-09-12 2018-04-24 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states
US8751800B1 (en) 2011-12-12 2014-06-10 Google Inc. DRM provider interoperability
US8756668B2 (en) 2012-02-09 2014-06-17 Ruckus Wireless, Inc. Dynamic PSK for hotspots
US10186750B2 (en) 2012-02-14 2019-01-22 Arris Enterprises Llc Radio frequency antenna array with spacing element
US9634403B2 (en) 2012-02-14 2017-04-25 Ruckus Wireless, Inc. Radio frequency emission pattern shaping
US9092610B2 (en) 2012-04-04 2015-07-28 Ruckus Wireless, Inc. Key assignment for a brand
US20130293573A1 (en) 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments
TWI594186B (zh) * 2012-05-16 2017-08-01 緯創資通股份有限公司 虛擬頻道之管理方法、擷取數位內容之方法及具有虛擬頻道之網路多媒體重現系統
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US9570799B2 (en) 2012-09-07 2017-02-14 Ruckus Wireless, Inc. Multiband monopole antenna apparatus with ground plane aperture
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
US10230161B2 (en) 2013-03-15 2019-03-12 Arris Enterprises Llc Low-band reflector for dual band directional antenna
CN103888843B (zh) * 2014-03-11 2017-12-12 惠州Tcl移动通信有限公司 智能电视的电视节目频道与应用程序整合的方法及系统
US10540696B2 (en) 2014-09-30 2020-01-21 At&T Intellectual Property I, L.P. Enhanced shared media experiences
US10084984B2 (en) * 2016-08-15 2018-09-25 Hisense Usa Corp. System and methods for device control and multiple input handling
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
CN109150751B (zh) 2017-06-16 2022-05-27 阿里巴巴集团控股有限公司 一种网络控制方法及装置
US11036365B2 (en) * 2019-06-07 2021-06-15 Microsoft Technology Licensing, Llc Hang condition mitigation for browser applications
CN112231090A (zh) * 2020-11-04 2021-01-15 Oppo广东移动通信有限公司 应用进程管理方法、装置及终端设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003504753A (ja) * 1999-07-13 2003-02-04 サン・マイクロシステムズ・インコーポレイテッド アプリケーションライフサイクルに従ってアプリケーションを管理するための方法および装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5563648A (en) * 1994-04-28 1996-10-08 Thomson Consumer Electronics, Inc. Method for controlling execution of an audio video interactive program
US5673401A (en) * 1995-07-31 1997-09-30 Microsoft Corporation Systems and methods for a customizable sprite-based graphical user interface
US5802284A (en) * 1995-12-13 1998-09-01 Silicon Graphics, Inc. System and method using cover bundles to provide immediate feedback to a user in an interactive television environment
JP3572473B2 (ja) * 1997-01-30 2004-10-06 株式会社ルネサステクノロジ 液晶表示制御装置
US6029045A (en) * 1997-12-09 2000-02-22 Cogent Technology, Inc. System and method for inserting local content into programming content
US6792616B1 (en) * 1998-05-01 2004-09-14 Scientific-Atlanta, Inc. System and method for providing a plurality of programming services in a television system
US6874145B1 (en) * 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US7257812B1 (en) * 1999-12-16 2007-08-14 Sun Microsystems, Inc. Methods and apparatus for managing an application
US6819331B2 (en) * 2002-03-01 2004-11-16 Broadcom Corporation Method and apparatus for updating a color look-up table
US6995803B2 (en) * 2002-05-23 2006-02-07 Microsoft Corporation Anti-aliasing characters for improved display on an interlaced television monitor
AU2003295739A1 (en) * 2002-11-18 2004-06-15 United Video Properties, Inc. Systems and methods for providing real-time services in an interactive television program guide application
KR20060135621A (ko) * 2003-10-10 2006-12-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 블루레이 디스크용 자바 생명주기 모델

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003504753A (ja) * 1999-07-13 2003-02-04 サン・マイクロシステムズ・インコーポレイテッド アプリケーションライフサイクルに従ってアプリケーションを管理するための方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013518733A (ja) * 2010-04-23 2013-05-23 サムスン ヘビー インダストリーズ カンパニー リミテッド ロボットシステムの制御方法及びその装置

Also Published As

Publication number Publication date
CN101185328A (zh) 2008-05-21
WO2006107662A2 (en) 2006-10-12
EP1869883A2 (en) 2007-12-26
WO2006107662A3 (en) 2007-09-27
EP1869883A4 (en) 2009-01-21
US20060225107A1 (en) 2006-10-05
KR20070121707A (ko) 2007-12-27

Similar Documents

Publication Publication Date Title
JP2008536384A (ja) リソースが制限されたセットトップボックス環境においてアプリケーションを実行するシステム
JP4309458B2 (ja) 中央サーバによって、当該中央サーバに接続されたノードの機能アプリケーションをサポートする方法およびコンピュータ読み取り可能な記録媒体
US7082600B1 (en) Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
KR20010020250A (ko) 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기
CN110297624B (zh) 基于electron框架的Widget系统的实现方法及采用该系统的电视机
CN112612525A (zh) 显示设备及显示设备开机方法
JP2005209173A (ja) 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法
CN111930410A (zh) 一种显示设备及闲时升级方法
JPH0991143A (ja) データ処理方法および装置
KR20050056270A (ko) 소프트웨어 애플리케이션을 생성하는 방법
JP2009506467A (ja) 仮想マシンにおける並行タスクのためのイベント処理
CN112764627B (zh) 一种升级包安装进度显示方法及显示设备
JP2000172509A (ja) プログラム協調実行装置
CN112616090B (zh) 显示设备系统升级方法及显示设备
CN116340680A (zh) 一种显示设备及插件对象生命周期管理的控制方法
CN116261003A (zh) 一种显示设备及基于浏览器的流媒体播放控制方法
KR20100111749A (ko) 애플리케이션의 효율적인 압축
CN112487322A (zh) 一种第三方应用Loading页面的加载方法及显示设备
CN112637683A (zh) 显示设备系统优化方法及显示设备
CN112667285A (zh) 一种应用升级方法、显示设备及服务器
Jaeger Set-top box software architectures for digital video broadcast and interactive services
Peng et al. Integration of applications into digital television environment
KR20100101933A (ko) 기능별로 모듈화된 구조로 이루어진 모바일 플랫폼이 탑재된 이동통신단말, 그 모바일 플랫폼의 동작 방법 및 대기화면 어플리케이션 관리 방법
CN112291600B (zh) 一种缓存方法及显示设备
CN117785265A (zh) 一种在Android系统上适配轻量级OpenHarmony系统API接口的方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110428

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110930