JP2010214746A - 印刷処理システム、印刷処理方法およびプログラム - Google Patents
印刷処理システム、印刷処理方法およびプログラム Download PDFInfo
- Publication number
- JP2010214746A JP2010214746A JP2009063742A JP2009063742A JP2010214746A JP 2010214746 A JP2010214746 A JP 2010214746A JP 2009063742 A JP2009063742 A JP 2009063742A JP 2009063742 A JP2009063742 A JP 2009063742A JP 2010214746 A JP2010214746 A JP 2010214746A
- Authority
- JP
- Japan
- Prior art keywords
- virtual frame
- instruction
- drawn
- virtual
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
【課題】 少ないメモリ容量でも仮想フレームを展開し描画することができるシステム、方法およびプログラムを提供する。
【解決手段】 このシステムは、印刷データに含まれる複数の描画命令により複数の仮想フレームを描画して描画データを生成する印刷処理システムである。このシステムは、複数の描画命令を中間データメモリ410に記憶した順に読み出し、読み出した描画命令につき、当該描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように指定されているかを調査する仮想フレーム調査部460と、調査した結果を基に、規定されたルールに従って、描画する仮想フレームの順序および描画済みの仮想フレームが削除可能か否かを判断し、仮想フレームの描画および削除を指示する仮想フレーム処理部430とを備える。
【選択図】 図9
【解決手段】 このシステムは、印刷データに含まれる複数の描画命令により複数の仮想フレームを描画して描画データを生成する印刷処理システムである。このシステムは、複数の描画命令を中間データメモリ410に記憶した順に読み出し、読み出した描画命令につき、当該描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように指定されているかを調査する仮想フレーム調査部460と、調査した結果を基に、規定されたルールに従って、描画する仮想フレームの順序および描画済みの仮想フレームが削除可能か否かを判断し、仮想フレームの描画および削除を指示する仮想フレーム処理部430とを備える。
【選択図】 図9
Description
本発明は、言語仕様として仮想フレーム機能を有するシステムに関し、当該仮想フレーム機能により使用されるメモリを削減することができるシステム、その方法およびその方法を実現するためのコンピュータ可読なプログラムに関する。
従来、PC等で作成した画像等を印刷する場合には、まず、ユーザが印刷指示を発行し、アプリケーションプログラムがその印刷指示を受け付け、印刷処理を開始する。具体的には、出力先のプリンタの解像度情報等を取得し、それに基づきそのページの展開処理(ラスタライズ処理)に必要なイメージサイズを決定し、メモリ容量を計算する。ここで、ラスタライズとは、コンピュータグラフィックスにおいて、ラスタ形式以外のデータをラスタ形式に変換して画像化する、ピクセルデータに変換する作業をいう。ラスタとは、点が線上に並んだものをいい、ラスタの集まりがビットマップ画像である。
次に、現在利用可能な物理メモリ量を取得し、その物理メモリ量に応じてデータを処理できる分割数に分割し、分割されたデータに対してラスタライズ処理を行い、その結果をプリンタへ送信する。このように分割するのは、フルカラーのページ全体を一度にラスタライズすると、大量のメモリを消費するからである。
このようにして、全てのデータをラスタライズ処理してプリンタへ送信したところで、ページ終了指示を送り、最後に、メモリ上のイメージを削除し、印刷処理を終了する(特許文献1参照)。
近年、コンピュータの機種や環境によらず、画像等を正確に表現することができる電子文書のためのフォーマットとして、PDF(Portable Document Format)やXML(eXtensible Markup Language)ベースのフォーマットであるXPS(XML Paper Specification)が採用されている。XMLは、個々のデータの属性や論理構造をタグに入れてデータ交換を容易にしたマークアップ言語である。
これらのフォーマットで作成された電子文書をページプリンタで印刷する際にも、PDL(Page Description Language)が使用されるが、PDFやXPS等のPDLでは、言語仕様として仮想フレーム機能をサポートしているものが多い。仮想フレーム機能とは、描画コマンドと描画状態の一群をまとめて描画したり、加工したりすることができる機能で、ある仮想フレームが他の仮想フレームやページに繰り返し描画することができる機能である。図1に示すように、仮想フレーム1は、最終の描画結果であるページ(フレーム)2と別の領域に、描画オブジェクトの組み合わせを描画しておき、その別の領域に描画した結果を一つの描画オブジェクトとして利用することができるものである。すなわち、仮想フレームは、描画オブジェクトであり、描画オブジェクトは、イメージ、テキスト、ベジエ曲線の描画(PolyBezier)等を任意に組み合わせたものを一つの描画単位としてまとめたものである。
仮想フレームは、PDFではGroupと呼ばれ、XPSではCanvasやVisual Brushと呼ばれ、より高度な表現を可能にしている。これらのうち、マークアップ言語で記述されているXPSのCanvasやVisual Brushは、ツリー構造をもち、多分木形式で表現することができるデータとされている。
仮想フレームを、図2を参照して説明すると、Canvasはツリー構造とされ、最終的に印刷される物理ページであるFixed Pageを根元とし、そのFixed Pageを親として3つの子であるCanvasA〜Cに分岐され、CanvasCを親として2つの子であるCanvasD、Eに分岐され、CanvasEを親として2つの子であるCanvasF、Gに分岐され、CanvasFを親として3つの子であるCanvasH〜Jに分岐されている。このような構造である場合において、印刷する際に、全てを同時に展開すると、Fixed Pageを描画するためのページメモリと、CanvasA〜Jをビットマップに展開するための仮想フレームメモリを10ページ分展開することになる。
ここで、従来の仮想フレームを描画する場合の装置構成を、図3に例示する。この装置は、印刷データを出力するホストPC10と、印刷データを描画処理するプリンタコントローラ20と、描画されたページを印刷出力するプリンタエンジン30とから構成される。
プリンタコントローラ20のインタプリタ21は、ホストPC10から印刷データを受信し、印刷データに含まれる描画命令を1つずつ解釈し、それらの描画命令を中間データメモリ22に記憶する。ソフト図形描画処理部23は、仮想フレームを構成する描画命令、その他の描画命令を全て中間データメモリ22上から順次読み込む。読み込んだ描画命令が、仮想フレームを構成する描画コマンドである場合、仮想フレーム処理部24へその旨を通知する。仮想フレーム処理部24は、仮想フレームメモリ25のどのメモリアドレスに仮想フレームを作成するかを決定し、そのメモリアドレスを記憶する。
ソフト図形描画処理部23は、仮想フレームを他の仮想フレームあるいはページに印刷することを指定する描画命令を読み込み、その書き出す仮想フレームと書き出し先の仮想フレームのアドレスを、仮想フレーム処理部24から教えてもらい描画処理を実施する。ソフト図形描画処理部23が仮想フレームを書き出すと、その仮想フレームは仮想フレームメモリ25上から削除することができるため、仮想フレーム処理部24が削除するよう指示する。
描画されたページは、ページメモリ26に生成される。プリンタエンジン30は、描画されたページをページメモリ26から読み出して印刷出力する。
上記のように、Canvasは入れ子にすることができ、多分木で表現することができる。Fixed Pageに対しては0以上の任意のCanvasが中間データメモリ22に登録可能で、登録順が保存される。図4に示すように、親のCanvasAには登録されたCanvasBを描画する描画命令が保持されている。Fixed PageやCanvasAを描画するためには、そのFixed PageやCanvasAに登録された全てのCanvasが必要であり、描画が終わり、もう参照されないことがわかれば、そのCanvasの内容は不要となるため、上記のように、削除することができる。
XPSでの仮想フレームを処理するためには、全ての仮想フレームを一度は展開し、その親に描画していく必要がある。全ての仮想フレームを同時に展開することができれば、容易にこの描画処理を実現することができるが、必要なメモリ量が多くなってしまい、コントローラによっては、搭載されているメモリ容量が少なく、その処理を実現することができない場合がある。
そこで、親への描画が終了し、展開しておく必要がない仮想フレームを閉じ、その仮想フレームが占有していたメモリを解放することにより、メモリ消費量を削減する方法がある。これまでに知られている方法としては、行きがけ順探索や幅優先探索等があるが、これらの方法では、それほどメモリ量を削減することができない。
ここで、行きがけ順探索とは、あるノードがもつ子の数が2である二分木であるツリー構造において、根を調べてからそれにぶら下がる、二分木を構成する子孫である部分木を調べる方法で、幅優先探索とは、未だに訪れていないノードを根に近い方から探索する方法である。
XPSのPDLでサポートされている仮想フレーム機能では、仮想フレームであるCanvasを単純にビットマップに展開してしまうと、全てをメモリ上に同時に展開してしまうことになりやすく、1つのCanvas毎に最終結果であるページメモリと同じ領域が必要となる場合があり、搭載メモリの容量が少ないプリンタでは印刷することができなくなるという問題がある。
また、最もメモリを消費するのは、全ての仮想フレームを展開する方式で、図2に示す例では、Fixed Pageと10個のCanvasを展開する場合であるが、二分木検索で代表的な前順走査で処理し、描画が終わった仮想フレームを即座に削除した場合において、最もメモリを消費するのは、Fixed PageとCanvasC、E、F、Hの4つを展開するときである。ここで、前順走査とは、まず、根ノードを調査し、次に、左の部分木を走査し、その次に右の部分木を走査するという調査処理である。このような方法でも、Canvasを展開するために、4ページ分の仮想フレームメモリ25が必要である。
また、Canvasは、場合によって、Fixed Pageと同じ描画範囲をもつ必要があり、このようなCanvasがFixed Pageにいくつも登録され、Canvasを描画するために仮想フレームを全て展開した場合、Fixed Pageの何倍ものメモリが必要となってしまい、コントローラに搭載されたメモリ容量では展開しきれないという問題もある。
そこで、少ないメモリ容量でも仮想フレームを展開し描画することができるシステムおよび方法の提供が望まれていた。
従来の前順走査では、根ノードから前順に走査を行い、Canvasを展開しているため、上記の例では最大4ページ分の仮想フレームメモリを要している。そこで、本発明では、Canvasを調査し、描画を始める仮想フレームを適切に選択するように構成する。これにより、同時に展開する仮想フレームを最小限に抑え、展開に必要とされるメモリ量を削減することができる。
その結果、より少ないメモリ量が搭載されたコントローラであっても、XPSダイレクト印刷やPDFダイレクト印刷が可能になる。また、ダイレクト印刷でなくても、XPSデータやPDFデータをより少ないメモリで印刷可能になる。
具体的には、印刷データに含まれる複数の描画命令を命令記憶部に記憶した順に読み出し、読み出した描画命令につき、当該描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように指定されているかを調査する仮想フレーム調査部と、調査した結果を基に、規定されたルールに従って、描画する仮想フレームの順序および描画した仮想フレームが削除可能か否かを判断し、仮想フレームの描画および削除を指示する仮想フレーム処理部とを備えるシステムとされる。
印刷データは、ホストPC等から送信され、解析部により受信され、印刷データに含まれる描画命令が1つずつ解析され、順に命令記憶部に記憶される。
仮想フレーム調査部は、2つ以上の上記別の仮想フレームを参照または描画するように指定されている描画命令を、分岐をもつ描画命令と判断する。仮想フレーム処理部は、調査した結果を基に、命令記憶部に記憶した順に調査して最初の分岐をもつ描画命令を探し、分岐をもつ描画命令を辿り、最後の分岐をもつ描画命令を探す。仮想フレーム処理部は、規定されたルールに従って、最後の分岐をもつ描画命令から仮想フレームを描画するように指示する。そして、規定されたルールに従って、辿ってきた分岐をもつ描画命令を遡りながら、分岐をもつ描画命令により描画される仮想フレームを親フレームとして描画し、当該親フレームに描画するように指定されている描画命令により描画される仮想フレームを子フレームとして当該親フレーム上に描画することを繰り返すように指示する。
また、仮想フレーム処理部は、仮想フレームを描画する前に、当該仮想フレームを描画するために必要とされるメモリ領域を確保し、仮想フレームの削除に伴い、削除した仮想フレームのために確保していたメモリ領域を解放するように指示する。
仮想フレーム処理部からの指示は、ソフト図形描画処理部が受け付け、ソフト図形描画処理部は、その指示に従ってメモリ領域を確保し、仮想フレームを描画し、また、不要となった仮想フレームを削除し、その仮想フレームのために確保していたメモリ領域を解放する。これにより、メモリ消費量を削減することができる。
ソフト図形描画処理部は、最終的に作成された仮想フレームを描画して、描画データを生成する。生成された描画データは、エンジンが読み出し、印刷出力が行われる。
仮想フレーム処理部は、描画命令が、透明描画する命令、座標またはクリップを指定する命令である場合、仮想フレームを描画しないように指示することができる。また、描画命令が、上書きを指定する命令である場合、仮想フレームを描画せず、直接、親フレームに描画するように指示することができる。
上記の透明描画する命令、座標またはクリップを指定する命令である場合、解析部がそれらを解釈し、命令記憶部に記憶させないようにすることも可能である。
本発明では、上記印刷処理システムのほか、このシステムで行われる処理を処理ステップとして含む印刷処理方法として提供することもできる。また、この方法は、印刷処理システムを構成する各部により行われる各処理ステップを含むが、これらの処理ステップは、コンピュータ可読なプログラムを実行させることにより実現することができる。このため、本発明では、印刷処理方法を実現するためのコンピュータ可読なプログラムを提供することもできる。
このプログラムは、記録媒体に記録して提供することができ、本発明では、このプログラムが記録された記録媒体を提供することもできる。
図5は、画像形成装置のハードウェア構成を例示した図である。図5に示す画像形成装置は、この画像形成装置の制御を行うコントローラ100と、用紙に画像を印刷するエンジン110と、ユーザが入力を行い、装置の状態を表示するパネル装置120とを含んで構成されている。図5では、印刷データをこの画像形成装置へ送信するホストPC200も示されている。
コントローラ100は、プログラムを実行するCPU101と、コントローラ100上で動作するBIOSやファームウェア等のプログラムを格納するROM102と、ソフトウェアが動作するために必要とされるワークメモリとして利用され、作成された描画ページを格納するためのRAM103と、カラー/モノクロ設定、集約印刷設定、両面印刷設定、ステープル設定等の印刷条件設定を格納する不揮発性メモリであるNVRAM104と、ネットワーク上に接続されたホストPC200とデータをやり取りするためのネットワークI/F105と、エンジン110との間で印刷指示等を行うエンジンI/F106と、パネル装置120との間で入出力を行うためのパネルI/F107とを含んで構成されている。
コントローラ100は、コントローラ100を制御するための制御プリンタコントロールシステムと、印刷データを受け取り、印刷画像を作成するためのPDL部とを実装する。RAM103に格納されたソフトウェアをCPU101が読み出し実行することにより、これらとして機能させることができる。
このPDL部を、図6を参照して詳細に説明する。PDL部300は、PDLの種類毎に構文解析を行うPDLパーサ301と、PDLの画像形成を行う描画コアモジュール302とから構成される。描画コアモジュール302は、テキスト、イメージ、ベクターグラフィックス、描画設定情報を受け取るためのインタフェースである描画モジュールI/F303と、テキスト、イメージ、ベクターグラフィックス等の描画データおよび色や透過設定等をもつ描画設定情報を格納する中間データ保存部304と、中間データ保存部304から指定されたカラースペースで描画する多値描画部305と、多値で描画されたデータからデバイスカラーへ変換するカラー変換部306と、デバイスカラーをCMYK2値でハーフトンニングを実施するCMYK2値変換部307とを含んで構成されている。さらに、後述する仮想フレームメモリを初期化するためのフレームメモリ初期化部308も備えている。
PDLパーサ301は、構文解析に必要となるツリー構造に変換する機能を備える。構文解析では、ソースコードに記述されたステートメントや構造が言語仕様に沿って記述されているかを確認する。
多値描画部305のカラースペースは、印刷において再現できる色の範囲であるので、ページの初めに描画カラースペースとして指定されたものに従う。RGBカラースペースが指定された場合は、RGB各色8ビットで描画する。
図6を参照して、全体の動作の流れを説明する。PDLパーサ301は、ページ記述言語であるPostScript、PDF、PCL、XPSを解析する。PDLパーサ301は、言語毎に構文が違うにも関わらず、描画コアモジュール302の描画モジュールI/F303をコールすることで、どのPDLでも描画することが可能である。
描画モジュールI/F303は、イメージ、グラフィックス、文字等の描画データや色、ブラシ、半透明指定、線形状等を設定するインタフェースをもつため、全てのPDLの描画に対応することができる。半透明は、2つの色を重ね合わせる割合を指定することで実現することができる。
例えば、図7(a)に示すPostScriptで記述された描画命令があったとする。これは、RGBカラースペースで(R,G,B)=(0.5,0,0)の色でページの向かって左下を原点として、左下の座標を(100,100)とし、右上の座標を(200,200)として指定し、矩形を描画する命令である。
描画モジュールI/F303では、この描画命令を受け取ると、色設定するインタフェースを呼び出し、その後、座標設定するインタフェースと塗りつぶしを指定するインタフェースを呼び出して、矩形を描画する。図7(b)に、描画モジュールI/F303で関数シーケンスに変換された描画命令を示す。
setcolorの第1引数は、RGBカラースペースを指定し、第2引数から第4引数によりRGB各色の色値を0.0から1.0の範囲で指定する。Rectangleは、矩形描画関数で、向かって左下座標と右上座標とが指定される。
描画モジュールI/F303がコールされた後、中間データ保存部304によりデータをメモリ上またはファイル上に保存する。このデータは、setcolor関数で設定されたRGBカラースペース、色値、Rectangleで設定された座標データを含む。RGBカラースペースおよび色値は、グラフィック状態としてメモリ上に保存される。
グラフィック状態には、半透明値、Raster Operation値、線幅等がある。グラフィック状態は、図形、イメージ、文字等の描画データに共通なデータとして保存される。これらのデータは、中間データとして中間データ保存部304に保存されるが、例えば、図8(a)に示すデータ構造の中間データとして保存することができる。
中間データは、固定長サイズのGStatusレコード、描画データのID番号、0が入れられるパッディングバイト、描画命令の属性として使用されるflag、左、上、右、下の座標とされる。
GStatusレコードは、色、線幅、半透明値、Raster Operation値等の描画に共通な設定情報が格納される。ID番号は、図8(b)に示す対応表で表される番号が格納される。図8(b)では、ID=0x00がRectangleを示し、0x01が直線の描画(LineDraw)を示し、0x02が直線で囲まれた領域の塗りつぶし(LineFill)を示し、0x03がイメージの描画(Image)を示し、0x04が文字の描画(Text)を示している。
flagの属性の例として、Rectangleを切り抜き(Clip)とする場合、Clipであることを示すビットをONにする。
図9は、画像形成装置が備えるコントローラの構成を示した図である。コントローラの構成は、インタプリタ400、中間データメモリ410、ソフト図形描画処理部420、仮想フレーム処理部430、仮想フレームメモリ440、ページメモリ450を備える点で同じであるが、さらに仮想フレーム調査部460を備えている。
インタプリタ400は、上記PDLパーサ301に相当し、ホストPCから印刷データを受信し、PDLの種類毎に構文解析を行い、中間データとして中間データメモリ410に格納する。ソフト図形描画処理部420は、描画を行う上記描画コアモジュール302に相当し、中間データメモリ410に格納された中間データ、すなわちテキスト、イメージ、ベクタグラフフィックス、描画設定情報を読み出し、展開されたイメージをページメモリ450に描画する。
仮想フレーム調査部460は、中間データメモリ410に格納されている描画命令を調査し、仮想フレームデータがどのような構造で存在し、どのような描画条件を持っているかを調べる。すなわち、どのような形のツリー構造で、どの仮想フレームがどの仮想フレームを参照し、描画するように指定されているかを調べる。
仮想フレーム処理部430は、仮想フレーム調査部460から得られた情報を基に、描画命令を仮想フレームメモリ440のどの仮想フレームまたはページメモリ450に描画するか、どの仮想フレームをどの仮想フレームやページメモリ450に描画するかをソフト図形描画処理部420に指示する。具体的には、仮想フレーム処理部430は、仮想フレーム調査部460が調査した結果を基に、後述する規定されたルールに従って、描画する仮想フレームの順序、描画済みの仮想フレームが削除可能か否かを判断し、どの時点でどの仮想フレームを描画するか、描画済みの仮想フレームをどの時点で削除するかを、ソフト図形描画処理部420に対して指示する。
ソフト図形描画処理部420は、その指示を受け付けて、ある仮想フレームを描画し、さらに指示を受け付けて、描画した仮想フレーム上に仮想フレームを描画し、最終的に作成された仮想フレームをページメモリ450に描画して、描画データを生成する。
仮想フレームメモリ440は、仮想フレームを展開する際に使用され、ソフト図形描画処理部420が描画命令の描画先として使用するほか、ここに展開された仮想フレームを他の仮想フレームやページメモリ450に描画する際の読み出し先として参照される。
ページメモリ450は、エンジン110に送信される実際に印刷される描画結果、すなわち出力すべき描画データを格納する。このページメモリ450は、1ページ分の描画が完了するとエンジン110により読み出され、エンジン110により用紙に印刷される。描画は、ページ単位ではなく、バンド単位で行われることもあるが、エンジン110による読み出しはページ単位で行われる。
まず、図10を参照して、画像形成装置が備えるコントローラが行う全体の処理の流れについて説明する。ステップ1000からこの処理を開始し、ステップ1005において、インタプリタ400がホストPCから印刷データを受信し、描画命令を1つずつ構文解析し、ステップ1010で、中間データメモリ410に解析後の描画命令を1つずつ中間データとして格納する。仮想フレームメモリ440上に仮想フレームを展開し、ソフト図形描画処理部420が中間データメモリ410から描画命令を読み出し、描画命令に従って描画を行うが、仮想フレーム調査部460は、ステップ1015で、仮想フレームを描画する描画命令があるかを判断し、ある場合、ステップ1020へ進み、その描画命令を調査する。
ここで、仮想フレームを描画する描画命令か否かは、図4に示すCanvas Aデータといった仮想フレームデータの有無により判断することができる。このデータは、仮想フレームメモリ440上に描画するためのデータである。
その後、ステップ1025で、仮想フレーム処理部430が、仮想フレームメモリ440上のどの位置に、どの時点で仮想フレームを展開するか、描画する仮想フレームの順序を判断し、それをソフト図形描画処理部420に指示し、ステップ1030で、ソフト図形描画処理部420が、仮想フレームメモリ440にその指示に従って仮想フレームの描画を行う。ステップ1035で、全ての仮想フレームを描画し終えたかを判断し、まだ終えていない場合は、ステップ1020へ戻り、終えた場合は、ステップ1040へ進む。
一方、ステップ1015で仮想フレームを描画する描画命令がない場合は、ステップ1040へ進み、ソフト図形描画処理部420がページメモリ450へ描画を行う。その後、ステップ1045で、ページメモリ450に描画されたページをエンジン110が読み出し、ステップ1050でこの処理を終了する。
図11は、図10に示すステップ1020の仮想フレーム調査部460で行われる処理を詳細に示した図である。ステップ1100から処理を開始し、ステップ1105で、ツリー構造で表現された仮想フレームにおいて、親の仮想フレームが仮想フレームメモリ440上に展開されているかを判断する。展開されている場合、ステップ1110へ進み、最も早くその親に登録された子を調べる。最も早くその親に登録された子とは、中間ページメモリ410に最初に格納される描画命令が親の描画命令であり、その親の描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように最初に指定されている描画命令である。そして、ステップ1115で、その子にさらに孫があるかを調べる。孫がある場合は、ステップ1120へ進み、その子を新たな親として移動し、ステップ1105へ戻り、同様の処理を行う。
一方、ステップ1105において、親の仮想フレームが展開されていない場合は、ステップ1125へ進み、分岐をもつ子が存在するかを調べる。ステップ1130で、分岐をもつ子が存在するかを判断し、ある場合は、ステップ1120へ進み、その子を新たな親として移動し、ステップ1105へ戻り、同様の処理を行う。
ない場合は、子に孫がない場合と同様、ステップ1135へ進み、この処理を終了する。このときの親を、仮想フレーム処理部430が描画指定する。
仮想フレーム調査部460で行う調査は、注目している仮想フレームを構成する描画命令群を、中間データメモリ410上に登録された順番に読み出し、別の仮想フレームを参照または描画するように指定している命令が存在するかを確認するものである。そして、仮想フレーム調査部460は、2つ以上の別の仮想フレームを参照または描画するように指定されている描画命令を、分岐をもつ描画命令と判断する。分岐は、別の仮想フレームを参照または描画する命令を2つ以上もつことを示す。親は、注目している仮想フレームのことで、親が参照または親に対して描画指定されている仮想フレームを子という。子から参照され、子に対して描画指定されている仮想フレームを孫という。
仮想フレーム調査部460が行う調査のルールをまとめると以下のようになる。
1.親の仮想フレームが仮想フレームメモリ440上に展開されていれば、最も早くその親に登録されている子を調べる。
2.親の仮想フレームが展開されていなければ、最も早くその親に登録されている子に分岐が存在するかを確認し、存在していれば、その子から、存在していなければ、その親に次に登録された子を調べる。
3.親の仮想フレームに子がない、あるいは全ての子に分岐がない場合、親を描画する。
1.親の仮想フレームが仮想フレームメモリ440上に展開されていれば、最も早くその親に登録されている子を調べる。
2.親の仮想フレームが展開されていなければ、最も早くその親に登録されている子に分岐が存在するかを確認し、存在していれば、その子から、存在していなければ、その親に次に登録された子を調べる。
3.親の仮想フレームに子がない、あるいは全ての子に分岐がない場合、親を描画する。
図2に示すツリー構造を参照して説明すると、親であるFixed Pageが描画されていれば、上記ルール1に従い、最も早くその親に登録されている子を調べるので、中間データメモリ410にFixed Pageの次に登録されたCanvasAを調べる。ちなみに、中間データメモリ410への登録は、CanvasA、B、C・・・の順に行われている。
Fixed Pageが描画されていなければ、上記ルール2に従い、最も早くその親に登録されている子に分岐が存在するかを確認する。図2では、CanvasCに分岐が存在するので、CanvasCから調べる。
次に、CanvasCを親として、ルール2に従い、同様に分岐が存在する子があるかを確認すると、CanvasEがあるので、CanvasEから調べる。
そして、CanvasEを親として、ルール2に従い、同様に分岐が存在する子があるかを確認すると、CanvasFがあるので、CanvasFから調べる。
CanvasFを親として、ルール2に従い、同様に分岐が存在する子があるかを確認すると、そのような子は存在しない。このため、ルール3に従い、最終の分岐をもつ親であるCanvasFを描画する。ここで、最終の分岐は、ツリー構造における末端の分岐である。
実際の描画は、ソフト図形描画処理部420が行うが、どの仮想フレームを描画するか、Fixed Pageへ描画するか、不要な仮想フレームを削除するかは、仮想フレーム調査部460が調査した結果を基に、仮想フレーム処理部430が行う。このとき、仮想フレーム処理部430は、上記の規定されたルールに従って、描画する仮想フレームの順序、描画した仮想フレームが削除可能か否かを判断し、ソフト図形描画処理部420に対して仮想フレームの描画を指示し、描画済みの仮想フレームの削除を指示する。
仮想フレーム処理部430は、仮想フレーム調査部460が調査した結果を基に、中間ページメモリ410に格納した順に調査して最初の分岐をもつ描画命令を探し、分岐をもつ描画命令を辿り、最後の分岐をもつ描画命令を探す。仮想フレーム処理部430は、上記の規定されたルールに従って、最後の分岐をもつ描画命令から仮想フレームを描画するように指示する。そして、規定されたルールに従って、辿ってきた分岐をもつ描画命令を遡りながら、分岐をもつ描画命令により描画される仮想フレームを親フレームとして描画し、その親フレームに描画するように指定されている描画命令により描画される仮想フレームを子フレームとして親フレーム上に描画することを繰り返すように、ソフト図形描画処理部420に指示する。
仮想フレーム処理部430が行う処理の一例を、図12を参照して説明する。図12に示すツリー構造では、分岐がないため、連続して描画を行うことができる。したがって、CanvasBから描画する場合、Bを展開するために必要なメモリ領域を仮想フレームメモリ440から必要なサイズ分だけ確保し、仮想フレーム管理用の情報に登録する。この情報は、一時的に保持するテンポラリのメモリに格納される。登録された仮想フレームメモリ440上のメモリ領域に注目している仮想フレームを構成している描画命令群を描画する。Bの描画が終了したところで、CanvasAの展開に必要なメモリ領域を同様に確保し、描画する。
すなわち、AがBを参照したら描画済みのBをAに描画し、Bのために確保していた仮想フレーム描画用のメモリ領域を仮想フレームメモリ440上から解放する。これを繰り返すことで描画を実現することができるため、Fixed Pageを除くと、仮想フレームを描画するのに必要とされるメモリ領域は1ページ分で済むことになる。
仮想フレームを描画するために必要とされるメモリ領域は、ページメモリ450と同様、1ピクセルにつき1ビットの点順、KCMY面順である場合や、RGB24ビット等の仮想フレームを構成する描画命令によって決定されている場合がある。縦横の描画範囲は、最大で、ページメモリ450と同じとなるが、CLIP等の描画条件によってはそれより小さくなることがある。
図13に示すツリー構造であって、Fixed Pageから描画する場合は、Fixed PageがCanvasAを参照したらAの描画に必要なメモリ領域を確保して描画し、AをFixed Pageへ描画してAのために確保していたメモリ領域を解放し、Bも同様に処理する。この場合において、親がFixed Pageであれば、Fixed Pageを除き、仮想フレームに必要なメモリ領域は1ページ分でよい。
CanvasAから描画する場合は、Aの描画に必要なメモリ領域を確保して描画し、その後、Fixed Pageを描画し、Aを参照したらAの描画結果をFixed Pageに描画してAのメモリ領域を解放し、Fixed Pageの描画を続ける。Fixed PageがCanvasBを参照したらBを描画するためのメモリ領域を確保して描画し、BをFixed Pageへ描画した後にBのために確保したメモリ領域を解放する。
上記では、調査と描画を繰り返しているので、CanvasBが描画済みの場合がある。この場合も、Fixed Pageが参照する順番に描画を行うため、CanvasAの次にCanvasBをFixed Pageに描画する。この例では、仮想フレームメモリ440を2ページ分確保する必要がある。
この処理を、図14を参照して説明する。ステップ1400から処理を開始し、ステップ1405において、親を描画し終えたかを判断する。親を描画し終えている場合は、ステップ1440へ進み、処理を終了する。
親を描画し終えていない場合は、ステップ1410へ進み、親を描画する。親を描画しているとき、ステップ1415で、子を参照したかを判断する。参照していない場合、ステップ1405へ戻り、同様の処理を繰り返す。
子を参照している場合、ステップ1420へ進み、子の展開領域を確保する。その後、ステップ1425で、子を描画する。そして、ステップ1430で、描画した子を親に描画する。ステップ1435で、子の展開領域を解放し、ステップ1405へ戻る。
図2に示すツリー構造であって、親であるFixed Pageがまだ描画されていない場合は、以下のような処理となる。
親であるFixed Pageの子のうち分岐をもったものが存在するかを探し、CanvasCが最初に分岐をもつので、CanvasCを調べる。分岐は、2つ以上のノードを指し示すポインタを有するので、容易に探し出すことができる。このようにして、分岐をもったものを辿ると、CanvasFに辿りつく。そこで、ルール3に従い、Fから描画が行われる。Fの描画は、Fの展開領域を確保し、その後に行われる。
Fの描画中、子を参照したかを判断し、まず、最も早く登録されたHの展開領域を確保し、Hを描画した後、親に描画し、Hの展開領域を解放する。次に、Iの展開領域を確保し、Iを描画した後、親に描画し、Iの展開領域を解放する。そして、Jの展開領域を確保し、Jを描画した後、親に描画し、Jの展開領域を解放する。Fの描画が終わったかを判断し、終わっていれば、次に、Eを親として、Eの展開領域を確保して描画し、子を参照したかを判断する。まず、最も早く登録されたFを親に描画し、Fの展開領域を解放する。そして、Gの展開領域を確保し、Gを描画した後、親に描画し、Gの展開領域を解放する。
Eの描画が終わったかを判断し、終わっていれば、次に、Cを親として、Cの展開領域を確保して描画し、子を参照したかを判断する。まず、最も早く登録されたDの展開領域を確保して描画を行う。このとき、展開領域として、C、D、Eの3つの領域が確保され、Fixed Pageを除き、最大が3ページ分のメモリ消費量となっている。上述した従来の前順走査では、Fixed Pageを除き、4ページ分のメモリ消費量であるため、メモリ消費量を削減できることがわかる。
Dを親に描画し、Dの展開領域を解放する。そして、Eを親に描画し、Eの展開領域を解放する。Cの描画が終わったかを判断し、終わっていれば、次に、Fixed Pageを親として、子を参照したかを判断する。
登録順に、Aの展開領域を確保し、Aを描画した後、親に描画し、Aの展開領域を解放する。次に、Bの展開領域を確保し、Bを描画した後、親に描画し、Bの展開領域を解放する。そして、Cを親に描画し、Cの展開領域を解放する。Fixed Pageの描画が終了したところで、全ての処理を終了する。
Canvas処理時に省メモリ化を図る方法として、完全透過の指定があればCanvasの描画を省略することができる。また、完全上書きであれば、そのCanvasは仮想フレームではなく、親に対して直接描画しても描画結果が同じとなる。
これを実現するために、インタプリタ400が、印刷データを受信すると、それを解釈し、完全透過であれば中間データに変換せず、中間データメモリ410に保持しないようにすることができる。完全上書きの場合、新しいCanvasとしてではなく、それまで登録処理していたFixed PageもしくはCanvasの通常のコマンド群として登録することができる。このようにして、不要な中間データ領域と仮想フレーム領域を確保せずに済み、より少ないメモリで同等の描画結果を得ることができる。
Canvas処理時に省メモリ化を図る方法として、CLIPによるものがある。これは、あるCanvasを親に描画するときに有効なCLIPが存在しなければ、そのCanvasを描画する必要がないというものである。したがって、上記の完全透過の場合と同様、CLIP状態を記憶しておき、Canvasの登録時に親に対して有効なCLIPがない場合、そのCanvasを中間データに変換せず、中間データメモリ410にも保持しないようにする。
HDDが使用可能なコントローラである場合、搭載メモリ以上のメモリ空間を使用することができる。この場合、メモリ不足は激減するが、HDDを使用した場合、描画速度が大幅に低下する。しかしながら、上述したコントローラでは、HDDにアクセスしなくても処理することができるので、描画速度を低下させることなく、描画処理することができる。
これまで、仮想フレームとしてCanvasについて説明してきたが、XPSのVisual Brush、PDFのGroup等の類似の技術にも適用可能である。また、例示したプリンタコントローラに限られるものではなく、プリンタドライバ、プリンタドライバとプリンタコントローラの組み合わせにおいても実現可能である。
また、本発明は、上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
1…仮想フレーム、2…ページ、10…ホストPC、20…プリンタコントローラ、21…インタプリタ、22…中間データメモリ、23…ソフト図形描画処理部、24…仮想フレーム処理部、25…仮想フレームメモリ、26…ページメモリ、30…プリンタエンジン、100…コントローラ、101…CPU、102…ROM、103…RAM、104…NVRAM、105…ネットワークI/F、106…エンジンI/F、107…パネルI/F、110…エンジン、120…パネル装置、200…ホストPC、300…PDL部、301…PDLパーサ、302…描画コアモジュール、303…描画モジュールI/F、304…中間データ保存部、305…多値描画部、306…カラー変換部、307…CMYK2値変換部、308…フレームメモリ初期化部、400…インタプリタ、410…中間データメモリ、420…ソフト図形描画処理部、430…仮想フレーム処理部、440…仮想フレームメモリ、450…ページメモリ、460…仮想フレーム調査部
Claims (23)
- 印刷データに含まれる複数の描画命令により複数の仮想フレームを描画して描画データを生成する印刷処理システムであって、
前記複数の描画命令を命令記憶部に記憶した順に読み出し、読み出した描画命令につき、当該描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように指定されているかを調査する仮想フレーム調査部と、
調査した結果を基に、規定されたルールに従って、描画する仮想フレームの順序および描画済みの仮想フレームが削除可能か否かを判断し、前記仮想フレームの描画および削除を指示する仮想フレーム処理部とを備える、印刷処理システム。 - 前記印刷データに含まれる前記描画命令を1つずつ解析し、前記描画命令を解析した順に前記命令記憶部に記憶させる解析部を備える、請求項1に記載の印刷処理システム。
- 前記仮想フレーム調査部は、2つ以上の前記別の仮想フレームを参照または描画するように指定されている描画命令を、分岐をもつ描画命令と判断し、前記仮想フレーム処理部は、前記調査した結果を基に、前記命令記憶部に記憶した順に調査して最初の分岐をもつ描画命令を探し、分岐をもつ描画命令を辿り、最後の分岐をもつ描画命令を探し、前記規定されたルールに従って、前記最後の分岐をもつ描画命令から仮想フレームを描画するように指示する、請求項1または2に記載の印刷処理システム。
- 前記仮想フレーム調査部は、前記規定されたルールに従って、辿ってきた前記分岐をもつ描画命令を遡りながら、前記分岐をもつ描画命令により描画される仮想フレームを親フレームとして描画し、当該親フレームに描画するように指定されている描画命令により描画される仮想フレームを子フレームとして当該親フレーム上に描画することを繰り返すように指示する、請求項3に記載の印刷処理システム。
- 前記仮想フレーム処理部は、前記仮想フレームを描画する前に、当該仮想フレームを描画するために必要とされるメモリ領域を確保するように指示する、請求項1〜4のいずれか1項に記載の印刷処理システム。
- 前記仮想フレーム処理部は、前記仮想フレームの削除に伴い、削除した前記仮想フレームのために確保していたメモリ領域を解放するように指示する、請求項5に記載の印刷処理システム。
- 前記仮想フレーム処理部からの指示を受け付け、前記指示に従ってメモリ領域を確保し、前記仮想フレームを描画し、前記描画済みの仮想フレームを削除し、前記描画済みの仮想フレームのために確保していたメモリ領域を解放するソフト図形描画処理部を備える、請求項6に記載の印刷処理システム。
- 前記ソフト図形描画処理部は、描画した仮想フレーム上に別の仮想フレームを描画し、最終的に作成された仮想フレームを描画して、描画データを生成する、請求項7に記載の印刷処理システム。
- 前記仮想フレーム処理部は、前記描画命令が、透明描画する命令、座標またはクリップを指定する命令である場合、仮想フレームを描画しないように指示する、請求項1〜8のいずれか1項に記載の印刷処理システム。
- 前記仮想フレーム処理部は、前記描画命令が、上書きを指定する命令である場合、仮想フレームを描画せず、前記別の仮想フレームを参照または描画するように指定されている描画命令により描画される親フレームに直接描画するように指示する、請求項1〜9のいずれか1項に記載の印刷処理システム。
- 前記解析部は、透明描画する命令、座標またはクリップを指定する命令である場合、前記命令を解釈し、前記命令記憶部に記憶させないようにする、請求項2に記載の印刷処理システム。
- 印刷データに含まれる複数の描画命令により複数の仮想フレームを描画して描画データを生成する印刷処理方法であって、
前記複数の描画命令を命令記憶部に記憶した順に読み出し、読み出した描画命令につき、当該描画命令により描画される仮想フレームとは別の仮想フレームを参照または描画するように指定されているかを調査するステップと、
調査した結果を基に、規定されたルールに従って、描画する仮想フレームの順序および描画済みの仮想フレームが削除可能か否かを判断し、前記仮想フレームの描画および削除を指示するステップとを含む、印刷処理方法。 - 前記印刷データに含まれる前記描画命令を1つずつ解析し、前記描画命令を解析した順に前記命令記憶部に記憶させるステップを含む、請求項12に記載の印刷処理方法。
- 前記調査するステップでは、2つ以上の前記別の仮想フレームを参照または描画するように指定されている描画命令を、分岐をもつ描画命令と判断し、前記指示するステップでは、前記調査した結果を基に、前記命令記憶部に記憶した順に調査して最初の分岐をもつ描画命令を探し、分岐をもつ描画命令を辿り、最後の分岐をもつ描画命令を探し、前記規定されたルールに従って、前記最後の分岐をもつ描画命令から仮想フレームを描画するように指示する、請求項12または13に記載の印刷処理方法。
- 前記指示するステップでは、前記規定されたルールに従って、辿ってきた前記分岐をもつ描画命令を遡りながら、前記分岐をもつ描画命令により描画される仮想フレームを親フレームとして描画し、当該親フレームに描画するように指定されている描画命令により描画される仮想フレームを子フレームとして当該親フレーム上に描画することを繰り返すように指示する、請求項14に記載の印刷処理方法。
- 前記指示するステップでは、前記仮想フレームを描画する前に、当該仮想フレームを描画するために必要とされるメモリ領域を確保するように指示する、請求項12〜15のいずれか1項に記載の印刷処理方法。
- 前記指示するステップでは、前記仮想フレームの削除に伴い、削除した前記仮想フレームのために確保していたメモリ領域を解放するように指示する、請求項16に記載の印刷処理方法。
- 前記指示に従って、メモリ領域を確保するステップ、前記仮想フレームを描画するステップ、前記描画済みの仮想フレームを削除するステップ、前記描画済みの仮想フレームのために確保していたメモリ領域を解放するステップのいずれかを実行するステップを含む、請求項17に記載の印刷処理方法。
- 描画した仮想フレーム上に別の仮想フレームを描画し、最終的に作成された仮想フレームを描画して、描画データを生成するステップを含む、請求項18に記載の印刷処理方法。
- 前記指示するステップでは、前記描画命令が、透明描画する命令、座標またはクリップを指定する命令である場合、仮想フレームを描画しないように指示する、請求項12〜19のいずれか1項に記載の印刷処理方法。
- 前記指示するステップは、前記描画命令が、上書きを指定する命令である場合、仮想フレームを描画せず、前記別の仮想フレームを参照または描画するように指定されている描画命令により描画される親フレームに直接描画するように指示する、請求項12〜20のいずれか1項に記載の印刷処理方法。
- 透明描画する命令、座標またはクリップを指定する命令である場合、前記命令を解釈し、前記命令記憶部に記憶させないようにするステップを含む、請求項12〜19に記載の印刷処理方法。
- 請求項12〜22のいずれか1項に記載の印刷処理方法を実行するためのコンピュータにより読み取り可能なプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063742A JP2010214746A (ja) | 2009-03-17 | 2009-03-17 | 印刷処理システム、印刷処理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063742A JP2010214746A (ja) | 2009-03-17 | 2009-03-17 | 印刷処理システム、印刷処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010214746A true JP2010214746A (ja) | 2010-09-30 |
Family
ID=42974109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009063742A Pending JP2010214746A (ja) | 2009-03-17 | 2009-03-17 | 印刷処理システム、印刷処理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010214746A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011146918A (ja) * | 2010-01-14 | 2011-07-28 | Oki Data Corp | 画像処理装置 |
JP2015174408A (ja) * | 2014-03-17 | 2015-10-05 | 株式会社リコー | 画像処理装置および画像処理方法 |
-
2009
- 2009-03-17 JP JP2009063742A patent/JP2010214746A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011146918A (ja) * | 2010-01-14 | 2011-07-28 | Oki Data Corp | 画像処理装置 |
JP2015174408A (ja) * | 2014-03-17 | 2015-10-05 | 株式会社リコー | 画像処理装置および画像処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6759922B2 (ja) | 画像処理装置及びプログラム | |
US8269791B2 (en) | Information processing apparatus and method for processing a vector image composed of a plurality of objects described by structured document data | |
JP2817687B2 (ja) | 画像形成装置 | |
US8988692B2 (en) | Information processing apparatus, information processing method, and storage medium | |
JP2016177373A (ja) | 情報処理装置、情報処理プログラム、および情報処理システム | |
JP5644214B2 (ja) | 印刷制御プログラム、情報処理装置、記憶媒体、印刷装置、印刷システム | |
JP4438380B2 (ja) | 印刷装置および印刷方法並びに印刷装置用のプログラム | |
JP2010214746A (ja) | 印刷処理システム、印刷処理方法およびプログラム | |
US9253343B2 (en) | Information processing apparatus, control method, and storage medium for providing a preview and/or display of a main display document generated from all parts of a print document | |
CN101464782B (zh) | 版面描述信息的转换方法及应用版面描述的装置 | |
JP2001293936A (ja) | 描画情報処理装置および描画情報処理方法 | |
US8908227B2 (en) | Image forming apparatus, image forming system, image data processing method, program, and storage medium | |
JP4532872B2 (ja) | 文書処理方法及び文書処理装置 | |
JP4449398B2 (ja) | 印刷装置および印刷方法並びに印刷装置用のプログラム | |
JP2001255867A (ja) | 任意のデータ構造のフォントデータを用いた文字列の描画を可能にする文字列描画装置及び文字列描画方法 | |
JP3496384B2 (ja) | 画像出力装置 | |
JP2010274435A (ja) | 画像形成装置、画像形成方法、プログラムおよび記録媒体 | |
JP2013161459A (ja) | 文書処理方法 | |
JP2009066926A (ja) | 画像処理装置及び画像形成システム | |
JP2010171597A (ja) | 画像処理装置 | |
JP2007004232A (ja) | レイアウト方法 | |
JP2006309427A (ja) | 印刷制御装置、印刷制御方法及び印刷制御用プログラム | |
JP4467715B2 (ja) | 画像出力制御装置及び方法 | |
JP3129401B2 (ja) | 読み取りデータ変換管理装置 | |
JP2003173446A (ja) | 画像処理装置、画像処理システム、画像処理方法、記憶媒体、及びプログラム |