JP3219475B2 - 画像処理方法及び装置 - Google Patents

画像処理方法及び装置

Info

Publication number
JP3219475B2
JP3219475B2 JP20542192A JP20542192A JP3219475B2 JP 3219475 B2 JP3219475 B2 JP 3219475B2 JP 20542192 A JP20542192 A JP 20542192A JP 20542192 A JP20542192 A JP 20542192A JP 3219475 B2 JP3219475 B2 JP 3219475B2
Authority
JP
Japan
Prior art keywords
flow advances
memory
value
address
color
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.)
Expired - Fee Related
Application number
JP20542192A
Other languages
English (en)
Other versions
JPH0652323A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP20542192A priority Critical patent/JP3219475B2/ja
Priority to DE69326660T priority patent/DE69326660T2/de
Priority to EP93305911A priority patent/EP0586080B1/en
Publication of JPH0652323A publication Critical patent/JPH0652323A/ja
Priority to US08/788,574 priority patent/US6331897B1/en
Application granted granted Critical
Publication of JP3219475B2 publication Critical patent/JP3219475B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は画像処理装置に関し、ホ
ストコンピュータから送られたプリントデータやコマン
ド等に基づいて、文字、図形やラスターイメージ等をカ
ラー記録することができる画像処理装置に関するもので
ある。
【0002】
【従来の技術】図1は、PDL(Page Descr
iption Language、ページ記述言語)や
ページ記述コマンドを用いて、図形・文字の描画を行う
際に指定する座標点等の基準となる座標系(以後、この
座標系をユーザー座標系と呼ぶ)の一例を示している。
【0003】斜線の矩形部分は、有効印字領域(用紙内
で描画可能な領域)を示しており、図に示すように、有
効印字領域の縦の長さを有効印字領域高、横幅を有効印
字領域幅とする。
【0004】この図の座標系は、2次元のx−y直交座
標系であり、図に示すように有効印字領域の左下隅を原
点としている。
【0005】また、この座標系の座標単位は自由に設定
可能(例えば、0.01mmや1/72inch等)で
ある。
【0006】上述のユーザー座標系に基づいて設定され
た、図形描画等のPDLの記述要素やページ記述コマン
ドは、画像処理装置が受け取った順番に画像処理装置内
部で解析され、メモリに展開するための情報に変換され
る。
【0007】図2は、上述のメモリ展開情報作成の基準
となる座標系(以後、この座標系をプリンタ座標系と呼
ぶ)の一例を示している。
【0008】また、この座標系の座標単位は画像処理装
置の解像度によって決まる。(例えば、解像度が300
dpiの場合、座標単位は1/300inchとなる) 斜線の矩形部分は、図1の有効印字領域と同じものであ
る。
【0009】この座標系は、2次元のx−y直交座標系
であり、有効印字領域の左上隅を原点としている。
【0010】図3は、従来、PDLやページ記述コマン
ドに基づいてカラー記録を行う画像処理装置における内
部のRAM領域のメモリマップの一例を示している。
【0011】RAM領域は、システムワーク用のメモ
リ、空き領域、色材(トナーやインク)であるY(Ye
llow),M(Magenta),C(Cyan),
Bk(Black)それぞれのページ展開メモリ(図2
の有効印字領域の大きさ分のメモリ)で構成されてい
る。
【0012】システムワーク用のメモリは、画像処理装
置内部の制御に用いる情報(変数等)の格納領域や固定
のワーク領域等に用いられる。
【0013】空き領域は、メモリ展開情報の格納や文字
キャシュメモリ等に用いられる。
【0014】図4は、描画属性指定コマンドのうち、塗
りつぶし色指定コマンドの一例を示している。
【0015】このコマンドは、閉図形の内部を塗りつぶ
す色を指定するのに用いられる。
【0016】コマンドNo.は、描画属性指定により異
なり、各コマンド機能の識別に用いられる。
【0017】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0018】ここで、線色指定コマンドのデータ数パラ
メータの内容は4となる。
【0019】Y値,M値,C値,Bk値は、色材の原色
であるY(Yellow),M(Magenta),C
(Cyan),Bk(Black)の濃度データ値を示
している。
【0020】図5は、描画コマンドのうち、多角形描画
コマンドの一例を示している。
【0021】コマンドNo.は各描画機能により異な
り、各コマンド機能の識別に用いられる。
【0022】データ数パラメータの内容はデータ数パラ
メータの後に来るデータの個数を示している。
【0023】ここで、座標1〜nのx,y座標は、ユー
ザー座標系上の座標である。
【0024】図6は、図4の塗りつぶし色指定コマンド
を解析して作成された、メモリ展開情報の一例を示して
いる。
【0025】ここで、コマンドテーブルNo.は、各メ
モリ展開情報の識別に用いられる。
【0026】他のパラメータの内容は、図4と同じであ
る。
【0027】図7は、図5の多角形描画コマンドを解析
して作成された、メモリ展開情報の一例を示している。
【0028】ここで、コマンドテーブルNo.は、各メ
モリ展開情報の識別に用いられる。
【0029】データ数パラメータの内容はデータ数パラ
メータの後に来るデータの個数を示している。
【0030】x1,y1、・・・xn,ynは画像処理
装置の解像度をもとにプリンター座標系上の座標に変換
された座標である。
【0031】図8は、図1のユーザー座標系において、
座標単位を1mmとし、4つの座標(100,20
0)、(200,200)、(200,100)、(1
00,100)からなる多角形の描画を設定した場合の
図である。
【0032】図9は、図8の多角形描画を設定する際に
発行するコマンドの一例を示している。
【0033】図10は、図8のユーザー座標系上の多角
形描画を座標単位1/300inch(約1/11.8
mm)のプリンタ座標系上の多角形描画に変換した場合
の図を示している。
【0034】図に示すように、ここでは有効印字領域高
を400mmとしている。
【0035】4つの座標は、(1180,2360)、
(2360,2360)、(2360,3540)、
(1180,3540)となる。
【0036】図11は、図9の多角形描画コマンドを解
析して作成された、図10の多角形描画のメモリ展開情
報の一例を示している。
【0037】図12は、図6の塗りつぶし色指定のメモ
リ展開情報の設定の一例を示している。
【0038】ここで、Y値,M値,C値,Bk値は、0
〜255の範囲であり、Y値が255、その他の値は0
となっている。
【0039】図13は、図6の塗りつぶし色指定のメモ
リ展開情報のモノクロモード時における設定の一例を示
している。
【0040】モノクロモード時には、Y,M,C,Bk
によるカラー処理は行われず、Bkの色材を用いたグレ
イスケールによる処理が行われる。
【0041】グレイスケールの濃度値は0〜255の範
囲の値であり、本例の51という値は濃度20(51/
255)%]であることを示している。。
【0042】図14は、図10のような多角形をプリン
タ座標の座標単位で区切った図を示している。
【0043】ここで、この多角形のy座標の最小値は図
に示したypmin、y座標の最大値は図に示したyp
maxである。
【0044】この多角形の内部を塗りつぶすには、図に
示したleftxとrightxの間に対応する展開メ
モリに塗りつぶしパターンを展開することになる。
【0045】図15は、図14の多角形の内部を塗りつ
ぶす処理の一例を示したフロチャートを示している。
【0046】本例の展開メモリに対する描画論理は上書
きである。
【0047】ステップS300で、カラーモードかどう
かチェックする。
【0048】カラーモードの場合には、ステップS30
1に進んでカラーモード時の塗りつぶしの処理を行い、
処理を終了する。
【0049】モノクロモードの場合には、ステップS3
02に進んでモノクロモード時の塗りつぶしの処理を行
い、処理を終了する。
【0050】図16〜21は、図15のステップS30
1のカラーモード時の塗りつぶしの処理の概要を示した
フローチャートを示している。
【0051】ステップS310で、図6に示した塗りつ
ぶし色指定のメモリ展開情報を取り出してステップS3
11に進む。
【0052】ステップS311で、取りだした塗りつぶ
し色指定のメモリ展開情報から塗りつぶし色のY値,M
値,C値,Bk値を取りだし、それぞれP_Y,P_
M,P_C,P_Bkにセットして、ステップS312
に進む。
【0053】ステップS312で、図14のypmin
をβにセットしてステップS313に進む。
【0054】ステップS313で、塗りつぶすxの範囲
であるleftx,rightxを算出しステップS3
14に進む。
【0055】ステップS314で、leftx,rig
htxに対応する図3のYのページメモリ上のアドレス
・ビットを計算してステップS315に進む。
【0056】ステップS315で、ステップS314で
計算したleftxに対応するアドレス・ビットをそれ
ぞれylad,ylbit、rightxに対応するア
ドレス・ビットをそれぞれyrad,yrbitにセッ
トしてステップS316に進む。
【0057】ステップS316で、P_Yを0と比較す
る。
【0058】0と等しいならば、ステップS317に進
んでylad,ylbitとyrad,yrbitとの
間のメモリをクリアしてステップS321に進む。
【0059】0と等しくないならば、ステップS318
に進んでP_Yの値に対応したディザパターンの格納ア
ドレスを取り出してステップS319に進む。
【0060】ステップS319で、上記格納アドレスか
らディザパターンを取り出してステップS320に進
む。
【0061】ステップS320で、ylad,ylbi
tとyrad,yrbitとの間のメモリにステップS
318で取りだしたディザパターンを展開してステップ
S321に進む。
【0062】ステップS321で、leftx,rig
htxに対応する図3のMのページメモリ上のアドレス
・ビットを計算してステップS322に進む。
【0063】ステップS322で、ステップS321で
計算したleftxに対応するアドレス・ビットをそれ
ぞれmlad,mlbit、rightxに対応するア
ドレス・ビットをそれぞれmrad,mrbitにセッ
トしてステップS323に進む。
【0064】ステップS323で、P_Mを0と比較す
る。
【0065】0と等しいならば、ステップS324に進
んでmlad,mlbitとmrad,mrbitとの
間のメモリをクリアしてステップS328に進む。
【0066】0と等しくないならば、ステップS325
に進んでP_Mの値に対応したディザパターンの格納ア
ドレスを取り出してステップS326に進む。
【0067】ステップS326で、上記格納アドレスか
らディザパターンを取り出してステップS327に進
む。
【0068】ステップS327で、mlad,mlbi
tとmrad,mrbitとの間のメモリにステップS
326で取りだしたディザパターンを展開してステップ
S328に進む。
【0069】ステップS328で、leftx,rig
htxに対応する図3のCのページメモリ上のアドレス
・ビットを計算してステップS329に進む。
【0070】ステップS329で、ステップS328で
計算したleftxに対応するアドレス・ビットをそれ
ぞれclad,clbit、rightxに対応するア
ドレス・ビットをそれぞれcrad,crbitにセッ
トしてステップS330に進む。
【0071】ステップS330で、P_Cを0と比較す
る。
【0072】0と等しいならば、ステップS331に進
んでclad,clbitとcrad,crbitとの
間のメモリをクリアしてステップS335に進む。
【0073】0と等しくないならば、ステップS332
に進んでP_Cの値に対応したディザパターンの格納ア
ドレスを取り出してステップS333に進む。
【0074】ステップS333で、上記格納アドレスか
らディザパターンを取り出してステップS334に進
む。
【0075】ステップS334で、clad,clbi
tとcrad,crbitとの間のメモリにステップS
333で取りだしたディザパターンを展開してステップ
S335に進む。
【0076】ステップS335で、leftx,rig
htxに対応する図3のBkのページメモリ上のアドレ
ス・ビットを計算してステップS336に進む。
【0077】ステップS336で、ステップS335で
計算したleftxに対応するアドレス・ビットをそれ
ぞれklad,klbit、rightxに対応するア
ドレス・ビットをそれぞれkrad,krbitにセッ
トしてステップS337に進む。
【0078】ステップS337で、P_Bkを0と比較
する。
【0079】0と等しいならば、ステップS338に進
んでklad,klbitとkrad,krbitとの
間のメモリをクリアしてステップS342に進む。
【0080】0と等しくないならば、ステップS339
に進んでP_Bkの値に対応したディザパターンの格納
アドレスを取り出してステップS340に進む。
【0081】ステップS340で、上記格納アドレスか
らディザパターンを取り出してステップS341に進
む。
【0082】ステップS341で、klad,klbi
tとkrad,krbitとの間のメモリにステップS
340で取りだしたディザパターンを展開してステップ
S342に進む。
【0083】ステップS342で、βと図14のypm
axが等しいかどうか比較する。
【0084】等しいならば処理を終了する。
【0085】等しくないならば、ステップS343に進
んでβを1つインクリメントしてステップS313に戻
る。
【0086】図22〜23は、図15のステップS30
2のモノクロモード時の塗りつぶしの処理の概要を示し
たフロチャートを示している。
【0087】ステップS350で、図13に示したよう
な塗りつぶし色指定のメモリ展開情報を取り出してステ
ップS351に進む。
【0088】ステップS351で、取りだした塗りつぶ
し色指定のメモリ展開情報から塗りつぶし色のグレイス
ケール濃度値を取りだし、P_Gにセットして、ステッ
プS352に進む。
【0089】ステップS352で、図14のypmin
をβにセットしてステップS353に進む。
【0090】ステップS353で、P_Gの値に対応し
たディザパターンの格納アドレスを取り出してステップ
S354に進む。
【0091】ステップS354で、上記格納アドレスか
らディザパターンを取り出してステップS355に進
む。
【0092】ステップS355で、塗りつぶすxの範囲
であるleftx,rightxを算出しステップS3
56に進む。
【0093】ステップS356で、leftx,rig
htxに対応する図3のBkのページメモリ上のアドレ
ス・ビットを計算してステップS357に進む。
【0094】ステップS357で、ステップS356で
計算したleftxに対応するアドレス・ビットをそれ
ぞれklad,klbit、rightxに対応するア
ドレス・ビットをそれぞれkrad,krbitにセッ
トしてステップS358に進む。
【0095】ステップS358で、klad,klbi
tとkrad,krbitとの間のメモリにステップS
354で取りだしたディザパターンを展開してステップ
S359に進む。
【0096】ステップS359で、βと図14のypm
axが等しいかどうか比較する。
【0097】等しいならば処理を終了する。
【0098】等しくないならば、ステップS360に進
んでβを1つインクリメントしてステップS353に戻
る。
【0099】以上のように、従来、PDLやページ記述
コマンドに基づいて、カラー記録を行う画像処理装置の
制御においては、トナーやインクの色材であるY(Ye
llow),M(Magenta),C(Cyan),
Bk(Black)それぞれ用紙の有効印字領域の大き
さ分の展開メモリにコマンド解析より得られたメモリ展
開情報に基づいて描画パターンを展開していた。
【0100】また図14の多角形の内部を塗りつぶしを
図15〜23に示したような処理により行っていた。
【0101】
【発明が解決しようとしている課題】しかしながら、上
記の従来例では次のような欠点があった。
【0102】(1)1スキャンラインごとの塗りつぶし
の際に、Y,M,C,Bkの濃度値を検出し、その値に
よってY,M,C,Bk各ページメモリへの図形描画の
塗りつぶしを制御していたため、描画に時間を要してい
た。
【0103】(2)1スキャンラインごとの塗りつぶし
の際に、Y,M,C,Bkの濃度値に対応したY,M,
C,Bk各ディザパターンを格納領域から取りだしてペ
ージメモリへの図形描画の塗りつぶしを制御していたた
め、描画に時間を要していた。
【0104】(3)異なる論理描画の図形描画の塗りつ
ぶし処理に対しては、論理描画別の処理で行っていた
め、対応する論理描画の種類が多くなるほど制御に必要
なプログラムの量あるいはハードウエアの規模が増大す
るという欠点があった。
【0105】(4)カラーモードとモノクロモード(色
データをグレイスケールで出力するモード)を切り替え
可能な場合、図形描画の塗りつぶし処理に対しては、上
記のモード別の処理で行っていため、制御に必要なプロ
グラムの量ある いはハードウエアの規模が増すと
いう欠点があった。
【0106】本発明は、上述した従来例の欠点に鑑みて
なされたものであり、その目的とするところは、ホスト
コンピュータから送られたページ記述言語で記述されて
いる印刷データを受信し、印刷データをバンド単位に展
開し、バンド単位でデータの読み出しと書き込みを制御
するインクジェット方式等のプリンタである画像処理装
置において、カラーモードとモノクロモードの切り替え
処理を行う場合に、極力同一の制御で行うことにより、
従来に比べて制御に必要なプログラム量あるいはハード
ウェアの規模の軽減を図ることにある
【0107】
【課題を解決する為の手段】上記課題を解決するため
に、本発明は、ページ記述言語で記述されている印刷デ
ータを受信し、該印刷データをバンド単位に展開し、バ
ンド単位でデータの読み出しと書き込みを制御し、バン
ドメモリに対して印刷データを展開する関数のアドレス
が格納されているテーブルを有する画像処理装置であっ
て、前記印刷データをカラー出力する第1のモードと前
記印刷データをグレイスケール出力する第2のモードを
有し、前記テーブルには第1のモードと第2のモード時
に用いる前記関数のアドレスを格納する格納手段を有す
ることを特徴とする画像処理装置および、この画像処理
装置において、第1のモードと第2のモードのいずれの
場合にも、第1のモードと第2のモード時に用いる前記
関数のアドレスが格納されている前記テーブルを利用す
る画像処理方法を提供する。
【0108】上記課題を解決する為に、好ましくは、前
記格納されているアドレスに基づき、関数を実行し、図
形・文字の描画を制御する。
【0109】
【実施例】以下に、添付図面を参照して本発明の好適な
実施例を詳細に説明する。
【0110】図24は本発明の一実施例による画像処理
装置の回路構成を示すブロック図である。
【0111】図24のように、本実施例による画像処理
装置は、ホストコンピュータ1と画像処理装置本体2と
から構成されている。
【0112】ホストコンピュータ1はプリントデータや
印刷コマンド等を画像処理装置に送り、この画像処理装
置に記録処理を行わせるものである。 画像処理装置は
CPU、ROM、RAMを含むマイクロプロセッサシス
テムを有する。 すなわち、画像処理装置本体は、ホス
トコンピュータ1とのデータ送受のためのインターフェ
ース2、ホストコンピュータ1から送られたコマンドの
コマンドNo.に対応した解析プログラムへのジャンプ
アドレスが格納されるコマンド解析テーブル4を備え、
ホストコンピュータ1から送られたプリントデータやコ
マンドを解析して、展開メモリに展開可能な1ページ分
の情報を作成するコマンド解析部3、バンドの高さとそ
れに対応する色材1色分の展開メモリの情報(メモリ容
量)が格納されたバンド高情報テーブル6を備え、バン
ド高の情報等が格納されているバンド情報格納部5、色
再現処理時に必要な情報が格納されている色再現情報格
納部7、色再現処理が行われる色再現処理部8、文字を
描画するための情報が格納される文字情報格納部9、装
置の制御を行う制御部10、属性情報を格納する属性情
報格納領域12とメモリに展開するための情報を格納す
るメモリ展開情報格納エリア13を備えるメモリ展開情
報格納部11、コマンド実行ジャンプテーブル1(1
5)とコマンド実行ジャンプテーブル2(16)を備
え、メモリ展開情報が解析されるメモリ展開情報解析部
14、解析されたメモリ展開情報をY,M,C,Bk4
つのメモリからなる展開メモリ18に展開するパターン
展開部17、展開されたデータを用紙上に永久可視像出
力する出力部19、Y,M,C,Bk各展開メモリへの
展開時に用いるY,M,C,Bkの値に対応したディザ
パターン格納領域の先頭アドレスが格納されているディ
ザパターンアドレステーブル21を備え、Y,M,C,
Bk各ディザパターンが格納されているディザパターン
格納部20、Y,M,C,K各展開メモリへの展開時に
用いる塗りつぶし関数へのジャンプアドレスが格納され
ている塗りつぶし関数アドレス格納テーブル23を描画
論理別に備え、前記塗りつぶし関数アドレス格納テーブ
ルの先頭アドレスが描画論理別に格納されている描画論
理別テーブルアドレス格納テーブル24を有するメモリ
展開用テーブル格納部22、印刷環境のパラメータを変
更・設定可能な操作パネル25、データバス26を備え
ている。
【0113】図25はインクジェット方式の画像処理装
置のヘッド部回りを詳細に示した図である。
【0114】101は一種類の着色材について多数のイ
ンクジェットヘッドを副走査方向に配置したヘッドユニ
ットであり、Y,M,C,Bkのユニットを有する。
【0115】102は各ヘッドユニット用のインクタン
ク、103は信号ライン、104は搬送ベルトと協働し
てヘッドユニットを取り付けたキャリッジをレールに沿
って移動させるキャリッジ駆動モータである。
【0116】107は記録紙、108はプラテン、10
9、110は記録紙搬送ローラ、111は記録紙ロー
ル、112はガイドローラをそれぞれ示している。
【0117】ヘッドユニット101は、図26に示した
発熱素子を利用した複数インクジェットヘッドより成る
が、例えばピエゾ素子等の電気機械変換手段を用いたイ
ンクジェットヘッドも勿論使用しうる。
【0118】図26は図25のヘッドユニット101を
詳細に示した図である。
【0119】図において、ヘッドユニットは、Y,M,
C,Bkのノズルをそれぞれヘッド高分の数を有してい
る。
【0120】すなわち、ヘッドユニット101は、イエ
ローインク吐き出しノズル、マゼンダインク吐き出しノ
ズル、シアンインク吐き出しノズル、黒インク吐き出し
ノズルを有している。
【0121】図27はバンドの構造の一例を示してい
る。
【0122】図に示すように、横の長さを用紙の有効印
字領域幅、縦の長さをヘッドの高さとする矩形領域をセ
グメントと定義する。
【0123】1バンドとは、上記セグメントを図のよう
に縦に並べた領域であり、セグメントの整数倍の大きさ
を持っている。
【0124】従って、バンド高(バンドの高さ)は、ヘ
ッド高の整数倍となる。
【0125】この例では、1バンドは4つのセグメント
で構成されている。
【0126】図28は、用紙の有効印字領域をバンド高
が512スキャンラインの8つのバンドに分割した場合
の一例を示している。
【0127】図に示すように、8つのバンドには、それ
ぞれ0〜7のバンドNo.がつけられている。
【0128】バンド数がnの場合には、バンドNo.は
0〜(n−1)となるものとする。
【0129】図の(0,512)等のプリンタ座標上の
点は、各バンドの領域の左上隅の点を示しており、
(0,(n−1)×512)で計算される。
【0130】有効印字領域高は、図のように必ずしもバ
ンド高の整数倍になるとは限らず、最終バンド(図では
7バンド)の高さは、バンド高以下になることがある。
【0131】図29は、カラーモード時のカラー画像処
理装置内部のRAM領域のメモリマップの一例を示して
いる。
【0132】カラーモード時のRAM領域は、システム
ワーク用のメモリ・空き領域・色材(トナーやインク)
であるY(Yellow),M(Magenta),C
(Cyan),Bk(Black)それぞれ1バンド分
のメモリ(図28の1つのバンド領域の大きさ分のメモ
リ)で構成されている。
【0133】図30は、モノクロモード時のカラー画像
処理装置内部のRAM領域のメモリマップの一例を示し
ている。
【0134】モノクロモード時はBk(Black)の
みの色材を用いて印刷するため、モノクロモード時のR
AM領域は、システムワーク用のメモリ・空き領域・色
材(トナーやインク)であるBk(Black)1バン
ド分のメモリ(図28の1つのバンド領域の大きさ分の
メモリ)で構成される。
【0135】すなわち、Y(Yellow),M(Ma
genta),C(Cyan)それぞれ1バンド分のメ
モリを空き領域として有効に有効に活用できる。
【0136】システムワーク用のメモリは、画像処理装
置内部の制御に用いる情報(変数等)の格納領域や固定
のワーク領域等に用いられる。
【0137】空き領域は、メモリ展開情報の格納や文字
キャシュメモリ等に用いられる。
【0138】図31は図24の12に示した属性情報格
納領域(RAM)を示している。
【0139】この属性情報格納領域は、メモリにデータ
展開する際に用いる描画属性情報を一時退避するエリア
及び前記描画属性情報がセットされる変数エリアで構成
されている。
【0140】図のように、各描画属性ごとに退避領域が
決まっており、m個の情報を退避することが可能であ
る。
【0141】lwidth、lymck等は各描画属性
情報がセットされる変数を示している。
【0142】図32,33,34はページ単位のページ
記述コマンドデータを受取り、ページ単位ごとに記録制
御を行うカラー画像処理装置において、Y(Yello
w),M(Magenta),C(Cyan),Bk
(Black)それぞれ1バンド分のメモリのみにより
カラー記録を行う際のフロチャートを示している。
【0143】ステップS1で、図31に示した属性情報
格納領域をRAM上に確保してステップS2に進む。
【0144】ステップS2で、コマンドデータ1組(描
画コマンドや描画属性コマンド等1個単位)を読み込
み、ステップS3へ進む。
【0145】ステップS3において、コマンド解析部3
でコマンドデータを解析し、ステップS4へ進む。
【0146】ステップS4で、1ページのコマンドデー
タの残りがあればステップS2に戻り、なければステッ
プS5に進む。
【0147】ステップS5で、この時点でのメモリのデ
ータ展開に必要な描画属性情報をステップS1で確保し
た属性情報格納領域12の退避エリアに一時退避してス
テップS10へ進む。
【0148】ステップS10で定数iに0をセットして
ステップS11へ進む。
【0149】ステップS11で、メモリ展開情報エリア
13に格納されている最初のメモリ展開情報(1組)の
先頭にポインタをセットしてステップS12へ進む。
【0150】ステップS12において、ステップS11
で読み込んだメモリ展開情報をメモリ展開情報解析部1
4で解析して、バンドi部分に対応した展開メモリ
(Y,M,C,Bk各バンドメモリ)に展開して、ステ
ップS13へ進む。
【0151】ステップS13でメモリ展開情報の残りが
あれば、ステップS14へ進んで次のメモリ展開情報
(1組)の先頭にポインタをセットしてステップS12
に戻る。
【0152】ステップS13でメモリ展開情報の残りが
なければステップS15へ進む。
【0153】ステップS15で、ステップS12で展開
されたメモリの内容を出力部19でカラー記録してステ
ップS16へ進む。
【0154】ステップS16でiを1つインクリメント
してステップS17へ進む。
【0155】ステップS17でY,M,C,Bk各バン
ドメモリをクリアしてステップS18へ進む。
【0156】ステップS18でバンド数iとを比較して
一致する場合には処理を終了する。
【0157】一致しない場合には、ステップS19へ進
み、ステップS5で属性情報格納領域12の退避エリア
に一時退避していた描画属性をロードし、属性情報格納
領域12の変数エリアにセットしてステップS11へ戻
る。
【0158】以上のような処理によって、ページ単位の
ページ記述コマンドデータを受取り、Y(Yello
w),M(Magenta),C(Cyan),Bk
(Black)それぞれ1バンド分のメモリのみにより
カラー記録を行うことが可能となる。
【0159】図35は、描画属性指定コマンドのうち、
色指定コマンド(線色指定・塗りつぶし色指定・文字色
指定)の一例を示している。
【0160】線色指定コマンドは、直線や図形の輪郭線
の色を指定するのに用いられる。
【0161】塗りつぶし色指定コマンドは、閉図形の内
部塗りつぶしの色を指定するのに用いられる。
【0162】文字色指定コマンドは、文字の色を指定す
るのに用いられる。
【0163】コマンドNo.は、色指定により異なり、
コマンドの識別に用いられる。
【0164】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0165】種別フラグパラメータの内容は、色指定デ
ータの種類を示している。
【0166】ここで、(a)は、種別フラグ値が0の場
合で、色指定データが光の3原色であるR(Red),
G(Green),B(Blue)の輝度データ値であ
ることを示している。
【0167】(b)は、種別フラグ値が1の場合で、色
指定データが、CIE(国際照明委員会)が1976年
に定めた均等知覚色空間のL*,a*,b*のデータ値
であることを示している。
【0168】(c)は、種別フラグ値が2の場合で、色
指定データが、色材(トナー・インク)の原色であるY
(Yellow),M(Magenta),C(Cya
n),Bk(Black)の濃度データ値であることを
示している。
【0169】図36は、描画属性指定コマンドのうち、
線幅指定コマンド・クリップ領域指定コマンド・塗りつ
ぶし定義指定コマンド・描画論理指定コマンドの一例を
示している。
【0170】コマンドNo.は、描画属性指定により異
なり、コマンドの識別に用いられる。
【0171】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0172】(a)の線幅指定コマンドは、直線・図形
の輪郭線の線幅を指定するのに用いられる。
【0173】ここで、線幅値は、ユーザー座標系の座標
単位を単位としている。
【0174】(b)のクリップ領域指定コマンドは、図
形・文字等の描画可能範囲を指定するのに用いられる。
【0175】ここで、x,yの最小・最大値は、ユーザ
ー座標系の座標単位を単位としている。
【0176】(c)の塗りつぶし定義指定コマンドは、
閉図形の輪郭線内部の塗りつぶしのパターン及び輪郭線
の有無を指定するのに用いられる。
【0177】ここで、塗りつぶしパターンNo.は塗り
つぶしパターンの識別に用いられ、パターンNo.が0
の時は塗りつぶしパターンがなし(空白)の場合を示
し、0でない時はハッチパターン等の塗りつぶしパター
ンを示すものとする。
【0178】輪郭フラグは、0の時は輪郭線なし、1の
時は輪郭線ありを示すものとする。
【0179】(d)の描画論理指定コマンドは、図形・
文字等の描画の論理、具体的には展開メモリにパターン
を展開する際に、メモリに対してどの論理(上書き・透
過等)に基づいて描画するかを指定するのに用いられ
る。
【0180】例えば、上書きの場合の描画論理値は0、
透過の場合の描画論理値は1というように指定する。
【0181】図37は、描画コマンドのうち、直線描画
コマンド・多角形描画コマンドの一例を示している。
【0182】コマンドNo.は、描画機能により異な
り、コマンドの識別に用いられる。
【0183】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0184】直線描画コマンドは、直線を描画するのに
用いられる。
【0185】多角形描画コマンドは、多角形を描画する
のに用いられる。
【0186】ここで、座標1〜nのx,y座標値は、ユ
ーザー座標系上の座標値である。
【0187】図38は、描画コマンドのうち、文字印字
コマンドの一例を示している。
【0188】コマンドNo.は、描画機能により異な
り、コマンドの識別に用いられる。
【0189】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0190】文字描画コマンドは、文字を描画するのに
用いられる。
【0191】ここで、描画位置のx,y座標は、文字描
画の開始基準位置を示すユーザー座標系上の座標であ
る。
【0192】文字データは印字する文字列(例.AB
C)を示している。
【0193】図39は、図24の4に示した、各描画コ
マンド及び各描画属性コマンドの解析を行う関数へのジ
ャンプアドレスが格納されているコマンド解析ジャンプ
テーブル(ROM)である。
【0194】コマンドNo.(0〜n)に対応して各コ
マンド解析関数へのジャンプアドレスが格納されてい
る。
【0195】図40は、図32のステップS3のコマン
ドデータ解析の処理を詳細に示したフローチャートであ
る。
【0196】ステップS30で、コマンドデータ(1
組)からコマンドNo.を取り出してステップS31へ
進む。
【0197】ステップS31で、図 のコマンド解析ジ
ャンプテーブルの先頭にポインタをセットしてステップ
S32に進む。
【0198】ステップS32で、コマンドNo.に相当
する分だけポインタを進めてステップS33に進む。
【0199】ステップS33で、ポインタの指す内容
(ジャンプアドレス)を取り出してステップS34に進
む。
【0200】ステップS34で、ジャンプアドレスの指
す関数を実行して処理を終了する。
【0201】図41〜42は、図40のステップS34
において、色指定コマンド解析関数を実行した場合の処
理を詳細に示したフローチャートである。
【0202】ステップS40で、minバンドNo.、
maxバンドNo.をメモリ展開情報エリア13に設定
してステップS41へ進む。
【0203】ステップS41で、コマンドからコマンド
No.を読み込み、メモリ展開情報格納エリア13にセ
ットしてポインタを進め、ステップS42に進む。
【0204】ステップS42で、コマンドからデータ数
を読み込み、(データ数ー1)を定数nにセットしてス
テップS43に進む。
【0205】ステップS43で、メモリ展開情報エリア
13にデータ数として4をセットしてポインタを進めて
ステップS44に進む。
【0206】ステップS44で、コマンドから種別パラ
メータを読み込み、種別フラグCsmflgにセットし
てステップS45に進む。
【0207】ステップS45で、定数n個分の色指定デ
ータを読み込み、ステップS46に進む。
【0208】ステップS46で、種別フラグCsmfl
gの値を0,1,2のいづれかであるかチェックする。
【0209】0,1,2のいづれでもないならば、処理
を終了する。
【0210】0,1,2のいづれかならば、ステップS
47に進んでカラーモードかどうかチェックする。
【0211】カラーモードならば、ステップS48に進
んでカラーモードにおける色変換処理を行い、ステップ
S50に進む。
【0212】カラーモードでないならば、ステップS4
9に進んでモノクロモードにおける色変換処理を行い、
ステップS50に進む。
【0213】ステップS50でY,M,C,Bkの濃度
データをメモリ展開情報格納エリア13にセットしてポ
インタを進めて処理を終了する。
【0214】このように、色指定コマンドは解析され色
指定のメモリ展開情報が作成される。
【0215】図43は、図42のステップS48におい
て、カラーモードにおける色変換処理を実行した場合の
処理を詳細に示したフローチャートである。
【0216】ステップS700で、種別フラグCsmf
lgの値を0と比較する。
【0217】0と等しいならば、ステップS45で読み
込んだ色指定データはR,G,Bの輝度データであり、
ステップS701に進んでR,G,Bの輝度データを
Y,M,C,Bkの濃度データに変換して処理を終了す
る。
【0218】0と等しくないならば、そのままステップ
S702に進む。
【0219】ステップS702で、種別フラグCsmf
lgの値を1と比較する。
【0220】種別フラグCsmflgの値が1と等しい
ならば、ステップS45で読み込んだ色指定データは、
CIE(国際照明委員会)が1976年に定めた均等知
覚色空間のL*,a*,b*のデータであり、ステップ
S703に進んでCIE L*,a*,b*データをC
IE XYZ(CIEが1931年に定めたXYZ表色
系)データに変換してステップS704に進む。
【0221】ステップS704で、CIE XYZデー
タをR,G,Bの輝度データに変換してステップS70
5に進む。
【0222】ステップS705で、R,G,Bの輝度デ
ータをY,M,C,Bkの濃度データに変換して処理を
終了する。
【0223】ステップS702で、種別フラグCsmf
lgの値が1と等しくないならば、そのまま処理を終了
する。
【0224】2と等しくないならば、そのまま処理を終
了する。
【0225】このように、カラーモードにおいて色指定
データはY,M,C,Bkの濃度データに変換される。
【0226】図44は、図42のステップS49におい
て、モノクロモードにおける色変換処理を実行した場合
の処理を詳細に示したフローチャートである。
【0227】ステップS710で、種別フラグCsmf
lgの値を0と比較する。
【0228】0と等しいならば、ステップS45で読み
込んだ色指定データはR,G,Bの輝度データであり、
ステップS711に進んでR,G,Bの輝度データをグ
レイスケールの濃度データに変換してステップS716
に進む。
【0229】0と等しくないならば、ステップS712
に進んで、種別フラグCsmflgの値を1と比較す
る。
【0230】種別フラグCsmflgの値が1と等しい
ならば、ステップS45で読み込んだ色指定データは、
CIE(国際照明委員会)が1976年に定めた均等知
覚色空間のL*,a*,b*のデータであり、ステップ
S713に進んでCIE L*,a*,b*データをC
IE XYZ(CIEが1931年に定めたXYZ表色
系)データに変換してステップS714に進む。
【0231】ステップS714で、CIE XYZデー
タをR,G,Bの輝度データに変換してステップS71
5に進む。
【0232】ステップS715で、R,G,Bの輝度デ
ータをグレイスケールの濃度データに変換してステップ
S716に進む。
【0233】ステップS716で、グレイスケールの濃
度データGrayをYの濃度データにセットし、M,
C,Bkの濃度データに0をセットして処理を終了す
る。
【0234】すなわち、グレイスケールの濃度データの
メモリ展開情報の色情報の部分にはグレイスケールの濃
度データ、0、0、0が格納される。
【0235】このように、モノクロモードにおいて色指
定データはグレイスケールの濃度データに変換される。
【0236】図45は、図40のステップS34におい
て、線幅指定コマンド解析関数を実行した場合の処理を
詳細に示したフローチャートである。
【0237】ステップS60で、minバンドNo.、
maxバンドNo.をメモリ展開情報エリア13に設定
してステップS61へ進む。
【0238】ステップS61で、コマンドからコマンド
No.を読み込み、メモリ展開情報エリア13にセット
してポインタを進め、ステップS62に進む。
【0239】ステップS62で、コマンドからデータ数
を読み込み、メモリ展開情報エリア13にデータ数とし
てセットしてポインタを進めてステップS63に進む。
【0240】ステップS63で、コマンドから線幅値パ
ラメータを読み込み、ステップS64に進む。
【0241】ステップS64で、読み込んだ線幅値を画
像処理装置の解像度をもとにピクセル(ドット)値に変
換し、ステップS65に進む。
【0242】ステップS65で、変換後の線幅値を内部
変数LwidthにセットしてステップS66に進む。
【0243】ステップS66で、変換後の線幅値をメモ
リ展開情報格納エリア13にセットしてポインタを進め
て処理を終了する。
【0244】このように、線幅指定コマンドは解析され
線幅指定のメモリ展開情報が作成される。
【0245】図46は、図40のステップS34におい
て、クリップ領域指定コマンド解析関数を実行した場合
の処理を詳細に示したフローチャートである。
【0246】ステップS70で、minバンドNo.、
maxバンドNo.をメモリ展開情報エリア13に設定
してステップS71へ進む。
【0247】ステップS71で、コマンドからコマンド
No.を読み込み、メモリ展開情報エリア13にセット
してポインタを進め、ステップS72に進む。
【0248】ステップS72で、コマンドからデータ数
を読み込み、メモリ展開情報エリア13にデータ数とし
てセットしてポインタを進めてステップS73に進む。
【0249】ステップS73で、コマンドからクリップ
領域のx,yの最小値、最大値パラメータを読み込み、
ステップS74に進む。
【0250】ステップS74で、読み込んだx,yの最
小値、最大値を画像処理装置の解像度をもとにプリンタ
座標上の値xmin,ymin,xmax,ymaxに
変換し、ステップS75に進む。
【0251】ステップS75で、上記のxmin,ym
in,xmax,ymaxの値をそれぞれcxmin,
cymin,cxamx,cymaxにセットしてステ
ップS76に進む。
【0252】ステップS76で、上記のxmin,ym
in,xmax,ymaxの値をメモリ展開情報エリア
13にセットしてポインタを進めて処理を終了する。
【0253】このように、クリップ領域指定コマンドは
解析されクリップ領域指定のメモリ展開情報が作成され
る。
【0254】図47は、図40のステップS34におい
て、塗りつぶし定義指定コマンド解析関数を実行した場
合の処理を詳細に示したフローチャートである。
【0255】ステップS80で、minバンドNo.、
maxバンドNo.をメモリ展開情報格納エリア13に
設定してステップS81へ進む。
【0256】ステップS81で、コマンドからコマンド
No.を読み込み、メモリ展開情報格納エリア13にセ
ットしてポインタを進め、ステップS82に進む。
【0257】ステップS82で、コマンドからデータ数
を読み込み、メモリ展開情報格納エリア13にデータ数
としてセットしてポインタを進めてステップS83に進
む。
【0258】ステップS83で、コマンドから塗りつぶ
しパターンNo.を読み込み、メモリ展開情報格納エリ
ア13にセットしてポインタを進め、ステップS84に
進む。
【0259】ステップS84で、コマンドから輪郭フラ
グを読み込み、メモリ展開情報格納エリア13にセット
してポインタを進め、ステップS85に進む。
【0260】ステップS85で、塗りつぶしパターンN
o.を内部変数FpatにセットしてステップS86に
進む。
【0261】ステップS86で、輪郭フラグの内容を内
部変数Fpermtにセットして処理を終了する。
【0262】このように、塗りつぶし定義指定コマンド
は解析され塗りつぶし定義指定のメモリ展開情報が作成
される。
【0263】図48は、図40のステップS34におい
て、描画論理指定コマンド解析関数を実行した場合の処
理を詳細に示したフローチャートである。
【0264】ステップS100で、minバンドN
o.、maxバンドNo.をメモリ展開情報エリア13
に設定してステップS101へ進む。
【0265】ステップS101で、コマンドからコマン
ドNo.を読み込み、メモリ展開情報エリア13にセッ
トしてポインタを進め、ステップS102に進む。
【0266】ステップS102で、コマンドからデータ
数を読み込み、メモリ展開情報エリア13にデータ数と
してセットしてポインタを進めてステップS103に進
む。
【0267】ステップS103で、コマンドから描画論
理値パラメータを読み込み、ステップS104に進む。
【0268】ステップS104で、描画論理値をメモリ
展開情報格納エリア13にセットしてポインタを進めて
処理を終了する。
【0269】このように、描画論理指定コマンドは解析
され描画論理指定のメモリ展開情報が作成される。
【0270】図49は、図41〜48のステップS4
0,60,70,80,100において、minバンド
No.、maxバンドNo.をメモリ展開情報エリアに
設定する処理を詳細に示したフローチャートである。
【0271】ステップS90で、minバンドNo.に
0をセットしてしてステップS91へ進む。
【0272】ステップS91で、minバンドNo.を
メモリ展開情報格納エリア13にセットしてポインタを
進め、ステップS92に進む。
【0273】ステップS92で、バンド情報格納部5か
ら現在のバンド数の情報を取り出し、ステップS93に
進む。
【0274】ステップS93で、(バンド数ー1)の値
をmaxバンドNo.にセットしてステップS94に進
む。
【0275】ステップS94で、maxバンドNo.を
メモリ展開情報格納エリア13にセットしてポインタを
進め、処理を終了する。
【0276】このように、描画属性のメモリ展開情報に
は、各バンドの処理ごとにメモリ展開情報が解析される
ようにminバンドNo.に0、maxバンドNo.に
(バンド数ー1)の値が設定されるようになっている。
【0277】図50は、図43のステップS701、7
05で示した色再現処理の一例を示している。
【0278】プロセス1では、輝度情報であるR,G,
Bの値にLOG変換を施して濃度情報であるC,M,Y
に変換する濃度変換の処理を行う。
【0279】プロセス2では、C,M,Yの値からBk
の値を取り出す下色除去の処理を行う。
【0280】プロセス3では、C,M,Yのトナーまた
はインクの不要吸収特性に対し、補正を行い適切な色再
現を行うためにマスキングの処理を行う。
【0281】プロセス4では、画像に応じたコントラス
トやブライトネスを調整するためにγ変換の処理を行
う。
【0282】以上の処理は、色再現処理情報格納部7の
情報を用いて色再現処理部8において行う。
【0283】また上述のR,G,BデータはCIE X
YZデータとの相互の変換要領が明確になっているもの
とする。
【0284】図51は、図43〜44のステップS70
3、713で示した色変換処理の一例を示している。
【0285】(a)〜(d)に示した式によりCIE
L*,a*,b*データをCIEXYZデータに変換す
ることが可能である。
【0286】ここで、Xn,Yn,Znは、どのCIE
の標準光源に従うかによって定まる値である。
【0287】図52は、図43〜44のステップS70
4、714で示した色変換処理の一例を示している。
【0288】図に示した行列の変換式によりCIE X
YZデータをR,G,B輝度データに変換することが可
能である。
【0289】ここで、行列のパラメータ値は、どのCI
Eの標準光源に従うかによって定まり、本例はCIEの
標準光源がD65の場合の値である。
【0290】図53は、図44のステップS711、7
15で示した色変換処理の一例を詳細に示したフローチ
ャートである。
【0291】ステップS720で、Rの輝度データ値に
0.289659を乗じてその結果をR にセットして
ステップS721へ進む。
【0292】ステップS721で、Gの輝度データ値に
0.605936を乗じてその結果をG にセットして
ステップS722へ進む。
【0293】ステップS722で、Bの輝度データ値に
0.104665を乗じてその結果をB にセットして
ステップS723へ進む。
【0294】ステップS723で、R +G +B の
結果をgrayにセットしてステップS724へ進む。
【0295】ステップS724で、図 のプロセス1と
同様の濃度変換によりgrayを変換し、Grayにセ
ットして処理を終了する。
【0296】図54〜56は、図40のステップS34
において、直線描画コマンド解析関数を実行する際の処
理を示したものである。
【0297】ステップS600で、ワークエリアへのデ
ータのセット及びxmin,ymin,xmax,ym
axの設定を行い、ステップS601へ進む。
【0298】ステップS601で、描画範囲の算出(直
線及び多角形)を行い、ステップS602へ進む。
【0299】ステップS602で、描画範囲のクリップ
チェックを行い、ステップS603へ進む。
【0300】ステップS603で、描画範囲のクリップ
チェックで設定された描画範囲フラグをチェックする。
【0301】描画範囲フラグがERRORならば、処理
を終了する。
【0302】描画範囲フラグがERRORでないならば
ステップS604に進んでminバンドNo.、max
バンドNo.の算出を行い、ステップS605へ進む。
【0303】ステップS605で、メモリ展開情報格納
エリア13にポインタ1をセットしてステップS606
へ進む。
【0304】ステップS606で、minバンドN
o.、maxバンドNo.をメモリ展開情報格納エリア
13にセットしてポインタ1を進めてステップS607
へ進む。
【0305】ステップS607で、ワークエリアの先頭
にポインタ2をセットしてステップS608へ進む。
【0306】ステップS608で、ワークエリアからコ
マンドNo.を取り出し、メモリ展開情報格納エリア1
3にセットしてステップS609へ進む。
【0307】ステップS609で、ポインタ1、ポイン
タ2を進めてステップS610へ進む。
【0308】ステップS610で、ワークエリアからデ
ータ数を取り出し、メモリ展開情報格納エリア13にセ
ットしてステップS611へ進む。
【0309】ステップS611で、mに1をセットして
ステップS612へ進む。
【0310】ステップS612で、ワークエリアからx
m,ymを取り出し、メモリ展開情報格納エリア13に
セットしてステップS613へ進む。
【0311】ステップS613で、mとn(座標数)を
比較する。
【0312】mがnに比べて等しいか大きい場合には、
処理を終了する。
【0313】nがmより大きい場合には、ステップS6
14に進んでmに1を加算してステップS615に進
む。
【0314】ステップS615で、ポインタ1、ポイン
タ2を進めてステップS612に戻る。
【0315】このように、直線描画コマンドは解析され
直線描画のメモリ展開情報が作成される。
【0316】図57〜59は、図40のステップS34
において、多角形描画コマンド解析関数を実行する際の
処理を示したものである。
【0317】ステップS120で、ワークエリアへのデ
ータのセット及びxmin,ymin,xmax,ym
axの設定を行い、ステップS121へ進む。
【0318】ステップS121で、描画範囲の算出(直
線及び多角形)を行い、ステップS122へ進む。
【0319】ステップS122で、描画範囲のクリップ
チェックを行い、ステップS123へ進む。
【0320】ステップS123で、描画範囲のクリップ
チェックで設定された描画範囲フラグをチェックする。
【0321】描画範囲フラグがERRORならば、処理
を終了する。
【0322】描画範囲フラグがERRORでないなら
ば、ステップS124へ進んでminバンドNo.、m
axバンドNo.の算出を行い、ステップS125へ進
む。
【0323】ステップS125で、メモリ展開情報格納
エリア13にポインタ1をセットしてステップS126
へ進む。
【0324】ステップS126で、minバンドN
o.、maxバンドNo.をメモリ展開情報格納エリア
13にセットしてポインタ1を進めてステップS127
へ進む。
【0325】ステップS127で、ワークエリアの先頭
にポインタ2をセットしてステップS128へ進む。
【0326】ステップS128で、ワークエリアからコ
マンドNo.を取り出し、メモリ展開情報格納エリア1
3にセットしてステップS129へ進む。
【0327】ステップS129で、ポインタ1、ポイン
タ2を進めてステップS130へ進む。
【0328】ステップS130で、ワークエリアからデ
ータ数を取り出し、(データ数+2)をメモリ展開情報
格納エリア13にセットしてステップS131へ進む。
【0329】ステップS131で、mに1をセットして
ステップS132へ進む。
【0330】ステップS132で、ワークエリアからx
m,ymを取り出し、メモリ展開情報格納エリア13に
セットしてステップS133へ進む。
【0331】ステップS133で、mとn(座標数)を
比較する。
【0332】nがmより大きい場合には、ステップS1
34へ進んでmに1を加算してステップS135に進
む。。
【0333】ステップS135で、ポインタ1、ポイン
タ2を進めてステップS132に戻る。
【0334】mがnに比べて等しいか大きい場合には、
ステップS136へ進む。
【0335】ステップS136で、ワークエリアの先頭
にポインタ2をセットしてステップS137へ進む。
【0336】ステップS137で、ポインタ2を2つ進
め、x1にセットしてステップS138へ進む。
【0337】ステップS138で、ワークエリアからx
1,y1を取り出し、メモリ展開情報格納エリア13に
セットして処理を終了する。
【0338】このように、多角形描画コマンドは解析さ
れ多角形描画のメモリ展開情報が作成される。
【0339】図60〜62は、図54のステップ600
及び図57のステップ120において、ワークエリアへ
のデータのセット及びxmin,ymin,xmax,
ymaxの設定の処理を詳細に示したものである。
【0340】ステップS150で、ワークエリアの先頭
にポインタをセットしてステップS151へ進む。
【0341】ステップS151で、コマンドNo.を読
み込み、ワークエリアにセットしてポインタを進め、ス
テップS152へ進む。
【0342】ステップS152で、データ数を読み込
み、ワークエリアにセットしてポインタを進め、ステッ
プS153へ進む。
【0343】ステップS153で、データ数の1/2
(直線の座標点数)を定数nにセットしてステップS1
54へ進む。
【0344】ステップS154で、座標1のx座標、y
座標を読み込み、ステップS155へ進む。
【0345】ステップS155で、座標1のx座標、y
座標をプリンタ座標に変換してx1,y1にセットし
て、ステップS156へ進む。
【0346】ステップS156で、x1をxmin,x
maxにセットし、y1をymin,ymaxにセット
して、ステップS157へ進む。
【0347】ステップS157で、x1,y1をワーク
エリアにセットしてポインタを進め、ステップS158
へ進む。
【0348】ステップS158で、mに1をセットして
ステップS159へ進む。
【0349】ステップS159で、mとn(座標数)を
比較する。
【0350】mがnに比べて等しいか大きい場合には、
処理を終了する。
【0351】nがmより大きい場合には、ステップS1
60へ進んでmに1を加算してステップS161に進
む。
【0352】ステップS161で、座標mのx座標、y
座標を読み込み、ステップS162へ進む。
【0353】ステップS162で、座標mのx座標、y
座標をプリンタ座標に変換してxm,ymにセットし
て、ステップS163へ進む。
【0354】ステップS163で、xmとxminの値
を比較する。
【0355】xmがxminに比べて等しいか大きい場
合には、ステップS165へ進む。
【0356】xminがxmより大きい場合には、ステ
ップS164へ進んでxmの値をxminにセットして
ステップS165に進む。
【0357】ステップS165で、xmとxmaxの値
を比較する。
【0358】xmaxがxmに比べて等しいか大きい場
合には、ステップS167へ進む。
【0359】xmがxmaxより大きい場合には、ステ
ップS166へ進んでxmの値をxmaxにセットして
ステップS167に進む。
【0360】ステップS167で、ymとyminの値
を比較する。
【0361】ymがyminに比べて等しいか大きい場
合には、ステップS169へ進む。
【0362】yminがymより大きい場合には、ステ
ップS168へ進んでymの値をyminにセットして
ステップS169に進む。
【0363】ステップS169で、ymとymaxの値
を比較する。
【0364】ymaxがymに比べて等しいか大きい場
合には、ステップS171へ進む。
【0365】ymがymaxより大きい場合には、ステ
ップS170へ進んでymの値をymaxにセットして
ステップS171に進む。
【0366】ステップS171で、xm,ymをワーク
エリアにセットしてポインタを進め、ステップS159
に戻る。
【0367】このように、ワークエリアへのデータのセ
ット及びxmin,ymin,xmax,ymaxの設
定を行うことができる。
【0368】図63〜66は、図40のステップS34
において、文字描画コマンド解析関数を実行する際の処
理を示したものである。
【0369】ステップS210で、ワークエリアの先頭
にポインタをセットしてステップS211へ進む。
【0370】ステップS211で、コマンドNo.を読
み込み、ワークエリアにセットしてポインタを進め、ス
テップS212へ進む。
【0371】ステップS212で、データ数を読み込
み、ステップS213へ進む。
【0372】ステップS213で、描画位置のx座標,
y座標を読み込み、ステップS214へ進む。
【0373】ステップS214で、描画位置のx座標,
y座標をプリンタ座標に変換し、xr,yrにセットし
てステップS215へ進む。
【0374】ステップS215で、コマンドから文字デ
ータを読み込み、内部コードに変換してステップS21
6へ進む。
【0375】ステップS216で、(内部コードのデー
タ数)+2をデータ数としてワークエリアにセットして
ポインタを進め、ステップS217へ進む。
【0376】ステップS217で、xr,yrをワーク
エリアにセットしてポインタを進め、ステップS218
へ進む。
【0377】ステップS218で、内部コードをワーク
エリアにセットしてステップS219へ進む。
【0378】ステップS219で、文字の描画範囲の算
出を行い、ステップS220へ進む。
【0379】ステップS220で、描画範囲のクリップ
チェックを行い、ステップS221へ進む。
【0380】ステップS221で、描画範囲のクリップ
チェックで設定された描画範囲フラグをチェックする。
【0381】描画範囲フラグがERRORならば、処理
を終了する。
【0382】描画範囲フラグがERRORでないなら
ば、ステップS222へ進んでminバンドNo.、m
axバンドNo.の算出を行い、ステップS223へ進
む。
【0383】ステップS223で、メモリ展開情報格納
エリア13にポインタ1をセットしてステップS224
へ進む。
【0384】ステップS224で、minバンドN
o.、maxバンドNo.をメモリ展開情報格納エリア
13にセットしてポインタ1を進めてステップS225
へ進む。
【0385】ステップS225で、ワークエリアの先頭
にポインタ2をセットしてステップS226へ進む。
【0386】ステップS226で、ワークエリアからコ
マンドNo.を取り出し、メモリ展開情報格納エリア1
3にセットしてステップS227へ進む。
【0387】ステップS227で、ポインタ1、ポイン
タ2を進めてステップS228へ進む。
【0388】ステップS228で、ワークエリアからデ
ータ数を取り出し、メモリ展開情報格納エリア13にセ
ットしてステップS229へ進む。
【0389】ステップS229で、ポインタ1、ポイン
タ2を進めてステップS230へ進む。
【0390】ステップS230で、ワークエリアからx
r,yrを取り出し、メモリ展開情報格納エリア13に
セットしてステップS231へ進む。
【0391】ステップS231で、ポインタ1、ポイン
タ2を進めてステップS232へ進む。
【0392】ステップS232で、ワークエリアから内
部コードを取り出し、メモリ展開情報格納エリア13に
セットして処理を終了する。
【0393】このように、文字描画コマンドは解析され
文字描画のメモリ展開情報が作成される。
【0394】図67は、図54のステップ601及び図
57のステップ121における、描画範囲の算出の処理
を詳細に示したものである。
【0395】ステップS240で、xminをpxmi
nに,xmaxをpxmaxにセットして、ステップS
241へ進む。
【0396】ステップS241で、yminをpymi
nに,ymaxをpymaxにセットして、ステップS
242へ進む。
【0397】ステップS242で、Lwidth/2に
α(0以上の定数)を加えてβにセットして、ステップ
S243へ進む。
【0398】ステップS243で、pxmin−βをp
xminに、pxmax+βをpxmaxにセットし
て、ステップS244へ進む。
【0399】ステップS244で、pymin−βをp
yminに、pymax+βをpymaxにセットし
て、処理を終了する。
【0400】このようにして、直線及び多角形の描画範
囲の算出することができる。
【0401】図68は、(x1,y1)〜(x4,y
4)の4点で指定された多角形の描画範囲を示したもの
である。
【0402】この範囲は、(pxmin,pymin)
と(pxmax,pymax)で囲まれた矩形領域であ
り、図67の処理においてαの値を0とした場合の算出
結果である。
【0403】図69は、図64のステップ219におけ
る、文字の描画範囲の算出の処理を詳細に示したもので
ある。
【0404】ステップS260で、文字情報格納部9
(図24)から左オフセット値、上オフセット値を取り
出してステップS261へ進む。
【0405】ステップS261で、左オフセット値をα
1に,上オフセット値をα2にセットして、ステップS
262へ進む。
【0406】ステップS262で、xr+α1をpxm
inに,yr−α2をpyminにセットして、ステッ
プS263へ進む。
【0407】ステップS263で、文字情報格納部9か
らパターン幅、パターン高を取り出してステップS26
4へ進む。
【0408】ステップS264で、パターン幅をβ1、
パターン高をβ2にセットして、ステップS265へ進
む。
【0409】ステップS265で、pxmin+β1を
pxmaxに、pymin+β2をpymaxにセット
して、処理を終了する。
【0410】このようにして、文字の描画範囲の算出す
ることができる。
【0411】図70は、文字の描画範囲を示したもので
ある。
【0412】この範囲は、(pxmin,pymin)
と(pxmax,pymax)で囲まれた矩形領域であ
る。
【0413】図71〜72は、図54のステップS60
2、図57のステップS122及び図64のステップS
220における、描画範囲のクリップチェックの処理を
詳細に示したものである。
【0414】ステップS270で、pxmaxとcxm
inの値を比較する。
【0415】cxminがpxmaxの値より大きい場
合には、ステップS274に進み、描画範囲フラグにE
RRORをセットして処理を終了する。
【0416】そうでない場合には、ステップS271に
進む。
【0417】ステップS271で、pxminとcxm
axの値を比較する。
【0418】pxminがcxmaxの値より大きい場
合には、ステップS274に進み、描画範囲フラグにE
RRORをセットして処理を終了する。
【0419】そうでない場合には、ステップS272に
進む。
【0420】ステップS272で、pymaxとcym
inの値を比較する。
【0421】cyminがpymaxの値より大きい場
合には、ステップS274に進み、描画範囲フラグにE
RRORをセットして処理を終了する。
【0422】そうでない場合には、ステップS273に
進む。
【0423】ステップS273で、pyminとcym
axの値を比較する。
【0424】pyminがcymaxの値より大きい場
合には、ステップS274に進み、描画範囲フラグにE
RRORをセットして処理を終了する。
【0425】そうでない場合には、ステップS275に
進む。
【0426】ステップS275で、pxminとcxm
inの値を比較する。
【0427】cxminがpxminの値より大きい場
合には、ステップS276に進み、cxminの値をp
xminにセットしてステップS277に進む。
【0428】そうでない場合には、ステップS277に
進む。
【0429】ステップS277で、pyminとcym
inの値を比較する。
【0430】cyminがpyminの値より大きい場
合には、ステップS278に進み、cyminの値をp
yminにセットしてステップS279に進む。
【0431】そうでない場合には、ステップS279に
進む。
【0432】ステップS279で、pxmaxとcxm
axの値を比較する。
【0433】pxmaxがcxmaxの値より大きい場
合には、ステップS280に進み、cxmaxの値をp
xmaxにセットしてステップS281に進む。
【0434】そうでない場合には、ステップS281に
進む。
【0435】ステップS281で、pymaxとcym
axの値を比較する。
【0436】pymaxがcymaxの値より大きい場
合には、ステップS282に進み、cymaxの値をp
ymaxにセットしてステップS283に進む。
【0437】そうでない場合には、ステップS283に
進む。
【0438】ステップS283で描画範囲フラグにOK
をセットして処理を終了する。
【0439】このように、描画範囲とクリップ領域の共
通範囲を求めることができる。
【0440】図73は、(pxmin,pymin)と
(pxmax,pymax)で囲まれた矩形領域の描画
範囲に対して(cxmin,cymin)と(cxma
x,cymax)で囲まれた矩形領域のクリップ領域が
設定された場合の例を示したものである。
【0441】図71〜72の処理により図68の描画範
囲は、(cxmin,cxmin)と(cxmax,c
ymax)で囲まれた矩形領域となる。
【0442】図74は、図55のステップS604、図
58のステップS124及び図65のステップS222
における、minバンドNo.、maxバンドNo.の
算出の処理を詳細に示したものである。
【0443】ステップS380で、バンド情報格納部5
からバンド高(1バンドの高さ)の情報を取り出して、
ステップS381へ進む。
【0444】ステップS381で、バンド高をhにセッ
トして、ステップS382へ進む。
【0445】ステップS382で、描画範囲情報のう
ち、pymin,pymaxを取り出して、ステップS
383へ進む。
【0446】ステップS383で、(pymin/h)
の商をminバンドNo.にセットして、ステップS3
84へ進む。
【0447】ステップS384で、(pymax/h)
の商をmaxバンドNo.にセットして、処理を終了す
る。
【0448】このように、描画範囲の情報からminバ
ンドNo.、maxバンドNo.の算出をすることがで
きる。
【0449】図75は、図35の色指定コマンドを図4
1〜42のフローチャートに基づいて解析して作成され
た、色指定のメモリ展開情報の一例を示している。
【0450】(a)はカラモードにおける色指定のメモ
リ展開情報を、(b)はモノクロモードにおける色指定
のメモリ展開情報の一例を示している。
【0451】ここで、コマンドテーブルNo.は、各色
指定メモリ展開情報ごとに異なり、それぞれのコマンド
の識別に用いられる。
【0452】ここでデータ数パラメータの内容は4とな
る。
【0453】(a)において、Y値,M値,C値,Bk
値は色材(トナー・インク)の原色であるY(Yell
ow),M(Magenta),C(Cyan),Bk
(Black)の濃度データ値であり、色指定コマンド
の色指定データ値の種別が異なっても、解析後のメモリ
展開情報作成時点では、必ずY,M,C,Bkの濃度デ
ータ値に変換されることを示している。
【0454】(b)において、グレイスケール濃度値は
Bk(Black)の濃度データ値であり、色指定コマ
ンドの色指定データ値の種別が異なっても、解析後のメ
モリ展開情報作成時点では、Bkの濃度データ値に変換
され、Yの濃度データ値の格納位置にセットされ、M,
C,Bkの濃度データ値の格納位置には0がセットされ
ることを示している。
【0455】図76は、図36の線幅指定コマンド・ク
リップ領域指定コマンド・塗りつぶし定義指定コマンド
・描画論理指定コマンドをそれぞれ図45、46、4
7、48のフローチャートに基づいて解析して作成され
た、各メモリ展開情報の一例を示している。
【0456】ここで、コマンドテーブルNo.は、各メ
モリ展開情報ごとに異なり、それぞれのコマンドの識別
に用いられる。
【0457】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0458】図77は、図37の直線描画コマンド・多
角形描画コマンドをそれぞれ図54〜56、57〜59
のフローチャートに基づいて解析して作成された、各メ
モリ展開情報の一例を示している。
【0459】ここで、コマンドテーブルNo.は、各メ
モリ展開情報ごとに異なり、それぞれのコマンドの識別
に用いられる。
【0460】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0461】多角形描画のメモリ展開情報の最終パラメ
ータは始点になるため(始点に戻って閉じるため)、図
に示すようにx1,y1となっている。
【0462】図78は、図38の文字描画コマンドを
図63〜66のフローチャートに基づいて解析して作成
された、各メモリ展開情報の一例を示している。
【0463】ここで、コマンドテーブルNo.は、各メ
モリ展開情報ごとに異なり、それぞれのコマンドの識別
に用いられる。
【0464】データ数パラメータの内容は、データ数パ
ラメータの後に来るデータの個数を示している。
【0465】図79は、1つのページを4つのバンドに
分割して、その大きさのY,M.C,Bkのバンドメモ
リを用い、図35〜38の描画属性コマンド・描画コマ
ンドの一部を用いて描画を行った場合の例を示してい
る。
【0466】描画の順番は、多角形、文字の順とする。
【0467】多角形は内部塗りつぶしあり、輪郭なしで
塗りつぶしの色はマゼンダ色とする。
【0468】文字の内部塗りつぶしの色は黄色とする。
【0469】図80〜81は、図79の描画の際に用い
るメモリ展開情報を示している。
【0470】ここでは、解析される順に並べられてお
り、コマンドを受け取った順番と同じである。
【0471】ここで、描画論理指定のメモリ展開情報の
描画論理指定値0は描画論理が上書きであることを示し
ている。
【0472】図のように、描画属性のメモリ展開情報に
ついては、すべてminバンドNo.は0、maxバン
ドNo.は3となり、全バンドで解析されることにな
る。
【0473】これは、このようにしないと、描画属性の
情報を各描画のメモリ展開情報に付加する必要があるた
め、メモリ展開情報のデータ量が多くなってしまうため
である。
【0474】描画のメモリ展開情報については、描画範
囲が存在する最小バンドNo.がminバンドNo.
に、描画範囲が存在する最大バンドNo.がmaxバン
ドNo.に設定されている。
【0475】例えば、多角形のメモリ展開情報のmin
バンドNo.は0、maxバンドNo.は1である。
【0476】図82は、1つのページを4つのバンドに
分割して、その大きさのY,M.C,Bkのバンドメモ
リを用い、直線描画に対してクリップ領域指定を設定し
て描画を行った場合の例を示している。
【0477】直線の線の色は赤色(M100%,Y10
0%)とする。
【0478】図83は、図82の描画の際に用いるメモ
リ展開情報を示している。
【0479】ここでは、解析される順に並べられてお
り、コマンドを受け取った順番と同じである。
【0480】直線描画の描画範囲は、クリップ領域を考
慮しなければ、図67の処理により0バンドから3バン
ドにまたがる範囲となる。
【0481】クリップ領域を考慮すると、図71〜72
の処理により、1バンドから2バンドにまたがる範囲と
なる。
【0482】よって、直線描画のメモリ展開情報につい
ては、minバンドNo.は1、maxバンドNo.は
2となる。
【0483】図84は、実際にメモリに対して描画のパ
ターン展開を行う関数へのジャンプアドレス及び、描画
属性の指定を行う(内部変数等にセット)関数へのジャ
ンプアドレスが格納されているコマンド実行ジャンプテ
ーブル1(ROM)である。
【0484】コマンドNo.(0〜n)に対応してジャ
ンプアドレスが格納されている。
【0485】図85は、図86において、メモリに対し
て描画のパターン展開を行う関数へのジャンプアドレス
をすべて読み飛ばし関数へのジャンプアドレスに置き換
えたものであり、コマンド実行ジャンプテーブル2(R
OM)とする。
【0486】図84と同様、コマンドNo.(0〜n)
に対応してジャンプアドレスが格納されている。
【0487】図86は、図33のステップS12の処理
を詳細に記述したフローチャートである。
【0488】ステップS390で、描画可能範囲をクリ
ップ範囲(図形・文字等の描画可能な範囲を設定した矩
形領域)を考慮して設定し、ステップS391へ進む。
【0489】ステップS391で、Y,M,C,Bk各
仮想ページメモリの先頭アドレスの計算・設定を行い、
ステップS392に進む。
【0490】ステップS392で、メモリ展開情報のm
inバンドNo.、maxバンドNo.の値を読み込
み、次のデータにポインタを進めてステップS393に
進む。
【0491】ステップS393でコマンドNo.を読み
込んでステップS394へ進む。
【0492】ステップS394で、minバンドNo.
≦i(現在のバンドNo.)≦maxバンドNo.の関
係が成立するかどうかチェックする。
【0493】成立するならば、ステップS395へ進ん
で、図90のコマンド実行ジャンプテーブル1の先頭に
ポインタをセットしてステップS397へ進む。
【0494】成立しないならば、ステップS396へ進
んで、図91のコマンド実行ジャンプテーブル2の先頭
にポインタをセットしてステップS397へ進む。
【0495】ステップS397でコマンドNo.に相当
する分だけテーブルのポインタを進めてステップ398
ヘ進む。
【0496】ステップS398で、ポインタの指す内容
(ジャンプアドレス)を取り出してステップS399へ
進む。
【0497】ステップS399で、ジャンプアドレスの
指す関数を実行して処理を終了する。
【0498】図87は、図86のステップS390の処
理を詳細に記述したフローチャートである。
【0499】以下、描画範囲のyの値、クリップ領域の
値はプリンタ座標上の値である。
【0500】ステップS400で、バンド情報格納部5
からバンド高情報[1つのバンドの高さ(ドット数また
はスキャンライン数)]を取り出し、ステップS401
へ進む。
【0501】ステップS401で、(上述のバンド高)
×i(現在のバンドNo.)の値を描画可能範囲のyの
最小値minyにセットしてステップS402に進む。
【0502】ステップS402で、(i+1)の値とバ
ンド数の値を比較する。
【0503】バンド数の値が(i+1)の値より大きい
場合には、ステップS403に進んで(上述のバンド
高)×(i+1)−1の値を描画可能範囲のyの最大値
maxyにセットしてステップS405に進む。
【0504】そうでない場合には、ステップS404に
進んで用紙の有効印字領域のyの最大値を描画可能範囲
のyの最大値maxyにセットしてステップS405に
進む。
【0505】ステップS405で、クリップ領域(図形
・文字等の描画可能な範囲を設定した矩形領域)の情報
のうち、yの最小値dspymi、yの最大値dspy
mxを取り出してステップS406へ進む。
【0506】ステップS406で、minyとdspy
miを比較する。
【0507】minyがdspymiより大きい場合に
は、ステップS407に進んで、minyの値をdsp
ymiにセットしてステップS408に進む。
【0508】そうでない場合には、そのままステップS
408に進む。
【0509】ステップS408で、maxyとdspy
mxを比較する。
【0510】dspymxがmaxyより大きい場合に
は、ステップS409に進んで、maxyの値をdsp
ymxにセットして処理を終了する。
【0511】そうでない場合には、そのまま処理を終了
する。
【0512】バンドメモリ展開の際に用いる実際の図形
・文字等の描画可能な範囲は本フローによってセットさ
れたdspymi、dspymxを用いる。
【0513】図88は、バンド高を512ドットとした
場合のプリンタ座標の設定を示している。
【0514】この場合、図に示したように、0バンドの
minyの値は0、maxyの値は511、1バンドの
minyの値は512、maxyの値は1023とな
る。
【0515】図89は、バンドNo.がiの場合の図形
・文字等の描画可能な範囲に対して、dspymi<m
iny、maxy<dspymxとなるクリップ領域が
設定された場合の例を示している。
【0516】この場合、バンドNo.がiに対応するバ
ンドメモリ展開の際に用いる実際の図形・文字等の描画
可能な範囲は、図の処理に従って本図の斜線部分にな
る。
【0517】ここで、dspxmi,dspxmxは、
それぞれクリップ領域のxの最小値、xの最大値を示し
ている。
【0518】図90は、図86のステップS391の処
理を詳細に記述したフローチャートである。
【0519】ステップS740で、カラーモードかどう
かチェックする。
【0520】カラーモードの場合、ステップS741に
進んで、バンド情報格納部5からY,M,C,Bk各バ
ンドメモリの先頭アドレスの情報X_bandadr
(X=y,m,c,k)を取り出し、ステップS742
へ進む。
【0521】ステップS742で、バンド情報格納部5
からバンドメモリの容量(バイト)の情報を取り出し、
ステップS743に進む。
【0522】ステップS743で、X_bandadr
(X=y,m,c,k)−(バンドメモリ容量)×i
(現在のバンドNo.)の計算により、Y,M,C,B
kの各仮想ページメモリの先頭アドレスX_topad
r(X=y,m,c,k)を求めて処理を終了する。
【0523】ステップS740で、カラーモードでない
場合、ステップS744に進んで、バンド情報格納部5
からBkバンドメモリの先頭アドレスの情報k_ban
dadrを取り出し、ステップS745へ進む。
【0524】ステップS745で、バンド情報格納部5
からバンドメモリの容量(バイト)の情報を取り出し、
ステップS746に進む。
【0525】ステップS746で、k_bandadr
−(バンドメモリ容量)×i(現在のバンドNo.)の
計算により、Bkの各仮想ページメモリの先頭アドレス
を求めてy_topadrにセットして処理を終了す
る。
【0526】図91は、カラーモード時、図28の5バ
ンド目(バンドNo.が4)に描画を展開する際のY,
M,C,Bkの各仮想ページメモリの先頭アドレスを示
している。
【0527】上記アドレスは図90の処理により求めら
れる。
【0528】図92は、モノクロモード時、図28の5
バンド目(バンドNo.が4)に描画を展開する際のB
kの各仮想ページメモリの先頭アドレスを示している。
【0529】上記アドレスは図90の処理により求めら
れる。
【0530】図93は、図86のステップS399にお
いて、線幅指定関数を実行する際の処理を示したもので
ある。
【0531】ステップS410で、線幅指定のメモリ展
開情報から線幅値を読み込んでステップS411へ進
む。
【0532】ステップS411で、描画関数実行時に描
画パターンをメモリ展開する際に用いる線幅情報とし
て、上記の線幅値を変数lwidthに設定して、処理
を終了する。
【0533】図94は、図86のステップS399にお
いて、線色指定関数を実行する際の処理を示したもので
ある。
【0534】ステップS420で、線色指定のメモリ展
開情報から線色のY,M,C,Bk値を読み込んでステ
ップS421へ進む。
【0535】ステップS421で、描画関数実行時に描
画パターンをメモリ展開する際に用いる線色情報とし
て、上記のY,M,C,Bk値を変数lymckに設定
して、処理を終了する。
【0536】図95は、図86のステップS399にお
いて、塗りつぶし色指定関数を実行する際の処理を示し
たものである。
【0537】ステップS430で、塗りつぶし色指定の
メモリ展開情報から塗りつぶし色のY,M,C,Bk値
を読み込んでステップS431へ進む。
【0538】ステップS431で、描画関数実行時に描
画パターンをメモリ展開する際に用いる塗りつぶし色情
報としてY,M,C,Bk値を変数fymckに設定し
て、処理を終了する。
【0539】図96は、図86のステップS399にお
いて、文字色指定関数を実行する際の処理を示したもの
である。
【0540】ステップS440で、文字色指定のメモリ
展開情報から文字色のY,M,C,Bk値を読み込んで
ステップS441へ進む。
【0541】ステップS441で、文字印字関数実行時
に文字パターンをメモリ展開する際に用いる文字色情報
として、Y,M,C,Bk値を変数tymckに設定し
て、処理を終了する。
【0542】図97は、図86のステップS399にお
いて、クリップ領域指定関数を実行する際の処理を示し
たものである。
【0543】ステップS450で、クリップ領域指定の
メモリ展開情報からクリップ領域のxmin,ymi
n,xmax,ymaxの値を読み込んでステップS4
51へ進む。
【0544】ステップS451で、上記のxmin,y
min,xmax,ymaxの値を描画関数関数実行時
に描画パターンをメモリ展開する際に用いるクリップ領
域情報として、それぞれ、変数dspxmi,dspy
mi,dspxmx,dspymxに設定してステップ
S452へ進む。
【0545】ステップS452で、バンド情報格納部5
からバンド番号iに対するバンドの描画範囲のmin
y,maxy(プリンタ座標上)の値を取り出して、ス
テップS453へ進む。
【0546】ステップS453で、minyとdspy
miを比較する。
【0547】minyがdspymiより大きい場合に
は、ステップS454に進んでminyの値をdspy
miにセットしてステップS455に進む。
【0548】そうでない場合には、ステップS455に
進む。
【0549】ステップS455で、maxyとdspy
mxを比較する。
【0550】dspymxがmaxyより大きい場合に
は、ステップS456に進んでmaxyの値をdspy
mxにセットして処理を終了する。
【0551】そうでない場合には、そのまま処理を終了
する。
【0552】図98は、図86のステップS399にお
いて、塗りつぶし定義指定関数を実行する際の処理を示
したものである。
【0553】ステップS460で、塗りつぶし定義指定
のメモリ展開情報から塗りつぶしパターン番号を読み込
んでステップS461へ進む。
【0554】ステップS461で、描画関数実行時に描
画パターンをメモリ展開する際に用いる塗りつぶしパタ
ーン情報として、上記の塗りつぶしパターン番号を変数
fpatに設定して、ステップS462へ進む。
【0555】ステップS462で、塗りつぶし定義指定
のメモリ展開情報から輪郭線有無のフラグ値を読み込ん
でステップS463へ進む。
【0556】ステップS463で、描画関数実行時に描
画パターンをメモリ展開する際に用いる輪郭線有無の情
報として、上記の輪郭線有無のフラグ値を変数fper
mtに設定して、処理を終了する。
【0557】図99は、図86のステップS399にお
いて、描画論理指定関数を実行する際の処理を示したも
のである。
【0558】ステップS730で、描画論理指定のメモ
リ展開情報から描画論理値を読み込んでステップS73
1へ進む。
【0559】ステップS731で、描画関数実行時に描
画パターンをメモリ展開する際に用いる描画論理情報と
して、上記の描画論理値を変数logstylに設定し
て、処理を終了する。
【0560】図100〜101は、図86のステップS
399において、直線描画の関数を実行する際の処理を
示したものである。
【0561】ステップS470で、直線描画のメモリ展
開情報からデータ数を読み込んでステップS471へ進
む。
【0562】ステップS471で、上記のデータ数の1
/2(直線の座標点数)を定数nにセットしてステップ
S472へ進む。
【0563】ステップS472で、線色情報lymck
の値を取り出してステップS473へ進む。
【0564】ステップS473で、lymckのY値を
P_Y、lymckのM値をP_M、lymckのC値
をP_C、lymckのBk値をP_Bkにセットして
ステップS474へ進む。
【0565】ステップS474で、ステップS473で
求めたP_Y,P_M,P_C,P_Bkの値に対応し
たディザパターンをセットして、ステップS475へ進
む。
【0566】ステップS475で、塗りつぶし関数へア
クセスするためのポインタをpgjmptblにセット
してステップS476へ進む。
【0567】ステップS476で、定数mに1をセット
してステップS477へ進む。
【0568】ステップS477で、直線描画のメモリ展
開情報からプリンタ座標上の点(xm,ym)を読み込
んでステップS478へ進む。
【0569】ステップS478で、直線描画のメモリ展
開情報からプリンタ座標上の点(xm+1,ym+1)
を読み込んでステップS479へ進む。
【0570】ステップS479で、プリンタ座標上の2
点(xm,ym)、(xm+1,ym+1)の間の直線
のパターンをバンドメモリに展開し、ステップS480
へ進む。
【0571】ステップS480でnと(m+1)の値を
比較する。nが(m+1)より大きい場合には、ステッ
プ481に進んでmを1つインクリメントしてステップ
478に戻る。
【0572】そうでない場合には処理を終了する。
【0573】このように、直線描画・線色指定・線幅指
定・描画論理指定のメモリ展開情報により直線の描画パ
ターンをバンドメモリに展開することが可能である。
【0574】図102〜105は、図86のステップS
399において、多角形描画の関数を実行する際の処理
を示したものである。
【0575】ステップS490で、多角形描画のメモリ
展開情報からデータ数を読み込んでステップS491へ
進む。
【0576】ステップS491で、上記のデータ数の1
/2(多角形の座標点数)を定数nにセットしてステッ
プS492へ進む。
【0577】ステップS492で、定数mに1をセット
してステップS493へ進む。
【0578】ステップS493で、多角形描画のメモリ
展開情報からプリンタ座標上の点(xm,ym)を読み
込んでステップS494へ進む。
【0579】ステップS494で、上記のxm,ymの
値をシステムワーク内の格納エリアにセットしてステッ
プS495へ進む。
【0580】ステップS495で、nとmの値を比較す
る。
【0581】nがmより大きい場合には、ステップS4
96へ進んでmを1つインクリメントしてステップS4
93に戻る。
【0582】そうでない場合にはステップS497へ進
む。
【0583】ステップS497で、塗りつぶしパターン
情報fpatの値を0と比較する。
【0584】0の場合には、ステップS503に進む。
【0585】0でない場合には、ステップS498に進
んで塗りつぶし色情報fymckの値を取り出してステ
ップS499へ進む。
【0586】ステップS499で、fymckのY値を
P_Y、fymckのM値をP_M、fymckのC値
をP_C、fymckのBk値をP_Bkにセットして
ステップS500へ進む。
【0587】ステップS500で、塗りつぶし関数へア
クセスするためのポインタをpgjmptblにセット
してステップS501へ進む。
【0588】ステップS501で、ステップS500で
求めたP_Y,P_M,P_C,P_Bkの値に対応し
たディザパターンをセットして、ステップS502へ進
む。
【0589】ステップS502で、ステップS492〜
ステップS496の処理によりシステムワーク内の格納
エリアにセットされた多角形の輪郭点(x1,y1),
・・・,(xn,yn)で囲まれた領域に多角形の内部
塗りつぶしパターンをバンドメモリに展開し、ステップ
S503へ進む。
【0590】ステップS503で、輪郭線有無の情報f
permtの値を0と比較する。
【0591】0の場合には処理を終了する。
【0592】0でない場合には、ステップS504に進
んで線色情報lymckの値を取り出してステップS5
05へ進む。
【0593】ステップS505で、lymckのY値を
P_Y、lymckのM値をP_M、lymckのC値
をP_C、lymckのBk値をP_Bkにセットして
ステップS506へ進む。
【0594】ステップS506で、ステップS505で
求めたP_Y,P_M,P_C,P_Bkの値に対応し
たディザパターンをセットして、ステップS507へ進
む。
【0595】ステップS507で、塗りつぶし関数へア
クセスするためのポインタをpgjmptblにセット
してステップS508へ進む。
【0596】ステップS508で定数mに1をセットし
てステップS509へ進む。
【0597】ステップS509で、システムワーク内の
格納エリアから多角形の輪郭点の座標Xm,Ymを取り
出してステップS510へ進む。
【0598】ステップS510で、システムワーク内の
格納エリアから多角形の輪郭点の座標Xm+1,Ym+
1を取り出してステップS511へ進む。
【0599】ステップS511で、プリンタ座標上の2
点(xm,ym)、(xm+1,ym+1)の間の直線
のパターンをバンドメモリに展開し、ステップS512
へ進む。
【0600】ステップS512でnと(m+1)の値を
比較する。nが(m+1)より大きい場合には、ステッ
プS513へ進んでmを1つインクリメントしてステッ
プS510に戻る。
【0601】そうでない場合には処理を終了する。
【0602】このように、多角形描画・塗りつぶし定義
指定・線色指定・塗りつぶし色指定・描画論理指定のメ
モリ展開情報により多角形の描画パターンをバンドメモ
リに展開することが可能である。
【0603】図106〜107は、図86のステップS
399において、文字描画の関数を実行する際の処理を
示したものである。
【0604】ステップS520で、文字描画のメモリ展
開情報からデータ数を読み込んでステップS521へ進
む。
【0605】ステップS521で、文字描画のメモリ展
開情報から描画位置のx,y座標、xr,yrを読み込
んでステップS522へ進む。
【0606】ステップS522で、文字描画のメモリ展
開情報から文字の内部コードを読み込んでステップS5
23へ進む。
【0607】ステップS523で、xr,yr、内部コ
ードの値をもとに印字する文字の輪郭点情報(座標点)
を計算してステップS524へ進む。
【0608】ステップS524で、ステップS523で
求めた文字の輪郭点情報(x1,y1),・・・,(x
n,yn)をシステムワークの格納エリアにセットして
ステップS525へ進む。
【0609】ステップS525で、文字色情報tymc
kの値を取り出してステップS526へ進む。
【0610】ステップS526で、tymckのY値を
P_Y、tymckのM値をP_M、tymckのC値
をP_C、tymckのBk値をP_Bkにセットして
ステップS527へ進む。
【0611】ステップS527で、ステップS526で
求めたP_Y,P_M,P_C,P_Bkの値に対応し
たディザパターンをセットして、ステップS528へ進
む。
【0612】ステップS528で、塗りつぶし関数へア
クセスするためのポインタをpgjmptblにセット
してステップS529へ進む。
【0613】ステップS529で、システムワークの格
納エリア内の文字の輪郭点情報(x1,y1),・・
・,(xn,yn)をもとに文字パターンをバンドメモ
リに展開し、処理を終了する。
【0614】このように、文字描画・文字色指定・描画
論理指定のメモリ展開情報により文字パターンをバンド
メモリに展開することが可能である。
【0615】図108は、図86のステップS399に
おいて、読み飛ばしの関数を実行する際の処理を示した
ものである。
【0616】ステップS540で、メモリ展開情報から
データ数を読み込んで、ステップS541に進む。
【0617】ステップS541でデータ数を定数nにセ
ットして、ステップS542へ進む。
【0618】ステップS542で定数jに0をセットし
てステップS543へ進む。
【0619】ステップS543で、データ数パラメータ
の次のデータにポインタをセットして、ステップS54
4へ進む。
【0620】ステップS544で、ポインタの指すデー
タを読み込んで、ステップS545へ進む。
【0621】ステップS545で、定数jを1つインク
リメントしてステップS546へ進む。
【0622】ステップS546で、ポインタを次のデー
タに進めて、ステップS547へ進む。
【0623】ステップS547で、定数jとデータ数n
を比較して、等しくないならば、ステップS544へ戻
る。
【0624】等しいならば、処理を終了する。
【0625】このように、描画のメモリ展開情報を読み
飛ばすことが可能である。
【0626】図109は、図24のディザパターン格納
部20の中にあるディザパターンアドレステーブル21
の一例を示したものである。
【0627】ディザパターンアドレステーブルはY,
M,C,Bkの濃度値に対応したディザパターンが格納
されている領域の先頭アドレスが格納されている。
【0628】本例ではY,M,C,Bkの濃度値の範囲
を0〜255としている。
【0629】ディザパターンアドレステーブルはY,
M,C,Bkそれぞれに対応した4つのテーブルが存在
しており、これはY,M,C,Bkの濃度値が同じ値で
も用いられるディザパターンが異なる場合があることを
示している。
【0630】図110は、図24のディザパターン格納
部20に格納されているディザパターンの一例を示した
ものである。
【0631】(a)はディザパターンの大きさが32ド
ット×32ドットであることを示しており、メモリ容量
は128バイトである。
【0632】(b)はY,M,C,Bkの濃度値が51
(ドットのある部分が20%)の場合のディザパターン
の一例を示している。
【0633】図111〜112は、図100のステップ
S474、図103のステップS500、図104のス
テップS506、図107のステップS527の処理を
示したフローチャートである。
【0634】ステップS800で、カラーモードかどう
かチェックする。
【0635】カラーモードでないならば、ステップS8
01に進んで図109のMのディザパターンのアドレス
テーブルの先頭にポインタをセットしてステップS80
2に進む。
【0636】ステップS802でP_Yの値の分だけポ
インタを進めてステップS803に進む。
【0637】ステップS803で、ポインタの指す内容
をYdtopadにセットして処理を終了する。
【0638】ステップS800で、カラーモードなら
ば、ステップS804に進んで図109のYのディザパ
ターンのアドレステーブルの先頭にポインタをセットし
てステップS805に進む。
【0639】ステップS805でP_Yの値の分だけポ
インタを進めてステップS806に進む。
【0640】ステップS806で、ポインタの指す内容
をYdtopadにセットしてステップS807に進
む。
【0641】ステップS807で、図109のMのディ
ザパターンのアドレステーブルの先頭にポインタをセッ
トしてステップS808に進む。
【0642】ステップS808でP_Mの値の分だけポ
インタを進めてステップS809に進む。
【0643】ステップS809で、ポインタの指す内容
をMdtopadにセットしてステップS810に進
む。
【0644】ステップS810で、図109のCのディ
ザパターンのアドレステーブルの先頭にポインタをセッ
トしてステップS811に進む。
【0645】ステップS811でP_Cの値の分だけポ
インタを進めてステップS812に進む。
【0646】ステップS812で、ポインタの指す内容
をCdtopadにセットしてステップS813に進
む。
【0647】ステップS813で、図109のBkのデ
ィザパターンのアドレステーブルの先頭にポインタをセ
ットしてステップS814に進む。
【0648】ステップS814でP_Bkの値の分だけ
ポインタを進めてステップS815に進む。
【0649】ステップS815で、ポインタの指す内容
をKdtopadにセットして処理を終了する。
【0650】このように、Y,M,C,Bkの濃度値に
対応して塗りつぶしに用いるディザパターンが格納され
ている領域の先頭アドレスを求めて変数にセットしてお
くことが可能である。
【0651】また、本例では、モノクロモード時に用い
るディザパターンはMのディザパターンを用いており、
格納されている領域の先頭アドレスはYのディザパター
ンの格納変数Ydtopadにセットされている。
【0652】図113は、図24のメモリ展開用テーブ
ル格納部22内の塗りつぶし関数アドレス格納テーブル
23のうち、描画論理が上書きに対応したテーブルの一
例を示している。
【0653】図に示したように、Y,M,C,Bkごと
に展開メモリへの塗りつぶし関数へのジャンプアドレス
が格納されている。
【0654】ここで、塗りつぶし関数は1スキャンライ
ンのメモリに対する塗りつぶし処理を行うものである。
【0655】○,□,△,◇は、展開メモリへのクリア
塗りつぶし関数へのジャンプアドレスを示しており、そ
れぞれY,M,C,Bkのバンドメモリへの展開用のジ
ャンプアドレスである。
【0656】は、展開メモリへの上書き
塗りつぶし関数へのジャンプアドレスを示しており、そ
れぞれY,M,C,Bkのバンドメモリへの展開用のジ
ャンプアドレスである。
【0657】*は、モノクロモード時の展開メモリへの
上書き塗りつぶし関数へのジャンプアドレスを示してい
る。
【0658】※は、ダミー処理関数へのジャンプアドレ
スを示している。
【0659】ダミー処理関数は、何も処理をしない関数
である。
【0660】上書き処理において、Y,M,C,Bkの
濃度値のうち、Y,Cが0でなく、M,Bkが0の場
合、M,Bkの塗りつぶしは塗りつぶす部分をクリアす
る必要がある。
【0661】それは、Y,M,C,Bkのメモリの内容
がORされて用紙に印刷されるためである。
【0662】図114は、図24のメモリ展開用テーブ
ル格納部22内の塗りつぶし関数アドレス格納テーブル
23のうち、描画論理が透過に対応したテーブルの一例
を示している。
【0663】図に示したように、Y,M,C,Bkごと
に展開メモリへの塗りつぶし関数へのジャンプアドレス
が格納されている。
【0664】ここで、塗りつぶし関数は1スキャンライ
ンのメモリに対する塗りつぶし処理を行うものである。
【0665】V,W,X,Zは、展開メモリへのリバー
ス塗りつぶし関数へのジャンプアドレスを示しており、
それぞれY,M,C,Bkのバンドメモリへの展開用の
ジャンプアドレスである。
【0666】は、展開メモリへの透過塗
りつぶし関数へのジャンプアドレスを示しており、それ
ぞれY,M,C,Bkのバンドメモリへの展開用のジャ
ンプアドレスである。
【0667】◎は、モノクロモード時の展開メモリへの
透過塗りつぶし関数へのジャンプアドレスを示してい
る。
【0668】※は、ダミー処理関数へのジャンプアドレ
スを示している。
【0669】ダミー処理関数は、何も処理をしない関数
である。
【0670】透過処理において、Y,M,C,Bkの濃
度値のうちY,Cが0でなく、M,Bkが0の場合、
M,Bkの塗りつぶしは塗りつぶすパターンの反転パタ
ーンでメモリにAND処理をする必要がある。
【0671】それは、Y,M,C,Bkのメモリの内容
がOR処理されて用紙に印刷されるためである。
【0672】図115は、図24のメモリ展開用テーブ
ル格納部22内の描画論理別テーブルアドレス格納テー
ブル24の一例を示している。
【0673】これは、図113,114等の描画論理に
対応した塗りつぶし関数アドレス格納テーブル23の先
頭アドレスが格納されている。
【0674】テーブルには描画論理情報logstyl
の値に対応してアドレスが格納されている。
【0675】logstylの値が0の場合には、描画
論理が上書きであり、テーブルの先頭のポインタの指す
内容は図113の先頭アドレスになっている。
【0676】logstylの値が1の場合には、描画
論理が透過であり、テーブルの先頭のポインタの指す内
容は図114の先頭アドレスになっている。
【0677】テーブルにはn(定数)種類の描画論理に
対応してアドレスが格納することができる。
【0678】図116は、図100のステップS47
5、図103のステップS501、図104のステップ
S507、図107のステップS528の処理に用いら
れるbitsetフラグの一例を示したものである。
【0679】(a)は、bitsetフラグは8ビット
で構成され、0,1,2,3ビットにそれぞれBk,
C,M,Yの濃度値が0か0でないかの情報がセットさ
れることを示している。
【0680】すなわち、濃度値が0ならば、該当するビ
ットはOFFになり、0でないならば、該当するビット
はONになる。
【0681】例えば、Y,M,C,Bkの濃度値のうち
Y,Cが0でなく、M,Bkが0の場合、フラグの値
は、10になる。
【0682】4ビット目は(b)に示したようにモノク
ロモード時にONになる。
【0683】また、モノクロモード時には、4ビット目
の他のビットは0となり、フラグの値は16になる。
【0684】図117〜119は、図100のステップ
S475、図103のステップS501、図104のス
テップS507、図107のステップS528の処理を
示したフローチャートである。
【0685】ステップS820で、bitsetフラグ
の内容をクリアしてステップS821に進む。
【0686】ステップS821で、カラーモードかどう
かチェックする。
【0687】カラーモードでないならば、ステップS8
22に進んでbitsetフラグに0x1000をセッ
ト、すなわち4ビット目のビットのみをONにしてステ
ップS831に進む。
【0688】ステップS821で、カラーモードなら
ば、ステップS823に進んでP_Yの値と0を比較す
る。
【0689】0ならば、ステップS825に進む。
【0690】0でないならば、ステップS824に進ん
で、bitsetフラグのYビット(ビット3)をON
にしてステップS825に進む。
【0691】ステップS825で、P_Mの値と0を比
較する。
【0692】0ならば、ステップS827に進む。
【0693】0でないならば、ステップS826に進ん
で、bitsetフラグのMビット(ビット2)をON
にしてステップS827に進む。
【0694】ステップS827で、P_Cの値と0を比
較する。
【0695】0ならば、ステップS829に進む。
【0696】0でないならば、ステップS828に進ん
で、bitsetフラグのCビット(ビット1)をON
にしてステップS829に進む。
【0697】ステップS829で、P_Bkの値と0を
比較する。
【0698】0ならば、ステップS831に進む。
【0699】0でないならば、ステップS830に進ん
で、bitsetフラグのBkビット(ビット0)をO
NにしてステップS831に進む。
【0700】ステップS831で、描画論理別テーブル
アドレス格納テーブル24の先頭にポインタをセットし
てステップS832に進む。
【0701】ステップS832で、描画論理情報log
stylを取り出してステップS833に進む。
【0702】ステップS833で、logstylの値
の分だけポインタを進めてステップS834に進む。
【0703】ステップS834で、ポインタの指す内容
(塗りつぶし関数アドレス格納テーブル23の先頭アド
レス)をtabletopにセットしてステップS83
5に進む。
【0704】ステップS835で、tabletopに
ポインタをセットしてステップS836に進む。
【0705】ステップS836で、bitsetフラグ
の値を取り出してステップS837に進む。
【0706】ステップS837で、取り出した値の分だ
けポインタを進めてステップS838に進む。
【0707】ステップS838で、ポインタの指すアド
レスをpgjmptblにセットして処理を終了する。
【0708】このように、描画論理の情報に基づき、b
itsetフラグの値により、Y,M,C,Bkの濃度
値(0か0でないか)に対応して、図113,114等
の描画論理に対応した塗りつぶし関数アドレス格納テー
ブル23内の塗りつぶし関数へのジャンプアドレスにア
クセスすることができる。
【0709】また、モノクロモード時の塗りつぶし関数
へのジャンプアドレスにアクセスすることもできる。
【0710】図120は、プリンタ座標上の2点(x
m,ym)、(xm+1,ym+1)を結ぶ直線の一例
を示している。
【0711】線幅lwidthを考慮すると、直線の描
画は、4点(x1,y1)、(x2,y2)、(x3,
y3)、(x4,y4)で囲まれた領域の塗りつぶしと
みなすことができる。 また、角度θは、水平右方向か
らの直線の傾きを示している。
【0712】図121〜123は、図120に基づき、
図101のステップS479、図105のステップS5
11の処理のフローチャートを示している。
【0713】ステップS850で、線幅情報lwidt
hを取り出してステップS851に進む。
【0714】ステップS851で、lwidthを2で
割り算した結果をαにセットしてステップS852に進
む。
【0715】ステップS852で、{(xm+1−x
m)2、+(ym+1−ym)2}の平方根をlにセッ
トしてステップS853に進む。
【0716】ステップS853で、(xm+1−xm)
/lの結果をcosθにセット、(ym+1−ym)/
lの結果をsinθにセットしてステップS854に進
む。
【0717】ステップS854で、xm+1+αsin
θの結果をx1にセット、ym+1−αcosθの結果
をy1にセットしてステップS855に進む。
【0718】ステップS855で、xm+1−αsin
θの結果をx2にセット、ym+1+αcosθの結果
をy2にセットしてステップS856に進む。
【0719】ステップS856で、xm−αsinθの
結果をx3にセット、ym+αcosθの結果をy3に
セットしてステップS857に進む。
【0720】ステップS857で、xm+αsinθの
結果をx4にセット、ym+αcosθの結果をy4に
セットしてステップS858に進む。
【0721】ステップS858で、(x1,y1)、
(x2,y2)、(x3,y3)、(x4,y4)の順
にシステムワークの格納エリアにセットしてステップS
859に進む。
【0722】ステップS859で定数pに4(ステップ
S858の座標点の数)をセットしてステップS860
に進む。
【0723】ステップS860で、ステップS858で
システムワークの格納エリアにセットされたy座標の最
小値・最大値を検出し、それぞれypmin,ypma
xにセットしてステップS861に進む。
【0724】ステップS861で、変数βにypmin
の値をセットしてステップS862に進む。
【0725】ステップS862で、y座標値βに対応す
る1スキャンラインの塗りつぶしを行い、ステップS8
63に進む。
【0726】ステップS863で、βとypmaxの値
を比較する。
【0727】等しいならば処理を終了する。
【0728】等しくないならば、ステップS864に進
んでβの値を1インクリメントしてステップS862に
戻る。
【0729】このように、プリンタ座標上の2点(x
m,ym)、(xm+1,ym+1)を結ぶ直線をバン
ドメモリに展開することができる。
【0730】図124は、プリンタ座標上の5点(x
1,y1)〜(x5,y5)からなる多角形を示してい
る。
【0731】この多角形の内部塗りつぶしの描画は、5
点(x1,y1)〜(x5,y5)で囲まれた領域の塗
りつぶしとなる。
【0732】図125は、プリンタ座標上の輪郭点(x
1,y1)〜(x12,y12)で構成される文字Eを
示している。
【0733】この文字の内部塗りつぶしの描画は、12
点(x1,y1)〜(x12,y12)で囲まれた領域
の塗りつぶしとなる。
【0734】図126は、図124,125に示したよ
うな多角形内部や文字内部の塗りつぶしにおいて、図1
03のステップS502、図107のステップS529
の処理のフローチャートを示している。
【0735】ステップS870で定数pにn(輪郭点の
数)をセットしてステップS871に進む。
【0736】ステップS871で、図102のステップ
S494、図106のステップS524でシステムワー
クの格納エリアにセットされたy座標の最小値・最大値
を検出し、それぞれypmin,ypmaxにセットし
てステップS872に進む。
【0737】ステップS872で、変数βにypmin
の値をセットしてステップS873に進む。
【0738】ステップS873で、y座標値βに対応す
る1スキャンラインの塗りつぶしを行い、ステップS8
74に進む。
【0739】ステップS874で、βとypmaxの値
を比較する。
【0740】等しいならば処理を終了する。
【0741】等しくないならば、ステップS875に進
んでβの値を1インクリメントしてステップS873に
戻る。
【0742】このように、プリンタ座標上のn個の輪郭
点(x1,y1)〜(xn,yn)で囲まれた領域の塗
りつぶしををバンドメモリに展開することができる。
【0743】図127〜128は、図122のステップ
S860、図126のステップS871の処理のフロー
チャートを示している。
【0744】ステップS880でシステムワークの輪郭
点の格納エリアの先頭にポインタをセットしてステップ
S881に進む。
【0745】ステップS881でポインタの指す座標の
y座標をy1にセットしてステップS882に進む。
【0746】ステップS882でy1の値をypmi
n,ypmaxにセットしてステップS883に進む。
【0747】ステップS883で変数iに1をセットし
てステップS884に進む。
【0748】ステップS884でiと定数pを比較す
る。
【0749】等しいならば、処理を終了する。
【0750】等しくないならば、ステップS885に進
んでポインタを1つ進めてステップS886に進む。
【0751】ステップS886で、iの値を1インクリ
メントしてステップS887に進む。
【0752】ステップS887でポインタの指す座標の
y座標をyiにセットしてステップS888に進む。
【0753】ステップS888でyiとypmaxの値
を比較する。
【0754】yiがypmaxより大きいならば、ステ
ップS889に進んでyiをypmaxにセットしてス
テップS890に進む。
【0755】そうでないならば、ステップS890に進
む。
【0756】ステップS890でyiとypminの値
を比較する。
【0757】ypminがyiより大きいならば、ステ
ップS891に進んでyiをypminにセットしてス
テップS884に戻る。
【0758】そうでないならば、ステップS884に戻
る。
【0759】このように、システムワークの格納エリア
にセットされたy座標の最小値・最大値を検出し、それ
ぞれypmin,ypmaxにセットすることができ
る。
【0760】図129〜132は、図123のステップ
S862、図126のステップS873の処理のフロー
チャートを示している。
【0761】ステップS900で、塗りつぶしを行う1
スキャンライン上のxの範囲を計算してステップS90
1に進む。
【0762】ステップS901で、ステップS900で
計算した塗りつぶしを開始するプリンタ座標上のxをl
eftx、塗りつぶしを終了するプリンタ座標上のxを
rightxにセットしてステップS902に進む。
【0763】ステップS902でクリップ領域の情報で
あるdspxmiとrightxの値を比較する。
【0764】dspxmiがrightxよりも大きい
ならば、塗りつぶし範囲はクリップ領域の範囲外なので
処理を終了する。
【0765】そうでないならば、ステップS903に進
んでクリップ領域の情報であるdspxmxとleft
xの値を比較する。
【0766】leftxがdspxmxよりも大きいな
らば、塗りつぶし範囲はクリップ領域の範囲外なので処
理を終了する。
【0767】そうでないならば、ステップS904に進
んでクリップ領域の情報であるdspxmiとleft
xの値を比較する。
【0768】dspxmiがleftxよりも大きいな
らば、ステップS905に進んでdspxmiの値をl
eftxにセットしてステップS906に進む。
【0769】そうでないならば、ステップS906に進
む。
【0770】ステップS906でクリップ領域の情報で
あるdspxmxとrightxの値を比較する。
【0771】rightxがdspxmxよりも大きい
ならば、ステップS907に進んでdspxmxの値を
rightxにセットしてステップS908に進む。
【0772】そうでないならば、ステップS908に進
む。
【0773】ステップS908で、プリンタ座標の原点
(0,0)をページメモリの0番地アドレスと仮定して
ステップS909に進む。
【0774】ステップS909で、ステップS908の
仮定をもとに、leftx,rightxのページメモ
リ上のアドレスとビットを計算してしてステップS91
0に進む。
【0775】その際、アドレスは4バイトバウンダリに
基づくものとする。
【0776】すなわち、アドレスは4バイトごとに更新
され、ビットは0〜31の値を持つことにする。
【0777】これは、図110の(a)に示したように
ディザパターンの幅が4バイトであり、パターンの基準
位置(パターンをメモリ上に展開する開始位置)がプリ
ンタ座標の原点(0,0)になっているからである。
【0778】ステップS910で、ステップS909で
計算したleftxのアドレスとビットをそれぞれlx
ad,lxbit、rightxのアドレスとビットを
それぞれrxad,rxbitにセットしてステップS
911に進む。
【0779】ステップS911で、y座標の値βを32
で割り算してその余りをδ1にセットしてステップS9
12に進む。
【0780】ここで、図110の(a)に示したディザ
パターンの高さが32スキャンライン(ドット)であ
り、y座標の値βの時に用いられるディザパターンが一
番上のスキャンラインからδ1番目にあたっていること
を示している。
【0781】ステップS912で、δ1の値を4倍した
結果をδ2にセットしてステップS913に進む。
【0782】ここで、δ2は、ディザパターンの先頭ア
ドレスからy座標の値βの時に用いられるディザパター
ンが格納されているアドレスへの移動量(バイト数)を
示している。
【0783】ステップS913で、カラーモードかどう
かチェックする。
【0784】カラーモードでないならば、ステップS9
14に進んで、既にディザパターンの先頭アドレスが格
納されているYdtopadにδ2を加算してydad
にセッしてステップS915に進む。
【0785】ここで、ydadには、y座標の値βの時
に用いられるディザパターンの格納アドレスがセットさ
れている。
【0786】ステップS915で、pgjmptblに
ポインタをセットしてステップS916に進む。
【0787】ステップS916で、ポインタの指す内容
(塗りつぶし関数のジャンプアドレス)を取り出してス
テップS917に進む。
【0788】ここで、ポインタの指す内容は、例えば図
113の※,図114の◎である。
【0789】ステップS917で、ジャンプアドレスの
指す関数を実行して処理を終了する。
【0790】ステップS913で、カラーモードでない
ならば、ステップS918に進んで、既にディザパター
ンの先頭アドレスが格納されているYdtopad,M
dtopad,Cdtopad,Kdtopadにδ2
を加算してそれぞれydad,mdad,cdad,k
dadにセットしてステップS919に進む。
【0791】ここで、ydad,mdad,cdad,
kdadには、y座標の値βの時に用いられるY,M,
C,Bk各ディザパターンの格納アドレスがセットされ
ている。
【0792】ステップS919で、pgjmptblに
ポインタをセットしてステップS920に進む。
【0793】ステップS920で変数sに1をセットし
てステップS921に進む。
【0794】ステップS921で、ポインタの指す内容
(塗りつぶし関数のジャンプアドレス)を取り出してス
テップS922に進む。
【0795】ステップS922で、ジャンプアドレスの
指す関数を実行してステップS923に進む。
【0796】ステップS923で、ポインタを4バイト
分インクリメントしてステップS924に進む。
【0797】ステップS924で、sの値と4を比較す
る。
【0798】等しいならば、処理を終了する。
【0799】等しくないならば、ステップS924に進
んでsを1インクリメントしてステップS921に戻
る。
【0800】このように、予めY,M,C,Bkの濃度
値に対応したディザパターンの格納アドレスから塗りつ
ぶしに用いるディザパターンを取り出し、図24のメモ
リ展開用テーブル格納部22内の塗りつぶし関数アドレ
ス格納テーブルにアクセスしてy座標の値βに対応した
スキャンラインの塗りつぶしを行うことができる。
【0801】図133は、図120の直線を図121〜
123の処理で描画する場合のleftx,right
xの配置及びypmin,ypmaxの位置を示してい
る。
【0802】図134は、図124の多角形の内部を図
126の処理で塗りつぶす場合のleftx,righ
txの配置及びypmin,ypmaxの位置を示して
いる。
【0803】図135は、図125の文字の内部を図1
26の処理で塗りつぶす場合のleftx,right
xの配置及びypmin,ypmaxの位置を示してい
る。
【0804】図136〜137は、図132のステップ
S922の処理のうち、図113の塗りつぶし関数アド
レス格納テーブル23内の○の指すクリア塗りつぶし関
数を実行する処理のフローチャートを示している。
【0805】ステップS930で、図90の処理により
求めたYの仮想ページメモリアドレスy_topadr
を取り出し、y_topadr+lxadの結果をlx
adに、y_topadr+rxadの結果をrxad
にセットしてステップS931に進む。
【0806】ここで求められたlxad,rxadが実
際にパターンを展開するメモリのアドレスである。
【0807】ステップS931で、lxadとrxad
を比較する。
【0808】等しいアドレスの場合には、ステップS9
32に進んでlxadのアドレスのlxbitとrxb
it間のビットをクリアして処理を終了する。
【0809】等しくない場合には、ステップS933に
進んでlxadのアドレスのlxbitとlxad+4
(バイト)の間のビットをクリアしてステップS934
に進む。
【0810】ステップS934で、lxad+4(バイ
ト)の結果をlxadにセットステップS935に進
む。
【0811】ステップS935で、lxadとrxad
を比較する。
【0812】等しいアドレスの場合には、ステップS9
32に進んでlxadのアドレスのlxbitとrxb
it間のビットをクリアして処理を終了する。
【0813】等しくない場合には、ステップS936に
進んでlxadとlxad+4(バイト)の間のビット
をクリアしてステップS937に進む。
【0814】ステップS937で、lxad+4(バイ
ト)の結果をlxadにセットしてステップS935に
戻る。
【0815】このように、図113の塗りつぶし関数ア
ドレス格納テーブル23内の○の指すクリア塗りつぶし
関数を実行することができる。
【0816】同様に、仮想ページメモリアドレスを変更
することにより、□,△,◇の指すクリア塗りつぶし関
数を実行することができる。
【0817】図138〜139は、図132のステップ
S922の処理のうち、図113の塗りつぶし関数アド
レス格納テーブル23内のの指す上書き塗りつぶし関
数を実行する処理のフローチャートを示している。
【0818】ステップS940で、図90の処理により
求めたYの仮想ページメモリアドレスy_topadr
を取り出し、y_topadr+lxadの結果をlx
adに、y_topadr+rxadの結果をrxad
にセットしてステップS941に進む。
【0819】ここで求められたlxad,rxadが実
際にパターンを展開するメモリのアドレスである。
【0820】ステップS941で、ydadのアドレス
の内容(4バイト)を取り出し、展開するディザパター
ンとしてydtpatnにセットしてステップS942
に進む。
【0821】ステップS942で、lxadとrxad
を比較する。
【0822】等しいアドレスの場合には、ステップS9
50に進んでlxadのアドレスのlxbitとrxb
it間のビットをクリアしてステップS951に進む。
【0823】ステップS951で、lxadのアドレス
のlxbitとrxbit間のメモリにydtpatn
のパターンをOR処理して処理を終了する。
【0824】ステップS942で等しくない場合には、
ステップS943に進んでlxadのアドレスのlxb
itとlxad+4(バイト)の間のビットをクリアし
てステップS944に進む。
【0825】ステップS944で、lxadのアドレス
のlxbitとlxad+4(バイト)の間のメモリに
ydtpatnのパターンをOR処理してステップS9
45に進む。
【0826】ステップS945で、lxad+4(バイ
ト)の結果をlxadにセットステップS946に進
む。
【0827】ステップS946で、lxadとrxad
を比較する。
【0828】等しいアドレスの場合には、ステップS9
50に進んでlxadのアドレスのlxbitとrxb
it間のビットをクリアしてステップS951に進む。
【0829】ステップS951で、lxadのアドレス
のlxbitとrxbit間のメモリにydtpatn
のパターンをOR処理して処理を終了する。
【0830】等しくない場合には、ステップS947に
進んでlxadとlxad+4(バイト)の間のビット
をクリアしてステップS948に進む。
【0831】ステップS948で、lxadのアドレス
のlxbitとlxad+4(バイト)の間のメモリに
ydtpatnのパターンをOR処理してステップS9
49に進む。
【0832】ステップS949で、lxad+4(バイ
ト)の結果をlxadにセットしてステップS946に
戻る。
【0833】このように、図113の塗りつぶし関数ア
ドレス格納テーブル23内のの指す上書き塗りつぶし
関数を実行することができる。
【0834】全く同じ処理により、図131のステップ
S917の処理のうち、図113の塗りつぶし関数アド
レス格納テーブル23内の*の指す上書き塗りつぶし関
数を実行することができる。
【0835】同様に、仮想ページメモリアドレスを変更
することにより、の指す上書き塗りつぶし関数を
実行することができる図140〜141は、図132の
ステップS922の処理のうち、図114の塗りつぶし
関数アドレス格納テーブル23内の の指すリバース塗
りつぶし関数を実行する処理のフローチャートを示して
いる。
【0836】ステップS960で、図90の処理により
求めたYの仮想ページメモリアドレスy_topadr
を取り出し、y_topadr+lxadの結果をlx
adに、y_topadr+rxadの結果をrxad
にセットしてステップS961に進む。
【0837】ここで求められたlxad,rxadが実
際にパターンを展開するメモリのアドレスである。
【0838】ステップS961で、ydadのアドレス
の内容(4バイト)を取り出し、展開するディザパター
ンとしてydtpatnにセットしてステップS962
に進む。
【0839】ステップS962で、ydtpatnのビ
ットを反転したパターンをyrpatnにセットしてス
テップS963に進む。
【0840】ステップS963で、lxadとrxad
を比較する。
【0841】等しいアドレスの場合には、ステップS9
69に進んでlxadのアドレスのlxbitとrxb
it間のメモリにyrpatnのパターンをAND処理
して処理を終了する。
【0842】ステップS963で等しくない場合には、
ステップS964に進んでlxadのアドレスのlxb
itとlxad+4(バイト)の間のメモリにyrpa
tnのパターンをAND処理してステップS965に進
む。
【0843】ステップS965で、lxad+4(バイ
ト)の結果をlxadにセットステップS966に進
む。
【0844】ステップS966で、lxadとrxad
を比較する。
【0845】等しいアドレスの場合には、ステップS9
69に進んでlxadのアドレスのlxbitとrxb
it間のメモリにyrpatnのパターンをAND処理
して処理を終了する。
【0846】等しくない場合には、ステップS967に
進んでlxadのアドレスのlxbitとlxad+4
(バイト)の間のメモリにyrpatnのパターンをA
ND処理してステップS968に進む。
【0847】ステップS968で、lxad+4(バイ
ト)の結果をlxadにセットしてステップS966に
戻る。
【0848】このように、図114の塗りつぶし関数ア
ドレス格納テーブル23内のWの指すリバース塗りつぶ
し関数を実行することができる。
【0849】同様に、仮想ページメモリアドレスを変更
することにより、V,X,Zの指すリバース塗りつぶし
関数を実行することができる図142〜143は、図1
32のステップS922の処理のうち、図114の塗り
つぶし関数アドレス格納テーブル23内のWの指す透過
塗りつぶし関数を実行する処理のフローチャートを示し
ている。
【0850】ステップS970で、図90の処理により
求めたYの仮想ページメモリアドレスy_topadr
を取り出し、y_topadr+lxadの結果をlx
adに、y_topadr+rxadの結果をrxad
にセットしてステップS971に進む。
【0851】ここで求められたlxad,rxadが実
際にパターンを展開するメモリのアドレスである。
【0852】ステップS971で、ydadのアドレス
の内容(4バイト)を取り出し、展開するディザパター
ンとしてydtpatnにセットしてステップS972
に進む。
【0853】ステップS972で、ydtpatnのビ
ットを反転したパターンをyrpatnにセットしてス
テップS973に進む。
【0854】ステップS973で、lxadとrxad
を比較する。
【0855】等しいアドレスの場合には、ステップS9
81に進んでlxadのアドレスのlxbitとrxb
it間のメモリにyrpatnのパターンをAND処理
してステップS982に進む。
【0856】ステップS982で、lxadのアドレス
のlxbitとrxbit間のメモリにydtpatn
のパターンをOR処理して処理を終了する。
【0857】ステップS973で等しくない場合には、
ステップS974に進んでlxadのアドレスのlxb
itとlxad+4(バイト)の間のメモリにyrpa
tnのパターンをAND処理してステップS975に進
む。
【0858】ステップS975で、lxadのアドレス
のlxbitとlxad+4(バイト)の間のメモリに
ydtpatnのパターンをOR処理してステップS9
76に進む。
【0859】ステップS976で、lxad+4(バイ
ト)の結果をlxadにセットステップS977に進
む。
【0860】ステップS977で、lxadとrxad
を比較する。
【0861】等しいアドレスの場合には、ステップS9
81に進んでlxadのアドレスのlxbitとrxb
it間のメモリにyrpatnのパターンをAND処理
してステップS982に進む。
【0862】ステップS982で、lxadのアドレス
のlxbitとrxbit間のメモリにydtpatn
のパターンをOR処理して処理を終了する。
【0863】等しくない場合には、ステップS978に
進んでlxadとlxad+4(バイト)の間のメモリ
にyrpatnのパターンをAND処理してステップS
979に進む。
【0864】ステップS979で、lxadのアドレス
のlxbitとlxad+4(バイト)の間のメモリに
ydtpatnのパターンをOR処理してステップS9
80に進む。
【0865】ステップS980で、lxad+4(バイ
ト)の結果をlxadにセットしてステップS977に
戻る。
【0866】このように、図114の塗りつぶし関数ア
ドレス格納テーブル23内のWの指す透過塗りつぶし関
数を実行することができる。
【0867】全く同じ処理により、図131のステップ
S917の処理のうち、図114の塗りつぶし関数アド
レス格納テーブル23内の◎の指す透過塗りつぶし関数
を実行することができる。
【0868】同様に、仮想ページメモリアドレスを変更
することにより、の指す透過塗りつぶし関数
を実行することができる図144は、図136〜143
に処理を示した塗りつぶし関数を用いた塗りつぶし結果
の具体例を示している。
【0869】ydtpatn,yrpatnは32ビッ
トのパターンであり、黒の部分はビットがON、白の部
分はビットがOFFの状態を示している。
【0870】処理前のメモリ上のlxadアドレスのl
xbitとrxadアドレスのrxbitの間をydt
patnのパターンを用いて塗りつぶした結果を示して
いる。
【0871】クリア塗りつぶし処理後は塗りつぶし部分
はすべてビットがOFFとなる。
【0872】上書き塗りつぶし処理後は、処理前のメモ
リの内容はクリアされ、ydtpatnのパターンが展
開される。
【0873】リバース塗りつぶし処理後は、処理前のメ
モリの内容に対してyrpatnのパターンがAND処
理された結果となっている。
【0874】透過塗りつぶし処理後は、処理前のメモリ
の内容に対してyrpatnのパターンがAND処理さ
れ、ydtpatnのパターンがORされた結果となっ
ている。
【0875】本実施例では、展開メモリがY,M,C,
Bkの場合の処理を示しているが、他の場合、例えば
R,G,Bの場合にも適用可能である。
【0876】その場合、例えば、図113の塗りつぶし
関数アドレス格納テーブルは図145のように置き換え
られる。
【0877】図に示したように、R,G,Bごとに展開
メモリへの塗りつぶし関数へのジャンプアドレスが格納
されている。
【0878】ここで、塗りつぶし関数は1スキャンライ
ンのメモリに対する塗りつぶし処理を行うものである。
【0879】○,□,△は、展開メモリへのクリア塗り
つぶし関数へのジャンプアドレスを示しており、それぞ
れR,G,Bのバンドメモリへの展開用のジャンプアド
レスである。
【0880】、展開メモリへの上書き塗りつ
ぶし関数へのジャンプアドレスを示しており、それぞれ
R,G,Bのバンドメモリへの展開用のジャンプアドレ
スである。
【0881】*は、モノクロモード時の展開メモリへの
上書き塗りつぶし関数へのジャンプアドレスを示してい
る。
【0882】※は、ダミー処理関数へのジャンプアドレ
スを示している。
【0883】ダミー処理関数は、何も処理をしない関数
である。
【0884】また、上記の場合、図116のbitse
tフラグは図146のように置き換えられる。
【0885】図146の(a)は、bitsetフラグ
は8ビットで構成され、0,1,2ビットにそれぞれ
B,G,Rの濃度値あるいは輝度値が0か0でないかの
情報がセットされることを示している。
【0886】すなわち、濃度値あるいは輝度値が0なら
ば、該当するビットはOFFになり、0でないならば、
該当するビットはONになる。
【0887】例えば、R,G,Bの濃度値あるいは輝度
値のうちRが0でなく、G,Bが0の場合、フラグの値
は、4になる。
【0888】3ビット目は(b)に示したようにモノク
ロモード時にONになる。
【0889】また、モノクロモード時には、3ビット目
の他のビットは0となり、フラグの値は8になる。
【0890】図147は、多角形描画において、あるy
座標の1スキャンラインに対して塗りつぶしの部分が2
箇所ある例をしめしている。
【0891】この場合、図に示したように、上記の2箇
所の塗りつぶしのxの範囲をleftx1〜right
x1、leftx2〜rightx2として把握して既
に説明した処理を適用して対処することが可能である。
【0892】もちろん、3箇所以上の塗りつぶし箇所が
ある場合も同様である。
【0893】図131のステップS913及びステップ
S914〜917の処理は省略可能である。
【0894】なぜならば、図113,114のテーブル
一番最後にはダミー処理関数へのジャンプアドレスが格
納されているからである。
【0895】すなわち、カラーモードとモノクロモード
を意識せずに1スキャンラインの塗りつぶし処理を行う
ことができる。
【0896】
【発明の効果】印刷データをカラー出力する第1のモー
ドと印刷データをグレイスケール出力する第2のモード
を有し、画像を記録可能なメモリに対して1スキャンラ
インごとに図形・文字等の描画を展開する、前記モード
に対応した関数のアドレスを格納するテーブルに基づい
て図形・文字等の描画を行うことができるため、従来に
比べて制御に必要なプログラム量あるいはハードウェア
の規模を軽減することが可能である。
【図面の簡単な説明】
【図1】ユーザー座標系の一例
【図2】プリンタ座標系の一例
【図3】Y,M,C,Bkそれぞれ、用紙の有効印字領
域の大きさの分のメモリを持つ場合のカラー画像処理装
置内部のRAM領域のメモリマップの一例
【図4】描画属性コマンドのうちの塗りつぶし色指定コ
マンドの一例
【図5】描画コマンドのうちの多角形描画コマンドの一
【図6】描画属性機能のメモリ展開情報のうちの塗りつ
ぶし色指定のメモリ展開情報の一例
【図7】描画機能のメモリ展開情報のうちの多角形描画
のメモリ展開情報の一例
【図8】ユーザー座標系上での多角形描画の一例
【図9】図8の多角形描画を設定する際に発行する多角
形描画コマンドの一例
【図10】図8の多角形描画のプリンタ座標系上への変
換の一例
【図11】図8、10の多角形描画のメモリ展開情報の
一例
【図12】図8の多角形の内部塗りつぶしを黄色(色材
のYellow100%)で描画する場合のメモリ展開
情報の一例
【図13】図8の多角形の内部塗りつぶしをグレイスケ
ール(色材のBlack20%)で描画する場合のメモ
リ展開情報の一例
【図14】図10のような多角形をプリンタ座標の座標
単位で区切った図
【図15】図14の多角形の内部を塗りつぶす処理の一
例を示したフローチャート
【図16】図15のステップS301の処理を示したフ
ローチャート
【図17】図15のステップS301の処理を示したフ
ローチャート
【図18】図15のステップS301の処理を示したフ
ローチャート
【図19】図15のステップS301の処理を示したフ
ローチャート
【図20】図15のステップS301の処理を示したフ
ローチャート
【図21】図15のステップS301の処理を示したフ
ローチャート
【図22】図15のステップS302の処理を示したフ
ローチャート
【図23】図15のステップS302の処理を示したフ
ローチャート
【図24】本発明の一実施例による画像処理装置の回路
構成を示すブロック図
【図25】インクジェット方式の画像処理装置のヘッド
部回りを詳細に示した図
【図26】図14のヘッドユニット101を詳細に示し
た図
【図27】バンドの構造の一例
【図28】用紙の有効印字領域をバンド高が512スキ
ャンラインの8つのバンドに分割した場合の一例
【図29】カラーモード時のRAM領域のメモリマップ
の一例
【図30】モノクロモード時のRAM領域のメモリマッ
プの一例
【図31】メモリにデータ展開する際に用いる描画属性
情報を格納する属性情報格納領域の一例
【図32】ページ単位のページ記述コマンドデータを受
取り、ページ単位ごとに記録制御を行うカラー画像処理
装置において、Y(Yellow),M(Magent
a),C(Cyan),Bk(Black)それぞれ1
バンド分のメモリのみによりカラー記録する際のフロー
チャート
【図33】ページ単位のページ記述コマンドデータを受
取り、ページ単位ごとに記録制御を行うカラー画像処理
装置において、Y(Yellow),M(Magent
a),C(Cyan),Bk(Black)それぞれ1
バンド分のメモリのみによりカラー記録する際のフロー
チャート
【図34】ページ単位のページ記述コマンドデータを受
取り、ページ単位ごとに記録制御を行うカラー画像処理
装置において、Y(Yellow),M(Magent
a),C(Cyan),Bk(Black)それぞれ1
バンド分のメモリのみによりカラー記録する際のフロー
チャート
【図35】描画属性指定コマンドのうち、色指定コマン
ドの一例
【図36】描画属性指定コマンドのうち、線幅指定コマ
ンド・クリップ領域指定コマンド・塗りつぶし定義指定
コマンド・描画論理指定コマンドの一例
【図37】描画コマンドのうち、直線描画コマンド・多
角形描画コマンドの一例
【図38】描画コマンドのうち、文字印字コマンドの一
【図39】図13の4に示した、各描画コマンド及び各
描画属性コマンドの解析を行う関数へのジャンプアドレ
スが格納されているコマンド解析ジャンプテーブル
【図40】図32のステップS3のコマンドデータ解析
の処理を詳細に示したフローチャート
【図41】図40のステップS34において、色指定コ
マンド解析関数を実行した場合の処理を詳細に示したフ
ローチャート
【図42】図40のステップS34において、色指定コ
マンド解析関数を実行した場合の処理を詳細に示したフ
ローチャート
【図43】図40のステップS34において、色指定コ
マンド解析関数を実行した場合の処理を詳細に示したフ
ローチャート
【図44】図40のステップS34において、色指定コ
マンド解析関数を実行した場合の処理を詳細に示したフ
ローチャート
【図45】図40のステップS34において、線幅指定
コマンド解析関数を実行した場合の処理を詳細に示した
フローチャート
【図46】図40のステップS34において、クリップ
領域指定コマンド解析関数を実行した場合の処理を詳細
に示したフローチャート
【図47】図40のステップS34において、塗りつぶ
し定義指定コマンド解析関数を実行した場合の処理を詳
細に示したフローチャート
【図48】図40のステップS34において、描画論理
指定コマンド解析関数を実行した場合の処理を詳細に示
したフローチャート
【図49】図41、45、46、47、48のステップ
S40、60、70、80、100において、minバ
ンドNo.、maxバンドNo.をメモリ展開情報エリ
アに設定する処理を詳細に示したフローチャート
【図50】図43のステップS701、705で示した
色再現処理の一例
【図51】図43のステップS703、図44のステッ
プS713で示した色変換処理の一例
【図52】図43のステップS704、図44のステッ
プS714で示した色変換処理の一例
【図53】図44のステップS711、ステップS71
5で示した色変換処理の一例
【図54】図40のステップS34において、直線描画
コマンド解析関数を実行する際の処理
【図55】図40のステップS34において、直線描画
コマンド解析関数を実行する際の処理
【図56】図40のステップS34において、直線描画
コマンド解析関数を実行する際の処理
【図57】図40のステップS34において、多角形描
画コマンド解析関数を実行する際の処理
【図58】図40のステップS34において、多角形描
画コマンド解析関数を実行する際の処理
【図59】図40のステップS34において、多角形描
画コマンド解析関数を実行する際の処理
【図60】図54のステップ600及び図57のステッ
プ120において、ワークエリアへのデータのセット及
びxmin,ymin,xmax,ymaxの設定の処
【図61】図54のステップ600及び図57のステッ
プ120において、ワークエリアへのデータのセット及
びxmin,ymin,xmax,ymaxの設定の処
【図62】図54のステップ600及び図57のステッ
プ120において、ワークエリアへのデータのセット及
びxmin,ymin,xmax,ymaxの設定の処
【図63】図40のステップS34において、文字描画
コマンド解析関数を実行する際の処理
【図64】図40のステップS34において、文字描画
コマンド解析関数を実行する際の処理
【図65】図40のステップS34において、文字描画
コマンド解析関数を実行する際の処理
【図66】図40のステップS34において、文字描画
コマンド解析関数を実行する際の処理
【図67】図54のステップ601及び図57のステッ
プ121における、描画範囲の算出の処理
【図68】(x1,y1)〜(x4,y4)の4点で指
定された多角形の描画範囲
【図69】図64のステップ220における、文字の描
画範囲の算出の処理
【図70】文字の描画範囲
【図71】図54のステップS602、図57のステッ
プS122、図64のステップS220における、描画
範囲のクリップチェックの処理
【図72】図54のステップS602、図57のステッ
プS122、図64のステップS220における、描画
範囲のクリップチェックの処理
【図73】(pxmin,pymin)と(pxma
x,pymax)で囲まれた矩形領域の描画範囲に対し
て(cxmin,cymin)と(cxmax,cym
ax)で囲まれた矩形領域のクリップ領域が設定された
場合の例
【図74】図55のステップS604、図58のステッ
プS124、図65のステップS222における、mi
nバンドNo.、maxバンドNo.の算出の処理
【図75】図35の色指定コマンドを図41〜44のフ
ローチャートに基づいて解析して作成された、色指定の
メモリ展開情報の一例
【図76】図36の線幅指定コマンド・クリップ領域指
定コマンド・塗りつぶし定義指定コマンド・描画論理指
定コマンドをそれぞれ図45〜48のフローチャートに
基づいて解析して作成された、各メモリ展開情報の一例
【図77】図37の直線描画コマンド・多角形描画コマ
ンドをそれぞれ図54〜56、57〜59のフローチャ
ートに基づいて解析して作成された、各メモリ展開情報
の一例
【図78】図38の文字描画コマンドを図63〜66の
フローチャートに基づいて解析して作成された、各メモ
リ展開情報の一例
【図79】1つのページを4つのバンドに分割して、そ
の大きさのY,M.C,Bkのバンドメモリを用い、図
27〜30描画属性コマンド・描画コマンドの一部を用
いて描画を行った場合の例
【図80】図79の描画の際に用いるメモリ展開情報
【図81】図79の描画の際に用いるメモリ展開情報
【図82】1つのページを4つのバンドに分割して、そ
の大きさのY,M.C,Bkのバンドメモリを用い、直
線描画に対してクリップ領域指定を設定して描画を行っ
た場合の例
【図83】図82の描画の際に用いるメモリ展開情報
【図84】実際にメモリに対して描画のパターン展開を
行う関数へのジャンプアドレス及び、描画属性の指定を
行う(内部変数等にセット)関数へのジャンプアドレス
が格納されているコマンド実行ジャンプテーブル1
【図85】図90において、メモリに対して描画のパタ
ーン展開を行う関数へのジャンプアドレスをすべて読み
飛ばし関数へのジャンプアドレスに置き換えたコマンド
実行ジャンプテーブル2
【図86】図33のステップS12の処理を詳細に記述
したフローチャート
【図87】図86のステップS390の処理を詳細に記
述したフローチャート
【図88】バンド高を512ドットとした場合のプリン
タ座標の設定
【図89】バンドNo.がiの場合の図形・文字等の描
画可能な範囲に対して、dspymi<miny、ma
xy<dspymxとなるクリップ領域が設定された場
合の例
【図90】図86のステップS391の処理を詳細に記
述したフローチャート
【図91】図28の5バンド目(バンドNo.が4)に
描画を展開する際のカラーモード時のY,M,C,Bk
の各仮想ページメモリの先頭アドレス
【図92】図28の5バンド目(バンドNo.が4)に
描画を展開する際のモノクロモード時のBkの仮想ペー
ジメモリの先頭アドレス
【図93】図86のステップS399において、線幅指
定関数を実行する際の処理
【図94】図86のステップS399において、線色指
定関数を実行する際の処理
【図95】図86のステップS399において、塗りつ
ぶし色指定関数を実行する際の処理
【図96】図86のステップS399において、文字色
指定関数を実行する際の処理
【図97】図86のステップS399において、クリッ
プ領域指定関数を実行する際の処理
【図98】図86のステップS399において、塗りつ
ぶし定義指定関数を実行する際の処理
【図99】図86のステップS399において、描画論
理指定関数を実行する際の処理
【図100】図86のステップS399において、直線
描画の関数を実行する際の処理
【図101】図86のステップS399において、直線
描画の関数を実行する際の処理
【図102】図86のステップS399において、多角
形描画の関数を実行する際の処理
【図103】図86のステップS399において、多角
形描画の関数を実行する際の処理
【図104】図86のステップS399において、多角
形描画の関数を実行する際の処理
【図105】図86のステップS399において、多角
形描画の関数を実行する際の処理
【図106】図86のステップS399において、文字
描画の関数を実行する際の処理
【図107】図86のステップS399において、文字
描画の関数を実行する際の処理
【図108】図86のステップS399において、読み
飛ばしの関数を実行する際の処理
【図109】ディザパターンアドレステーブル21の一
【図110】ディザパターンの一例
【図111】図100のステップS474、図103の
ステップS500、図104のステップS506、図1
07のステップS527の処理を示したフローチャート
【図112】図100のステップS474、図103の
ステップS500、図104のステップS506、図1
07のステップS527の処理を示したフローチャート
【図113】描画論理指定が上書きに対応した塗りつぶ
し関数アドレス格納テーブルの一例
【図114】描画論理指定が透過に対応した塗りつぶし
関数アドレス格納テーブルの一例
【図115】描画論理別テーブルアドレス格納テーブル
24の一例
【図116】bitsetフラグの一例
【図117】図100のステップS475、図103の
ステップS501、図104のステップS507、図1
07のステップS528の処理を示したフローチャート
【図118】図100のステップS475、図103の
ステップS501、図104のステップS507、図1
07のステップS528の処理を示したフローチャート
【図119】図100のステップS475、図103の
ステップS501、図104のステップS507、図1
07のステップS528の処理を示したフローチャート
【図120】プリンタ座標上に2点を結ぶ直線の一例
【図121】図101のステップS479、図105の
ステップS511の処理を示したフローチャート
【図122】図101のステップS479、図105の
ステップS511の処理を示したフローチャート
【図123】図101のステップS479、図105の
ステップS511の処理を示したフローチャート
【図124】プリンタ座標上に5点からなる多角形の一
【図125】プリンタ座標上に12個の輪郭点からなる
文字Eの一例
【図126】図103のステップS502、図107の
ステップS529の処理を示したフローチャート
【図127】図122のステップS860、図126の
ステップS871の処理を示したフローチャート
【図128】図122のステップS860、図126の
ステップS871の処理を示したフローチャート
【図129】図123のステップS862、図126の
ステップS873の処理を示したフローチャート
【図130】図123のステップS862、図126の
ステップS873の処理を示したフローチャート
【図131】図123のステップS862、図126の
ステップS873の処理を示したフローチャート
【図132】図123のステップS862、図126の
ステップS873の処理を示したフローチャート
【図133】図120の直線の描画の説明に必要な情報
を示した図
【図134】図124の多角形の内部塗りつぶしの説明
に必要な情報を示した図
【図135】図125の文字の内部塗りつぶしの説明に
必要な情報を示した図
【図136】図132のステップS922の処理のう
ち、クリア塗りつぶしの処理の一例を示したフローチャ
ート
【図137】図132のステップS922の処理のう
ち、クリア塗りつぶしの処理の一例を示したフローチャ
ート
【図138】図132のステップS922の処理のう
ち、上書き塗りつぶしの処理の一例を示したフローチャ
ート
【図139】図132のステップS922の処理のう
ち、上書き塗りつぶしの処理の一例を示したフローチャ
ート
【図140】図132のステップS922の処理のう
ち、リバース塗りつぶしの処理の一例を示したフローチ
ャート
【図141】図132のステップS922の処理のう
ち、リバース塗りつぶしの処理の一例を示したフローチ
ャート
【図142】図132のステップS922の処理のう
ち、透過塗りつぶしの処理の一例を示したフローチャー
【図143】図132のステップS922の処理のう
ち、透過塗りつぶしの処理の一例を示したフローチャー
【図144】図136〜143の処理による塗りつぶし
の具体例を示した図
【図145】図113の他の実施例を示した図
【図146】図116の他の実施例を示した図
【図147】y座標の1スキャンラインに対して塗りつ
ぶしの部分が2箇所ある多角形を示した図
【符号の説明】
1 ホストコンピュータ 2 インターフェース 3 コマンド解析部 4 コマンド解析テーブル 5 バンド情報格納部 6 バンド高情報テーブル 7 色再現情報格納部 8 色再現処理部 9 文字情報格納部 10 制御部 11 メモリ展開情報格納部 12 属性情報格納領域 13 メモリ展開情報格納エリア 14 メモリ展開情報解析部 15 コマンド実行ジャンプテーブル1 16 コマンド実行ジャンプテーブル2 17 パターン展開部 18 展開メモリ 19 出力部 20 ディザパターン格納部 21 ディザパターンアドレステーブル 22 メモリ展開用テーブル格納部 23 塗りつぶし関数アドレス格納テーブル 24 描画論理別テーブルアドレス格納テーブル 25 操作パネル 26 データバス
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) H04N 1/21,1/40 H04N 1/46,1/60 B41J 2/525

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 ページ記述言語で記述されている印刷デ
    ータを受信し、該印刷データをバンド単位に展開し、バ
    ンド単位でデータの読み出しと書き込みを制御し、バン
    ドメモリに対して印刷データを展開する関数のアドレス
    が格納されているテーブルを有する画像処理装置であっ
    て、 前記印刷データをカラー出力する第1のモードと前記印
    刷データをグレイスケール出力する第2のモードを有
    し、 前記テーブルには第1のモードと第2のモード時に用い
    る前記関数のアドレスを格納する格納手段を有すること
    を特徴とする画像処理装置。
  2. 【請求項2】 前記格納されているアドレスに基づき、
    関数を実行し、図形・文字の描画を制御する制御手段を
    有することを特徴とする請求項1に記載の画像処理装
    置。
  3. 【請求項3】 ページ記述言語で記述されている印刷デ
    ータを受信し、該印刷データをバンド単位に展開し、バ
    ンド単位でデータの読み出しと書き込みを制御し、バン
    ドメモリに対して印刷データを展開する関数のアドレス
    が格納されているテーブルを有する画像処理装置におけ
    る画像処理方法において、 前記印刷データをカラー出力する第1のモードと前記印
    刷データをグレイスケール出力する第2のモードを有
    し、第1のモードと第2のモードのいずれの場合にも、 第1
    のモードと第2のモード時に用いる前記関数のアドレス
    格納されている前記テーブルを利用することを特徴と
    する画像処理方法。
  4. 【請求項4】 前記格納されているアドレスに基づき、
    関数を実行し、図形・文字の描画を制御することを特徴
    とする請求項3に記載の画像処理方法。
JP20542192A 1992-07-31 1992-07-31 画像処理方法及び装置 Expired - Fee Related JP3219475B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP20542192A JP3219475B2 (ja) 1992-07-31 1992-07-31 画像処理方法及び装置
DE69326660T DE69326660T2 (de) 1992-07-31 1993-07-27 Bildverarbeitungsverfahren und -gerät
EP93305911A EP0586080B1 (en) 1992-07-31 1993-07-27 Image processing method and apparatus
US08/788,574 US6331897B1 (en) 1992-07-31 1997-01-24 Image processing method and apparatus in which a table stores by a scan line unit memory addresses at each of which a function is stored for developing an image for one line into a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20542192A JP3219475B2 (ja) 1992-07-31 1992-07-31 画像処理方法及び装置

Publications (2)

Publication Number Publication Date
JPH0652323A JPH0652323A (ja) 1994-02-25
JP3219475B2 true JP3219475B2 (ja) 2001-10-15

Family

ID=16506571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20542192A Expired - Fee Related JP3219475B2 (ja) 1992-07-31 1992-07-31 画像処理方法及び装置

Country Status (1)

Country Link
JP (1) JP3219475B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ758000A0 (en) * 2000-05-17 2000-06-08 Canon Kabushiki Kaisha Processing pixels of a digital image

Also Published As

Publication number Publication date
JPH0652323A (ja) 1994-02-25

Similar Documents

Publication Publication Date Title
JP2019165503A (ja) 印刷データ処理装置及びプログラム
JP2012236344A (ja) 印刷装置、印刷装置のデータ処理方法及びプログラム
JP3219475B2 (ja) 画像処理方法及び装置
JP3219477B2 (ja) 画像処理方法及び装置
JP3219476B2 (ja) 画像処理方法及び装置
EP0586080B1 (en) Image processing method and apparatus
EP0530954B1 (en) Image processing method and apparatus
EP0530955B1 (en) Image processing method and apparatus
JPH0516440A (ja) 画像処理装置
JP3244775B2 (ja) 画像処理方法及び装置
JP2001075759A (ja) 情報処理装置および情報処理方法
JP4086425B2 (ja) 画像処理装置及びその方法
JP2925363B2 (ja) 画像処理方法及び装置
JP4581854B2 (ja) 画像処理装置、画像処理プログラムおよび画像処理方法
EP0530953A1 (en) Image processing method and apparatus
JP2911650B2 (ja) 画像処理方法及び装置
JP3005075B2 (ja) 画像処理方法及び装置
JP4474487B2 (ja) 画像処理装置及び画像処理方法
JPH0939312A (ja) 印刷装置、印刷方法および印刷システム
JP2952078B2 (ja) 画像処理方法及び装置
JP4325339B2 (ja) 印刷システム、ホストコンピュータ及びプリンタドライバ
JP2000255121A (ja) 印刷処理装置および印刷処理方法
JP3082962B2 (ja) カラー画像処理方法及び装置
JP2962878B2 (ja) 画像処理方法及び装置
JP2001080153A (ja) 印刷制御装置および印刷制御方法および記憶媒体

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010717

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070810

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080810

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080810

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090810

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090810

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110810

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees