(57)【要約】【課題】グラフィックスライブラリが、透過処理が不要な場合でも透過計算を行っていたり、ＧＰＵに有効な描画命令を発行していなかったりすると、そのグラフィックスライブラリの組み合わせで動作する仮想マシンにおいても十分な描画のパフォーマンスが得られない。【解決手段】仮想マシンが、描画するコンテンツに応じて、透過処理をさせる、もしくは透過処理をさせないようにグラフィックスライブラリを利用する。また、ＧＰＵに対して有効な描画命令を発行するようにグラフィックスライブラリを利用する。【選択図】図３
2014026541.tif 000002
【特許請求の範囲】
【請求項１】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により描画を行う場合には、フレームバッファに描かれた画像データの色に透過値が含まれるか否か判定し、透過値が含まれる場合には、前記グラフィックスライブラリとして透過処理対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行し、透過値が含まれない場合には、前記グラフィックスライブラリとして、透過処理非対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行することを特徴とする画像形成装置。
【請求項２】
前記透過処理対応のグラフィックスライブラリは、前記グラフィックスドライバに対して、透過処理を伴う描画要求を発行し、前記透過処理非対応のグラフィックスライブラリは、前記グラフィックスドライバに対して、透過処理を伴わない描画要求を発行することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記グラフィックスプロセッサを用いずに前記表示部により表示する画像を描画するフレームバッファドライバをさらに備え、
前記グラフィックスライブラリはまた、前記グラフィックスプロセッサが対応していない描画処理については、前記グラフィックスドライバに代えて、前記フレームバッファドライバに対して描画要求を発行することを特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
前記仮想マシン手段はさらに、プログラムの実行により、ラスタラインに平行または直交する直線の描画を行う場合には、前記直線の幅を短辺の長さとし、前記直線の長さを長辺の長さとする矩形領域を塗りつぶす描画の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１乃至３のいずれか一項に記載の画像形成装置。
【請求項５】
前記直線の幅は所定値であるか、または前記仮想マシン手段が生成したグラフィックコンテキストに含まれた線幅の値であることを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記仮想マシン手段はさらに、プログラムの実行により、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素を、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１乃至３のいずれか一項に記載の画像形成装置。
【請求項７】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項６に記載の画像形成装置。
【請求項８】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素の数を閾値と比較し、閾値以下であれば画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行し、閾値を超えていれば、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項６に記載の画像形成装置。
【請求項９】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値と、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値とをそれぞれ求めて比較し、予測値が小さい方の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項６に記載の画像形成装置。
【請求項１０】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により、ラスタラインに平行または直交する直線の描画を行う場合には、前記直線の幅を短辺の長さとし、前記直線の長さを長辺の長さとする矩形領域を塗りつぶす描画の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする画像形成装置。
【請求項１１】
前記直線の幅は所定値であるか、または前記仮想マシン手段が生成したグラフィックコンテキストに含まれた線幅の値であることを特徴とする請求項１０に記載の画像形成装置。
【請求項１２】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素を、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする画像形成装置。
【請求項１３】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１２に記載の画像形成装置。
【請求項１４】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素の数を閾値と比較し、閾値以下であれば画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行し、閾値を超えていれば、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１２に記載の画像形成装置。
【請求項１５】
前記仮想マシン手段は、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値と、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値とをそれぞれ求めて比較し、予測値が小さい方の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１２に記載の画像形成装置。
【請求項１６】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、描画を行う場合には、フレームバッファに描かれた画像データの色に透過値が含まれるか否か判定し、透過値が含まれる場合には、前記グラフィックスライブラリとして透過処理対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行し、透過値が含まれない場合には、前記グラフィックスライブラリとして、透過処理非対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行することを特徴とする仮想マシンプログラム。
【請求項１７】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、ラスタラインに平行または直交する直線の描画を行う場合には、前記直線の幅を短辺の長さとし、前記直線の長さを長辺の長さとする矩形領域を塗りつぶす描画の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする仮想マシンプログラム。
【請求項１８】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素を、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする仮想マシンプログラム。
【請求項１９】
文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１８に記載の仮想マシンプログラム。
【請求項２０】
文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素の数を閾値と比較し、閾値以下であれば画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行し、閾値を超えていれば、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１８に記載の仮想マシンプログラム。
【請求項２１】
文字の描画を行う場合には、前記文字に対応した文字画像を生成し、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値と、画素ごとに描画する処理要求を発行することなく、前記文字画像を描画する処理要求を前記グラフィックスライブラリに対して発行した場合の処理時間の予測値とをそれぞれ求めて比較し、予測値が小さい方の処理要求を前記グラフィックスライブラリに対して発行することを特徴とする請求項１８に記載の仮想マシンプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば仮想マシンのグラフィックス処理を向上させた画像形成装置及び仮想マシンプログラムに関する。
【背景技術】
【０００２】
近年、スマートフォンやタブレット端末、画像形成装置などの組込み機器で、ユーザにとって使いやすい操作性（以下、リッチ操作）が実現されている。このようなリッチ操作を実現するには、高フレームレートで表示を切り替えられることが必要である。
【０００３】
ところで、このような組込み機器には、例えばＪＡＶＡ（登録商標）等のプログラミング言語で記述されたコードを実行するための、ハードウェアやオペレーティングシステム等のソフトウェアに依存しない実行環境である仮想マシンの導入が進んでいる。そして、この仮想マシンには、アプリケーションソフトウェア（以下、アプリ）をインストールすることが可能なものがある。これは、組込み機器の付加価値向上に寄与している。
【０００４】
一方で、仮想マシン上で動作するアプリも、例えばタッチパネル上で行うジェスチャなどにより操作し、また、操作内容をアニメーション等を用いた高い表現力で示すリッチ操作の実現が要求されている。このために、仮想マシンからＧＰＵ（Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）を利用し、描画領域の合成を効率よく行うものがある（特許文献１）
一般的に、ＧＰＵの活用は表示処理能力を向上させ、それによって表示処理の高フレームレート化とともに、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）の負荷を下げる効果がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１７１２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方で、通常は、描画処理の実現のためにＧＰＵやそのドライバが抽象化されたグラフィックスライブラリを用いる。組込み機器に搭載されている仮想マシンも、特定のグラフィックスライブラリの組み合わせが提供された環境で動作することが一般的である。しかし、グラフィックスライブラリを用いると、描画処理を容易に実現できる反面、ＧＰＵの特性が考慮されずに描画命令が発行されたり、仮想マシンにとって必ずしも必要としない計算がグラフィックスライブラリの内部で行われたりすることがある。このような場合、ＣＰＵとＧＰＵ間の通信の増加や、計算量増加に伴うＣＰＵの負荷増大により、ＧＰＵのパフォーマンスを十分に享受できないという課題がある。
【０００７】
本発明は上記従来例に鑑みてなされたもので、仮想マシンからグラフィックスライブラリを用いて描画処理を行う構成であっても、グラフィックスライブラリがＧＰＵを用いる際のオーバーヘッドを減らし、それによってＧＰＵの利点を損なわずに効率的な画像処理を実現できる画像形成装置及び仮想マシンプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は以下の構成を備える。
【０００９】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により描画を行う場合には、フレームバッファに描かれた画像データの色に透過値が含まれるか否か判定し、透過値が含まれる場合には、前記グラフィックスライブラリとして透過処理対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行し、透過値が含まれない場合には、前記グラフィックスライブラリとして、透過処理非対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行する。
【００１０】
あるいは他の側面によれば、本発明は以下の構成を有する。
【００１１】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により、ラスタラインに平行または直交する直線の描画を行う場合には、前記直線の幅を短辺の長さとし、前記直線の長さを長辺の長さとする矩形領域を塗りつぶす描画の処理要求を前記グラフィックスライブラリに対して発行する。
【００１２】
あるいは他の側面によれば、本発明は以下の構成を有する。
【００１３】
表示部を有する画像形成装置であって、
前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、
ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリと、
所定のプログラミング言語で記述されたプログラムを実行する仮想マシン手段であって、該仮想マシン手段は、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行する仮想マシン手段と
を備え、
前記仮想マシン手段は、プログラムの実行により、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素を、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行する。
【００１４】
あるいは他の側面によれば、本発明は以下の構成を有する。
【００１５】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、描画を行う場合には、フレームバッファに描かれた画像データの色に透過値が含まれるか否か判定し、透過値が含まれる場合には、前記グラフィックスライブラリとして透過処理対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行し、透過値が含まれない場合には、前記グラフィックスライブラリとして、透過処理非対応のグラフィックスライブラリを選択し、該グラフィックスライブラリに対する描画の処理要求を発行する仮想マシンプログラム。
【００１６】
あるいは他の側面によれば、本発明は以下の構成を有する。
【００１７】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、ラスタラインに平行または直交する直線の描画を行う場合には、前記直線の幅を短辺の長さとし、前記直線の長さを長辺の長さとする矩形領域を塗りつぶす描画の処理要求を前記グラフィックスライブラリに対して発行する仮想マシンプログラム。
【００１８】
あるいは他の側面によれば、本発明は以下の構成を有する。
【００１９】
表示部を有する画像形成装置のプロセッサにより実行される仮想マシンプログラムであって、前記画像形成装置は、前記表示部により表示する画像を描画するグラフィックスプロセッサを用いたグラフィックスドライバと、ＡＰＩを介した処理要求に応じて、前記グラフィックスドライバに対して描画要求を発行するグラフィックスライブラリとを有しており、
前記仮想マシンプログラムは、所定のプログラミング言語で記述されたプログラムを実行し、実行するプログラムに応じて前記ＡＰＩを介して前記グラフィックスライブラリに対する処理要求を発行して処理を遂行し、文字の描画を行う場合には、前記文字に対応した文字画像を生成し、該文字画像のうち、文字を構成する画素を、画素ごとに描画する処理要求を前記グラフィックスライブラリに対して発行する仮想マシンプログラム。
【発明の効果】
【００２０】
本発明によれば、仮想マシンが、描画するコンテンツの透過値に基づいてグラフィックスライブラリの利用方法を変更する。また、仮想マシンがＧＰＵに対して効果の高い命令を要求するようにグラフィックスライブラリを利用するようになる。これらにより、不要な計算処理を省くとともに、ＧＰＵを有効活用することで、描画のパフォーマンスを向上できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態を適用した画像形成装置のハードウェア構成図である。
【図２】本発明の実施形態を適用した画像形成装置のソフトウェア構成図である。
【図３】本発明の実施形態を適用した仮想マシンの描画機能を示すソフトウェア構成図である。
【図４】本発明の実施形態を適用した仮想マシンの描画機能の初期化を示すフローチャートである。
【図５】本発明の実施形態を適用した仮想マシンが管理しているリソースの概念図である。
【図６】本発明の実施形態を適用した仮想マシンの描画処理全体を示すフローチャートと描画処理の過程を示す概念図である。
【図７】本発明の実施形態を適用した仮想マシンがコンテンツの描画処理を示すフローチャートである。
【図８】本発明の実施形態を適用した仮想マシンの線の描画機能を示すソフトウェア構成図である。
【図９】本発明の実施形態を適用した仮想マシンの線の描画処理を示すフローチャートである。
【図１０】本発明の実施形態を適用した仮想マシンの文字の描画機能を示すソフトウェア構成図である。
【図１１】本発明の実施形態を適用した仮想マシンの文字の描画処理を示すフローチャートである。
【図１２】本発明の実施形態を適用した仮想マシンの文字の描画機能を示すソフトウェア構成図である。
【図１３】本発明の実施形態を適用した仮想マシンの文字の描画処理を示すフローチャートである。
【図１４】本発明の実施形態を適用した仮想マシンの文字の描画機能を示すソフトウェア構成図である。
【図１５】本発明の実施形態を適用した仮想マシンの文字の描画処理を示すフローチャートである。
【図１６】本発明の実施形態を適用した仮想マシンの文字の描画機能を示すソフトウェア構成図である。
【図１７】本発明の実施形態を適用した仮想マシンの文字の描画処理を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００２３】
[第１の実施形態]
＜ハードウェア構成＞
図１は、本発明の第１の実施形態に係る画像形成装置の内部構成の一例を示すハードウェア構成図である。図１に示す画像形成装置は、基本的な構成として、画像形成装置内の各部を制御するコントローラユニット１００と、操作部１１２と、スキャナ部１２３と、プリンタ部１２５とを備える。操作部１１２は、例えば、数字を入力するためのテンキーや処理の実行を行うためのスタートキーなどのハードキーや液晶タッチパネルで構成され、ユーザが画像形成装置を操作するためのユーザインタフェースを提供する。操作部１１２のタッチパネルに表示される各設定項目を表すアイコンやボタン（もしくはハードキー）をタッチ（押下）することで、画像形成装置に設定や情報の入力を行うことが可能である。
【００２４】
スキャナ部１２３は、原稿等の画像を画像データとして読み取る。プリンタ部１２５は、記録用紙を搬送し、その記録用紙に画像データを可視画像として印刷する。
【００２５】
コントローラユニット１００は、バス１２２を介してスキャナ部１２３に接続され、またバス１２４を介してプリンタ部１２５に接続される。また、コントローラユニット１００は、ＬＡＮ１１３や公衆回線（ＷＡＮ）１１４や無線１１５を介して他の機器に接続して、画像情報やデバイス情報の入出力制御を行う。
【００２６】
ＣＰＵ１０１は、プログラムを実行してシステム全体を制御するコントローラである。ＲＡＭ１０２は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＲＯＭ１０３はブートＲＯＭである。ＲＯＭ１０３には、システムのブートプログラムが格納されている。ＨＤＤ１０４は、ハードディスクドライブであり、システムソフトウェアや画像データ、後述する通信部１１１が有するすべての無線通信に関する情報（無線通信の仕様）を格納する。
【００２７】
画像形成装置では、使用したい機能を実装したアプリをインストールすることで機能を増やすことができる。アプリのインストールにより、画像形成装置上で各種機能を動かすためのアプリケーションプログラムがＲＡＭ１０２やＨＤＤ１０４に記憶される。
【００２８】
操作部Ｉ／Ｆ１０６は、ユーザインターフェース（ＵＩ）である操作部１１２との間のインターフェース部であり、操作部１１２に表示すべきデータを操作部１１２に対して出力する。また、操作部１１２からユーザが入力した情報を、ＣＰＵ１０１に伝える役割を行う。
【００２９】
ＧＰＵ１３０は、ＲＡＭ１０２上に確保された画像メモリの内容を、たとえばＤＭＡなどで操作部１１２の表示部に出力するグラフィックスプロセッサである。この画像データの出力により操作部１１２に表示される画像が更新される。したがって画像データの出力は画像データが書き換えられた都度行えばよいが、定期的に出力を行ってもよい。ＧＰＵ１３０はまた、画像メモリに、異なる画像バッファの画像データを合成する機能を有する。さらにこの合成時に不透過率（あるいは透過率）を反映した合成を行うアルファブレンディングの機能を持つもの、すなわち透過処理対応のものもある。アルファブレンディングの機能を持つものであっても、合成する画像データによっては透過率の値（アルファチャネル）を持たないものもあることから、透過処理の機能を用いずに合成する機能も有している。さらに、ＧＰＵ１３０は矩形領域の塗りつぶしやビット単位のブロック転送の機能を持つ。ＧＰＵにはさらにシェーディング処理などを含む３Ｄレンダリング機能を持つもののあるが、本実施形態では３Ｄレンダリング機能は持たなくともよい。また本実施形態のＧＰＵは、ラスタラインに平行な辺をもつ矩形の塗りつぶしに関しては高い性能を持つ。これはＧＰＵ一般に該当する。
【００３０】
Ｎｅｔｗｏｒｋ部１０９は、ＬＡＮ１１３に接続され、情報の入出力を行う。ＭＯＤＥＭ１１０は、公衆回線（ＷＡＮ）１１４に接続され、情報の入出力を行う。
【００３１】
通信部１１１は、不図示のアンテナを介して無線（ＷＩＲＥＬＥＳＳ）１１５に接続され、情報の入出力を行う。また、通信部１１１は、複数種類の無線通信を行うことが可能である。上記各デバイスがシステムバス１０７上に配置される。
【００３２】
イメージバス１０５は、システムバス１０７と、画像データを高速で転送する画像バス１０８とを接続し、データ構造を変換するバスブリッジである。画像バス１０８は、ＰＣＩバスまたはＩＥＥＥ１３９４等で規定されるバスである。
【００３３】
画像バス１０８上に配置される各デバイスにおいて、ラスターイメージプロセッサ（ＲＩＰ）１１６は、ＰＤＬコードをビットマップイメージに展開する。デバイスＩ／Ｆ部１１７は、スキャナ部１２３またはプリンタ部１２５をコントローラユニット１００に接続し、画像データの同期系／非同期系の変換を行う。
【００３４】
スキャナ画像処理部１１８は、入力画像データに対して補正、加工、または編集を行う。プリンタ画像処理部１１９は、プリント出力画像データに対して、プリンタ部１２５に合った補正、解像度変換等を行う。画像回転部１２０は、画像データの回転を行う。画像処理部１２１は、画像データに対する、ＪＰＥＧ、ＪＢＩＧ、ＭＭＲ、ＭＨ等の圧縮伸張処理や、ＰＤＦ、ＴＩＦＦ、ＯＣＲ、暗号化等のフォーマット変換処理を行う。
【００３５】
＜ソフトウェア構成＞
図２は本発明の画像形成装置のソフトウェア構成図の一例である。なお、本図のソフトウェア構成図は説明の便宜上、階層構造で表現されているようにみえるが、必ずしも上位層と下位層が明確になっているわけではなく、機能によっては並列な関係をとりうることに注意されたい。つまり、本発明のソフトウェア構造の様態はこの形式に限定されるものではない。画像形成装置のソフトウェアは、ＨＤＤ１０４に格納されている。
【００３６】
（アプリケーション及びライブラリ）
システムサービス２６４は、画像形成装置に事前に登録されているアプリであり、他のアプリに機能を提供するものや、単独で機能するものがある。他のアプリに機能を提供するものとして、例えば、エラー発生時の処理を代替するエラーリカバリーサービスや操作部１１２を制御するアプレットビューワーサービス（ＡＶＳ）などがある。また、単独で機能するものとして、ＰＣからブラウザを使用してアクセスされ、所定のアプリ・ファイルを受信するサービスマネジメントサービス（ＳＭＳ）などがある。アプリＡ２６５は、ＳＭＳによってインストールされたアプリであり、画像形成装置上で様々な機能を提供するものである。アプリＡ２６５はＡＶＳを実行時に参照し、操作部１１２を介してユーザとやり取りを行うことが可能である。また、アプリＡ２６５は、ＡＰＩ２６３を介して、画像形成装置が提供するシステムライブラリ２６１や標準ライブラリ２６２の機能を利用できる。システムライブラリ２６１には、例えば、プリント処理やコピー処理やスキャン処理といったジョブを制御する機能も含まれる。アプリＡ２６５は、システムライブラリ２６１を利用することで画像形成装置が持つＮｅｔｗｏｒｋ部１０９を介して、ＰＣなどからデータを受信し、プリンタ部１２５を使って印刷することも可能である。標準ライブラリ２６２には計算処理や文字列処理、通信処理、画面制御処理、暗号処理などの画像形成装置上に限定されない汎用的な機能を提供するためのライブラリである。アプリフレームワーク２６０は、アプリのライフサイクルを管理する機能を提供するものである。
【００３７】
（仮想マシン）
仮想マシン２５０は、Ｊａｖａ（登録商標）に代表される所定のプログラミング言語で記述されたアプリの実行環境を提供するプログラム（仮想マシンプログラム）である。仮想マシン（あるいは仮想マシン部）２５０は、アプリ等のソースコードを仮想マシン用にコンパイルして得られたバイトコードを解釈するバイトコード解釈部２５１、解釈されたネイティブコマンドを制御するネイティブコマンド制御部２５２、仮想マシン２５０上で動作するアプリ用のリソース（たとえばアプリのバイトコードや生成したインスタンスなど）を管理する仮想マシンリソース管理部２５３、アプリからの操作部１１２への描画命令を処理するグラフィックス処理制御部２５４、コントローラユニット１００・操作部１１２・スキャナ部１２３・プリンタ部１２５の状態変化をアプリに通知するための制御を行うイベント制御部２５５、仮想マシン２５０がネイティブ制御部２０１への処理を要求する際に必要となるリソースを管理するネイティブリソース管理部２５６を含む。バイトコード解釈部２５１は、解釈したバイトコードをネイティブコマンドに変換し、ネイティブコマンド制御部２５２に処理を要求する。ネイティブコマンド制御部２５２は、ネイティブコマンドの内容に基づいて、ネイティブ制御部２０１、グラフィックス処理制御部２５４、イベント制御部２５５、仮想マシンリソース管理部２５３、ネイティブリソース管理部２５６に処理を要求する。例えば、ネイティブコマンド制御部２５２は、アプリからオブジェクトの新規生成要求を受けた時、仮想マシンリソース管理部２５３に該当オブジェクトの生成とオブジェクトのライフサイクルの管理を要求する。なお、オブジェクトには変数や定数を格納するフィールドと呼ばれる領域や処理命令を格納するメソッドエリアからなり、これらも仮想マシンリソース管理部２５３で管理される。また、ネイティブコマンド制御部２５２は、アプリからの画面描画命令を受けた時、グラフィックス処理制御部２５４に画面の描画を要求する。グラフィックス処理制御部２５４は、ネイティブライブラリ２２０を用いて、描画の準備や制御を行うとともに、ネイティブグラフィックス制御部２１０に描画要求を行う。描画要求を発行して要求された処理を遂行する。また、ネイティブコマンド制御部２５２は、例えば、アプリによる操作部１１２に対する入力操作の検出要求を解釈した時、イベント制御部２５５に操作イベントの登録を要求する。イベント制御部２５５は、ウィンドウシステム２１４から入力イベントを検知すると、その入力イベントを登録している全てのアプリに通知する。なお、イベント制御部２５５は、コントローラユニット１００が省電力状態に変化したときのイベントやスキャナ部１２３に用紙がセットされたときのイベントなども制御でき、操作部１１２に関するイベントの制御に限定されない。また、ネイティブコマンド制御部２５２は、仮想マシン２５０自身が必要とするリソースの管理をネイティブリソース管理部２５６に要求する。ネイティブリソース管理部２５６は、仮想マシン２５０が動作に必要とする領域の確保や、スレッドの確保などをネイティブライブラリ２２０に要求する。その他、ネイティブリソース管理部２５６は、グラフィックス処理制御部２５４がネイティブグラフィックスライブラリ２１１から確保した内部的に利用する領域の管理も行う。
【００３８】
（ネイティブ制御部）
ネイティブ制御部２０１は、仮想マシン２０１による要求を処理し、また、仮想マシン２０１に対してイベントを通知するなどの処理を行う。ネイティブ制御部２０１は、ネイティブグラフィックス制御部２１０、ネイティブライブラリ２２０、ＯＳ２３０、ドライバ２４０を含む。ネイティブグラフィックス制御部２１０は、グラフィックスライブラリ２１１、ウィンドウシステム２１４、グラフィックスドライバ２１５、フレームバッファドライバ２１６を含む。ネイティブグラフィックス制御部２１０は主に、ＲＡＭ１０２上に確保された領域への画面情報の書き出しと、その情報を操作部１１２に出力する機能を提供する。ここで、これらの機能は、ＣＰＵ１０１もしくはＧＰＵ１３０またはその両方により行われる。
【００３９】
グラフィックスライブラリ２１１は、画面の描画に関するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を提供している。グラフィックスライブラリ２１１は、仮想マシン２１０のグラフィックス処理制御部２５４からＡＰＩを介してコマンド（あるいは関数）の呼び出しを受け付けると、呼び出されたコマンドに応じて画像処理を行い、ウィンドウシステム２１４にその結果を描画するように要求する。なお、グラフィックスライブラリ２１１は、複数のライブラリから構成されていても構わない。例えば、直線や四角形といった低レベルな描画処理に特化したライブラリや、透過処理・ベクトル描画などの高レベルな描画処理に対応したライブラリが同一の環境に存在しうる。本実施の形態では、透過処理に対応した高レベルな透過対応グラフィックスライブラリ２１２と、透過処理に未対応であるがその分高速な透過未対応グラフィックスライブラリ２１３がある。ある画像オブジェクトに他の画像オブジェクトを合成して描画する場合に、画像オブジェクトの色及び透過度（あるいは不透過度）を反映して行う画像合成が、透過処理に対応している描画処理である。透過度を全く反映せず、たとえば上書き合成のみをサポートする描画処理が透過処理非対応の描画処理である。グラフィクスライブラリの中の関数による描画要求を受けたウィンドウシステム２１４は、ウィンドウシステム２１４の設定情報に基づいて、適切な画面出力に関するドライバに描画処理の処理要求をする。ここで、「適切な画面出力に関するドライバ」はウィンドウシステム２１４の設定情報により予め決められている。また設定情報の変更によって切り替えることもできる。基本的にはフレームバッファドライバ２１６が提供する機能は、グラフィックスドライバ２１５が提供する機能を含むか、あるいは両者は同等である。同等でない場合に、グラフィックスドライバ２１５が提供できない機能についてはフレームバッファドライバ２１６が利用される。たとえば、フレームバッファドライバ２１６が提供する機能が、グラフィックスドライバ２１５が提供する機能と同等であれば、ウィンドウシステム２１４はグラフィックスドライバ２１５のみに対して描画処理を要求する。これは、ＧＰＵが、グラフィックスドライバも含めて透過処理に対応している場合である。ＧＰＵが透過処理に対応していなければ、フレームバッファへの描画はフレームバッファドライバ２１６を用い、他の機能、たとえばフレームバッファの画像データを操作部１１２の画像バッファに書き込む処理についてはグラフィックスドライバ２１５を用いる。
【００４０】
ここで、ウィンドウシステム２１４は、画面描画に関する機能に限らず、画面をウィンドウという単位で制御する機能や、操作部１１２からの入力を受けた入力ドライバ２４２からの信号を制御する機能などを有する。ウィンドウシステム２１４からの描画要求を受けとったグラフィックスドライバ２１５は、ＧＰＵ１３０に対して描画命令を発行する機能を有し、ＧＰＵ１３０は描画命令に応じて操作部１１２の表示部（表示用バッファ）に描画内容（画像データ）を出力する。フレームバッファドライバ２１６は、ウィンドウシステム２１４からの描画命令に基づいて、フレームバッファデバイスとよばれる操作部１１２の表示部と紐づいたＲＡＭ１０２上で管理されるメモリ領域（フレームバッファとも呼ぶ。）に描画内容を出力する。また、ウィンドウシステム２１４は、描画要求対象の画像データを操作部１１２の表示部に出力する以外に、出力されない画面（以下、オフスクリーン）としてＲＡＭ１０２に書き出すこともできる。そして、グラフィックスライブラリ２１１は、ウィンドウシステム２１４のオフスクリーンへの描画機能を利用できる。なお、操作部１１２に出力（すなわち表示）される画面（オンスクリーン）は、ウィンドウシステム２１４が制御しているウィンドウの一部もしくは全部として割り当てられる。
【００４１】
オペレーティングシステム（ＯＳ）２３０には一般的はリアルタイムＯＳが使用されるが、昨今ではＬｉｎｕｘ（登録商標）等の汎用ＯＳが使用されることもある。ネイティブライブラリ２２０は、ＯＳ２３０の機能を呼び出すためのシステムコールや、ファイルシステム制御、スレッド制御、プロセス制御、メモリ制御といった機能を提供する。ドライバ２４０は、デバイスを制御するためのプログラムであり、ＯＳ２３０の起動時にＲＡＭ１０２にロードされるものや、必要に応じてロードされるものがある。例えば、ネットワークドライバ２４１は、通信部１１１の制御、入力ドライバ２４２は、操作部Ｉ／Ｆ１０６の制御、プリンタ・スキャナドライバはスキャナ部１２３やプリンタ部１２５を制御する機能を提供する。なお、説明の便宜上、画面描画に関するグラフィックスドライバ２１５とフレームバッファドライバ２１６は、ドライバ２４０に含めていないが、ドライバ２４０の１つと解釈できる。また、ドライバ２４０には、上述した資源以外を制御するものが含まれていてもかまわない。
【００４２】
＜グラフィックス処理制御部＞
図３は、仮想マシン２５０に含まれたグラフィックス処理制御部２５４の詳細を表すソフトウェア構成図の一例である。グラフィックス初期化部３０１は、仮想マシン２５０の起動時やオフスクリーン生成時にネイティブリソース管理部２５６に、対象となるスクリーンの領域の管理を要求する。なお、スクリーンとは、仮想マシン２５０が描画可能な領域のことである。また、グラフィックス初期化部３０１は、グラフィックスコンテキスト（以下、ＧＣともいう）の生成を行う。ここで、グラフィックスコンテキストとは、スクリーンに紐づいた情報であり、描画する色や描画範囲など、描画に関する情報（描画属性）を格納しているリソースである。またたとえばＪＡＶＡ（登録商標）においては、グラフィックスコンテキストは定義済みのクラスであり、情報に加えて例えば特定の項目の値を変更するメソッド等も併せて定義されている。なお、グラフィックスコンテキストは、１つのスクリーンに対して複数取得可能である。例えば、本発明では、スクリーンごとに透過処理を行うグラフィックスコンテキストと透過処理を行わないグラフィックスコンテキストの２つのグラフィックスコンテキストを生成する。そして、ＧＣ切り替え部３０４が、使用するグラフィックスコンテキストを切り替える。スクリーン情報管理部３０２は、グラフィックス初期化部３０１によって生成されたスクリーンとスクリーンに付随する情報（色、描画範囲など）を管理している。ＧＣ管理部３０３は、グラフィックス初期化部３０１によって生成されたグラフィックスコンテキストを管理している。グラフィックス描画制御部３０５は、コンテンツを描画するための準備を行い、線描画部３０６、文字描画部３０７、画像描画部３０８、矩形描画部３０９、点描画部３１０およびネイティブグラフィックス制御部２１０に描画の要求を行う。なお、コンテンツとは、スクリーンに描画する線、矩形、文字、画像などの描画オブジェクトの総称である。線描画部３０６は、スクリーンに線を描画する機能を有する。文字描画部３０７は、スクリーンに文字を描画する機能を有する。画像描画部３０８は、スクリーンに画像を描画する機能を有する。矩形描画部３０９は、スクリーンに矩形を描画する機能を有する。点描画部３１０は、スクリーンに点を描画する機能を有する。なお、円や多角形の描画は、線描画部３０６や点描画部３１０を組み合わせて実現可能である。それゆえ、仮想マシン２５０が描画可能なコンテンツは、本実施の形態であげている線や文字などに限定されるものではないことに注意されたい。
【００４３】
＜グラフィックス初期化部による初期化処理＞
図４は、グラフィックス初期化部３０１によって行われる初期化処理のフローチャートを示した図である。本フローチャートは、仮想マシン２５０の起動時や仮想マシン２５０がオフスクリーンの生成処理の要求を検知した時の処理である。ステップ４０１では、バイトコード制御部２５１から解釈されたスクリーンの初期化に関するネイティブコマンドを、ネイティブコマンド制御部２５２がグラフィックス初期化部３０１に通知する。ステップ４０２では、グラフィックス初期化部３０１は、通知内容に即したサイズのスクリーンを生成するように、グラフィックスライブラリ２１１に要求する。そして、グラフィックス初期化部３０１は、生成されたスクリーンをネイティブリソース管理部２５６に格納するように要求する。ステップ４０３では、グラフィックス初期化部３０１は、生成したスクリーンに関連した透過処理を行う透過グラフィックスコンテキスト（透過ＧＣ）の生成をグラフィックスライブラリ２１１に要求する。そして、生成した透過ＧＣをＧＣ管理部３０３に格納するように要求する。ステップ４０４では、ステップ４０３と同様に、生成したスクリーンに関連した透過処理を行わない不透過ＧＣの生成と格納とを行う。なお、本実施の形態では、透過ＧＣに基づいた描画処理は透過対応グラフィックスライブラリ２１２で、不透過ＧＣに基づいた描画処理は、透過未対応グラフィックスライブラリ２１３で描画することに対応する。ステップ４０２で生成されたスクリーンは、サイズのみならずたとえば色の指定もされる。色の指定には透過度の指定を含む。したがって生成されたスクリーンは、指定されたサイズを持ち指定された色を持つ。なおスクリーンやグラフィックスコンテキストは、前述したように例えばＪＡＶＡ（登録商標）においては事前定義されたクラスであり、スクリーンやグラフィックスコンテキストの生成とはそのインスタンスの生成により実現できる。
【００４４】
＜オブジェクトの例＞
図５は、仮想マシンリソース管理部２５３で管理されている描画処理に関するオブジェクトの情報を示す概念例である。この図では、ＣｏｐｙＡｐｐｌｅｔＣｌａｓｓというオブジェクトのｐａｉｎｔメソッドの内容を表している。図示されるｇ１やｇ２は、スクリーンに該当するものであり、ｇ１．ｄｒａｗｌｉｎｅ（０，０，１００，１００）という処理は、ｇ１スクリーンに２点間（０，０）、（１００、１００）に線を引くという処理にあたる。同様に、ｇ２．ｄｒａｗＲｅｃｔａｎｇｌｅはｇ２スクリーンに矩形を描画するという処理、ｇ２．ｄｒａｗＩｍａｇｅはｇ２スクリーンに画像やオフスクリーンを描画する処理にあたる。そして、ｇ２．ｓｅｔＣｏｌｏｒ（０，０，２５５）という処理は、これより後の処理でｇ２スクリーンに描画されるコンテンツの色を指定している。このメソッドは、グラフィックコンテキストとして設定された描画色を変更するメソッドである。このように、仮想マシンリソース管理部２５３には、コンテンツを描画する手順（メソッド）が事前定義されたオブジェクトが管理されている。このｐａｉｎｔメソッドを実行すると、図５に示した各命令が順次実行されてスクリーンｇ１、ｇ２それぞれにラインや矩形が描画され、スクリーンｇ２がオフスクリーンで描画される。なお、図５は、あくまで説明上のものであり、仮想マシンリソース管理部２５３でのオブジェクトの管理形態が本概念図に限定されるものではない。
【００４５】
＜コンテンツの描画処理＞
図６（Ａ）は、コンテンツの描画処理のフローチャートを示している。ステップ６０１では、仮想マシン２５０は、アプリから描画の要求を受け付ける。なお、描画要求の発生するタイミングとして、アプリの起動時や操作部１１２に対する入力検知に基づいた画面遷移、ウィンドウシステム２１４が管理している仮想マシン２５０のウィンドウが最上面でない状態から最上面になったときなどがある。ステップ６０２では、バイトコード制御部２５１は、仮想マシンリソース管理部２５３からバイトコードの参照が完了するまで、バイトコードを逐次解釈し、ステップ６０３〜ステップ６０５の処理を繰り返す。ステップ６０３では、バイトコード制御部２５１は解釈したバイトコードをネイティブコマンドとしてネイティブコマンド制御部２５２に通知する。ステップ６０４では、ネイティブコマンド制御部２５２は、描画に関するネイティブコマンドを処理するようにグラフィックス制御部２５４に要求する。ステップ６０５では、グラフィックス制御２５４がコンテンツの描画を行う（詳細は後述する）。
【００４６】
次に、実際にコンテンツが描画されていく過程を図６（Ｂ）に示す。なお、図６（Ｂ）は、画像形成装置用のコピーを実行するためのボタンがスクリーンに出力される過程を示す例である。ボタンを表示するために、たとえばひとつのクラスを定義し、その中にボタンを表示するためのメソッドを定義しておく。そのメソッドは、たとえばボタンの枠を描くｄｒａｗＲｅｃｔａｎｇｌｅ命令、ボタン内の文字を描くｄｒａｗＳｔｒｉｎｇ命令、ｄｒａｗＩｍａｇｅ命令を含む。各命令の引数は、矩形の対角点の位置や文字列などである。色や線幅、不透明度等、描画に必要な属性はグラフィックスコンテキストに定義されたものが適用される。そのメソッドの実行により、ステップ６１０では、仮想マシンリソース管理部２５３に格納されたｄｒａｗＲｅｃｔａｎｇｌｅ命令をバイトコード制御部２５１が解釈し、ネイティブコマンドとしてグラフィックス処理制御部２５４に描画要求を行った結果、スクリーンに矩形が描画される。ステップ６１１では、仮想マシンリソース管理部２５３に格納されたｄｒａｗＳｔｒｉｎｇ命令をバイトコード制御部２５１が解釈し、ネイティブコマンドとしてグラフィックス処理制御部２５４に描画要求を行った結果、スクリーンに「コピー」という文字が描画される。ステップ６１２では、仮想マシンリソース管理部２５３に格納されたｄｒａｗＩｍａｇｅ命令をバイトコード制御部２５１が解釈し、ネイティブコマンドとしてグラフィックス処理制御部２５４に描画要求を行った結果、スクリーンに画像が描画される。以上のステップを実行することで、スクリーン上にコピーボタンが描画される。このような処理を繰り返し行うことで、スクリーン上に様々なユーザインタフェースを実現できる。
【００４７】
（コンテンツの描画処理（Ｓ６０５））
図７は、ステップ６０５のコンテンツの描画処理の詳細なフローチャートを示す。ステップ７０１では、グラフィックス描画制御部３０５は、スクリーン情報管理部３０２から、コンテンツを描画するスクリーンに設定されている色情報を取得する。コンテンツを描画するスクリーンに設定されている色情報とは、たとえばスクリーンの背景色の色情報である。グラフィックス描画制御部３０５は、取得した色情報から透過値の有無を判別する。色情報には、たとえばＲＧＢの各色成分を含むが、透過処理の対象となる色であればさらに透過値（あるいはアルファチャネル）を含む。スクリーンに設定されている色が透過値そのものを含まなければ、そのスクリーンに描画されるコンテンツに対する透過処理は不要と判断できる。逆に、色に透過値が含まれ、かつ透過値が０より大きい（あるいは不透過度が１より小さい）なら、透過処理が必要である。そこで、０より大きい透過値がある場合は、ステップ７０２に、透過値がない場合は、ステップ７０３に処理を移す。ステップ７０２では、ＧＣ切り替え部３０４は、ＧＣ管理部３０３に透過ＧＣの取得を要求する。そして、取得した透過ＧＣを現在のグラフィックスコンテキストにし、スクリーンの色情報をグラフィックスコンテキストにセットする。グラフィックスコンテキストは、それを用いた描画の際に参照されるため、透過ＧＣをセットすれば、その後の描画では透過率を有する色で描画されることとなる。なお、ステップ７０１では、取得した色に透過値が含まれていても、その値が０（すなわち全く透過しない）であれば、透過処理不要としてステップ７０３に分岐するように構成してもよい。ステップ７０３では、ＧＣ切り替え部３０４は、ＧＣ管理部３０３に不透過ＧＣの取得を要求する。そして、取得した不透過ＧＣを現在のグラフィックスコンテキストにし、スクリーンの色情報をグラフィックスコンテキストにセットする。ステップ７０４では、グラフィックス描画制御部３０５は、描画するコンテンツの種類を判別する。コンテンツが線の場合はステップ７０５、文字の場合はステップ７０６、画像の場合はステップ７０７、矩形の場合はステップ７０８、点の場合はステップ７０９に処理を移す。ステップ７０５の線の描画、ステップ７０６の文字の描画の詳細は後述する。ステップ７０７では、画像描画部３０８は、仮想マシンリソース管理部２５３に格納されている画像オブジェクトを、バイトコード制御部２５１を介して取得する。画像描画部３０８は、取得した画像オブジェクトから画像サイズを取得し、グラフィックスライブラリ２１１に対して画像を描画するためのバッファの確保を要求する。そして、画像描画部３０８は、取得した画像バッファをネイティブリソース管理部２５６にいったん格納する。その後、画像描画部３０８は、画像バッファに画像オブジェクトのピクセルデータを格納し、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に画像バッファの描画を要求する。ステップ７０８では、矩形描画部３０９は、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に矩形の描画を要求する。ステップ７０９では、点描画部は、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に点の描画を要求する。
【００４８】
以上のようにして本実施形態の仮想マシン２５０は、アプリをコンパイルして得られたバイトコードを仮想マシンリソース管理部２５３にロードし、バイトコード制御部２５１が逐次解釈する。そして、解釈されたネイティブコマンドに基づいて、ネイティブコマンド制御部２５２が、グラフィックス処理制御部２５４に処理を要求し、グラフィックス処理制御部２５４がグラフィックスライブラリ２１１に描画の要求を送ることで、操作部１１２への描画処理を実現している。さらに、描画処理の過程において、スクリーンの色の透過値の有無に応じてグラフィックスコンテキストを切り替えて、透過処理の有無に応じたグラフィックスライブラリ２１１にコンテンツの描画を要求する。これにより、透過値のないコンテンツの描画には、透過非対応グラフィックスライブラリ２１３を使って描画することになる。このため、透過値がない場合には、透過のための描画処理を行わないために、透過対応グラフィックスライブラリ２１２で描画するよりも描画時間を短縮できる。これは、ＧＰＵ１３０もしくはグラフィックスドライバ２１５が透過処理に対応していなければ、透過対応グラフィックスライブラリ２１２はフレームバッファドライバ２１６を用いて、すなわちＣＰＵ１０１により描画をおこなわねばならないため、一層顕著である。このため、本発明の仮想マシン２５０のように、適切に、不透過対応グラフィックスライブラリ２１２を利用して、不要な透過処理を省略することで、ＣＰＵ１０１の負荷を下げることにつながり、画像形成装置のパフォーマンスを高められる。
【００４９】
（線の描画処理（Ｓ７０５））
図８は、線描画部３０６の詳細を表すソフトウェア構成図である。線描画処理制御部８０１は、グラフィックス描画制御部３０５からコンテンツの描画要求を受け付け、線種判定部８０５の結果に基づいて直線描画要求部８０５もしくは矩形描画要求部８０６にコンテンツの描画を要求する。コンテンツ記憶部８０３は、線描画処理制御部８０１からの要求に伴いコンテンツを格納する。線種判定部８０５は、コンテンツが垂直線・水平線かどうかを判別する。直線描画要求部８０５は、グラフィックスライブラリ２１１に直線の描画を要求する。矩形描画要求部８０６は、グラフィックスライブラリ２１１に幅が１となる矩形を用いて垂直線・水平線の描画を要求する。
【００５０】
図９は、ステップ７０５の線描画処理の詳細なフローチャートを示す。ステップ９０１では、線描画処理制御部８０１は、コンテンツに含まれる直線を構成する２点Ｐ１とＰ２の情報をＰ1ｘ、Ｐ１ｙ、Ｐ２ｘ、Ｐ２ｙとしてコンテンツ記憶部８０３に格納する。なお、Ｐｘは、直交座標系における水平軸をｘ軸としたときの点Ｐのｘ座標を、Ｐｙは、同様に垂直軸をｙ軸としたときのｙ座標を表すものである。ステップ９０２では、線描画処理制御部８０１は、線種判定部８０５に２点Ｐ１とＰ２からなる線分が垂直線もしくは水平線かどうかの判定を要求する。そして、線種判定部８０５は、Ｐ１ｘとＰ２ｘが等しいかどうかを判定する。等しい場合はステップ９０３に、そうでなければステップ９０６に処理を進める。ステップ９０３では、線種判定部８０５はＰ１ｙがＰ２ｙ以上かどうかを判定し、そうであればステップ９０４に、そうでなければステップ９０５に処理を進める。ステップ９０４では、線描画処理制御部８０１は、矩形描画要求部８０６に矩形の描画を要求する。要求をうけた矩形描画要求部８０６は、スクリーン情報管理部３０２から取得した色情報を現在のグラフィックスコンテキストにセットし、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に、横幅を１、縦幅をＰ１ｙ−Ｐ２ｙ＋１の矩形描画を要求する。ステップ９０５では、線描画処理制御部８０１は、矩形描画要求部８０６に矩形の描画を要求する。要求をうけた矩形描画要求部８０６は、スクリーン情報管理部３０２から取得した色情報を現在のグラフィックスコンテキストにセットし、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に、横幅を１、縦幅をＰ２ｙ−Ｐ１ｙ＋１の矩形描画を要求する。ステップ９０６では、線種判定部８０５は、Ｐ１ｙとＰ２ｙが等しいかどうかを判定する。等しい場合はステップ９０７に、そうでなければステップ９１０に処理を進める。ステップ９０７では、Ｐ１ｘがＰ２ｘ以上であればステップ９０８に、そうでなければステップ９０９に処理を進める。ステップ９０８では、線描画処理制御部８０１は、矩形描画要求部８０６に矩形の描画を要求する。要求をうけた矩形描画要求部８０６は、スクリーン情報管理部３０２から取得した色情報を現在のグラフィックスコンテキストにセットし、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に、横幅Ｐ１ｘ−Ｐ２ｘ＋１、縦幅を１の矩形描画を要求する。ステップ９０９では、線描画処理制御部８０１は、矩形描画要求部８０６に矩形の描画を要求する。要求をうけた矩形描画要求部８０６は、スクリーン情報管理部３０２から取得した色情報を現在のグラフィックスコンテキストにセットし、現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に、横幅Ｐ２ｘ−Ｐ１ｙ＋１、縦幅を１の矩形描画を要求する。ステップ９１０では、線描画処理制御部８０１は、直線描画要求部８０５に直線の描画を要求する。要求をうけた直線描画要求部８０５は、スクリーン情報管理部３０２から取得した色情報を現在のグラフィックスコンテキストにセットし、現在のグラフィックスコンテキストに基づいてグラフィックスライブ��リ２１１に、Ｐ１とＰ２間を結ぶ直線描画を要求する。
【００５１】
矩形描画要求を受けたグラフィックスライブラリ２１１は、ウィンドウシステム２１４を介して、その設定に応じたドライバに対して描画要求を発行する。本実施形態では、矩形描画が要求されたグラフィックスライブラリ２１１は、グラフィックスドライバ２１５に対して描画を要求する。したがって図９の矩形描画すなわち水平又は垂直の直線の描画は、ＧＰＵ１３０により実行される。本実施形態のような直線が垂直線や水平線の場合に限って、所定値の幅の矩形による描画を行うことは、ラスタラインに水平や垂直な直線（すなわち操作パネルの表示部の辺あるいは画素列に平行な直線）の描画を効率化する。これは、矩形描画は、ＧＰＵ１３０により高速に実行できるためである。画像形成装置のユーザインタフェースの直線のうち９割以上が垂直線や水平線で構成されており、これらの直線の描画が高速化されることは画像表示にあたり描画時間の短縮に対する貢献度が高い。
【００５２】
なお本実施形態では、描く直線の線幅を１としたが、色のみならず線幅もグラフィックコンテキストから取得し、その線幅を短辺の長さとし、指定された線の長さを長辺の長さとした矩形の描画（塗りつぶし）により線を描画することもできる。
【００５３】
（文字の描画処理（Ｓ７０５））
図１０は、文字描画部３０７の詳細を表すソフトウェア構成図である。文字描画処理制御部１００１は、グラフィックス描画制御部３０５からコンテンツの描画要求を受け付け、フォントデータ解釈部１００２にコンテンツをフォントデータとして解釈させる。そして、文字描画処理制御部１００１は、文字描画要求部１０１０にフォントデータの描画を要求する。フォントデータ解釈部１００２は、コンテンツを読み取り、フォントデータとして解釈し、フォントデータ記憶部１００３に格納する。なお、コンテンツをフォントデータとして解釈するということは、コンテンツが「Ａ」という文字であった場合、「Ａ」をスクリーンに出力するために、「Ａ」をラスタライズされたピクセルの集まり（フォントデータ）として認識することである。文字描画部３０７は、グラフィックスライブラリ２１１にフォントデータ記憶部１００３に格納されたフォントデータの描画要求を行う。点描画要求部１０１１は、フォントデータを構成するピクセルを解析し、不透過なピクセルをグラフィックスライブラリ２１１に描画するように要求する。
【００５４】
図１１は、ステップ７０６の文字描画処理の詳細なフローチャートを示す。ステップ１１０１では、文字描画処理制御部１００１は、コンテンツの解釈をフォントデータ解釈部１００２に要求する。ステップ１１０２では、フォントデータ解釈部１００２は、コンテンツをフォントデータに変換する。ステップ１１０３では、文字描画処理制御部１００１が、ステップ１１０４、ステップ１１０５の処理をフォントデータの全てのピクセルに対して行うように反復制御を行う。ステップ１１０４では、文字描画処理制御部１００１が、ピクセルが不透過であるかどうかを判定し、不透過であればステップ１１０５に、そうでなければ次のピクセルに処理を移すためステップ１１０３に戻る。不透過なピクセルが文字そのものを形成し、透過なピクセルは文字の背景部となる。ステップ１１０５では、点描画要求手段１０１１は、現在のグラフィックスコンテキストに基づいて、ピクセルの描画をグラフィックスライブラリ２１１に要求する。この結果、文字画像が画像メモリに描画され、操作パネルの表示部に当該文字を含む画像が表示される。
【００５５】
以上のようにして、透過ピクセルについては描画をスキップすることで、文字の描画に用いるグラフィックエンジンは透過対応である必要はなく、グラフィックスドライバ２１５やＧＰＵ１３０が透過対応であるか否かに関わらずＧＰＵ１３０を用いて文字を描画することができる。
【００５６】
＜本実施形態の作用効果＞
以上のように、本発明の仮想マシン２５０は、アプリをコンパイルして得られたバイトコードを仮想マシンリソース管理部２５３にロードし、バイトコード制御部２５１が逐次解釈する。そして、解釈されたネイティブコマンドをグラフィックス処理制御部２５４がグラフィックスライブラリ２１１に描画の要求を送ることで、操作部１１２への描画処理を実現している。さらに、描画処理の過程において、スクリーンの透過値に応じてグラフィックスコンテキストを切り替えて、適切なグラフィックスライブラリ２１１にコンテンツの描画を要求する。これにより、透過値のないコンテンツの描画には、透過未対応グラフィックスライブラリ２１３を使って描画することになる。このため、透過値がなくても必ず透過値を考慮して描画処理を行う透過対応グラフィックスライブラリ２１２で描画するよりも、描画時間を短縮できる。なぜならば、ＧＰＵ１３０が透過処理に対応してない、もしくは、対応していてもグラフィックスドライバ２１５が対応していなければ、ＧＰＵ１３０を使った透過処理の高速化は行えない。さらにいえば、ウィンドウシステム２１４が透過処理に対応した描画コマンドをグラフィックスドライバ２１５に発行する仕組みを利用していなければ、当然ながらＧＰＵ１３０の恩恵を享受できない。つまりは、このようなウィンドウシステム２１４上での動作を想定しているグラフィックスライブラリ２１１は、透過処理をＣＰＵ１０１で行うことになる。このため、本発明の仮想マシン２５０のように、適切に、不透過対応グラフィックスライブラリ２１２を利用して、不要な透過処理を省略することは、ＣＰＵ１０１の負荷を下げることにつながり、画像形成装置のパフォーマンスを高められる。
【００５７】
また、本発明の仮想マシン２５０は、線描画部３０６にて、線を構成する２点の位置関係から、グラフィックスライブラリ２１１に対して、直線描画もしくは矩形描画を要求する。直線の描画には、直線の傾きをもとにラスタライズが必要であるが、前述したように、必ずしもＧＰＵ１３０を活用してラスタライズができるわけでなく、グラフィックスライブラリ２１１がＣＰＵを用いて計算することもある。このようなケースでは、たとえ、直線が垂直線や水平線であったとしても、ラスタライズが一般的な直線と同様に行われる可能性があるため、その可能性を排除するには条件判定のオーバーヘッドが大きくなる。そのため、本発明のような直線が垂直線や水平線の場合に限って、幅１の矩形による描画を行うことは、ラスタライズの負荷を下げることにつながる。さらには、矩形描画に関しては、グラフィックスライブラリ２１１からＧＰＵ１３０を活用できる場合が多い。また、画像形成装置のユーザインタフェースの直線のうち９割以上が垂直線や水平線で構成されており、これらの直線の描画が高速化されることはユーザへの影響が大きい。
【００５８】
[第２の実施形態]
本実施形態では、文字の描画について特に説明する。本実施形態では、ＧＰＵ１３０及びグラフィックスドライバ２１５が透過処理対応であることが前提である。第１の実施の形態では、文字描画要求部１０１０は、点描画要求部１０１１を用いて、操作部１１２に文字の描画を行っていた。しかし、グラフィックスライブラリ２１１がＧＰＵ１３０を活用できている場合、点描画は、１ピクセルごとにＧＰＵ１３０を呼び出すような処理となる。このため、文字に含まれる不透過ピクセルの数が多くなればなるほど、ＣＰＵ１０１とＧＰＵ１３０間の通信が増えるため、ユーザへの応答速度が遅くなる。このような、点描画におけるオーバーヘッドを抑えるための実施の形態について説明する。なお、図中に表示される構成要素の番号やステップが第１の実施の形態と同じものについては、同じ機能、もしくは、同じ処理を指すため、説明を省略する。
【００５９】
図１２は、本実施形態の文字描画部３０７の詳細を表すソフトウェア構成図である。図１０との違いは、文字描画要求部１０１０に点描画要求部１０１１ではなくフォント画像描画要求部１２０１が含まれる点である。フォント画像描画要求部１２０１は、フォントデータを画像バッファに変換し、グラフィックスライブラリ２１１に文字を画像として描画するように要求する。
【００６０】
図１３は、本実施の形態での文字描画処理の詳細なフローチャートを示す。ステップ１３０１では、文字描画処理制御部１００１は、フォントデータから得られるフォントサイズを基に、グラフィックスライブラリ２１１に対してフォントデータを格納するための画像バッファの確保を要求する。そして、文字描画処理制御部１００１は、取得した画像バッファをネイティブリソース管理部２５６にいったん格納する。そして、文字描画処理制御部１００１は、スクリーン情報管理部３０２から色情報を取得し、フォントデータの不透過ピクセルと取得した色を割り当てたものを画像バッファに保存していく。ステップ１３０２では、フォント画像描画要求部１２０１は、画像バッファを現在のグラフィックスコンテキストに基づいてグラフィックスライブラリ２１１に描画するように要求する。
【００６１】
本実施の形態の仮想マシン２５０は、フォント画像描画要求部１２０１により文字を画像として描画する。文字を画像として描画する場合、文字を点描画で行った場合に比べてＧＰＵ１３０を利用する回数が減るため、オーバーヘッドの削減につながる。ＣＰＵ１０１を用いて画像バッファにフォントデータを格納する処理は増加するが、フォントデータに含まれる不透過なピクセルが多い場合は、ＧＰＵ１３０のオーバーヘッドの影響が大きいため文字描画処理の高速化につながる。特に、画像形成装置のユーザインタフェースには、平均して１画面に２００文字程度であり、不透過なピクセルの数は１００００を超えるため、点描画要求部１０１１による描画はＧＰＵ１３０を１００００回以上呼び出すことになる。一方で、フォント画像描画要求部１２０１による描画は２００回程度に抑えられる。このため、ユーザの体感速度の向上に寄与する。
【００６２】
[第３の実施形態]
第２の実施の形態では、すべての文字を画像として描画することにより、文字描画処理の高速化を実現している。しかし、例えば「,」や「'」といった不透過のピクセルが少ないフォントデータに対しても、画像として描画することになる。不透過のピクセルが少なければ、ＧＰＵ１３０のオーバーヘッドよりもＣＰＵ１０１による画像バッファの生成と、ＧＰＵ１３０を用いた画像描画を合わせた処理時間の方が上回ることがある。このような、画像描画におけるオーバーヘッドを抑えるための実施の形態について説明する。なお、図中に表示される構成要素の番号やステップが第１および第２の実施の形態と同じものについては、同じ機能、もしくは、同じ処理を指すため、説明を省略する。
【００６３】
図１４は、文字描画部３０７の詳細を表すソフトウェア構成図である。図１０および図１２との違いは、文字描画要求部１０１０が点描画要求部１０１１とフォント画像描画要求部１２０１の２つを同時に備え、文字描画方法判定部１４０１と閾値格納部１４０２が含まれる点である。文字描画方法判定部１４０１は、フォントデータに含まれる不透過なピクセルの数と閾値格納部１４０２から得た閾値を比較し、文字の描画に点描画か画像描画のどちらを利用するかを判定する。なお、閾値格納部１４０２には、仮想マシン２５０の起動時に指定されるパラメータや、外部ファイルによって得られた数値、もしくは、画像形成装置に応じた適切な数値が格納されている。たとえば実験的に、あるはＧＰＵ１３０の処理能力を勘案して、文字を画像として描画した場合とピクセルごとに処理した場合とで、処理時間が等しくなるピクセル数を決定し、それを閾値とすればよい。
【００６４】
図１５は、本実施の形態での文字描画処理の詳細なフローチャートを示す。ステップ１５０１では、文字描画方法判定部１４０１は、フォントデータの不透過ピクセル数を数える。ステップ１５０２では、文字描画方法判定部１４０１は、閾値格納部１４０２から取得した閾値と不透過ピクセル数を比較する。なおピクセル数を数えつつ閾値と比較してもよい。閾値が小さい場合にはその方が効率的であることもある。不透過ピクセル数が閾値以下であれば、点描画を行うため、ステップ１１０３へ処理を移し、そうでなければ、画像描画を行うため、ステップ１３０１に処理を移す。
【００６５】
本実施の形態の仮想マシン２５０は、文字描画方法判定部１４０１が閾値によって文字の描画方法を変更する。これにより、全ての文字を画像として描画するのに比べて、不透過ピクセル数が少ないために、点による描画よりも処理時間がかかるような場合については、点描画を行えるようになるため、文字の描画時間が短縮される。
【００６６】
[第４の実施形態]
第３の実施の形態では、閾値によって、文字の描画方法を切り替えている。一方で、仮想マシン２５０がサポートするフォントサイズは複数あることが一般的である。このため、フォントサイズに応じた閾値を与えなければ、適切に描画方法を切り替えられない。これは、フォントサイズが複数種類にわたる場合、すべてのサイズについて適切な閾値を算出する必要があることを意味し、パフォーマンスチューニングの作業工数増加につながる。このような、複数のフォントサイズをサポートする仮想マシン２５０における文字の描画の切り替え方法について説明する。なお、図中に表示される構成要素の番号やステップが第１、第２および第３の実施の形態と同じものについては、同じ機能、もしくは、同じ処理を指すため、説明を省略する。
【００６７】
図１６は、文字描画部３０７の詳細を表すソフトウェア構成図である。図１４との違いは、文字描画要求部１０１０が閾値格納部１４０２ではなく、描画時間予測部１６０１を備えている点である。描画時間予測部１６０１は、１つの点の描画に必要な処理時間と不透過ピクセル数から点描画に必要な処理時間を点描画処理時間予測値として求める機能を有する。さらに、描画時間予測部１６０１は、フォントサイズから、その画像の描画に必要な処理時間をフォント画像描画時間予測値として求める機能を有する。
【００６８】
図１７は、本実施の形態での文字描画処理の詳細なフローチャートを示す。ステップ１７０１では、描画時間予測部１６０１は、フォントデータから不透過ピクセル数を求め、不透過ピクセル数から点描画処理時間予測値を求める。ステップ１７０２では、描画時間予測部１６０１は、フォントサイズからフォント画像描画処理時間予測値を求める。ステップ１７０３では、文字描画方法判定部１４０１は、点描画処理時間予測値がフォント画像描画時間予測値より小さければ点描画を行うため、ステップ１１０３へ、そうでなければ画像描画を行うため、ステップ１３０１へ処理を移す。
【００６９】
本実施の形態の仮想マシン２５０は、描画時間予測部１６０１が、フォントサイズおよび不透過ピクセル数から点描画処理時間予測値とフォント画像描画時間予測値を求める。そして、文字描画方法判定部１４０１がその予測値に基づいて文字の描画方法を変更している。これにより、事前に１つの点の描画に必要な処理時間と、画像サイズから画像の描画に必要な処理時間を予測するための計算式を割り出しておけば、フォントサイズごとに閾値を求めずとも、適切な描画方法を選択できるようになる。このため、パフォーマンスチューニングの作業工数を削減し、文字の描画時間を短縮できる。
【００７０】
［変形例］
また、本実施形態のように所要時間の予測を行うと、予測処理自体のオーバーヘッドが発生する。そこで、例えば図１７のステップ１１０１からステップ１７０３までの処理を予め行っておき、文字コード及びサイズごとに、ピクセル単位の処理か、あるいは画像としての処理か、いずれを行うか決定しておき、決定結果を文字コード及びサイズと関連付けて保存しておく。描画時には、ステップ１１０１，１１０２の後ステップ１７０３に進み、保存した前述の決定結果をステップ１７０３における判定基準として、ステップ１１０３またはステップ１３０１に分岐する。このように構成することも可能である。
【００７１】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014026541.tif 000003
【図２】
2014026541.tif 000004
【図３】
2014026541.tif 000005
【図４】
2014026541.tif 000006
【図５】
2014026541.tif 000007
【図６】
2014026541.tif 000008
【図７】
2014026541.tif 000009
【図８】
2014026541.tif 000010
【図９】
2014026541.tif 000011
【図１０】
2014026541.tif 000012
【図１１】
2014026541.tif 000013
【図１２】
2014026541.tif 000014
【図１３】
2014026541.tif 000015
【図１４】
2014026541.tif 000016
【図１５】
2014026541.tif 000017
【図１６】
2014026541.tif 000018
【図１７】
2014026541.tif 000019