Nothing Special   »   [go: up one dir, main page]

JP2007299324A - ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム - Google Patents

ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム Download PDF

Info

Publication number
JP2007299324A
JP2007299324A JP2006128568A JP2006128568A JP2007299324A JP 2007299324 A JP2007299324 A JP 2007299324A JP 2006128568 A JP2006128568 A JP 2006128568A JP 2006128568 A JP2006128568 A JP 2006128568A JP 2007299324 A JP2007299324 A JP 2007299324A
Authority
JP
Japan
Prior art keywords
logical
numerical
user interface
numerical value
option
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006128568A
Other languages
English (en)
Inventor
Yuji Kohama
勇二 小濱
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2006128568A priority Critical patent/JP2007299324A/ja
Publication of JP2007299324A publication Critical patent/JP2007299324A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

【課題】簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供する。
【解決手段】ユーザインターフェイス制御開始の入力があると、禁則条件の論理式を表す数値列を読み込んで作業用メモリにコピーし(S10,S20)、そのときの設定されている設定項目毎の選択肢の選択状態(選択/非選択)を示すテーブルを生成し(S30)、該テーブルを参照して各選択肢の状態値を数値列の対応する数値と置き換える(S40)。そして状態値適用後の数値列をスタック操作で計算し、その計算結果から本設定可能か否かを判断し、禁則条件が「1」(TRUE)であれば、その設定された選択肢の組合せは禁止されていて設定不可能である旨を表示する(S80)。
【選択図】図4

Description

本発明は、例えば印刷条件を設定する際に表示装置に表示されて複数の設定項目のうちある選択肢が選択されている状態では所定の選択肢の選択が禁止されるユーザインターフェイス及びプログラムに関する。
例えばプリンタによる印刷は、印刷サイズや用紙種などの印刷設定情報を設定して行われる。例えば特許文献1には、スタンドアロン型のプリンタにおいて、プリンタの表示画面に表示された入力画面上で入力装置を用いて印刷設定情報を選択できるプリンタが開示されている。また、特許文献2及び特許文献3には、ホストコンピュータの表示装置の画面に、ユーザが入力装置を用いて印刷設定情報を設定可能な設定画面を表示するプリンタドライバが開示されている。特許文献2の技術では、用紙が不足した用紙トレイが設定画面上で選択できないような禁則処理が行われる構成となっていた。
また、特許文献1〜3に開示のとおり、設定画面(ユーザインターフェイス)では、用紙サイズ、用紙種、印刷速度など複数の設定項目毎にそれぞれ複数の選択肢が用意され、ユーザは設定項目毎に所望の選択肢を選択することにより印刷設定情報を設定できるようになっていた。
ところで、この種のユーザインターフェイスで選択可能な設定項目には、前述の用紙サイズ、用紙の種類などの他、カラーモード(カラー/モノクロ)、印刷品質(テキスト/ドラフト)、双方向印刷(オン/オフ)、縁なし印刷(オン/オフ)など、多岐に渡って種々の設定項目を選択できる。しかし、ある設定項目の選択肢A1と他の設定項目の選択肢B1との組合せが、適切な印刷を行ううえで適さない場合があり、このような適さない選択肢については、その選択肢が選択できないように非表示またはグレーアウトされるなど無効化されるようになっている。例えば設定項目「印刷品質」で、印刷品質より印刷速度を優先する「ドラフト」が選択されているときは、設定項目「双方向印刷」では、キャリッジの往復走査のうち一方向のみで印刷が行われる印刷速度の遅い「単方向印刷」は選択できないように、双方向印刷「オフ」の選択肢が無効化される。このように不適切な選択肢の組合せを回避できるようにユーザインターフェイスを制御する場合は、禁則条件から、各選択肢を有効化すべきか無効化すべきかを判断している。設定不可能な組み合わせになっていた場合は、ユーザが選択できないように、例えばリストボックス上の設定不可能な選択肢を非表示またはグレーアウトにしている。
従来、禁則条件から各選択肢の有効化/無効化を判断する方法としては、例えば図15に示すような全設定項目の全選択肢の数nと同数のnビットのビットフラグ列、例えば「0000100100…00」のようなビットフラグ列を、設定可能もしくは設定不可能な組合せの数に応じて用意し、このビットフラグを基に禁則情報を取得していた。例えば図15に示す禁則条件を表すテーブル71においては、フチ無し印刷を禁止するビットフラグや、ロール紙印刷を禁止するビットフラグなど、禁止条件毎にビットフラグが設定されていた。例えば組合せが禁止されている複数の選択肢A1,B1に対応するビットが「1」となるようなビットフラグ列が、組合せの数だけ用意されて、禁則情報として提供している。
また、他の従来方法では、UI上の選択可能な全ての選択肢を論理変数として扱い、各論理変数が{ 選択(TRUE), 非選択(FALSE) }のどちらかの状態を取るとする。それらの論理変数を組み合わせた論理式によって設定不可能である禁則条件を表現する。
E = (( X1∧X2 ) ∨ ( X1 ̄∧X3 )) ∨ (( X2∧X4 ̄ ) ∨ ( ( X1∧X3 )∧X5 )) …
ソフトウェアでは、上記の様な論理式を読み込んで解析して、設定不可能/可能である情報を示すデータの形式に変換する。その後、UIの禁則処理に使用している。また、論理式からの具体的な変換方法は、各ソフトウェアの実装方法に依存していた。
特開2001−312491号公報 特開2004−5455号公報 特開2005−165713号公報
しかしながら、2つの従来方法のうち前者の問題点としては、次の点が挙げられる。各設定項目で、自由に禁則条件を定義することができるため、全体の禁則条件として、矛盾しているデータを作成することが可能となり、結果的に禁則条件の整合性を保障できない。また、複雑な禁則条件を示そうとした場合、大量のビットフラッグが必要となり、UI側では、それらのビットフラッグを解析・実行する大量のロジックが必要となる。
また、2つの従来方法のうち後者の問題点としては、次の点が挙げられる。全ての禁則条件を含んだ論理式・禁則データを解析して、何らかの設定不可能/ 可能である情報を示すデータに変換する必要があるため、前者の方法と比較して多くの計算時間が必要となる。また、変換された算術演算データは、前者の従来方法と比較して多くのメモリ容量が必要になるという問題があった。
なお、特許文献2においても、用紙トレイの用紙不足やエラーなどを回避する禁則処理が行われていたが、これは選択肢の組合せの禁則処理ではなく、用紙不足の用紙トレイやエラーを検出して、その検出した選択肢を非表示/無効化すれば足りるので、そもそもユーザインターフェイスの制御は複雑なものとはならず、課題を異にしている。
本発明は上記問題点に鑑みてなされたものであって、その目的は、簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供することにある。
本発明は、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶手段に記憶しておき、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップとを備えたことを要旨とする。
これによれば、入力手段から制御の開始の契機となる入力を得ると、状態値適用ステップにおいて、記憶手段から数値列を読み出すとともに、ユーザインターフェイス上の各設定項目における各選択肢の選択状態を示す状態値を数値列中の対応する数値と置き換える。そして、演算ステップでは、状態値適用後の数値列に基づき演算が行われる。表示反映ステップでは、その演算結果が選択禁止の選択肢が存在する旨の禁則情報であった場合は、その禁則情報が表示手段の表示に反映される。制御ロジックは数値列の計算ロジックなので比較的単純なロジックで済み、しかも選択禁止の禁則条件又は選択許可の許可条件を表した論理式の計算なので、禁則条件等の整合もとりやすい。よって、簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供する。
また、本発明のユーザインターフェイス制御方法では、前記条件は、選択が禁止されるべき選択肢の組合せの条件を表した禁則条件であることが好ましい。
これによれば、選択が許可されるべき組合せの数よりも禁止されるべき選択肢の組合せの数の方が多い場合は、禁則条件なので、論理式を簡単に済ませることができる。よって、数値列が簡単になることから、演算ステップにおける数値列の演算の負担を軽減できるとともに、演算時に使用するメモリ領域を少なく済ませられる。
また、本発明のユーザインターフェイス制御方法では、前記論理式は、前記選択肢が選ばれている場合に真になり選ばれていない場合に偽になる論理変数をX1,…,Xn(nは2以上の整数)を全設定項目の全選択肢に対して定義するとともに、前記論理変数X1,…,Xnの否定であって、選択肢が選ばれていない場合に真になり選ばれている場合に偽になる論理変数X1 ̄,…,Xn ̄を定義し、前記論理変数を論理和・論理積により組み合せることによって、前記条件を表現した論理式であることが好ましい。
これによれば、選択時と非選択時での真・偽が背反の関係にある二種類の論理変数Xn,Xn ̄を用いて、該論理変数と論理和・論理積との組合せによって条件が表現された論理式を用いているので、論理式として表現できる条件の幅が広がる。
また、本発明のユーザインターフェイス制御方法では、前記数値列は、逆ポーランド記法の順序で数値が並んだものであることが好ましい。これによれば、数値列は、逆ポーランド記法の順序で数値が並んでいるので、数値を順番に参照していくことで、数値列の演算を行うことができる。数値を順番に参照することで例えばスタック計算を行うことが可能になる。
また、本発明のユーザインターフェイス制御方法では、前記演算ステップでは、前記数値列の演算をスタック計算で行うことが好ましい。
これによれば、演算ステップでは、数値列の演算をスタック計算で行う。数値列における数値の並び順に従って数値を順番に参照して演算を進めればよい。例えばコンピュータによる演算処理を簡単に済ませられる。
また、本発明のユーザインターフェイス制御方法では、前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことが好ましい。
これによれば、作業用メモリに格納した数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として活用する。参照数値が論理変数に割り当てられた数値である場合は、該参照数値をスタック領域にプッシュし、参照数値が論理演算子に割り当て得られた数値である場合はスタック領域から複数(2つ)の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果をスタック領域にプッシュする。このようなスタック操作を繰り返すことで数値列の演算は進められる。作業用メモリ上の数値参照の終わったメモリ領域をスタック領域に活用するので、スタック計算する場合に別途メモリ領域を用意する必要がない。
また、本発明のユーザインターフェイス制御方法では、前記入力手段からの制御の開始の契機となる入力は、前記各設定項目において選択されている前記選択肢を確定するための確定入力であることが好ましい。
これによれば、入力手段から各設定項目で選択されている選択肢を確定する確定入力があったときは、全設定項目で選択肢が選択された状態にあるので、選択肢の状態値はすべて決まる。このため、状態値が適用された数値列の演算を行った演算結果から、そのとき選択されている選択肢の組合せが禁止又は許可されるべきものか否かを判断できる。例えば、許可される場合は、そのときの選択肢の組合せで確定され、一方、禁止される場合は、選択不可能な旨を表示手段の表示に反映させる。
また、本発明のユーザインターフェイス制御方法では、前記入力手段からの制御の開始の契機となる入力は、前記設定項目において前記選択肢を選択する選択入力であることが好ましい。
これによれば、入力手段から選択肢を選択する選択入力があったときは、該選択肢が属する設定項目以外の設定項目の中には、未選択又は選択済みに拘わらず改めて選択肢が選択可能かどうかを判断する必要がある場合がある。この場合、選択された当該選択肢を含む一部の選択肢のみの状態値が決まり、選択可能かどうかを判断する必要があるその他の設定項目の選択肢の状態値は未定となる。よって、状態値適用ステップでは、状態値が決まる選択肢の状態値のみが数値列の対応する数値に置き換えられ、この一部の状態値のみ適用された数値列の演算が演算ステップで行われる。そして、その演算結果から、選択可能かどうかの判断が必要な設定項目について選択が禁止又は許可される選択肢が特定されることになる。そして、表示反映ステップでは、選択が禁止又は許可される選択肢についてはその旨がユーザインターフェイス上の表示に反映される。例えば、選択が禁止される選択肢が、選択不可能状態又は非表示状態にされるなど選択できないように無効化される。よって、その後、ユーザが他の設定項目で組合せ上禁止されている選択肢を選択することを回避できる。
また、本発明のユーザインターフェイス制御方法では、前記数値列は、論理変数に割り当てられた数値の配列により構成され、論理演算子を表す数値は含まないことが好ましい。これによれば、数値列は、論理変数に割り当てられた数値が複数配列されてなり、論理演算子を意味する数値は省略されている。このため、論理演算子が省略された分だけ、数値列自体を縮小できるうえ数値列の演算に必要な作業用メモリを削減できる。また、演算時に参照する数値の個数が少なくなるので、演算所要時間も短く済む。
また、本発明のユーザインターフェイス制御方法では、前記数値列は、逆ポーランド記法で表現した際に論理演算子の位置の順番が常に固定される表記形式で表された論理式を逆ポーランド記法で表現した順番で数値が配列されてなり、前記演算ステップでは、前記数値列の数値を順番に参照して予め定められた所定個数分の数値のスタック操作を終える度に、前記スタック領域から数値をポップするとともに前記所定個数分の数値参照後に実施するように予め設定された論理演算子による演算を、前記ポップした数値に対して施すことが好ましい。
これによれば、論理演算子の数値が省略されていても、論理演算子の省略位置が固定されていることから、参照位置から、省略された論理演算子による演算を行うべきタイミングを把握することができ、省略されている論理演算子の1つ前まで数値を参照してそのスタック操作を終える度に、次に省略された論理演算子が参照されるべきものとして、そのときの位置から定まる省略された論理演算子による演算を、スタック領域からポップした数値に対して施す。つまり、所定個数の数値を参照した後に省略された論理演算子の演算を行うプログラムを組むことができる。よって、論理演算子が省略されても、所定個数分の数値を参照する度に省略された論理演算子の演算を行うという所定の規則に従って、数値列の演算を行うことができる。
また、本発明のユーザインターフェイス制御装置では、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶する記憶手段と、前記入力手段から制御の開始の契機となる入力を得ると、前記ユーザインターフェイスにおける前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用手段と、前記状態値が適用された前記数値列に基づき演算を行う演算手段と、前記演算手段の演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映手段とを備えたことを要旨とする。この装置の発明によっても、前記方法の発明と同様の効果を得ることができる。
本発明は、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御する処理をコンピュータが実行するためのユーザインターフェイス制御用プログラムであって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列が記憶手段に記憶されており、コンピュータが、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップとを実行するためのプログラム。これによれば、このプログラムをコンピュータが実行することで、前記方法の発明と同様の効果を得ることができる。
(第1実施形態)
以下、本発明を具体化した第1実施形態を、図1〜図7に基づいて説明する。
図1は、印刷システムのハードウェア構成を示すブロック図である。印刷システムは、パーソナルコンピュータ等からなるコンピュータ11と、コンピュータ11のインターフェイス(以下「I/F17」)に接続されたプリンタ21とから構成される。プリンタ21は例えばインクジェット式プリンタである。
図1に示すように、コンピュータ11は、CPU12、ROM13、RAM14、HDD(Hard Disk Drive)15、ビデオ回路16、I/F17、バス18、表示装置19および入力装置20によって構成されている。
ここで、CPU12は、ROM13やHDD15に格納されているプログラムに従って各種演算処理を実行するとともに、装置の各部を制御する制御部である。
ROM13は、CPU12が実行する基本的なプログラムやデータを格納しているメモリである。RAM14は、CPU12が実行途中のプログラムや、演算途中のデータ等を一時的に格納するメモリである。
HDD15は、CPU12からの要求に応じて、ハードディスクに記憶されているデータやプログラムを読み出すとともに、CPU12の演算処理の結果として発生したデータを前述したハードディスクに記憶する記憶装置である。
ビデオ回路16は、CPU12から供給された描画命令に応じて描画処理を実行し、得られた画像データを映像信号に変換して表示装置19に出力する回路である。
I/F17は、入力装置20から出力された信号の表現形式を適宜変換するとともに、プリンタ21に対して印刷データを出力する回路である。
バス18は、CPU12、ROM13、RAM14、HDD15、ビデオ回路16およびI/F17を相互に接続し、これらの間でデータの授受を可能とする信号線である。
表示装置19は、例えば、LCD(Liquid Crystal Display)モニタやCRT(Cathode Ray Tube)モニタによって構成され、ビデオ回路16から出力された映像信号に応じた画像を表示する装置である。
入力装置20は、例えば、キーボードおよびマウスによって構成されており、ユーザの操作に応じた信号を生成して、I/F17に供給する装置である。
以下、図2に示す各機能部分について個々に説明する。
図2に示すように、コンピュータ11には、アプリケーションプログラム、ビデオドライバプログラムおよびプリンタドライバプログラム等が実装されており、これらが所定のオペレーティングシステム(OS)の下で動作している。コンピュータ11に内蔵されたCPU12がHDD15等に格納されている前述の各種プログラムを実行することにより、アプリケーション部23、ビデオドライバ24およびプリンタドライバ25が構築されている。
プリンタドライバ25は、UI制御装置30および印刷部38を備えている。UI制御装置30は、記憶部31、データロード部32、テーブル作成部33、演算部34、UI制御部35、印刷部38を備えている。なお、これらの機能部分は、コンピュータ11のハードウェアと、HDD15に記憶されているソフトウエアとが協働することにより実現される。
アプリケーション部23は、例えば画像編集などを行う機能を有し、ディジタルカメラ等から取り込まれた画像あるいはユーザによって描画された画像の加工処理が可能である。アプリケーション部23で扱う画像は、ビデオドライバ24に出力されることで表示装置19の画面に表示される。アプリケーション部23は、入力装置20が操作されて印刷実行の指令を受け付けると、その印刷対象の画像データをプリンタドライバ25に出力する。
ビデオドライバ24は、ビデオ回路16を駆動するためのプログラムであり、例えばアプリケーション部23から供給された画像データに対してガンマ処理やホワイトバランスの調整等を行った後、映像信号を生成して表示装置19に供給して画像を表示させる。また、プリンタドライバ25はUI28の画像データをビデオドライバ24を介して表示装置19の画面に表示させる。
プリンタドライバ25は、表示装置19の画面に、ユーザが印刷条件を入力設定するためのユーザインターフェイス(以下、「UI28」という)の表示制御を行うユーザインターフェイス制御装置(以下、「UI制御装置30」という)を備えている。UI制御装置30は、ユーザが入力装置20を操作してアプリケーション部23に対して例えば印刷実行指令または印刷設定表示指令などの印刷に係る指令を入力すると、その指令を受け付けたプリンタドライバ25により起動される。
UI制御装置30は、用紙サイズ、メディア、カラーモードなどの設定項目が選択可能に配置された設定画面を有するUI28を表示させる。UI28には印刷条件を構成する各種設定項目毎に、例えばコンボボックス、ラジオボタン、チェックボックス等の選択機能部のうちの一つが対応付けて配置されており、ユーザは、UI28上に各設定項目毎の選択機能部を必要に応じて選択操作して選択肢を変更することで所望の印刷条件を設定する。この場合、設定項目間で、一緒に設定できない選択肢の組合せがある。例えば設定項目「メディア」において写真印刷時に設定される「光沢紙」と、設定項目「印刷品質」における写真印刷に適さない「ドラフト」との組合せが、それに該当する。選択肢の組合せとして不適切な組合せについては予め設定できないように禁止しておくことで、ユーザが不適切な印刷条件で印刷してしまうことを防止するようにしている。
選択が禁止された選択肢の組合せで印刷条件が設定されることを防止する方法としては、次の2つの方法が挙げられる。一つは、選択が禁止された選択肢の組合せで図2に示すOKボタン42(確定ボタン)が操作されたときに選択禁止の旨を通知する方法である。他の一つは、選択禁止の選択肢を無効化(グレーアウト又は非表示)してユーザによる選択を不能にする方法である。本実施形態は、前者の方法を採用する。
印刷条件を設定するためにUI28上で選択できる設定項目は、詳細設定画面等の下位の設定画面で設定されるものも含めると、プリンタ21の機種によって異なるものの、例えば10〜20程度ある。各設定項目毎に2〜10程度用意されている選択肢を設定項目毎に1つずつ選択して印刷条件を確定する。UI制御装置30は、非常に多数の選択肢の組合せのうち、OKボタン42が操作されたときの選択肢の設定が禁則条件を満たすものであるか否かを判定して、その判定結果に応じた所定の処理を行う。本実施形態では所定の処理として、設定可能な場合にその設定を確定して受け付ける処理を行い、設定不可能な場合は、表示装置19の画面に設定不可能な旨のメッセージを表示する処理を行う。
UI制御装置30は、設定項目間において設定不可能な選択肢の組合わせを効率良く取得する。設定可能な選択肢の組合せと設定不可能な選択肢の組合せの判別処理は、設定不可能な選択肢の組合せのすべてを含む禁則条件の論理式を数値化した禁則データ(数値列)に基づき行う構成となっている。UI制御装置30は、UI制御開始の入力を得ると、UI28上で選択されている各選択肢の状態値を数値列に代入し、その代入後の数値列を演算して得られた演算結果から禁則条件である否かを判定し、その判定結果を表示装置19の表示に反映させる。本実施形態では、図2に示すプリンタメーカー側のコンピュータ50で作成された論理式52を数値に変換した数値列55が、禁則データとしてプリンタドライバプログラムと共にCD−ROM41に記憶され、このCD−ROM41がプリンタ21に同梱されてユーザに提供される。そして、CD−ROM41からユーザのコンピュータ11にプリンタドライバプログラム及び各種データがインストールされることにより、UI制御装置30を有するプリンタドライバ25がコンピュータ11に実装される。
ここで、コンピュータ50で行われる処理について説明する。コンピュータ50には、開発者がプリンタ用のUI制御装置30を開発するためのツールが実装されており、このツールの一部の機能として数値列作成部51が備えられている。開発用のツールはソフトウェアにより構成され、コンピュータ50がそのソフトウェアを実行することで数値列作成部51はその一部の機能として構築されている。数値列作成部51は、開発者が入力手段(図示せず)を操作することで与えられる禁則情報に基づいて論理式52を作成するとともに該論理式52を所定の規則に従って数値列55に変換する。論理式52は、前述のように、複数の設定項目間で選択が禁止されている組合せを定める禁則条件を、選択肢を論理変数として表現された論理式である。この論理式52の詳細については後述する。
次に、UI制御装置30の構成部分について説明する。
図2に示す記憶部31は、HDD15の所定記憶領域またはメモリにより構成されたもので、UI制御処理に必要なデータが格納されている。記憶部31には、前述のとおり、CD−ROM41から読み込まれた数値列55のデータが記憶されている。また、記憶部31には、UI28上の選択肢毎に選択/非選択のどちらの状態にあるかその選択状態の状態値をフラグで管理する所定記憶領域が用意されている。初期状態では各状態値(フラグ)はデフォルトの値が設定されており、入力装置20の操作によって選択肢の選択状態が変更される度に、フラグの値が変更されるように構成されている。
データロード部32は、入力装置20からUI制御処理開始のトリガとなる入力があると、そのときのUI28上における各選択肢の選択状態を示す状態値(フラグ)データと、数値列55のデータとを、記憶部31からロードする。本実施形態では、OKボタン42を操作したときの入力が、UI制御処理開始のトリガとなる。
テーブル作成部33は、データロード部32がロードした数値列55のデータと、選択肢毎の状態値データとに基づきテーブル44(図3に示す)を作成する。
演算部34は、テーブル作成部33が作成したテーブル44を参照して、数値列55を構成する多数の数値のうち各選択肢の論理変数に割り当てられた数値を、対応する選択肢の状態値に置き換える処理を行う。つまり、数値列55で表現された論理式の論理変数に状態値を代入する処理を行う。そして、状態値適用後の数値列を計算する所定の演算処理を行う。
UI制御部35は、演算部34の演算結果から本設定が可能であるか否かを判定し、その判定結果をビデオドライバ24を介して表示装置19の表示内容に反映させる。本実施形態では、前述のように、本設定が可能な場合は、本設定を受け付けて印刷部38に本設定を確定した旨を通知し、一方、本設定が不可能な場合は、本設定が不可能な旨のメッセージ表示を行う。
印刷部38は、UI制御部35から確定の旨の通知を受け取ると、記憶部31から状態値のデータを読み出して印刷設定情報を取得するとともに、印刷対象の画像データに解像度変換処理、色変換処理、ハーフトーン処理およびラスタライズ処理を施して生成した印刷データをプリンタ21に供給する。印刷データは、プリンタ21が解釈できる形式のデータであって、前記画素データと、各種のコマンドデータとを有するデータである。
解像度変換処理は、印刷対象となる例えばRGB画像の解像度を、設定項目「印刷品質」の選択肢から決まる印刷解像度に変換する処理である。また、この処理を行う際は、設定項目「用紙サイズ」の選択肢から決まる用紙サイズに応じた画像サイズに変倍する変倍処理やトリミング処理等が必要に応じて行われる。色変換処理は、RGB表色系で表現されたRGB画像データを、色変換テーブル(図示せず)を参照して、CMYK表色系の画像データに変換する処理である。ハーフトーン処理は、多段階の階調値を有するCMYK画素データを、プリンタ21が表現可能な、少段階の階調値を有するCMYK画素データに変換する処理である。ラスタライズ処理は、前記ハーフトーン処理がなされたCMYK画像データを、プリンタ21に転送すべきデータ順に変更する処理である。ラスタライズ処理されたデータは、コマンドが付された印刷データとしてプリンタ21に出力される。
図3は、メーカー側のコンピュータ50で予め行われる処理を説明する流れ図である。数値列作成部51が行う処理は、図3(a)〜(d)に示すように、(a)論理式52の作成、(b)逆ポーランド記法への並び替え、(c)論理変数・論理記号の数値変換の主に3つの処理からなる。
まず論理式の作成について説明する。UI28上の選択可能な全ての選択肢を論理変数として扱い、各論理変数が{選択(TRUE),非選択(FALSE)}のどちらかの状態を取るとする。それらの論理変数を組み合わせた論理式によって設定不可能である禁則条件を表現する。禁則条件の論理式Eは、以下のように示される。
E = (( X1∧X2 ) ∨ ( X1 ̄∧X3 )) ∨ (( X2∧X4 ̄ ) ∨ ( ( X1∧X3 )∧X5 )) …(1)
例えば設定項目として、用紙サイズ、メディア、カラーモードなどがあり、各設定項目の下位に用意された各選択肢が論理変数で表される。例えば設定項目「用紙サイズ」には、その選択肢として、「A2,A3,A4,Letter,Legal,…」があり、設定項目「メディア」には、その選択肢として、「普通紙、OHPシート、マット紙、光沢紙、半光沢紙、…」があり、さらに設定項目「カラーモード」には、その選択肢として、「カラー/モノクロ」がある。これら選択肢の一つひとつに論理変数が割り当てられる。
上記(1)式で示された論理式52の右辺の論理変数には、「X1,X2,X3,X4,X5,…」と、「X1 ̄,X2 ̄,X3 ̄,X4 ̄,X5 ̄,…」がある。論理変数Xn(但しn=1,2,…)は、論理変数Xnで表された選択肢N1が選択されているときに真(TRUE)となり、この選択肢N1が選択されていないときに偽(FALSE)となる論理変数である。一方、論理変数Xn ̄(但しn=1,2,…)は、論理変数Xnで表された選択肢N1が選択されていないときに真(TRUE)となり、この選択肢N1が選択されているときに偽(FALSE)となる論理変数である。論理変数Xn,Xn ̄は、それぞれ真(TRUE)である場合に値「1」をとり、偽(FALSE)である場合に値「−1」をとる。
例えば上記(1)式の右辺中にある「X1∧X2」は、論理変数X1で表された選択肢A1と、論理変数X2で表された選択肢B1の両方が選択された場合に、X1∧X2が真(TRUE)となり、X1∧X2=1∧1=1により、値「1」をとる。また、論理変数X1で表された選択肢A1と、論理変数X2で表された選択肢B1のうち少なくとも一方が選択されなかった場合は、X1∧X2が偽(FALSE)となり、X1∧X2=−1(∵1∧−1=−1∧1=−1∧−1=−1)により、値「−1」をとる。
論理変数が論理和で結合されたXn∨Xmは、論理変数Xnで表された選択肢Anと、論理変数Xmで表された選択肢Bmのうち少なくとも一方が選択されている場合に、Xn∨Xmが真(TRUE)となり、X1∨X2=1(∵1∨−1=−1∨1=1∨1=1)により、値「1」をとる。また、論理変数Xnで表された選択肢Anと、論理変数Xmで表された選択肢Bmのうち両方が選択されなかった場合は、Xn∨Xmが偽(FALSE)となり、Xn∨Xm=−1(∵−1∨−1=−1)により、値「−1」をとる。
禁止関数Eは、その値が「1」になって真(TRUE)となると、そのとき選択されている選択肢の組合せが禁止されていることを意味し、一方、その値が「−1」になって偽(FALSE)となると、そのとき選択されている選択肢の組合せが禁止されていない、すなわち許可されていることを意味する。換言すれば、禁止されている選択肢の組合せを選択した場合、E=1になり、禁止されていない(つまり許可されている)選択肢の組合せを選択した場合、E=−1になる。
前述の例で示した「X1∧X2」は論理式52中においては、選択肢A1と選択肢B1の両方を同時に選択することは禁止することを意味する。また、前記(1)式中の「X1 ̄∧X3」は論理式52中においては、論理変数X1 ̄で表された選択肢A1が選択されていないときは、論理変数X3で表された選択肢C1の選択を禁止することを意味する。つまり、選択肢Cを選択するためには選択肢A1の選択が必須であることを意味する。このように選択が禁止されている選択肢の組合せについては、それぞれを表す論理変数が論理積(∧)で繋がれ、例えば「Xn∧Xm」、「Xn ̄∧Xm」、「Xn∧Xm ̄」、「Xn ̄∧Xm ̄」「(Xn∧Xm)∧Xl」、…のように論理式中に組み込まれる。そして、これらの禁止の組合せを論理積で繋いだそれぞれが、論理和(∨)で繋がれて小集団の式が形成され、さらにその論理和で繋がれた小集団の式が他の小集団の式と論理和で繋がれることにより、例えば論理式52は構築されている。よって、ある禁止の組合せを追加したい場合は、論理式中にその禁止の組合せに対応する各論理変数を論理積(∧)で繋いだ、例えば「Xn∧Xm」または前記小集団の式を、既存の論理式52中に論理和で繋ぐかたちで追加すればよい。また、ある禁止の組合せを削除したい場合は、その禁止の組合せに対応する各論理変数を論理積(∧)で繋いだ、例えば「Xn∧Xm」または前記小集団の式を、既存の論理式52から削除すればよい。このように論理式52を用いれば、禁止の組合せの追加・削除は比較的簡単に行える。
図3(a)に示す論理式52は、上述の手法に基づきコンピュータ50の数値列作成部51が作成する。開発者が入力装置(図示せず)を操作して選択肢の論理変数を必要に応じて定義して、数値列作成部51からの要求に応じて禁止される組合せの情報を入力すると、数値列作成部51は、上述の規則に従って論理式52を作成する。
すなわち、数値列作成部51は、設定項目中の特定の選択肢が選ばれた場合に真(TRUE)、 選ばれていない場合に偽(FALSE)になる論理変数X1,X2,X3,…を全設定項目の全選択肢分定義する。次に、X1,X2,X3,…の否定、すなわち選択肢が選ばれない場合に真(TRUE)、選ばれた場合に偽(FALSE)となる論理変数X1 ̄,X2 ̄,X3 ̄,…と定義する。そして、入力装置から与えられた禁則条件(選択禁止の条件)の情報を基に、これらの論理変数を論理和・論理積による組み合せることによって、禁則条件を表現した例えば前記(1)式で表される論理式52を作成する。
こうして論理式52が作成されると、数値列作成部51は、次に図3(b)に示すように、論理式52を逆ポーランド記法へ並び替える処理を行う。この処理の結果、同図(b)に示すように、論理式52中の括弧「()」が外されて論理変数・論理記号が計算順序の順番に並び替えられた、逆ポーランド記法の論理式53が得られる。
次に、数値列作成部51は、この逆ポーランド記法の論理式53を、図3(c)に示す変換テーブル54を参照して、図3(d)に示す数値列55に変換する。この変換テーブル54は予めメモリの所定記憶領域に記憶されているものを読み出して使用する。あるいは、その都度、設定項目の選択肢の数に応じて数値列作成部51が作成してもよい。
図3(c)に示す変換テーブル54は、論理変数・論理記号とそれらの変換先の数値との対応関係を示したテーブルである。変換テーブル54では、「TRUE(真)」が「1」、「FALSE(偽)」が「−1」に変換されるように設定され、また論理積(∧)が「2」、論理和(∨)が「−2」に変換されるように設定されている。また、論理変数については、論理変数「X1,X2,X3,X4,…」がそれぞれ「3、4,5,6,…」に変換され、論理変数「X1 ̄,X2 ̄,X3 ̄,X4 ̄,…」がそれぞれ「−3、−4,−5,−6,…」に変換されるように設定されている。また、「0」は終端用(NULL)に使用される。なお、「TRUE」および「FALSE」の変換は、論理式53から数値列55への変換には使用されないので、数値列55は「1」および「−1」を含まない。ユーザ側のコンピュータ11において、UI28上で設定項目の選択肢が選択された状態でUI制御のための演算を行うときに、選択肢の論理変数を表す数値が、対応する選択肢の選択・非選択に応じて「1」または「−1」に置き替えられて使用される。
こうして数値列作成部51は、変換テーブル54を参照して、図3(b)に示す逆ポーランド記法の論理式53を図3(d)に示す数値列55に変換する。数値列55には、その最終端位置に、数値列55の終端位置であることを示す「0」が配置される。コンピュータ11がこの数値列55の演算を行うときには、数値列55における同図の左端位置が演算開始位置になり、この演算開始位置から順次右側へ1つずつ参照する数値をシフトしながら演算を進めることになる。そして、終端用の「0」を参照すると、すべての数値の演算が終了したことになる。この演算終了位置を認識できるように終端用の「0」は数値列55の最後に配置される。
この数値列55のデータは、前述のように、プリンタドライバプログラムと共にCD−ROM41に書き込まれ、CD−ROM41からプリンタドライバプログラムと共にユーザのコンピュータ11にインストールされることにより、HDD15内の所定記憶領域からなる図2に示す記憶部31に格納される。コンピュータ11は数値列55をソフトウェアの設定データとして持ち、UI制御装置30がUI28を制御するときに使用する。ユーザがアプリケーション部23から印刷実行を指示し、プリンタドライバ25が印刷指令を受け付けると、UI制御装置30が表示装置19の画面にUI28を表示させるとともに、入力装置20の操作によってユーザがそのUI28上で選択肢を選択した場合に禁止されるべき組合せの選択を禁止する禁則制御を行う。
図4は、UI28上の各設定項目で所望の選択肢を選択した状態でOKボタン42が操作された入力を入力装置20から得たときに、CPU12が実行するUI制御処理用プログラム(禁則制御処理用プログラム)を示すフローチャートである。UI制御処理は、このUI制御処理用プログラムを実行するCPU12により構成されるUI制御装置30が行う。以下、UI制御処理について、図4のフローチャートに従って、図5及び図6を適宜参照しつつ説明する。図5は作業用メモリ43における演算開始前の前処理を示す説明図であり、図6は作業用メモリ43における演算手順を説明する説明図である。図2に示すUI28上に設けられたOKボタン42が操作された際の入力は、UI制御装置30のデータロード部32に与えられる。この信号の入力を契機にUI制御処理は開始される。
まずステップS10では、作業用のメモリ領域の準備をする。本実施形態では、RAM14に作業用メモリ領域を確保し、そのメモリ領域を作業用メモリ43(図5及び図6に示す)として使用する。なお、選択肢が125個以下の場合は、1つの数値につき1バイト分確保する。選択肢が125個を超える場合は、1つの数値につき2バイト分確保する。
ステップS20では、数値列55を作業用メモリ43にコピーする。すなわち、記憶部から数値列55を読み出して、図5に示すように、作業用メモリ43に格納する。なお、選択肢(設定項目)が125個以下の場合は、1つの数値を先に確保した1バイト分に格納し、125個を超える場合は、1つの数値を先に確保した2バイト分に格納する。
ステップS30では、設定状態(選択状態)を示すテーブルを生成する。すべての選択肢に対して論理変数X1,X2,X3,…が割り当てられており、UI28上で選択されている選択肢の設定状態(選択状態)から、各論理変数X1,X2,X3,…について選択・非選択が分かる。選択されている選択肢の論理変数に対応する数値(Index)には「1」(TRUE)、選択されていない(非選択)の選択肢の論理変数に対応する数値(Index)には「−1」(FALSE)をそれぞれ設定して、図5(b)に示すテーブル44を作成する。同図の例では、選択されている選択肢の論理変数X2,X5,…に対応する数値(Index)「4」「7」…に対しては「1」が状態値として設定され、選択されていない(非選択の)選択肢の論理変数X1,X3,X4,…に対応する数値(Ind ex)「3」「5」「6」…に対しては「−1」が状態値として設定されている。なお、論理変数X1 ̄,X2 ̄,X3 ̄,…の状態値は、X1,X2,X3,…の状態値に「−1」を乗ずることによって取得可能である。また、テーブル44において、数値(Index)「0」「1」「2」は選択肢を表す数値ではないので、未使用となる。
ステップS40では、論理変数に割り当てられている数値を、テーブル44から取得した論理変数の状態値に置き換える。すなわち、図5(a)に示す数値列55のうち論理変数が割り当てられた数値(Index)「3,4,5,…」を、テーブル44中の対応する状態値(「1」または「−1」)に置き換えて、図5(c)に示すような数値列56に変換する。
ステップS50では、置き換え後の数値列56をスタック操作で計算する。図6は、スタック操作で行われる計算手順を示すものである。このスタック操作で数値列56を計算することで、禁則情報を抽出する。以下、スタック操作による計算方法を説明する。
置き換えられた数値列56を、作業用メモリ43の同図における先頭位置(同図の左端位置)から右方向に1つずつ数値を参照していき、作業用メモリ43自体をスタックとして活用するスタック操作を行うことにより、数値列56の計算を実施する。
図6(a)は、数値置き換え直後から最初の数値を参照して計算を行うまでの過程を示す。ここで、作業用メモリ43をスタックとして活用してスタック操作による計算を行うためには、数値の参照位置を管理するとともに、スタック終端位置を管理する必要がある。CPU12はメモリ上に所定記憶領域を確保して、スタック終端位置を管理している。また、メモリ上に別の所定記憶領域を確保して、ここで作業用メモリ43上の数値列56中の数値を1つずつ順番に参照する参照位置45(アドレス)を管理している。
参照位置45は作業用メモリ43における図6の左端位置を参照開始位置とし、数値を参照する度に1つずつ右方向へ移動していく。一方、スタック終端46は、作業用メモリ43上において図6の左端位置を初期位置とする。スタック操作は次の規則に従って行われる。参照位置45の数値(参照数値)が論理変数の状態値である「1」(TRUE)又は「−1」(FALSE)の場合は、その参照数値を作業用メモリ43のスタック終端46の位置にプッシュする。数値をプッシュした場合は、スタック終端46を1つ右へ移動する。また、参照位置45の数値(参照数値)が論理記号を表す数値である「2」(論理積)又は「−2」(論理和)の場合は、作業用メモリ43中のスタック領域から2つ数値をポップして、そのポップした数値の個数分(2つ分)スタック終端46を左へ戻す。このような規則に従って行われるスタック操作と、参照位置45およびスタック終端46の位置管理は、UI制御用プログラムに基づいてCPU12が行う。なお、図6における作業用メモリ43における1つの数値が格納される格納エリア(同図における1升分)のアドレスを、便宜上、左端位置から順に第1アドレス、第2アドレス、第3アドレス、…と呼ぶことにする。
まず図6(a)に示すように、最初の参照位置45である1番目の数値を参照する。参照数値が「−1」(FALSE)であるので、その参照数値を作業用メモリ43上のスタック終端46の位置である第1アドレスにプッシュする。プッシュしたことによってスタック終端46は1つ右へ移動する。こうして1個目の数値の参照およびプッシュが終わると、図6(b)に示すように、参照位置45およびスタック終端46が共に2個目の数値が位置する第2アドレスを示す状態になる。
次に図6(b)に示すように、参照位置45にある2個目の数値を参照すると、その参照数値が「1」であるので、その参照数値を作業用メモリ43上のスタック終端46の位置である第2アドレスにプッシュする。プッシュしたことによってスタック終端46は1つ右へ移動する。こうして2個目の数値の参照およびプッシュが終わると、図示はしないが、参照位置45およびスタック終端46が共に3個目の数値の位置である第3アドレスを示す状態になる。
次に図6(c)に示すように、参照位置45にある3個目の数値を参照すると、その参照数値が「2」(論理積)であるので、作業用メモリ43のスタック領域から2つ数値をポップして、スタック終端46をポップした個数分(2つ分)だけ左へ戻す。ここで、参照数値「2」が論理積を意味するので、ポップした2つの数値の論理積を計算する。すなわち、−1(FALSE)2(∧)1(TRUE)を計算する。そして、この計算結果である「−1」をスタック終端46の位置にプッシュする。このプッシュによってスタック終端46は1つ右へシフトし、図6(d)に示すように第2アドレスを示す状態になる。そして、参照位置45は4個目の数値の位置である第4アドレスを示す状態になる。なお、スタック終端46は、数値を次にプッシュすべき位置を指すので、数値をポップするときの位置は、スタック終端46より1つ左側の位置となる。
次に図6(d)に示すように、参照位置45にある4個目の数値を参照すると、その参照数値が「1」(TRUE)であるので、その参照数値を作業用メモリ43上のスタック終端46の位置である第2アドレスにプッシュする。この場合、プッシュした数値が上書きされる。このプッシュによってスタック終端46は1つ右へ移動する。こうして4個目の数値の参照およびプッシュが終わると、図示はしないが、参照位置45が5個目の数値の位置である第5アドレスを示す状態になるとともに、スタック終端46が3個目の数値の位置である第3アドレスを示す状態になる。以下、スタック操作を同様の手順で、終端数値「0」を参照するまで繰り返す。
そして、終端数値「0」を参照した段階ではスタック終端46は、その前回の数値参照時に行われた最後の計算結果がプッシュされた位置より1つ右へ移動した状態にある。例えば「0」を参照したときには、スタック終端46を左へ1つ戻し、作業用メモリ43の先頭位置から演算結果を読み出す際の最終読出し位置をスタック終端46が指しているようにしている。よって、スタック終端46が指す先頭位置の数値が、禁則条件の論理式の演算結果となる。こうして図4に示すステップS50における数値列のスタック操作による計算は行われ、その計算結果が得られることになる。
ステップS60では、本設定が可能であるか否かを判断する。すなわち、計算終了後の作業用メモリ43からスタック終端位置である先頭位置から数値を読み出し、その演算結果の数値が「−1」(FALSE)であるか否かを判断する。ここで、図6で説明したように、作業用メモリ43の先頭位置の値が計算結果であるので、作業用メモリ43の先頭位置の数値をみて、その数値が「−1」(FALSE)であれば、本設定が禁則条件ではないことになり、本設定が設定可能である。一方、この先頭位置の数値(演算結果)が、「1」(TRUE)であれば、本設定が禁則条件であることになり、本設定が設定不可能である。よって、このステップS60では、作業用メモリ43の先頭位置の数値が「−1」(FALSE)であるか否かを判断する。そして、先頭位置の数値が「−1」(FALSE)であれば、ステップS70に進み、先頭位置の数値が「1」(TRUE)であれば、ステップS80に進む。
ステップS70では、本設定を確定する。すなわち、ユーザが選択した各設定項目の選択肢が確定され、例えばプリンタドライバ25がその確定した本設定の印刷設定条件で印刷を行うための処理を開始する。
ステップS80では、選択不可能(設定不可能)の旨を表示する。
図7は、ユーザインターフェイス制御について説明する模式図である。図7(a)に示すように、UI28上でカラーモードが「カラー」、メディアが「マット紙」を選択し、最後に用紙サイズとして「A4」を入力装置20のマウスを操作してポインタ47で選択した後、ポインタ47でOKボタン42を操作する。すると、コンピュータ11内ではCPU12によりUI制御用プログラムが実行されて、先に説明した処理が実行され、論理式の数値列の計算結果が得られる。そして、その計算結果が「−1」であれば、その選択された設定が禁則条件ではないので、その選択された設定が受け付けられる。一方、計算結果が「1」であれば、その選択された設定が禁則条件であるので、図7(b)の下側に示すような本設定が設定不可能である旨のメッセージ48が表示装置19の画面に表示され、その設定は受け付けられない。なお、ステップS10〜S40が状態値適用ステップに相当し、ステップS50が演算ステップに相当し、さらにステップS60,S80が表示反映ステップに相当する。
以上詳述したように本実施形態によれば、以下の効果を得ることができる。
(1)UI28における選択肢の禁則条件を表した論理式を、そのうちの論理変数及び論理演算子の一つひとつを数値に変換してなる数値列として記憶部31に記憶する。そして、OKボタン42が操作された確定入力を得ると、そのとき選択されている各選択肢の状態値を数値列の対応する数値に置き換え、該置き換え後の数値列に対して演算することにより、その演算結果からUI28上で選択された本設定が設定可能か設定不可能かを判定する構成とした。必要なデータ量も比較的少なくしかも比較的簡単な処理でUI制御を行うことができる。また、論理式を表す数値列を計算して禁則情報を得る構成なので、禁則条件の整合も確保しやすい。
(2)作業用メモリ43をスタックとして活用して、スタック操作を行うことによって数値列56の演算を行うので、演算に使用するメモリ容量を少なくすることができる。
(3)UI28上の選択肢をすべて選択した状態でOKボタン42が操作されたことをトリガにしてUI制御処理を開始する構成とした。よって、数値列56には論理変数に対応する数値のすべてに状態値「1」又は「−1」が設定されているので、演算結果は必ず「1」又は「−1」として得られる。よって、演算結果に基づき行われるその後の処理を比較的簡単にすることができる。例えば演算結果がE=−1であれば、本設定が確定されて所定の手順を経て印刷が開始され、演算結果がE=1であれば、本設定が選択不可能な旨のメッセージ48を表示する処理を行えば足りる。
(4)数値列55は、論理式を逆ポーランド記法に並び替えたものを数値で表現されたものであり、数値が逆ポーランド記法の順序で配列されているので、先頭から順番に計算するスタック計算で数値列56の計算を行うことができる。このため、数値列56の計算を比較的簡単な演算処理で済ませることができる。
(第2実施形態)
次に、第2実施形態を図8〜図14に基づいて説明する。選択が禁止された項目の組合せで印刷条件が設定されることを防止する方法として、前記第1実施形態では、選択が禁止された項目の組合せでOKボタン42が操作されたときに選択禁止の旨を通知する方法を採用した。これに対して、この第2実施形態は、選択禁止の選択肢を予め無効化(グレーアウト)することによって、ユーザによる選択を事前に禁止する方法を採用するものである。なお、前記第1実施形態と共通の構成については、同一の符号を使用して説明を省略し、特に異なる構成について詳述する。
図8は、本実施形態におけるUI制御処理用プログラムを示すフローチャートである。CPU12は、入力装置20から選択肢を選択する入力がある度に、このUI制御処理用プログラムを実行する。以下、UI制御処理について、図8のフローチャートに従って、図9〜図12を適宜参照しつつ説明する。図9は作業用メモリ43における演算開始前の前処理を示す説明図であり、図10は論理変数を含む数値式の演算方法を説明する説明図、図11は作業用メモリ43におけるスタック操作による計算方法を説明する説明図である。図14(a)に示すようにUI28上の設定項目の中から選択肢を選択した入力があると、CPU12はUI制御処理を開始する。図2においては、入力装置から選択肢を選択した入力があると、UI制御装置30がUI制御処理を開始し、まずデータロード部32を起動させる。
まずステップS110で作業用のメモリ領域を準備し、ステップS120で数値列55を作業用メモリ43にコピーする。これらステップS110及びS120は、前記第1実施形態におけるステップS10及びS20と同様の処理である。ステップS120の処理の結果、図9(a)に示すように作業用メモリ43に数値列55がコピーされる。
次のステップS130では、設定状態(選択状態)を示すテーブルを生成する。この処理も基本的に前記第1実施形態におけるステップS30と同様であるが、本実施形態では、設定項目の選択肢が選択される度にUI制御処理を開始するので、状態値が「1」(TRUE)又は「−1」(FALSE)に決まっていない未定の論理変数が存在する点で異なる。選択されている選択肢の論理変数に対応する数値(Index)には「1」(TRUE)、選択されていない(非選択)の選択肢の論理変数に対応する数値(Index)には「−1」(FALSE)をそれぞれ設定する。このとき、今から禁則判定を行なおうとしている設定項目の選択肢に対応する数値に関しては、置き換えを行なわない。このような数値の置き換えを行って、図9(b)に示すテーブル49を作成する。同図の例では、選択されている選択肢の論理変数X2,X5,…に対応する数値(Index)「4」「7」…に対しては「1」が状態値として設定され、選択されていない(非選択の)選択肢の論理変数X3,…に対応する数値(Index)「5」…に対しては「−1」が状態値として設定され、未選択の選択肢の論理変数X1,X4に対応する数値「3」「6」に対してはそのまま「3」「6」が設定されている。なお、論理変数X1 ̄,X2 ̄,X3 ̄,…の状態値は、X1,X2,X3,…の状態値に「−1」を乗ずることによって取得可能である。
ステップS140では、論理変数に割り当てられている数値を、テーブル44から取得した論理変数の状態値に置き換える。すなわち、図9(a)に示す数値列55のうち論理変数が割り当てられた数値(Index)「3,4,5,…」を、テーブル44中の対応する状態値に置き換えて、図9(c)に示すような数値列57に変換する。同図に示すように、数値列57には、選択肢が未選択の設定項目に対応する論理変数の数値「3」「−3」「6」「−6」が含まれている。
ステップS150では、置き換え後の数値列57をスタック操作で計算する。このスタック操作による計算方法も、基本的に前記第1実施形態におけるステップS50及び図6で説明した手順で同様に行われる。但し、論理変数の数値を含むので、論理積または論理和の計算をする際にその計算対象になる1組の数値のうち少なくとも一方に論理変数の数値が含まれる場合がある点が前記第1実施形態と異なる。このような論理変数の数値を少なくとも一方に含む式の計算は、図10に示す演算ルールに従って効率かつ正確に行えるようにしている。
以下、論理変数の数値を含む場合の演算ルールについて、図10を用いて説明する。同図(a)〜(f)に示す6つの演算ルールが予めプログラムに組み込まれている。これらの演算ルールはいずれも論理積または論理和の演算則から論理的に導かれるものである。
同図では、演算の対象となる論理変数の数値をA,Bで表し、これらの数値A,Bの論理変数をそれぞれXn,Xmとしている。同図(a)〜(f)に示した各演算式では、数値の後の括弧内に、その数値に対応する論理変数、論理記号、状態値を示している。
図11(a)に示す数値列「A21」で表される演算式は、論理変数Xnと状態値「1」との論理積(∧)、すなわち「Xn∧1」を意味する。Xn∧1の場合、Xnが「1」の場合にその演算結果が「1」、Xnが「−1」の場合にその演算結果が「−1」となるので、Xn∧1=Xnになる。よって、「A21」の場合は、スタック終端位置に「A」をプッシュする。
図11(b)に示す数値列「A2−1」で表される演算式は、論理変数Xnと状態値「−1」との論理積(∧)、すなわち「Xn∧−1」を意味する。Xn∧−1の場合、Xnが「1」と「−1」のどちらの値をとっても、その演算結果は「−1」となるので、Xn∧−1=−1になる。よって、「A2−1」の場合は、スタック終端位置に「−1」をプッシュする。
図11(c)に示す数値列「A−21」で表される演算式は、論理変数Xnと状態値「1」との論理和(∨)、すなわち「Xn∨1」を意味する。Xn∨1の場合、Xnが「1」と「−1」のどちらの値をとっても、その演算結果は「1」となるので、Xn∨1=1になる。よって、「A−21」の場合は、スタック終端位置に「1」をプッシュする。
図11(d)に示す数値列「A−2−1」で表される演算式は、論理変数Xnと状態値「−1」との論理和(∨)、すなわち「Xn∨−1」を意味する。Xn∨−1の場合、Xnが「1」の場合にその演算結果が「1」、Xnが「−1」の場合にその演算結果が「−1」となるので、Xn∨−1=Xnになる。よって、「A−2−1」の場合は、スタック終端位置に「A」をプッシュする。
図11(e)に示す数値列「A2B」で表される演算式は、論理変数Xnと論理変数Xmとの論理積(∧)、すなわち「Xn∧Xm」を意味する。Xn∧Xmの場合、Xn,Xmの両方の状態値が未定なので「1」又は「−1」のどちらの値をとるかは分からない。しかし、例えば用紙サイズの設定項目内で「A4」と「Letter」の両方を同時に選択することはあり得ない。このように、同一設定項目内の2つの選択肢を同時に選択するような、あり得ない組合せの論理積であった場合は、Xn∧XmをFALSE(「−1」)として除外する。よって、「A2B」の場合、A,Bが同一設定項目内の2つの選択肢を表す数値であれば、スタック終端位置に「−1」をプッシュする。
図11(f)に示す数値列「A−2B」で表される演算式は、論理変数Xnと論理変数Xmとの論理和(∨)、すなわち「Xn∨Xm」を意味する。Xn∨Xmの場合、Xn,Xmの両方の状態値が未定なので「1」又は「−1」のどちらの値をとるかは分からない。よって、「A2B」の場合、A,Bが異なる設定項目内の2つの選択肢を表す数値である場合は、スタック終端位置に「A」と「B」をプッシュする。2つの数値をプッシュした場合は、スタック終端46の位置は右へ2つ移動することになる。なお、Xn ̄,Xm ̄のような否定の場合も、同様の規則が適用される。
図11は、スタック操作で行われる計算手順を示すものである。このスタック操作で数値列57を計算することで、禁則情報を抽出する。以下、スタック操作による計算について説明する。
置き換えられた数値列57を同図における左から右方向に参照していき、作業用メモリ43自体をスタックとして活用して、前記第1実施形態の図6と同様のスタック操作を行う。
図11(a)は、数値置き換え直後から最初の数値を参照して計算を行うまでの過程を示す。まず図11(a)に示すように、最初は参照位置45にある1番目の数値を参照する。参照数値が「3」(X1)であるので、その参照数値を作業用メモリ43上のスタック終端46の位置にプッシュする。プッシュしたことによってスタック終端46は1つ右へ移動する。
次に図11(b)に示すように、参照位置45にある2個目の数値を参照すると、その参照数値が「1」であるので、その参照数値を作業用メモリ43上のスタック終端46の位置にプッシュする。プッシュしたことによってスタック終端46は1つ右へ移動する。
次に図11(c)に示すように、参照位置45にある3個目の数値を参照すると、その参照数値が「2」(論理積)であるので、作業用メモリ43のスタック領域から2つ数値をポップして、スタック終端46をポップした個数分(2つ分)だけ左へ戻す。ここで、参照数値「2」が論理積を意味するので、ポップした2つの数値の論理積を計算する。すなわち、3(X1)2(∧)1(TRUE)を計算する。この計算は、図10(a)で示す演算式に該当し、その計算結果は「3」となるので、図11(c)に示すように、スタック終端46の位置に「3」をプッシュする。このプッシュによってスタック終端46は1つ右へシフトする。
次に図11(d)に示すように、参照位置45にある4個目の数値を参照すると、その参照数値が「−3」(X1 ̄)であるので、その参照数値を作業用メモリ43上のスタック終端46の位置にプッシュする。この場合、プッシュした数値が上書きされる。このプッシュによってスタック終端46は1つ右へ移動する。以下、スタック操作を同様の手順で、終端数値「0」を参照するまで繰り返す。
そして、終端数値「0」を参照した段階では、スタック終端46は、その前回の数値参照時に行われた最後の計算結果のプッシュの結果、そのプッシュ位置より1つ右へ移動している。例えば計算完了時には、作業用メモリ43の先頭位置から演算結果を読み出す際の最終読出し位置をスタック終端46の位置で特定できると都合がよい。このため、終端数値「0」を参照したときにはスタック終端46を左へ1つ戻すようにする。よって、作業用メモリ43の先頭位置からスタック終端位置までのメモリ領域に格納された数値列又は数値が、禁則条件の論理式Eの演算結果として取得される。こうして図8に示すステップS150における数値列のスタック操作による計算は行われ、その計算結果が得られることになる。
図12は、計算完了時の作業用メモリ43を示す。終端数値「0」を参照した段階で、作業用メモリ43の中には、先頭位置からスタック終端位置まで選択不可の論理変数(選択肢)を示す数値が格納されている。CPU12は、作業用メモリ43の先頭位置からスタック終端位置までのメモリ領域に格納された演算結果を取得する。同図に示す例では、「3−6」が得られる。計算結果として得られたこの数値列「3−6」は、数値「3」で示される論理変数X1と数値「−6」で示される論理変数X4 ̄は、選択不可の選択肢に対応するものであることから、禁則情報として、E=X1∨X4 ̄が取得される。これは、論理変数X1の選択肢が選択されることを禁止し、かつ、論理変数X4の選択肢が選択されないことを禁止することを意味する。つまり、論理変数X1の選択肢は選択禁止(設定禁止)で、論理変数X4の選択肢が必ず選択される必要があることを意味する。
この計算結果を受けて、図8に示すステップS160では、計算結果に従って選択肢を無効化する。すなわち、図12の例で、論理変数X1の選択肢が含まれる設定項目をN、論理変数X4の選択肢が含まれる設定項目をMとすると、設定項目Nの選択肢のうち論理変数X1の選択肢は無効化(グレーアウト)され、設定項目M中の複数の選択肢のうち論理変数X4の選択肢以外の選択肢が無効化(グレーアウト)される。よって、ユーザは、設定項目Nでは、論理変数X1の選択肢以外の選択肢を選択することになり、設定項目Mでは、論理変数X4の選択肢しか選択できないので、必ずこれを選択することになる。
ここで、例えば論理式E=AB(但しA,Bはそれぞれ数値)という計算結果が得られたとする。この場合、数値Aが正の数値の場合は、数値Aに対応する選択肢を選択不能な状態に無効化(グレーアウト)する。また、数値Aが負の数値の場合は、該当する設定項目において数値Aに対応する選択肢以外の選択肢をすべて選択不能な状態に無効化(グレーアウト又は非表示)する。この場合は、無効化されていない数値Aに対応する選択肢しか設定できないことになる。他方の数値Bについても同様で、その値の正負に応じて定まる所定の選択肢を無効化(グレーアウト)する。
また、数値列の計算結果において、矛盾する論理式が出ないように、CPU12がUI制御処理上で参照するデータがメモリには記憶されている。例えば、論理式に同一設定項目内の選択肢は、同時に設定不可である条件を入れて演算を行うので、負の数値(否定の論理変数)が複数個発生することが回避可能となっている。なお、ステップS110〜S140が状態値適用ステップに相当し、ステップS150が演算ステップに相当し、さらにステップS160が表示反映ステップに相当する。
図14は、ユーザインターフェイス制御について説明する模式図である。図14に示すUI28は、UI28のうち一部の設定画面であり、図示しない詳細設定ボタンやプロパティボタン等を操作することによって、詳細設定画面などが表示されるようになっている。詳細設定画面に用意された各種の設定項目では規定の選択肢がデフォルトで選択されている。図14(a)に示すように、例えばユーザが、UI28上で設定項目「カラーモード」とメディアの両方が未選択の状態で、入力装置20(マウス)を操作して用紙サイズ中の「A4」にポインタ47を移動させてこれを選択したとする。すると、コンピュータ11内ではCPU12によりUI制御用プログラムが実行され、前述の処理が実行され、論理式の数値列の計算結果が得られる。なお、図14(a)におけるカラーモードがデフォルトのままでユーザによる選択がなされていない状態では、デフォルトでカラーが選択されていても、CPU12は未選択とみなすものとして説明する。
この場合、例えば論理変数X1の選択肢が、設定項目「メディア」中の「OHPシート」であり、論理変数X4の選択肢が、設定項目「カラーモード」の「カラー」であるとする。計算の結果、図12で示した禁則情報、E=X1∨X4 ̄が取得される。すると、図14(b)に示すように、論理変数X1の選択肢である「OHPシート」が無効化され、かつ論理変数X4の選択肢である「カラー」以外の設定項目、つまり「モノクロ」が無効化される。
ここで、設定項目には優先順位があり、優先順位が高いか同じ設定項目については状態値を設定するが、優先順位が低い設定項目には状態値を設定せず論理変数の数値をそのまま設定して、テーブル44を作成する。図12の例は、例えば設定項目「カラーモード」が設定項目「用紙サイズ」よりも優先順位が低い例であり、設定項目「カラーモード」の選択肢を表す論理変数に割り当てられた数値は状態値には置き換えない。よって、数値列の演算結果として得られる数値列の中に設定項目「カラーモード」中の選択肢に対応する数値が含まれることになって、既に「カラー」が選択状態にあった設定項目「カラーモード」において「モノクロ」が無効化される。なお、同図では無効化された選択肢には括弧を付している。
また、禁則条件の論理式は、設定画面だけでなく詳細設定画面を含むUI28のすべての選択肢に割り当てられた論理変数を含んでいる。このため、設定画面で選択肢を選択したときに実施された演算で取得された禁則情報には、設定画面だけでなく詳細設定画面の選択肢についての無効化すべき選択肢の情報が含まれている。よって、設定画面で詳細設定ボタンを操作して詳細設定画面を表示させたときには、既に演算された演算結果を用いることから、当初から所定の選択肢が無効化(グレーアウト)された状態で表示できる。つまり、詳細設定画面を表示させたときに、選択肢の無効化の反映が遅れることを回避できる。
以上詳述したように本実施形態によれば、前記第1実施形態と共通の部分については共通の効果が得られるうえ、以下の効果を得ることができる。
(5)設定途中段階で、ある選択肢を選択すればその選択した入力をトリガとしてUI制御を開始する構成とした。よって、設定途中段階で選択不可能な選択肢が予め無効化(グレーアウト)されるので、選択不可能な選択肢の選択を未然に防止することができる。例えば前記第1実施形態では、設定項目毎の選択肢を全て選択した後にOKボタン42が操作されるとUI制御を開始する構成であったので、設定不可能な旨のメッセージ48が表示された際は設定し直す必要があったが、本実施形態では、この種の設定のやり直し操作をしなくて済む。また、前記第1実施形態の方法では、設定をやり直す場合も選択禁止の選択肢が分からないので、試行錯誤で設定しなければならず、何度もやり直す場合も起こり得る。これに対し、本実施形態によれば、やり直しそのものを回避できるので、一度で正しく設定することができる。
(6)UI制御は、複数画面からなるUI28のある一画面上でユーザが選択操作しているときに、他の画面に設定すべき設定項目に係る禁則に関する演算がなされるので、ユーザが画面を切り換えたときには既に演算済みの演算結果を表示に反映すればよい。よって、他の画面に切り換えた当初から選択肢が無効化(グレーアウト)された状態で表示できる。例えば、画面を切り換えてから遅れて選択肢が無効化される応答遅れを回避できる。
(7)数値列56の計算結果は、簡単な論理式を表す短い数値列として得られるので、その解析に時間をさほど要せず、数値列の計算時間と合わせても、比較的短時間で処理を終えることができる。
(8)論理変数を含む計算に図10に示す所定のルールを設けたので、論理変数を含む論理演算を比較的スムーズにかつ正確に行うことができる。
(第3実施形態)
次に第3実施形態について説明する。本実施形態は、前記第1及び第2実施形態において採用する数値列の変形例である。禁則条件を示す論理式に対して制約を設けることによって、数値列のフォーマットの簡略化を行い、作業用メモリのサイズ削減と計算効率の向上を実現する例である。
図13は、数値列の簡略化を説明する説明図である。同図(a)は数値列を簡略化するために本実施形態で採用する論理式の表記形式を示す。一つの禁則条件を表す論理式は種々の表記形式で表現できるが、本実施形態では、禁則条件を示す論理式を、図13(a)に示す表記形式に限定する。すなわち、2つの論理変数の論理積を示す(Xn∧Xm)を論理和で繋いだ表記形式で論理式を表現する。こうすると、図13(b)の上段に示すように、作業用メモリ43に逆ポーランド記法の順番で配列された数値列において、論理演算子に割り当てられた数値「2」「−2」の位置が常に固定される。この場合、選択肢の数や禁則条件を変更した場合であっても、論理式の表記形式を図13(a)に示す表記形式に限定することで、数値と論理記号の現れる順番は常に固定される。この場合、1つの数値や論理記号を格納するのに必要なバイト数(例えば1バイト)に、論理式中の論理変数の個数と論理記号の個数と終端用数値などその他必要な数値の個数の総計を乗じた分のメモリ容量が必要になる。図13(a)の論理式を数値列に置き換えると、図13(b)の上段の作業用メモリ43には、論理記号を表す数値「2」「−2」が一定の規則で固定の位置に現れる。すなわち、作業用メモリ43の先頭位置から3番目、6番目、7番目、10番目、11番目、…に現れる。つまり、数値「2」が(4p−1)番目(但し、p=1,2,…)に規則的に現れ、数値「−2」が(4p+2)番目に規則的に現れる。
よって、論理記号は特に数値として格納しなくても、上記の規則から何番目の数値を参照後に論理積の計算を行い、何番目の数値を参照後に論理和の計算を行うかが分かる。これにより、論理記号を表す数値「2」「−2」は削除可能であり、それらの削除によって図13(b)の下段に示す作業用メモリ43Aのように、数値列自体を縮小でき、作業用メモリ43Aのメモリ領域を数値「2」「−2」の削除分だけ削減できる。数値列の演算では、最初に数値を2回プッシュすると、次は数値を2つポップして論理積の計算を行う。その後、数値を2回プッシュする度に数値を2つポップして論理積を行いその結果をポップした後、引き続き数値を2つポップして論理和の計算を行うという規則を決めておくことで行うことができる。もちろん、論理式の表現形式を制限することによって、同じ禁則条件を示す論理式自体が長くなることがあるため、常に数値列の縮小と作業用メモリの削減が図られるとは限らないので、論理式によって作業用メモリ43を容量を小さくできる方を選択する。
図13(b)に示す作業用メモリ43A上で計算を行う場合、最初の2つの数値に関しては、(X1X2∧)を表現、残りの数値に関しては、2つセットで、(X1 ̄X3∧∨)を表現している前提とする。この場合、参照する数値が最初の2つかどうかを判断する方法が必要になる。2つの数値をポップして計算結果をプッシュした後、スタック終端位置が、作業用メモリ43の先頭位置を指している場合は、最初の2つの数値と判断する。また、(X1 ̄X3∧∨)形式の演算の場合は、2つの数値をポップして計算結果をプッシュした後の論理和計算のために、2回ポップする必要がある。この時、2回目のポップが失敗した場合は、最初の2つの数値と判断する。この場合、作業用メモリ43上の数値の参照位置を示す参照位置45のアドレス番号が「−1」となる場合に、ポップが失敗するようにしておけばよい。
次に、(X1 ̄X3∧∨)形式の計算ロジックの最適化の方法を以下に示す。(X1 ̄X3∧∨)の実際の計算は、スタックからポップした数値Xn(1,−1,数値)との組み合わせで実施される。実際の論理式を、例えば、Xn∧(X1 ̄∧X3)とする。よって、スタックからポップされた数値によって、以下のように計算の省略が可能である。
Xn=1(TRUE)の場合、(X1 ̄∧X3)の計算を行なわず、「1」(TRUE)をプッシュする。Xn=−1(FALSE)の場合、(X1 ̄∧X3)の計算結果をプッシュする。この場合、論理和の計算は省略する。
Xn=数値の場合、(X1∧X3)の計算結果によって、以下のように処理を切り替える。
(X1 ̄∧X3)の計算結果=1(TRUE)の場合、「1」(TRUE)をプッシュする。
(X1 ̄∧X3)の計算結果=−1(FALSE)の場合、Xn(数値)をプッシュする。
(X1 ̄∧X3)の計算結果=数値の場合、Xnと計算結果の数値をプッシュする。
この第3実施形態によれば、以下の効果を得ることができる。
(9)論理記号の数値「2」「−2」を省略しても、逆ポーランド記法に並び替えた際の論理記号の位置の順番が固定されるような形式の表現方法で論理式を表現し、このような論理式を逆ポーランド記法に並び替えたものを数値列化している。よって、論理記号の数値「2」「−2」が先頭から数えて同じ順番の位置に現れる。よって、論理記号の数値を省略しても、その決まった位置に論理記号があるものとしてその論理記号から定まる演算を行うプログラムを組めば、参照した数値の個数が所定数に達したら、次に省略された論理記号の演算を行うようにする。このような規則化が可能なので、論理記号が省略されていても数値列の計算は行える。単純な禁則条件の場合は、本例の表記形式の採用により論理記号を削除して、比較的小さなデータ・メモリ量にすることが可能である。よって、比較的短い時間で計算することが可能である。
また、論理記号の省略された位置が固定であるため、例えば選択肢の増加等の変更や、禁則条件の変更を行っても、その変更後の禁則条件を表す論理式においても論理記号の現れる位置は規則的に決まってくるので、論理記号の数値を省略した数値列の演算を行う演算規則に基づく演算プログラムは、論理式の変更の前後で共通に使用することができる。つまり、UIを制御するソフトウェアにおいて、制御ロジックを変更することなく、任意の禁則条件を再現可能になる。また、論理記号を省略したので、作業用メモリ43が使用するメモリ領域を少なくすることができる。
前記実施形態に限定されず、以下の構成で実施することもできる。
(変形例1)前記実施形態では、数値列のスタック計算を、作業用メモリ43上でスタック操作を行うことで作業用メモリ43を活用して行う構成としたが、これに限定されない。スタック用のメモリ領域を別途確保し、作業用メモリから読み出した数値をスタック用メモリに書き込んでプッシュし、スタック用メモリから数値を読み出してポップする構成を採用することもできる。この構成によれば、スタック用メモリが必要になるとともに数値データの読出し・書込み回数が増える処理にはなるものの、数値列の演算で禁則情報を得る方法なので、複雑な演算が伴うことは同様に回避できる。
(変形例2)前記第3実施形態では、逆ポーランド記法で表現した際に論理記号が位置する順番が常に固定されるような形式で論理式を作成することにより、論理記号を省略したが、これに限定されない。例えば論理記号の数値を省略するが、禁則条件を変更して論理式が変更される度に、参照数値が所定個数になる度に論理式の演算をするその所定個数の値を変更したプログラムを作成し直しても良い。
(変形例3)前記実施形態におけるテーブル44,49のフォーマットに限定されない。例えば状態値置き換え処理の高速化のために、正の数値用と負の数値用に2つテーブルを用意する方法や、2の補数でIndex参照する方法等を採用することもできる。
(変形例4)前記実施形態では、禁則条件を表す論理式を使用したが、禁則の反対で許可される条件を表す論理式を採用してもよい。この場合、数値列の計算結果に基づき選択可能状態に有効化されるべき選択肢を求めることにより、それ以外の選択肢を無効化する構成とする。禁則条件か許可条件かどちらを選択するかは、論理式が簡単で済む方を選択するのが好ましく、選択禁止の条件より選択許可の条件の方が少ない場合は、許可条件の論理式を採用することが好ましい。
(変形例5)前記実施形態では、数値列のスタック計算を、作業用メモリ上でスタック操作を行うことで作業用メモリ上の数値の参照が終わったメモリ領域をスタック領域として活用する構成としたが、これに限定されない。スタック専用のメモリ領域を別途確保し、作業用メモリから読み出した数値をスタック専用のメモリ領域にプッシュしたり、スタック専用メモリ領域から数値をポップしたりする構成を採用できる。この構成によれば、スタック専用メモリ領域を別途確保する必要があり、しかも数値データの読出し・書込み回数が増える処理にはなるものの、数値列の演算で済むので、論理式の解析処理など複雑な演算が伴うことは同様に回避できる。
(変形例6)前記実施形態では、UI28上に用意されたすべての選択肢を論理変数にして論理式を作成したが、一部の選択肢のみを論理変数に表現した論理式を採用し数値列計算を行う構成とすることもできる。例えば他の設定項目での選択結果によらず、常に全選択肢が許可される設定項目については、敢えて計算して特定するまでもないので、この種の設定項目の選択肢については予め論理式から除外してもよい。つまり、UI28上に用意された全設定項目の全選択肢について論理変数を定義する必要はなく、一部の設定項目の選択肢についてだけ論理変数を定義して論理式を作成するようにすればよい。
(変形例7)前記実施形態では、論理式を表現した数値列の演算を含むUI制御処理をCPUにプログラムを実行させるソフトウェアにより実現したが、UI制御処理の少なくとも一部の処理をハードウェアにより実現することもできる。例えばASIC等のカスタマICに禁則条件を示す論理式及びその演算プログラム用の回路を形成してUI制御処理をハードウェア上の演算で行ってもよい。UI制御処理がパーソナルコンピュータ以外の例えばプリンタや複合機等の電子機器で行われる構成であれば、電子回路として論理式(数値列)を含む数値列演算回路を持つことも可能である。
(変形例8)ユーザインターフェイス制御方法及び制御装置をパーソナルコンピュータ等のコンピュータにおいて実現したが、前述のようにプリンタや複合機等の電子機器において適用することもできる。この場合、電子機器に内蔵されたCPUにUI制御用プログラムを実行させる構成を採用してもよい。また、プリンタや複合機以外の電子機器に適用することもでき、例えばプロジェクタ、デジタルカメラ、デジタルビデオカメラ、携帯電話機などに適用することもできる。
前記実施形態及び変形例から把握される技術的思想を以下に記載する。
(1)請求項11に記載のユーザインターフェイス制御装置において、前記演算手段は、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わった作業用メモリ上のメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするユーザインターフェイス制御装置。
(2)請求項12に記載のユーザインターフェイス用プログラムにおいて、前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わった作業用メモリ上のメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするプログラム。
第1実施形態における印刷システムのハードウェア構成を示すブロック図。 印刷システムの概略構成を示すブロック図。 (a)〜(d)メーカー側のコンピュータで予め行われる処理を説明する流れ図。 UI制御処理を示すフローチャート。 (a)〜(c)作業用メモリにおける演算開始前の前処理を示す説明図。 (a)〜(d)作業用メモリにおける演算手順を説明する説明図。 (a),(b)ユーザインターフェイス制御について説明するためのUIの模式図。 第2実施形態におけるUI制御処理を示すフローチャート。 (a)〜(c)作業用メモリにおける演算開始前の前処理を示す説明図。 (a)〜(f)論理変数を含む数値式の演算方法を説明する説明図。 (a)〜(d)作業用メモリにおけるスタック操作による計算方法を説明する説明図。 計算完了後の作業用メモリを示す図。 (a),(b)数値列簡略化の構成を説明するための説明図。 (a),(b)ユーザインターフェイス制御について説明するためのUIの模式図。 従来技術におけるフラグテーブルを示す図。
符号の説明
10…印刷システム、11…コンピュータ、12…状態値適用手段、演算手段及び表示反映手段を構成するCPU、13…ROM、14…RAM、15…HDD、16…ビデオ回路、19…表示手段としての表示装置、20…入力手段としての入力装置、21…プリンタ、23…アプリケーション部、24…ビデオドライバ、25…プリンタドライバ、30…表示反映手段としてのUI制御装置、31…記憶手段としての記憶部、32…データロード部、33…状態値適用手段を構成するテーブル作成部、34…演算手段としての演算部、35…UI制御部、38…印刷部、43,43A…作業用メモリ、44…テーブル、45…参照位置、46…スタック終端、52…論理式、55…数値列、56…数値列、57…数値列。

Claims (12)

  1. 複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、
    前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶手段に記憶しておき、
    前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、
    前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、
    前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップと
    を備えたことを特徴とするユーザインターフェイス制御方法。
  2. 請求項1に記載のユーザインターフェイス制御方法において、
    前記条件は、選択が禁止されるべき選択肢の組合せの条件を表した禁則条件であることを特徴とするユーザインターフェイス制御方法。
  3. 請求項1又は請求項2に記載のユーザインターフェイス制御方法において、
    前記論理式は、前記選択肢が選ばれている場合に真になり選ばれていない場合に偽になる論理変数をX1,…,Xn(nは2以上の整数)を全設定項目の全選択肢に対して定義するとともに、前記論理変数X1,…,Xnの否定であって、選択肢が選ばれていない場合に真になり選ばれている場合に偽になる論理変数X1 ̄,…,Xn ̄を定義し、前記論理変数を論理和・論理積により組み合せることによって、前記条件を表現した論理式であることを特徴とするユーザインターフェイス制御方法。
  4. 請求項1乃至請求項3のいずれか一項に記載のユーザインターフェイス制御方法において、
    前記数値列は、逆ポーランド記法の順序で数値が並んだものであることを特徴とするユーザインターフェイス制御方法。
  5. 請求項4に記載のユーザインターフェイス制御方法において、
    前記演算ステップでは、前記数値列の演算をスタック計算で行うことを特徴とするユーザインターフェイス制御方法。
  6. 請求項5に記載のユーザインターフェイス制御方法において、
    前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするユーザインターフェイス制御方法。
  7. 請求項1乃至請求項6のいずれか一項に記載のユーザインターフェイス制御方法において、
    前記入力手段からの制御の開始の契機となる入力は、前記各設定項目において選択されている前記選択肢を確定するための確定入力であることを特徴とするユーザインターフェイス制御方法。
  8. 請求項1乃至請求項7のいずれか一項に記載のユーザインターフェイス制御方法において、
    前記入力手段からの制御の開始の契機となる入力は、前記設定項目において前記選択肢を選択する選択入力であることを特徴とするユーザインターフェイス制御方法。
  9. 請求項1乃至請求項8のいずれか一項に記載のユーザインターフェイス制御方法において、
    前記数値列は、論理変数に割り当てられた数値の配列により構成され、論理演算子を表す数値は含まないことを特徴とするユーザインターフェイス制御方法。
  10. 請求項9に記載のユーザインターフェイス制御方法において、
    前記数値列は、逆ポーランド記法で表現した際に論理演算子が位置する順番が常に固定される表記形式で表された論理式を逆ポーランド記法で表現した順番で数値が配列されてなり、前記演算ステップでは、前記数値列の数値を順番に参照して予め定められた所定個数分の数値のスタック操作を終える度に、前記スタック領域から数値をポップするとともに前記所定個数分の数値参照後に実施するように予め設定された論理演算子による演算を、前記ポップした数値に対して施すことを特徴とするユーザインターフェイス制御方法。
  11. 複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御装置であって、
    前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶する記憶手段と、
    前記入力手段から制御の開始の契機となる入力を得ると、前記ユーザインターフェイスにおける前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用手段と、
    前記状態値が適用された前記数値列に基づき演算を行う演算手段と、
    前記演算手段の演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映手段と
    を備えたことを特徴とするユーザインターフェイス制御装置。
  12. 複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御する処理をコンピュータが実行するためのユーザインターフェイス制御用プログラムであって、
    前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列が記憶手段に記憶されており、
    コンピュータが、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、
    前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、
    前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップと
    を実行するためのプログラム。
JP2006128568A 2006-05-02 2006-05-02 ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム Pending JP2007299324A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006128568A JP2007299324A (ja) 2006-05-02 2006-05-02 ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006128568A JP2007299324A (ja) 2006-05-02 2006-05-02 ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2007299324A true JP2007299324A (ja) 2007-11-15

Family

ID=38768746

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006128568A Pending JP2007299324A (ja) 2006-05-02 2006-05-02 ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム

Country Status (1)

Country Link
JP (1) JP2007299324A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016066346A (ja) * 2014-09-17 2016-04-28 株式会社リコー 禁則処理装置、禁則処理方法およびプログラム
JP2016154049A (ja) * 2008-09-29 2016-08-25 フィッシャー−ローズマウント システムズ,インコーポレイテッド プロセス制御を管理する方法及びシステム
US9912825B2 (en) 2014-09-17 2018-03-06 Ricoh Company, Ltd. Incompatible setting processing apparatus, incompatible setting processing method, and computer program product

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016154049A (ja) * 2008-09-29 2016-08-25 フィッシャー−ローズマウント システムズ,インコーポレイテッド プロセス制御を管理する方法及びシステム
JP2016066346A (ja) * 2014-09-17 2016-04-28 株式会社リコー 禁則処理装置、禁則処理方法およびプログラム
US9912825B2 (en) 2014-09-17 2018-03-06 Ricoh Company, Ltd. Incompatible setting processing apparatus, incompatible setting processing method, and computer program product

Similar Documents

Publication Publication Date Title
JP4321572B2 (ja) 画像形成装置
JP4645246B2 (ja) アイコン制御プログラム、コンピュータ、方法
US20030147097A1 (en) Printing apparatus, printing method, image processing apparatus, image processing method, storage medium, and program
US7607108B2 (en) Data processing setting apparatus, data processing setting method, data processing setting program, and computer-readable recording medium recording the program
US20190121587A1 (en) Information processing apparatus, information processing method, and storage medium
JP4306367B2 (ja) 画像処理装置
US8947695B2 (en) Information processing device, information processing method and computer-readable record medium
US7145688B2 (en) Storage medium holding program and information processing apparatus and information processing method
JP2007299325A (ja) ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム
US8867066B2 (en) Print processing apparatus and control method
JP2007299324A (ja) ユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラム
JP7558753B2 (ja) 情報処理装置、制御方法およびプログラム
JP4675861B2 (ja) 印刷装置、印刷装置の制御用コンピュータのプログラム、及び印刷装置の制御方法
JP4200384B2 (ja) 印刷制御装置、印刷制御方法、印刷制御プログラム、印刷制御プログラムを記録した媒体、画像処理装置、画像処理コンピュータ
US20060075362A1 (en) Image processing apparatus, method, and recording medium on which program is recorded for displaying thumbnail/preview image
US20060204144A1 (en) Image processing apparatus
JP2010105388A (ja) 画像形成装置
JP3509549B2 (ja) プリンタ制御装置およびその方法並びに記録媒体
US11606468B2 (en) Image forming apparatus, image forming method for printing images in an order different from an order of reading images
JP2007114990A (ja) 印刷制御プログラム
JP6992853B2 (ja) クライアント端末
JP2006163774A (ja) 複数画像処理システム
US20240345780A1 (en) Information processing apparatus and method of controlling information processing apparatus
JP6610897B2 (ja) 画像形成装置及びプログラム
JP2004192537A (ja) ドキュメント出力装置、ドキュメント出力プログラム