特許第6036072号(P6036072)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤマハ株式会社の特許一覧

<>
  • 特許6036072-画像処理装置 図000002
  • 特許6036072-画像処理装置 図000003
  • 特許6036072-画像処理装置 図000004
  • 特許6036072-画像処理装置 図000005
  • 特許6036072-画像処理装置 図000006
  • 特許6036072-画像処理装置 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6036072
(24)【登録日】2016年11月11日
(45)【発行日】2016年11月30日
(54)【発明の名称】画像処理装置
(51)【国際特許分類】
   G09G 5/32 20060101AFI20161121BHJP
   G09G 5/30 20060101ALI20161121BHJP
   G09G 5/24 20060101ALI20161121BHJP
   G09G 5/00 20060101ALI20161121BHJP
   G06F 3/153 20060101ALI20161121BHJP
【FI】
   G09G5/32 640L
   G09G5/30 610L
   G09G5/24 650M
   G09G5/00 555A
   G09G5/32 640Z
   G09G5/24 620Z
   G09G5/32 650
   G06F3/153 336A
【請求項の数】5
【全頁数】16
(21)【出願番号】特願2012-205332(P2012-205332)
(22)【出願日】2012年9月19日
(65)【公開番号】特開2014-59496(P2014-59496A)
(43)【公開日】2014年4月3日
【審査請求日】2015年7月21日
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】100111763
【弁理士】
【氏名又は名称】松本 隆
(72)【発明者】
【氏名】西川 幸成
(72)【発明者】
【氏名】本目 光弘
【審査官】 中村 直行
(56)【参考文献】
【文献】 特開2008−197525(JP,A)
【文献】 特開昭58−067458(JP,A)
【文献】 特開2000−020046(JP,A)
【文献】 特開2002−123247(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09G 5/00 − 5/42G
G06F 3/153
(57)【特許請求の範囲】
【請求項1】
水平スキャンラインと垂直な方向に連続して文字を配置した文字列を描画する画像処理装置において、
1水平スキャンライン分の画像を表す画像データを記憶するラインバッファと、
前記文字列の表示態様を示す属性データに基づいて取得したフォントデータを利用して1水平スキャンライン分の画像データを生成し、前記ラインバッファに書き込む描画処理を実行する画像データ生成部と、
各水平走査期間において水平スキャンラインの跨る文字を、前記文字列の表示態様を示す前記属性データを参照して特定し、該当する文字についての描画処理の実行を前記画像データ生成部に指示するコントローラと、
を具備し、
前記属性データは、前記文字列についてのパラメータとして、表示/非表示フラグと処理文字番号と処理ライン番号とを含むととともに、前記文字列を構成する各文字についてのパラメータとして、表示開始位置および表示終了位置を示す情報、を含み、
前記表示/非表示フラグは、前記文字列が表示対象であるか否かを示すパラメータであり、
前記処理文字番号は、水平スキャンラインが前記文字列を跨ぐ場合に当該水平スキャンラインの跨る文字を示すパラメータであり、
前記処理ライン番号は、前記処理文字番号の示す文字の何ライン目を水平スキャンラインが跨ぐかを示すパラメータであり、
前記コントローラは、
水平スキャンラインが前記文字列を跨いでいる場合に前記文字列を表示対象と判定して前記表示/非表示フラグに表示を示す値を設定し、
前記表示/非表示フラグが表示を示す値である場合に、前記処理文字番号の示す文字を描画対象として、前記水平スキャンラインを更新する毎に前記処理ライン番号を更新しつつ、前記処理ライン番号の示すラインが前記描画対象の文字の表示開始位置と表示終了位置の間のラインであるか否かを判定し、
表示開始位置と表示終了位置の間のラインであると判定した場合に、前記処理ライン番号の示すラインについての描画処理の実行を前記画像データ生成部に指示する
ことを特徴とする画像処理装置。
【請求項2】
前記フォントデータには圧縮符号化が施されており、
前記属性データに基づいて取得したフォントデータをデコードして前記画像データ生成部に与えるデコード部を有し、
前記コントローラは、
表示対象と判定した文字についてのフォントデータのデコードを前記デコード部に指示するとともに、当該文字に後続する各文字についてのフォントデータのデコードの要否を前記属性データに基づいて判定し、デコードを要すると判定された文字についてフォントデータのデコードを前記デコード部に指示する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記コントローラは、前記処理文字番号の示す文字に後続する文字のうち、当該文字と前記処理文字番号の示す文字との間にある文字の表示幅の和に、前記処理文字番号の示す文字の表示終了位置から当該文字の表示開始位置を減算して得られる値と、当該文字の表示終了位置から前記処理ライン番号が示すライン数を減算して得られる値と、を加算して得られる値がフォントサイズ−1以上となった文字以降の文字について、フォントデータのデコードを不要と判定する
ことを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記画像データ生成部は、前記フォントデータとして、水平スキャンラインと垂直な方向に連続して文字を配置した文字列の描画に用いる縦方向文字列用フォントデータを利用することを特徴とする請求項1〜3の何れか1項に記載の画像処理装置。
【請求項5】
プロポーショナルフォントを用いずに前記文字列を表示する場合には、前記表示開始位置および前記表示終了位置を示す情報に、フォントデータの表す画像全体を表す値が設定されることを特徴とする請求項4に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、水平スキャンライン1本分の記憶容量を有するラインバッファを利用して画像データの描画および液晶ディスプレイなどの表示器への表示を行う画像処理装置に関する。
【背景技術】
【0002】
周知の通り、表示器への静止画や動画の表示制御は、描画アプリケーションに従って静止画や動画の画像データをバッファに書き込む描画処理とバッファ内の画像データを読み出して表示器に表示させる表示処理とを同時並行的に進めることで実現される。このような描画処理および表示処理を行う画像処理装置としては、1フレーム分の画像データを記憶するフレームバッファを備えたフレームバッファ方式の画像処理装置と、水平スキャンライン1本分の画像データを記憶するラインバッファを備えたラインバッファ方式の画像処理装置がある。ラインバッファ方式の画像処理装置は、フレームバッファ方式の画像処理装置に比較して画像データの書き込み先となるバッファの記憶容量が少なくてすむため、小型化に適し、車載用の画像表示システム(例えば、スピードメータなどのメータ類を画像表示により実現するシステム)など省スペース化が必要となるシステムの構築に好適である。なお、ラインバッファ方式の画像処理装置に関する文献として例えば特許文献1がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−215252号公報
【特許文献2】特開平03−184182号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、表示器の設置態様としては、垂直走査方向が上下方向(鉛直方向)となり、水平走査方向が左右方向となるように設置する態様が一般的であった。しかし、近年では、垂直走査方向が左右方向となり、水平走査方向が上下方向となるように反時計回りに90度回転させて表示器を設置する態様も多々見受けられるようになってきている。例えば、前述した車載用の画像表示システムでは、ダッシュボードの運転席側に表示器を設置する必要があるが、設置スペースに限りがあるため縦置きによる表示器の設置が必要となることが多い。以下、垂直走査方向が上下方向(鉛直方向)となり、水平走査方向が左右方向となるように配置された表示器を「横置き表示器」と呼び、これを反時計回りに90度回転させて設置された表示器のことを「縦置き表示器」と呼ぶ。なお、「横置き表示器」を時計回りに90度回転させて設置された表示器のことを「縦置き表示器」としても良い。
【0005】
表示器に表示される画像は、スプライトなどの図柄や文字列、線などの表示要素を多数組み合わせて構成されている。横置き表示器における文字列の表示は、図6(a)に示すように、文字列を構成する各文字のフォントを水平走査方向に並べて表示することで実現されていた。これに対して、縦置き表示器に文字列を表示する場合には、文字列の読み取りを容易にするために、図6(b)に示すように、文字列を構成する各文字のフォントとして、図6(a)に示すものを時計回りに90度回転させたフォント(すなわち、文字の高さ方向が水平走査方向に一致するフォント)を垂直走査方向に並べて表示することが必要となる。以下では、図6(a)に示すように、構成文字のフォントを水平走査方向に並べて構成される文字列を「横方向文字列」と呼び、図6(b)に示すように、構成文字のフォントを垂直走査方向に並べて構成される文字列を「縦方向文字列」と呼ぶ。また、以下では、横方向文字列を構成するためのフォントを「横方向文字列用フォント」と呼び、縦方向文字列を構成するフォントを「縦方向文字列用フォント」と呼ぶ。
【0006】
横方向文字列の表示においては、例えば図6(c)に示すように、文字毎に表示開始位置XSおよび終了位置XE(フォント画像の左端を原点とする位置)の指定が可能なプロポーショナルフォントを用い、各文字のフォント画像を空白部分を互いに重ね合わせて表示することにより、文字間の空白が少なくなるように表示することができた。しかし、縦方向文字列を表示する機能を備えたラインバッファ方式の画像処理装置は従来提案されておらず、ラインバッファ方式の画像処理装置を用いてプロポーショナルフォントによる縦方向文字列の表示はできなかった。
【0007】
本発明は上記課題に鑑みて為されたものであり、ラインバッファ方式の画像処理装置に、プロポーショナルフォントによる縦方向文字列の表示を行わせることを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために本発明は、表示器における1スキャンライン分の画像を表す画像データを記憶するラインバッファと、前記表示器に表示させる文字列の表示態様を示す属性データであって、当該文字列を構成する各文字の表示開始位置および表示終了位置を示す情報を含む属性データが格納される汎用テーブルと、各種の文字のフォントを表すフォントデータを格納したメモリから、読み出しを指示された文字のフォントデータを読み出すメモリインタフェースと、前記メモリから読み出されたフォントデータを利用して1スキャンライン分の画像データを生成し、前記ラインバッファに書き込む描画処理を実行する画像データ生成部と、各水平走査期間において水平スキャンラインの跨る文字を前記汎用テーブルに格納された属性データを参照して特定し、該当する文字についての描画処理の実行を前記画像データ生成部に指示するコントローラと、を具備し、前記文字列は、当該文字列を構成する各文字の高さ方向が水平走査方向に一致し、かつ、各文字を垂直走査方向に並べた縦方向文字列であり、前記コントローラは、水平スキャンラインが縦方向文字列を跨いでいる場合に水平スキャンラインの跨る文字および当該文字の何ライン目を跨いでいるかを示すパラメータを水平スキャンラインを更新する毎に更新する一方、当該パラメータの示す文字の前記表示開始位置から前記表示終了位置の間に水平スキャンラインが跨っている場合に当該文字を表示対象と判定し前記パラメータの示すラインについての描画処理の実行を前記画像データ生成部に指示することを特徴とする画像処理装置、を提供する。
【0009】
より詳細に説明すると、縦方向文字列の属性データが汎用テーブルに格納されると、コントローラはその縦方向文字列に対応づけてレジスタ等に第1および第2のパラメータを設定する。ここで、第1のパラメータとは、水平スキャンラインが当該第1のパラメータに対応する縦方向文字列を跨いでいる場合に、水平スキャンラインの跨る文字を示すパラメータであり、第2のパラメータとは、当該第1のパラメータの示す文字の何ライン目を水平スキャンラインが跨いでいるのかを示すパラメータである。なお、第1のパラメータの初期値は、縦方向文字列の先頭の文字を示す値であり、第2のパラメータの初期値は上記先頭の文字の先頭ラインを示す値である。本発明においては、水平スキャンラインが更新される毎に第1および第2のパラメータが更新され、第1のパラメータの示す文字の表示開始位置から表示終了位置の間に水平スキャンラインが跨っている場合に第2のパラメータの示すライン(すなわち、当該文字において水平スキャンラインが重なっているライン)についての描画処理が実行され、縦方向文字列を構成する各文字のフォントの表示開始位置から表示終了位置までの画像データが先頭文字のものから順に1ライン分ずつラインバッファに描画される。これにより、プロポーショナルフォントによる縦方向文字列の表示が実現される。上記第1および第2のパラメータの初期化については、汎用テーブルへの縦方向文字列の属性データの書き込みの際にホストCPUに行わせても良く、また、画像処理装置の初期化の際に行っても良い。なお、特許文献2には、文字列の縦書きレイアウトについての記載があるが、縦置き表示器における縦方向文字列の表示制御を開示するものではなく、本願発明とは全く異なる技術である。
【0010】
より好ましい態様においては、前記メモリに記憶されているフォントデータには圧縮符号化が施されているとともに、前記メモリから読み出されたフォントデータをデコードして前記画像データ生成部に与えるデコード部を有し、前記コントローラは、表示対象と判定した文字についてのフォントデータのデコードを前記デコード部に指示するとともに、当該文字に後続する各文字について圧縮符号化データのデコードの要否を前記属性データに基づいて判定し、デコードを要すると判定された文字についての圧縮符号化データのデコードを前記デコード部に指示することを特徴する。具体的には、前記コントローラは、第1のパラメータの示す文字に後続する文字のうち、当該文字と第1のパラメータの示す文字との間にある文字の表示幅の和(すなわち、それら各文字についての表示終了位置から表示開始位置を減算して得られる値の和)に、第1のパラメータの示す文字の表示終了位置から当該文字の表示開始位置を減算して得られる値と、当該文字の表示終了位置から前記第2のパラメータを減算して得られる値と、を加算して得られる値がフォントサイズ−1以上となった文字以降の文字について、圧縮符号化データのデコードを不要と判定する。詳細については本発明の実施形態の説明(より正確には、動作例(B−2)の説明)において明らかにするが、このような態様によれば、メモリに記憶されているフォントデータに圧縮符号化が施されており、かつデコード対象の画素に先行する複数の画素のデコード結果が必要となる圧縮符号化方式が採用されている場合であっても、ラインバッファ方式の画像処理装置に、プロポーショナルフォントによる縦方向文字列の表示を行わせることが可能になる。
【0011】
また、別の好ましい態様においては、前記メモリには、文字の高さ方向を水平走査方向に一致させたフォントを表す縦方向文字列用フォントデータが格納されており、縦方向文字列の属性データでは、構成文字の描画に縦方向文字列用フォントデータを用いることが指定されていることを特徴とする。このような態様によれば、縦方向文字列を構成する各文字の表示を行う際に、横方向文字列用のフォントに時計回りに90度の回転編集を施して使用する態様に比較して、演算処理量が削減され、描画性能の低下や演算回路の規模増大を回避することが可能になる。
【図面の簡単な説明】
【0012】
図1】本発明の一実施形態の画像表示LSI100Aの構成例を示す図である。
図2】縦方向文字列の属性データを説明するための図である。
図3】プロポーショナルフォントを用いない場合、およびプロポーショナルフォントを用いた場合の各々におけるに縦方向文字列の表示例を示す図である。
図4】プロポーショナルフォントを用いずに縦方向文字列の表示を行う場合の画像表示LSI100Aの動作を説明するための図である。
図5】プロポーショナルフォントを用いて縦方向文字列の表示を行う場合の画像表示LSI100Aの動作を説明するための図である。
図6】表示器における文字列の表示態様を説明するための図である。
【発明を実施するための形態】
【0013】
(A:構成)
図1は、この発明による画像処理装置の一実施形態である画像表示LSI(Large Scale Integrated circuit;大規模集積回路)100Aを含む画像表示システムの構成を示すブロック図である。図1では、画像表示LSI100Aの機能の理解を容易にするため、同画像表示LSI100Aに接続されたホストCPU201と、LCD(Liquid Crystal Display;液晶表示器)202と、ROM203が同画像表示LSI100Aとともに図示されている。図1に示す画像表示システムは、例えば乗用車などの車両に搭載され、スピードメータ等の画像や交通情報などを表す文字情報を表示する車載システムであり、LCD202は車両のダッシュボードの運転席側に縦置きされる。
【0014】
ホストCPU201は、図1に示す画像表示システムを制御するプロセッサである。ホストCPU201による制御の下でLCD202に表示される1フレーム分の画像は、スプライトと呼ばれる図柄の部品や文字列、線などの各種画像構成要素を組み合わせて構成されている。ホストCPU201は、LCD202に各種画像構成要素を表示させるためのコマンドやデータを画像表示LSI100Aに供給する。ROM203には、文字列を構成する各種文字のフォントおよび各種のスプライトについての圧縮形式の画像データや、アルファブレンディングに用いる圧縮形式のアルファデータが記憶されている。詳細については後述するが、本実施形態では、スプライトおよびフォント等の圧縮符号化方式として、デコード対象の画素に先行する複数の画素(例えば、スプライトの場合は左隣、左上および直上の3画素)のデコード結果が必要となる圧縮符号化方式が採用されている。
【0015】
画像表示LSI100Aは、ホストCPU201から与えられるコマンドやデータにしたがって、LCD202に画像を表示させるラインバッファ方式の画像処理装置である。図1に示すように、画像表示LSI100Aは、CPUインタフェース(図1では、「CPUI/F」と表記)101と、カラーパレット記憶部102と、汎用テーブル103と、レジスタ104と、コントローラ105Aと、ROMインタフェース(図1では、「ROMI/F」と表記)106と、デコード部107と、画像データ生成部108と、画像出力部109と、これら各部に動作クロックを供給するクロック生成部110と、を有している。
【0016】
CPUインタフェース101は、ホストCPU201から供給されるコマンドやデータを受け取って画像表示LSI100A内の関係する各部に供給するインタフェースである。カラーパレット記憶部102は、画像表示LSI100Aをカラーパレットモードで動作させる際のカラーパレットを表すカラーパレットデータを記憶する回路である。カラーパレットモードとは、例えば24bit(或いは16Bit)カラーのうちの予め指定された数分の色(例えば256色)によりカラー画像を表現する動作モードであり、カラーパレットデータとはそれらの色を指定するデータである。汎用テーブル103は、ホストCPU201からCPUインタフェース101を介して供給される属性データを記憶する属性データ記憶部の役割を担っている。レジスタ104は、スプライト表示等のための各種制御データを記憶する回路である。本実施形態では、カラーパレット記憶部102、汎用テーブル103、およびレジスタ104を各々別個に設けたが、1つの揮発性メモリ内の記憶領域の割り当てによりこれらの役割を実現しても良い。
【0017】
汎用テーブル103に格納される属性データは、各垂直走査期間においてLCD202に表示させる画像を構成するスプライトや文字列の表示態様(画面上のどの位置にどのような形で表示するのかなど)を示すデータである。属性データは、垂直走査期間毎にホストCPU201から供給され、CPUインタフェース101によってスプライトや文字列などの画像構成要素毎に汎用テーブル103に格納される。
【0018】
図2は、汎用テーブル103における文字列の属性データの格納例を示す図である。文字列の属性データには、文字列全体の表示態様(文字列の表示位置など)を表すデータと、当該文字列を構成する各文字を示すデータと、各文字の表示に用いるフォントタイプとが含まれる。図2において、アドレスがLYSAからLYEAの領域には、文字列全体の表示態様を示すデータ(図2におけるレイヤ#0、#1および#2の各々)がLCD202に表示させる画像に含まれる文字列の数分だけ格納される。
【0019】
例えば、図2に示すレイヤ#0は、同図2に示す文字列“ABCDE”の表示態様を示すデータである。このレイヤ#0には、当該文字列の表示位置(LCD202を横置きした場合の表示領域の左上隅を座標原点する当該文字列の左上隅の座標XおよびY)が含まれている。また、図2に示すレイヤ#0には、汎用テーブル103において上記文字列を構成する各文字(すなわち、文字番号0〜文字番号4の各文字)を示すデータ(例えば、文字コード)を記憶した領域を規定するアドレス(FCSAおよびFCEA)と、これら各文字の表示に使用するフォントの種類および文字の大きさ(水平走査方向の画素数SZXおよび垂直走査方向の画素数SZY)を示すフォントタイプ属性を記憶した領域のアドレス(FTYP)とが含まれている。そして、文字列を構成する各文字の表示にプロポーショナルフォントを用いる場合には、フォント画像内における文字の表示開始位置XS[n]および表示終了位置XE[n](nは、文字列の先頭の文字を0番目の文字とする文字番号)を示すデータがFCSAからFCEAアドレスで規定された領域に格納されている。
【0020】
図2に示すように、ROM203には、ゴシック体や明朝体などのフォントタイプ毎に各種文字について圧縮形式のフォントの画像データが文字コード順に格納されている。本実施形態では、上記文字番号の順に上記フォントタイプ属性の示すフォントの圧縮形式の画像データを読み出してデコードすることで、文字列を構成する各文字についての描画処理が実現される。
【0021】
本実施形態では、LCD202は縦置きされているため、LCD202に表示させる文字列は全て縦方向文字列とされている。そして、本実施形態では、縦方向文字列の表示を可能にするために、文字列に対応付けて、処理文字番号、処理ライン番号および表示/非表示判定フラグといった3種類のパラメータがレジスタ104に格納されている。具体的には、本実施形態では、文字列全体の表示態様を規定するデータ(例えば、図2におけるレイヤ#0)に上記3種類の新たなパラメータの格納先のアドレスが含まれている。なお、文字列全体の表示態様を規定するデータに上記3種類の新たなパラメータを含めておいても勿論良い。本実施形態では、文字列の属性データに対応付けてこれら3種類のパラメータがレジスタ104に格納されている否かによって表示対象の文字列が縦方向文字列であるか否かをコントローラ105Aに判別させることができる。これら新たな3種類のパラメータの役割については重複を避けるため動作例において明らかにする。また、本実施形態では、縦方向文字列の表示を容易にするために、縦方向文字列用フォント(すなわち、高さ方向が水平走査方向に一致するように配置された文字フォント)の圧縮形式の画像データがROM203に格納されており、縦方向文字列の属性データでは当該フォントタイプ属性として当該縦方向文字列用フォントを示す値がセットされている。
【0022】
コントローラ105Aは、各垂直走査期間において、表示対象の画像データのLCD202での表示に先行して、各種画像構成要素(すなわち、スプライト、文字列および線)の画像データの生成を画像データ生成部108に順次指令する回路である。具体的には、コントローラ105Aは、各垂直走査期間において、汎用テーブル103に記憶された各画像構成要素の属性データに基づき、それら画像構成要素の画像データを生成する処理の実行スケジュールを作成し、この実行スケジュールに従って、各種画像構成要素についての画像データ生成指示を画像データ生成部108に供給する。本実施形態では、前述した3種類の新たなパラメータの導入に加えて、コントローラ105Aに本実施形態の特徴を顕著に示す処理を実行させることで、縦方向文字列の表示が実現される。この点については、後に詳細に説明する。
【0023】
画像データ生成部108は、各種画像構成要素の画像データを先頭ラインから順に1ライン分ずつ生成して画像出力部109のラインバッファに書き込む処理をコントローラ105Aからの画像データ生成指示にしたがって実行する回路である。図1に示すように、画像データ生成部108は、デコード部107およびROMインタフェース106を介してROM203に接続されている。ROMインタフェース106は、デコード部107から与えられる指示に応じてROM203から圧縮形式の画像データ(スプライトの画像データであるスプライトデータ、或いはフォントの画像データであるフォントデータ)を読み出し、デコード部107に出力する。
【0024】
デコード部107は、コントローラ105Aによる制御の下、ROMインタフェース106を介してROM203から圧縮形式のスプライトデータ或いは圧縮形式のフォントデータを読み出し、コントローラ105Aにより指示された1ライン分の画像のデコードを画素単位で行ってそのデコード結果を画像データ生成部108に与える。図1に示すように、デコード部107は、圧縮形式のスプライトデータをデコードするためのパターンデコーダ107Aと、圧縮形式のフォントデータをデコードするためのフォントデコーダ107Bを含んでいる。図1では詳細な図示を省略したが、パターンデコーダ107Aおよびフォントデコーダ107Bの各々はROM203から読み出した圧縮データを格納するための第1のワークメモリと、後続画素のデコードに必要となる所定数分の画素データを保持しておくための第2のワークメモリとを有しており、第2のワークメモリの格納内容を順次更新しつつ第1のワークメモリに格納された圧縮データを1画素単位でデコードする。
【0025】
画像データ生成部108は、デコード部107から各画像構成要素の1ライン分の画像データを受け取り、図示せぬ記憶部に画像構成要素毎に記憶させる。画像データ生成部108は、スプライトレンダリング部108A、フォントレンダリング部108Bおよびラインレンダリング部108Cを含んでいる。スプライトレンダリング部108Aは、画像データ生成指示により描画を指示されたスプライトの1ライン分の画像データを上記記憶部から読み出し、その画像データ生成指示により指示された編集(拡大・縮小・変形、カラー演算など)を施してラインバッファへの書き込みを行う回路である。フォントレンダリング部108Bは、画像データ生成指示により描画を指示されたフォントの1ライン分の画像データを上記記憶部から読み出し、その画像データ生成指示により指示された編集(拡大・縮小・変形、カラー演算など)を施してラインバッファへの書き込みを行う回路である。そして、ラインレンダリング部108Cは、画像データ生成指示にしたがって線を表す画像データをラインバッファへ書き込む回路である。
【0026】
画像出力部109は、各々水平スキャンライン1本分の画像データを記憶可能な容量を持ったラインバッファ109Aおよび109Bを有している。これらのラインバッファ109Aおよび109Bは、一方が書き込み用ラインバッファ、他方が読み出し用ラインバッファとされ、LCD202の水平同期信号に同期して、その時点までに書き込み用ラインバッファであったものが読み出し用ラインバッファとされ、読み出し用ラインバッファであったものが書き込み用ラインバッファとされる。各水平走査期間では、読み出し用ラインバッファに記憶された1ライン分の画像データが読み出され、LCD202に供給されて表示される一方、1水平走査期間後に表示される1ライン分の画像データが画像データ生成部108によって書き込み用バッファに書き込まれる。
以上が画像表示LSI100Aの構成である。
【0027】
(B:動作)
次いで、画像表示LSI100Aの動作を説明する。以下では、新たに導入した3種類のパラメータ(処理文字番号、処理ライン番号、および表示/非表示フラグ)の役割を明確化するため、まず、プロポーショナルフォントを用いずに縦方向文字列の表示を行う場合について説明する。プロポーショナルフォントを用いない場合、縦方向文字列の表示は、図3(a)に示すように各文字の縦方向文字列用のフォントの画像を空白部分が互いに重なり合わないように垂直走査方向にすきまなく1列に並べて表示することで実現される。
【0028】
(B−1:プロポーショナルフォントを用いずに縦方向文字列の表示を行う場合の動作)
前述したように、画像表示LSI100Aの汎用テーブル103には、各垂直走査期間においてLCD202に表示させる画像を構成するスプライトや文字列等についての属性データの書き込みが垂直走査期間毎にホストCPU201によって行われる。前述したように本実施形態では、文字列は全て縦方向文字列とされている。ただし、本動作例においては、汎用テーブル103に書き込まれる文字列の属性データには各文字の表示開始位置および表示終了位置を示す情報は含まれていない。本動作例では、プロポーショナルフォントを用いずに縦方向文字列の表示が行われるからである。
【0029】
コントローラ105Aは、水平走査期間毎に、次の水平走査期間における水平スキャンラインがそれら属性データに対応する各画像構成要素を跨いでいるか否か(すなわち、次の水平走査期間において表示対象となるか否か)を判定し、表示対象と判定された画像構成要素についての画像データ生成指示を画像構成要素毎に生成して画像データ生成部108に与える処理を実行する。
【0030】
ここで、次の水平走査期間において表示対象となるか否かの判定対象が横方向文字列(図6(a)参照)であれば、当該横方向文字列の属性データの示す垂直走査方向の表示位置Y、垂直走査方向の当該横方向文字列の大きさSZY、および次の水平走査期間において描画する水平スキャンラインの位置VDが以下の式(1)の関係を満たす場合に、コントローラ105Aは当該横方向文字列を表示対象と判定する(スプライトについて表示対象であるか否かの判定を行う場合も同様である)。
Y≦VD≦Y+SZY・・・(1)
【0031】
これに対して、縦方向文字列の場合は、1文字目については前掲式(1)を用いて表示対象であるか否かを判定することができるが、2文字目以降については、前掲式(1)を用いて表示対象であるか否かの判定を行うことはできない。これは、縦方向文字列の2文字目以降の文字について前掲式(1)により表示/非表示の判定を行うには、当該2文字目以降の文字の各々の表示位置を示すデータが属性データに含まれている必要がある一方、このようなデータは文字列の属性データに含まれていないからである。また、縦方向文字列全体についての垂直走査方向の表示位置に判定対象の文字に先行する全ての文字の垂直走査方向の大きさを加算することで当該判定対象の文字の垂直走査方向の表示位置を算出することも不可能ではないが、このような表示位置の算出を2文字目以降の各文字について行うことは、描画性能の低下や演算回路の規模増大などの問題を生じさせることになる。
【0032】
そこで、本実施形態では、前述したように、処理文字番号、処理ライン番号および表示/非表示判定フラグの3つの新たなパラメータを導入することで、描画性能の低下や演算回路の規模増大などの問題を生じさせることなく、ラインバッファ方式の画像処理装置に縦方向文字列を表示させることを実現している。ここで、表示/非表示判定フラグは、次の水平走査期間における水平スキャンラインが、この表示/非表示判定フラグに対応する縦方向文字列を跨いでいるか否か(すなわち、当該縦方向文字列が次の水平走査期間において表示対象となるか否か)を示すパラメータである。処理文字番号は、縦方向文字列を次の水平走査期間における水平スキャンラインが跨いでいる場合に、当該水平スキャンラインの跨る文字を示すパラメータである。そして、処理ライン番号は、処理文字番号の示す文字のフォントの画像の何ライン目が当該水平スキャンラインと重なっているかを示すパラメータである。以下、これら3種類のパラメータを使用した縦方向文字列の表示制御を説明する。
【0033】
本実施形態では、上記3種類のパラメータは、画像表示LSI100Aが初期化されるときに全て0にリセットされる。なお、文字列についての属性データの書き込みの際にホストCPU201或いはコントローラ105Aによって上記3種類のパラメータに初期値として0をセットしても良い。
【0034】
コントローラ105Aは、まず、横方向文字列の場合と同様に前掲式(1)に示す演算を行って縦方向文字列の1文字目の表示/非表示を判定する。すなわち、コントローラ105Aは、次の水平走査期間において描画する水平スキャンラインの位置VDが縦方向文字列の属性データのレイヤ#0に含まれている表示位置Yに達するまで非表示と判定し、上記3種類のパラメータの更新を行わない。そして、次の水平走査期間において描画する水平スキャンラインの位置VDが縦方向文字列の属性データのレイヤ#0に含まれている表示位置Yに達すると(すなわち、VD=Yになると)、コントローラ105Aは、上記3種類のパラメータの更新を開始する。
【0035】
より詳細に説明すると、水平スキャンラインの位置VDが縦方向文字列の属性データのレイヤ#0に含まれている表示位置Yに達すると、コントローラ105Aは、表示/非表示判定フラグを1(すなわち、表示対象であることを示す値)にセットし、表示/非表示判定フラグが0にリセットされるまで、水平スキャンラインを更新する毎に(すなわち、水平スキャンラインの位置VDを1ずつインクリメントする毎に)、以下の第1および第2の処理を実行する。第1の処理は、その時点の処理文字番号および処理ライン番号を参照し、当該処理文字番号により示される文字の当該処理ライン番号により示されるラインの描画を画像データ生成部108に指示する処理である。そして、第2の処理は、処理ライン番号が文字の最終ラインを示す場合(具体的には、処理ライン番号=SZX−1の場合)には処理文字番号をインクリメントして後続の文字を示す値に更新するとともに処理ライン番号を当該後続する文字の先頭ラインを示す値(すなわち、0)に更新し、逆に、処理ライン番号が最終ラインを示していない場合には当該処理ライン番号をインクリメントして次のラインを示す値に更新する処理である。その後、コントローラ105Aは、処理文字番号が縦方向文字列の末尾の文字を示し、かつ処理ライン番号が当該文字のフォントの画像の最終ラインを示す値となったことを契機として表示/非表示フラグを0にリセットする。
【0036】
例えば、図3(a)に示す縦方向文字列について、表示位置(X,Y)として(7,7)が設定されており、かつ文字サイズとしてSZX=SZY=32が設定されている場合、水平スキャンラインの位置VDが0,1、2・・・と更新される過程において、上記3種類のパラメータは図4に示すように更新される。図4に示すように、VD=7〜166の間、上記縦方向文字列についての表示/非表示判定フラグは1となって当該縦方向文字列についての描画処理が行われる。具体的には、VD=7〜38の期間には処理文字番号=0であるから、上記縦方向文字列の1文字目(すなわち、“A”)についての描画処理が行われ、VD=38のとき、処理ライン番号は文字の最終ラインを示す“31”であるので、水平スキャンラインを更新する際に処理文字番号をインクリメントして“1”とし、処理ライン番号を“0”とする。そして、同様に、VD=39〜70の期間には処理文字番号=1であるから、上記縦方向文字列の2文字目(すなわち、“B”)についての描画処理が行われ、・・・VD=135〜166の期間には処理文字番号=4であるから、上記縦方向文字列の5文字目(すなわち、“E”)についての描画処理が行われといった具合である。そして、これら描画処理に後続して前述した表示処理が行われる結果、LCD202に縦方向文字列“ABCDE”が表示される。
【0037】
このように、本実施形態によれば、判定対象の文字に先行する全ての文字の垂直方向の大きさを加算することなく現処理ラインにおける表示対象であるか否かの判定を行うことができるので、1ライン分の記憶容量を有するラインバッファを利用して画像データの描画および表示器への表示を行う画像処理装置に、プロポーショナルフォントを用いない縦方向文字列の表示を行わせることが可能になる。
【0038】
(B−2:プロポーショナルフォントを用いて縦方向文字列を表示する場合の動作)
次いで、プロポーショナルフォントを用いて縦方向文字列の表示を行う場合の画像表示LSI100Aの動作を説明する。プロポーショナルフォントを用いる場合、縦方向文字列の表示は、属性データに含まれる各文字の表示開始位置XS[n]および表示終了位置XE[n]にしたがって、図3(b)に示すよう、各文字の縦方向文字列用のフォント画像を空白部分が互いに重なり合うように(文字番号=nの文字のフォントについて表示終了位置XE[n]により示される位置と次の文字(すなわち、文字番号=n+1の文字)について表示開始位置XS[n+1]により示される位置が一致するように)垂直走査方向に1列に並べて表示することで実現される。
【0039】
本動作例においても、コントローラ105Aは、次の水平走査期間において表示対象とする水平スキャンラインの位置VDを更新する毎に、前述した第1および第2の処理を実行する。ただし、プロポーショナルフォントを用いて縦方向文字列を行う場合の第1および第2の処理は、プロポーショナルフォントを用いない場合における各処理と下記の点で異なる。すなわち、第1の処理では、コントローラ105Aは、処理文字番号=mの場合、処理ライン番号が以下の式(2)を満たす場合にのみ、処理文字番号=mの文字のフォントの画像の当該処理ライン番号の示すラインについての描画処理の実行を画像データ生成部108に指示する。
XS[m]≦処理ライン番号≦XE[m]・・・(2)
【0040】
また、第2処理では、コントローラ105Aは、処理文字番号=mである場合、処理ライン番号が当該文字の表示終了位置XE[m]である場合に処理文字番号をインクリメントして後続の文字を示す値(すなわち、m+1)に更新するとともに処理ライン番号を当該後続の文字の表示開始位置(すなわち、XS[m+1])にリセットする。
【0041】
また、プロポーショナルフォントを用いない場合における第1の処理では、コントローラ105Aは、縦方向文字列を構成する各文字についての圧縮フォントデータのデコードをその表示順に1文字ずつ行ったが、プロポーショナルフォントを用いる場合には、各水平走査期間において複数種の圧縮フォントデータのデコードを行うことが必要となる場合がある。より詳細に説明すると、プロポーショナルフォントを用いる場合の第1の処理では、コントローラ105Aは処理文字番号の示す文字についての描画処理の実行を画像データ生成部108に指示することに加えて、当該文字に後続する各文字について圧縮フォントデータのデコードの要否を判定し、デコードを要すると判定した文字についての圧縮フォントデータのデコードをデコード部107に指示する。プロポーショナルフォントを用いて縦方向文字列の表示を行う場合に、水平走査期間内に複数種の圧縮フォントデータのデコードが必要となる場合がある理由は以下の通りである。
【0042】
例えば、図5(a)に示す縦方向文字列“ICFID”をLCD202に表示させる場合、縦方向文字列の1文字目の文字(すなわち、文字番号=0、図5(a)に示す例では1文字目の“I”)については、XS[0]≦処理ライン番号≦XE[0]である場合にのみLCD202への表示を行えば良い。したがって、処理ライン番号=XS[0]となったことを契機としてXS[0]に対応するラインを指定して当該文字についての圧縮フォントデータのデコードを開始すれば良く、処理ライン番号=XE[0]となり第2の処理において処理文字番号のインクリメントおよび処理ライン番号のリセットを行ったことを契機として、XS[1]に対応するラインを指定して文字番号=1の文字についての圧縮フォントデータのデコードを開始すれば良いかに見える。
【0043】
しかし、本実施形態では、フォントデータの圧縮符号化方式として、デコードの際に、デコード対象の画素に先行する所定数分の画素のデコード結果が当該デコード対象の画素のデコードに必要となる圧縮符号化方式が採用されている。つまり、圧縮フォントデータのデコードは、その先頭ラインからしか行えない。このため、文字番号=1の文字についての圧縮フォントデータのデコードを当該データの途中から行うことはできない。つまり、処理文字番号のインクリメントおよび処理ライン番号のリセットを行ったことを契機として次の水平走査期間において文字番号=1の文字についてのXS[1]に対応するラインの描画処理を行うためには、当該文字に対応する圧縮フォントデータの当該ラインに先行する部分(すなわち、空白部分)のデコードを先立って行っておく必要がある。例えば、水平スキャンラインが図5(a)に示すFLIN1である場合には、文字番号=0および1の各文字についての圧縮フォントデータのデコードを行い、水平スキャンラインが図5(a)に示すFLIN2である場合には、文字番号=1および3の各文字についての圧縮フォントデータのデコードを行う、といった具合である。これが、プロポーショナルフォントを用いて縦方向文字列の表示を行う場合に、水平走査期間内に複数種の圧縮フォントデータのデコードを行うことが必要となる理由である。
【0044】
このように、本実施形態では水平走査期間内に複数種の圧縮フォントデータのデコードを行うことが必要となる場合があるため、コントローラ105Aは処理文字番号の示す文字に後続する各文字について圧縮フォントデータのデコードが必要であるか否か(換言すれば、フォントの空白部分に水平スキャンラインが跨っている文字があるか否か)を判定する。具体的には、処理文字番号=mである場合、コントローラ105Aは、文字番号=m+k(k=1,2・・・)の各文字について以下の式(3)〜(5)に示す演算を行って指標値Dist3「m+k」を算出し、この指標値Dist3「m+k」がSZX−1よりも小さい文字については圧縮フォントデータのデコードが必要であると判定し、そのデコードをデコード部107に指示する。
Dist1[m+k]=XE[m]−XS[m+k]・・・(3)
Dist2[m+k]=処理ライン番号−Dist1[m+k]・・・(4)
Dist3[m+k]=XE[m+k]−Dist2[m+k]+F[m+k]・・・(5)
ただし、F[m+k]は文字番号=mの文字と文字番号=m+kの文字の間にある文字の表示幅の和(すなわち、k=1のときはゼロ、k≧2のときはj=1からk−1までの(XE[m+j]−XS[m+j])の和)である。
【0045】
図5(b)に示すように、k=1の場合、式(3)にしたがって算出されるDist1[m+1]は、文字番号=mの文字(図5(b)に示す例では、文字“I”)のフォント画像の表示終了位置と、文字番号=m+1の文字(図5(b)に示す例では、文字“B”)のフォント画像の表示開始位置との距離を現しており、式(4)にしたがって算出されるDist2[m+1]は、文字番号=mの文字についての処理ライン番号の示すライン(換言すれば、水平スキャンライン)が文字番号=m+1の文字のフォント画像の何ライン目に重なっているかを示している。
【0046】
式(3)にしたがって算出されるDist1[m+1]を式(4)の右辺に代入し、さらに式(4)にしたがって算出されるDist2[m+1]を式(5)の右辺に代入すれば明らかなように、Dist3[m+1]は、図5(b)に示すように、水平スキャンラインの位置と文字番号=m+1の文字のフォントの表示終了位置との距離を現している。したがって、Dist3[m+1]の値がSZX−1以上であれば、次の水平走査期間における水平スキャンラインが文字番号=m+1の文字以降のフォント画像の空白部分を跨ぐことはなく、当該文字以降についての圧縮フォントデータのデコードを行う必要はない。k≧2の場合も同様に、Dist3[m+k]は文字番号=m+kの文字のフォントの表示終了位置と、水平スキャンラインとの距離を現し、Dist3[m+k]の値がSZX−1以上であれば、次の水平走査期間における水平スキャンラインが文字番号=m+kの文字以降のフォント画像の空白部分を跨ぐことはなく、当該文字以降についての圧縮フォントデータのデコードを行う必要はない。これが、指標値Dist3[m+k]とSZX−1との大小比較により、文字番号=m+k以降の文字についての圧縮フォントデータのデコードの要否を判定することができる理由である。
【0047】
また、本実施形態において、処理文字番号の示す文字の直後の文字についてのみ圧縮フォントデータのデコードの要否を判定するのではなく、指示値Dist3の値がSZX−1以上になるまで処理文字番号の示す文字に後続する文字について圧縮フォントデータのデコードの要否を判定する。表示対象の縦方向文字列の構成によっては、水平スキャンラインが図5(a)のFLIN2である場合のように、処理文字番号の示す文字(図5(a)に示す例では、“C”)の直後の文字(図5(a)に示す例では、“f”)については圧縮フォントデータのデコードが不要であっても、さらに次の文字(図5(a)に示す例では、2文字目の“I”)について圧縮フォントデータのデコードが必要になる場合があるからである。
【0048】
以上説明したように、本実施形態によれば、上記第1および第2の処理をコントローラ105Aに実行させることで、プロポーショナルフォントによる縦方向文字列の表示が実現される。このように、本実施形態によれば、ラインバッファ方式の画像処理装置に、プロポーショナルフォントによる縦方向文字列の表示を行わせることが可能になる。
【0049】
(C:変形)
以上本発明の実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
(1)上記実施形態では、横方向文字列用のフォントの圧縮フォントデータの他に縦方向文字列用のフォントの圧縮フォントデータがROM203に予め格納されており、縦方向文字列の表示の際には後者を使用した。しかし、ROM203には横方向文字列用のフォントの圧縮フォントデータのみを格納しておき、縦方向文字列の表示の際には横方向文字列用の圧縮フォントデータ全体をデコードし、そのデコード結果の表すフォントの画像データに90度の時計回り回転を施して用いるようにしても良い。また、ROM203には縦方向文字列用の圧縮フォントデータのみを格納しておき、横方向文字列の表示の際には縦方向文字列用の圧縮フォントデータ全体をデコードし、そのデコード結果の表すフォントの画像データに90度の反時計回り回転を施して用いるようにしても良い。
【0050】
(2)上記実施形態では、ROM203に格納されているスプライトデータおよびフォントデータの圧縮符号化方式として先行する数画素のデコード結果を参照する方式が採用されていたが、他の方式を採用しても勿論良い。また、ROM203において圧縮符号化を施していないスプライトデータおよびフォントデータと圧縮符号化を施したものとが混在していても勿論良い。また、ROM203に非圧縮形式のスプライトデータおよびフォントデータのみを記憶させておく場合には、デコード部107を省略しても良いことは言うまでもない。
【0051】
(3)上記実施形態では、文字列を常に縦方向文字列として表示する場合について説明したが、文字列の属性データに当該文字列が縦方向文字列であるのか、それとも横方向文字列であるのかを示すフラグを含ませておき、当該フラグにしたがって縦方向文字列の表示制御(或いは横方向文字列の表示制御)をコントローラ105Aに行わせるようにしても良い。
【0052】
(4)上記実施形態では、プロポーショナルフォントによる縦方向文字列の表示を行わせる場合にのみ、属性データに各文字の表示開始位置および表示終了位置を示す情報が含まれていた。しかし、プロポーショナルフォントを用いるか否かを問わずに常に各文字の表示開始位置および表示終了位置を示す情報を属性データに含めておき、プロポーショナルフォントを用いない場合には、全ての文字について表示開始位置=0、表示終了位置=SZX−1をセットしておき、コントローラ105Aには常に(B−2)において説明した処理を実行させても良い。この場合、式(5)にしたがって算出されるDist3[m+k]は「(2+(k−1))×(SZX−1)−処理ライン番号」となる。ここで、全ての文字について処理ライン番号は、0≦処理ライン番号≦SZX−1となるのであるから、全ての文字についてDist3[m+k]は常にSZX−1以上となる。このため(B−2)における第1の処理において文字番号=m+kの文字について圧縮フォントデータのデコードが行われることはない。また、(B−2)における第2の処理では、処理文字番号=XE[m](=SZX−1)となったとき、処理文字番号および処理ライン番号のリセットが行われ、処理ライン番号はXS[m+1](=0)にリセットされる。つまり、上記のように表示開始位置および表示終了位置を設定しておけば、(B−2)における第1および第2の処理の処理内容は(B−1)における各処理の処理内容と完全に一致する。このように本変形例によれば、プロポーショナルフォントを用いるか否かを問わずに縦方向文字列の表示制御を統一的に行うことが可能になる。
【0053】
(5)上記実施形態では、車載用の画像表示システムへの本発明の適用例を説明したが、例えば表示器を有する冷蔵庫や洗濯器、炊飯器などの所謂情報家電に内蔵される画像表示システムに本発明を適用しても勿論良い。この種の情報家電においても、画像表示システムを内蔵するためのスペースや表示器の設置スペースを十分にとることができず、表示器の縦置きやラインバッファ方式の採用を余儀なくされることが多いことに加えて、文字情報の表示頻度は極めて高いと考えられるからである。同様の理由により、携帯電話機や携帯型ゲーム機、PDAなどの携帯型情報端末の画像表示システムに本発明を適用することも考えられる。
【0054】
(6)上記実施形態ではプロポーショナルフォントによる縦方向文字列の表示制御への適用例を説明したが、縦方向文字列のカーニング(文字間隔の調整)に利用することも可能である。また、上記各実施形態では、表示対象の文字列が全て縦方向文字列である場合について説明したが、縦方向文字列と横方向文字列とが混在していても勿論良い。
【符号の説明】
【0055】
100A…画像表示LSI、101…CPUインタフェース、102…カラーパレット記憶部、103…汎用テーブル、104…レジスタ、105A…コントローラ、106…ROMインタフェース、107…デコード部、107A…パターンデコーダ、107B…フォントデコーダ、108…画像データ生成部、108A…スプライトレンダリング部、108B…フォントレンダリング部、108C…ラインレンダリング部、109A,109B…ラインバッファ、109…画像出力部、110…クロック生成部、201…ホストCPU、202…LCD、203…ROM。
図1
図2
図3
図4
図5
図6