(57)【要約】【課題】簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供する。【解決手段】ユーザインターフェイス制御開始の入力があると、禁則条件の論理式を表す数値列を読み込んで作業用メモリにコピーし（Ｓ１０，Ｓ２０）、そのときの設定されている設定項目毎の選択肢の選択状態（選択／非選択）を示すテーブルを生成し（Ｓ３０）、該テーブルを参照して各選択肢の状態値を数値列の対応する数値と置き換える（Ｓ４０）。そして状態値適用後の数値列をスタック操作で計算し、その計算結果から本設定可能か否かを判断し、禁則条件が「１」（TRUE）であれば、その設定された選択肢の組合せは禁止されていて設定不可能である旨を表示する（Ｓ８０）。【選択図】図４
2007299324.tif 000002
【特許請求の範囲】
【請求項１】
複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、
前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶手段に記憶しておき、
前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、
前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、
前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップと
を備えたことを特徴とするユーザインターフェイス制御方法。
【請求項２】
請求項１に記載のユーザインターフェイス制御方法において、
前記条件は、選択が禁止されるべき選択肢の組合せの条件を表した禁則条件であることを特徴とするユーザインターフェイス制御方法。
【請求項３】
請求項１又は請求項２に記載のユーザインターフェイス制御方法において、
前記論理式は、前記選択肢が選ばれている場合に真になり選ばれていない場合に偽になる論理変数をＸ１，…，Ｘｎ（ｎは２以上の整数）を全設定項目の全選択肢に対して定義するとともに、前記論理変数Ｘ１，…，Ｘｎの否定であって、選択肢が選ばれていない場合に真になり選ばれている場合に偽になる論理変数Ｘ１￣，…，Ｘｎ￣を定義し、前記論理変数を論理和・論理積により組み合せることによって、前記条件を表現した論理式であることを特徴とするユーザインターフェイス制御方法。
【請求項４】
請求項１乃至請求項３のいずれか一項に記載のユーザインターフェイス制御方法において、
前記数値列は、逆ポーランド記法の順序で数値が並んだものであることを特徴とするユーザインターフェイス制御方法。
【請求項５】
請求項４に記載のユーザインターフェイス制御方法において、
前記演算ステップでは、前記数値列の演算をスタック計算で行うことを特徴とするユーザインターフェイス制御方法。
【請求項６】
請求項５に記載のユーザインターフェイス制御方法において、
前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするユーザインターフェイス制御方法。
【請求項７】
請求項１乃至請求項６のいずれか一項に記載のユーザインターフェイス制御方法において、
前記入力手段からの制御の開始の契機となる入力は、前記各設定項目において選択されている前記選択肢を確定するための確定入力であることを特徴とするユーザインターフェイス制御方法。
【請求項８】
請求項１乃至請求項７のいずれか一項に記載のユーザインターフェイス制御方法において、
前記入力手段からの制御の開始の契機となる入力は、前記設定項目において前記選択肢を選択する選択入力であることを特徴とするユーザインターフェイス制御方法。
【請求項９】
請求項１乃至請求項８のいずれか一項に記載のユーザインターフェイス制御方法において、
前記数値列は、論理変数に割り当てられた数値の配列により構成され、論理演算子を表す数値は含まないことを特徴とするユーザインターフェイス制御方法。
【請求項１０】
請求項９に記載のユーザインターフェイス制御方法において、
前記数値列は、逆ポーランド記法で表現した際に論理演算子が位置する順番が常に固定される表記形式で表された論理式を逆ポーランド記法で表現した順番で数値が配列されてなり、前記演算ステップでは、前記数値列の数値を順番に参照して予め定められた所定個数分の数値のスタック操作を終える度に、前記スタック領域から数値をポップするとともに前記所定個数分の数値参照後に実施するように予め設定された論理演算子による演算を、前記ポップした数値に対して施すことを特徴とするユーザインターフェイス制御方法。
【請求項１１】
複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御装置であって、
前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶する記憶手段と、
前記入力手段から制御の開始の契機となる入力を得ると、前記ユーザインターフェイスにおける前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用手段と、
前記状態値が適用された前記数値列に基づき演算を行う演算手段と、
前記演算手段の演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映手段と
を備えたことを特徴とするユーザインターフェイス制御装置。
【請求項１２】
複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御する処理をコンピュータが実行するためのユーザインターフェイス制御用プログラムであって、
前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列が記憶手段に記憶されており、
コンピュータが、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、
前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、
前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップと
を実行するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば印刷条件を設定する際に表示装置に表示されて複数の設定項目のうちある選択肢が選択されている状態では所定の選択肢の選択が禁止されるユーザインターフェイス及びプログラムに関する。
【背景技術】
【０００２】
例えばプリンタによる印刷は、印刷サイズや用紙種などの印刷設定情報を設定して行われる。例えば特許文献１には、スタンドアロン型のプリンタにおいて、プリンタの表示画面に表示された入力画面上で入力装置を用いて印刷設定情報を選択できるプリンタが開示されている。また、特許文献２及び特許文献３には、ホストコンピュータの表示装置の画面に、ユーザが入力装置を用いて印刷設定情報を設定可能な設定画面を表示するプリンタドライバが開示されている。特許文献２の技術では、用紙が不足した用紙トレイが設定画面上で選択できないような禁則処理が行われる構成となっていた。
【０００３】
また、特許文献１〜３に開示のとおり、設定画面（ユーザインターフェイス）では、用紙サイズ、用紙種、印刷速度など複数の設定項目毎にそれぞれ複数の選択肢が用意され、ユーザは設定項目毎に所望の選択肢を選択することにより印刷設定情報を設定できるようになっていた。
【０００４】
ところで、この種のユーザインターフェイスで選択可能な設定項目には、前述の用紙サイズ、用紙の種類などの他、カラーモード（カラー／モノクロ）、印刷品質（テキスト／ドラフト）、双方向印刷（オン／オフ）、縁なし印刷（オン／オフ）など、多岐に渡って種々の設定項目を選択できる。しかし、ある設定項目の選択肢Ａ１と他の設定項目の選択肢Ｂ１との組合せが、適切な印刷を行ううえで適さない場合があり、このような適さない選択肢については、その選択肢が選択できないように非表示またはグレーアウトされるなど無効化されるようになっている。例えば設定項目「印刷品質」で、印刷品質より印刷速度を優先する「ドラフト」が選択されているときは、設定項目「双方向印刷」では、キャリッジの往復走査のうち一方向のみで印刷が行われる印刷速度の遅い「単方向印刷」は選択できないように、双方向印刷「オフ」の選択肢が無効化される。このように不適切な選択肢の組合せを回避できるようにユーザインターフェイスを制御する場合は、禁則条件から、各選択肢を有効化すべきか無効化すべきかを判断している。設定不可能な組み合わせになっていた場合は、ユーザが選択できないように、例えばリストボックス上の設定不可能な選択肢を非表示またはグレーアウトにしている。
【０００５】
従来、禁則条件から各選択肢の有効化／無効化を判断する方法としては、例えば図１５に示すような全設定項目の全選択肢の数ｎと同数のｎビットのビットフラグ列、例えば「0000100100…00」のようなビットフラグ列を、設定可能もしくは設定不可能な組合せの数に応じて用意し、このビットフラグを基に禁則情報を取得していた。例えば図１５に示す禁則条件を表すテーブル７１においては、フチ無し印刷を禁止するビットフラグや、ロール紙印刷を禁止するビットフラグなど、禁止条件毎にビットフラグが設定されていた。例えば組合せが禁止されている複数の選択肢Ａ１，Ｂ１に対応するビットが「１」となるようなビットフラグ列が、組合せの数だけ用意されて、禁則情報として提供している。
【０００６】
また、他の従来方法では、ＵＩ上の選択可能な全ての選択肢を論理変数として扱い、各論理変数が{ 選択(TRUE), 非選択(FALSE) }のどちらかの状態を取るとする。それらの論理変数を組み合わせた論理式によって設定不可能である禁則条件を表現する。
Ｅ = (( X1∧X2 ) ∨ ( X1￣∧X3 )) ∨ (( X2∧X4￣ ) ∨ ( ( X1∧X3 )∧X5 )) …
ソフトウェアでは、上記の様な論理式を読み込んで解析して、設定不可能／可能である情報を示すデータの形式に変換する。その後、ＵＩの禁則処理に使用している。また、論理式からの具体的な変換方法は、各ソフトウェアの実装方法に依存していた。
【特許文献１】特開２００１−３１２４９１号公報
【特許文献２】特開２００４−５４５５号公報
【特許文献３】特開２００５−１６５７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、２つの従来方法のうち前者の問題点としては、次の点が挙げられる。各設定項目で、自由に禁則条件を定義することができるため、全体の禁則条件として、矛盾しているデータを作成することが可能となり、結果的に禁則条件の整合性を保障できない。また、複雑な禁則条件を示そうとした場合、大量のビットフラッグが必要となり、ＵＩ側では、それらのビットフラッグを解析・実行する大量のロジックが必要となる。
【０００８】
また、２つの従来方法のうち後者の問題点としては、次の点が挙げられる。全ての禁則条件を含んだ論理式・禁則データを解析して、何らかの設定不可能／ 可能である情報を示すデータに変換する必要があるため、前者の方法と比較して多くの計算時間が必要となる。また、変換された算術演算データは、前者の従来方法と比較して多くのメモリ容量が必要になるという問題があった。
【０００９】
なお、特許文献２においても、用紙トレイの用紙不足やエラーなどを回避する禁則処理が行われていたが、これは選択肢の組合せの禁則処理ではなく、用紙不足の用紙トレイやエラーを検出して、その検出した選択肢を非表示／無効化すれば足りるので、そもそもユーザインターフェイスの制御は複雑なものとはならず、課題を異にしている。
【００１０】
本発明は上記問題点に鑑みてなされたものであって、その目的は、簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶手段に記憶しておき、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップとを備えたことを要旨とする。
【００１２】
これによれば、入力手段から制御の開始の契機となる入力を得ると、状態値適用ステップにおいて、記憶手段から数値列を読み出すとともに、ユーザインターフェイス上の各設定項目における各選択肢の選択状態を示す状態値を数値列中の対応する数値と置き換える。そして、演算ステップでは、状態値適用後の数値列に基づき演算が行われる。表示反映ステップでは、その演算結果が選択禁止の選択肢が存在する旨の禁則情報であった場合は、その禁則情報が表示手段の表示に反映される。制御ロジックは数値列の計算ロジックなので比較的単純なロジックで済み、しかも選択禁止の禁則条件又は選択許可の許可条件を表した論理式の計算なので、禁則条件等の整合もとりやすい。よって、簡単な処理によりユーザインターフェイスを制御でき、選択禁止又は選択許可の条件の整合も確保しやすいユーザインターフェイス制御方法、ユーザインターフェイス制御装置及びプログラムを提供する。
【００１３】
また、本発明のユーザインターフェイス制御方法では、前記条件は、選択が禁止されるべき選択肢の組合せの条件を表した禁則条件であることが好ましい。
これによれば、選択が許可されるべき組合せの数よりも禁止されるべき選択肢の組合せの数の方が多い場合は、禁則条件なので、論理式を簡単に済ませることができる。よって、数値列が簡単になることから、演算ステップにおける数値列の演算の負担を軽減できるとともに、演算時に使用するメモリ領域を少なく済ませられる。
【００１４】
また、本発明のユーザインターフェイス制御方法では、前記論理式は、前記選択肢が選ばれている場合に真になり選ばれていない場合に偽になる論理変数をＸ１，…，Ｘｎ（ｎは２以上の整数）を全設定項目の全選択肢に対して定義するとともに、前記論理変数Ｘ１，…，Ｘｎの否定であって、選択肢が選ばれていない場合に真になり選ばれている場合に偽になる論理変数Ｘ１￣，…，Ｘｎ￣を定義し、前記論理変数を論理和・論理積により組み合せることによって、前記条件を表現した論理式であることが好ましい。
【００１５】
これによれば、選択時と非選択時での真・偽が背反の関係にある二種類の論理変数Ｘｎ，Ｘｎ￣を用いて、該論理変数と論理和・論理積との組合せによって条件が表現された論理式を用いているので、論理式として表現できる条件の幅が広がる。
【００１６】
また、本発明のユーザインターフェイス制御方法では、前記数値列は、逆ポーランド記法の順序で数値が並んだものであることが好ましい。これによれば、数値列は、逆ポーランド記法の順序で数値が並んでいるので、数値を順番に参照していくことで、数値列の演算を行うことができる。数値を順番に参照することで例えばスタック計算を行うことが可能になる。
【００１７】
また、本発明のユーザインターフェイス制御方法では、前記演算ステップでは、前記数値列の演算をスタック計算で行うことが好ましい。
これによれば、演算ステップでは、数値列の演算をスタック計算で行う。数値列における数値の並び順に従って数値を順番に参照して演算を進めればよい。例えばコンピュータによる演算処理を簡単に済ませられる。
【００１８】
また、本発明のユーザインターフェイス制御方法では、前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことが好ましい。
【００１９】
これによれば、作業用メモリに格納した数値列の数値を順次参照するとともに、数値の参照が終わったメモリ領域をスタック領域として活用する。参照数値が論理変数に割り当てられた数値である場合は、該参照数値をスタック領域にプッシュし、参照数値が論理演算子に割り当て得られた数値である場合はスタック領域から複数（２つ）の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果をスタック領域にプッシュする。このようなスタック操作を繰り返すことで数値列の演算は進められる。作業用メモリ上の数値参照の終わったメモリ領域をスタック領域に活用するので、スタック計算する場合に別途メモリ領域を用意する必要がない。
【００２０】
また、本発明のユーザインターフェイス制御方法では、前記入力手段からの制御の開始の契機となる入力は、前記各設定項目において選択されている前記選択肢を確定するための確定入力であることが好ましい。
【００２１】
これによれば、入力手段から各設定項目で選択されている選択肢を確定する確定入力があったときは、全設定項目で選択肢が選択された状態にあるので、選択肢の状態値はすべて決まる。このため、状態値が適用された数値列の演算を行った演算結果から、そのとき選択されている選択肢の組合せが禁止又は許可されるべきものか否かを判断できる。例えば、許可される場合は、そのときの選択肢の組合せで確定され、一方、禁止される場合は、選択不可能な旨を表示手段の表示に反映させる。
【００２２】
また、本発明のユーザインターフェイス制御方法では、前記入力手段からの制御の開始の契機となる入力は、前記設定項目において前記選択肢を選択する選択入力であることが好ましい。
【００２３】
これによれば、入力手段から選択肢を選択する選択入力があったときは、該選択肢が属する設定項目以外の設定項目の中には、未選択又は選択済みに拘わらず改めて選択肢が選択可能かどうかを判断する必要がある場合がある。この場合、選択された当該選択肢を含む一部の選択肢のみの状態値が決まり、選択可能かどうかを判断する必要があるその他の設定項目の選択肢の状態値は未定となる。よって、状態値適用ステップでは、状態値が決まる選択肢の状態値のみが数値列の対応する数値に置き換えられ、この一部の状態値のみ適用された数値列の演算が演算ステップで行われる。そして、その演算結果から、選択可能かどうかの判断が必要な設定項目について選択が禁止又は許可される選択肢が特定されることになる。そして、表示反映ステップでは、選択が禁止又は許可される選択肢についてはその旨がユーザインターフェイス上の表示に反映される。例えば、選択が禁止される選択肢が、選択不可能状態又は非表示状態にされるなど選択できないように無効化される。よって、その後、ユーザが他の設定項目で組合せ上禁止されている選択肢を選択することを回避できる。
【００２４】
また、本発明のユーザインターフェイス制御方法では、前記数値列は、論理変数に割り当てられた数値の配列により構成され、論理演算子を表す数値は含まないことが好ましい。これによれば、数値列は、論理変数に割り当てられた数値が複数配列されてなり、論理演算子を意味する数値は省略されている。このため、論理演算子が省略された分だけ、数値列自体を縮小できるうえ数値列の演算に必要な作業用メモリを削減できる。また、演算時に参照する数値の個数が少なくなるので、演算所要時間も短く済む。
【００２５】
また、本発明のユーザインターフェイス制御方法では、前記数値列は、逆ポーランド記法で表現した際に論理演算子の位置の順番が常に固定される表記形式で表された論理式を逆ポーランド記法で表現した順番で数値が配列されてなり、前記演算ステップでは、前記数値列の数値を順番に参照して予め定められた所定個数分の数値のスタック操作を終える度に、前記スタック領域から数値をポップするとともに前記所定個数分の数値参照後に実施するように予め設定された論理演算子による演算を、前記ポップした数値に対して施すことが好ましい。
【００２６】
これによれば、論理演算子の数値が省略されていても、論理演算子の省略位置が固定されていることから、参照位置から、省略された論理演算子による演算を行うべきタイミングを把握することができ、省略されている論理演算子の１つ前まで数値を参照してそのスタック操作を終える度に、次に省略された論理演算子が参照されるべきものとして、そのときの位置から定まる省略された論理演算子による演算を、スタック領域からポップした数値に対して施す。つまり、所定個数の数値を参照した後に省略された論理演算子の演算を行うプログラムを組むことができる。よって、論理演算子が省略されても、所定個数分の数値を参照する度に省略された論理演算子の演算を行うという所定の規則に従って、数値列の演算を行うことができる。
【００２７】
また、本発明のユーザインターフェイス制御装置では、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御するユーザインターフェイス制御方法であって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列を記憶する記憶手段と、前記入力手段から制御の開始の契機となる入力を得ると、前記ユーザインターフェイスにおける前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用手段と、前記状態値が適用された前記数値列に基づき演算を行う演算手段と、前記演算手段の演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映手段とを備えたことを要旨とする。この装置の発明によっても、前記方法の発明と同様の効果を得ることができる。
【００２８】
本発明は、複数の設定項目毎に選択肢を入力可能に表示手段に表示されるユーザインターフェイスを入力手段からの入力に基づき制御する処理をコンピュータが実行するためのユーザインターフェイス制御用プログラムであって、前記設定項目間で選択が禁止又は許可されるべき選択肢の組合せの条件を前記設定項目毎の各選択肢を論理変数として表した論理式が数値に変換された数値列が記憶手段に記憶されており、コンピュータが、前記入力手段から制御の開始の契機となる入力を得ると、前記記憶手段から前記数値列を読み出すとともに、前記設定項目の各選択肢の選択状態を示す状態値を前記数値列中の対応する数値と置き換える状態値適用ステップと、前記状態値が適用された前記数値列に基づき演算を行う演算ステップと、前記演算ステップでの演算結果から選択禁止の選択肢が存在する旨の禁則情報が得られた場合は該禁則情報を前記表示手段の表示に反映させる表示反映ステップとを実行するためのプログラム。これによれば、このプログラムをコンピュータが実行することで、前記方法の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２９】
（第１実施形態）
以下、本発明を具体化した第１実施形態を、図１〜図７に基づいて説明する。
図１は、印刷システムのハードウェア構成を示すブロック図である。印刷システムは、パーソナルコンピュータ等からなるコンピュータ１１と、コンピュータ１１のインターフェイス（以下「Ｉ／Ｆ１７」）に接続されたプリンタ２１とから構成される。プリンタ２１は例えばインクジェット式プリンタである。
【００３０】
図１に示すように、コンピュータ１１は、ＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、ＨＤＤ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ）１５、ビデオ回路１６、Ｉ／Ｆ１７、バス１８、表示装置１９および入力装置２０によって構成されている。
【００３１】
ここで、ＣＰＵ１２は、ＲＯＭ１３やＨＤＤ１５に格納されているプログラムに従って各種演算処理を実行するとともに、装置の各部を制御する制御部である。
ＲＯＭ１３は、ＣＰＵ１２が実行する基本的なプログラムやデータを格納しているメモリである。ＲＡＭ１４は、ＣＰＵ１２が実行途中のプログラムや、演算途中のデータ等を一時的に格納するメモリである。
【００３２】
ＨＤＤ１５は、ＣＰＵ１２からの要求に応じて、ハードディスクに記憶されているデータやプログラムを読み出すとともに、ＣＰＵ１２の演算処理の結果として発生したデータを前述したハードディスクに記憶する記憶装置である。
【００３３】
ビデオ回路１６は、ＣＰＵ１２から供給された描画命令に応じて描画処理を実行し、得られた画像データを映像信号に変換して表示装置１９に出力する回路である。
Ｉ／Ｆ１７は、入力装置２０から出力された信号の表現形式を適宜変換するとともに、プリンタ２１に対して印刷データを出力する回路である。
【００３４】
バス１８は、ＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、ＨＤＤ１５、ビデオ回路１６およびＩ／Ｆ１７を相互に接続し、これらの間でデータの授受を可能とする信号線である。
表示装置１９は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ Ｃｒｙｓｔａｌ Ｄｉｓｐｌａｙ）モニタやＣＲＴ（Ｃａｔｈｏｄｅ Ｒａｙ Ｔｕｂｅ）モニタによって構成され、ビデオ回路１６から出力された映像信号に応じた画像を表示する装置である。
【００３５】
入力装置２０は、例えば、キーボードおよびマウスによって構成されており、ユーザの操作に応じた信号を生成して、Ｉ／Ｆ１７に供給する装置である。
以下、図２に示す各機能部分について個々に説明する。
【００３６】
図２に示すように、コンピュータ１１には、アプリケーションプログラム、ビデオドライバプログラムおよびプリンタドライバプログラム等が実装されており、これらが所定のオペレーティングシステム（ＯＳ）の下で動作している。コンピュータ１１に内蔵されたＣＰＵ１２がＨＤＤ１５等に格納されている前述の各種プログラムを実行することにより、アプリケーション部２３、ビデオドライバ２４およびプリンタドライバ２５が構築されている。
【００３７】
プリンタドライバ２５は、ＵＩ制御装置３０および印刷部３８を備えている。ＵＩ制御装置３０は、記憶部３１、データロード部３２、テーブル作成部３３、演算部３４、ＵＩ制御部３５、印刷部３８を備えている。なお、これらの機能部分は、コンピュータ１１のハードウェアと、ＨＤＤ１５に記憶されているソフトウエアとが協働することにより実現される。
【００３８】
アプリケーション部２３は、例えば画像編集などを行う機能を有し、ディジタルカメラ等から取り込まれた画像あるいはユーザによって描画された画像の加工処理が可能である。アプリケーション部２３で扱う画像は、ビデオドライバ２４に出力されることで表示装置１９の画面に表示される。アプリケーション部２３は、入力装置２０が操作されて印刷実行の指令を受け付けると、その印刷対象の画像データをプリンタドライバ２５に出力する。
【００３９】
ビデオドライバ２４は、ビデオ回路１６を駆動するためのプログラムであり、例えばアプリケーション部２３から供給された画像データに対してガンマ処理やホワイトバランスの調整等を行った後、映像信号を生成して表示装置１９に供給して画像を表示させる。また、プリンタドライバ２５はＵＩ２８の画像データをビデオドライバ２４を介して表示装置１９の画面に表示させる。
【００４０】
プリンタドライバ２５は、表示装置１９の画面に、ユーザが印刷条件を入力設定するためのユーザインターフェイス（以下、「ＵＩ２８」という）の表示制御を行うユーザインターフェイス制御装置（以下、「ＵＩ制御装置３０」という）を備えている。ＵＩ制御装置３０は、ユーザが入力装置２０を操作してアプリケーション部２３に対して例えば印刷実行指令または印刷設定表示指令などの印刷に係る指令を入力すると、その指令を受け付けたプリンタドライバ２５により起動される。
【００４１】
ＵＩ制御装置３０は、用紙サイズ、メディア、カラーモードなどの設定項目が選択可能に配置された設定画面を有するＵＩ２８を表示させる。ＵＩ２８には印刷条件を構成する各種設定項目毎に、例えばコンボボックス、ラジオボタン、チェックボックス等の選択機能部のうちの一つが対応付けて配置されており、ユーザは、ＵＩ２８上に各設定項目毎の選択機能部を必要に応じて選択操作して選択肢を変更することで所望の印刷条件を設定する。この場合、設定項目間で、一緒に設定できない選択肢の組合せがある。例えば設定項目「メディア」において写真印刷時に設定される「光沢紙」と、設定項目「印刷品質」における写真印刷に適さない「ドラフト」との組合せが、それに該当する。選択肢の組合せとして不適切な組合せについては予め設定できないように禁止しておくことで、ユーザが不適切な印刷条件で印刷してしまうことを防止するようにしている。
【００４２】
選択が禁止された選択肢の組合せで印刷条件が設定されることを防止する方法としては、次の２つの方法が挙げられる。一つは、選択が禁止された選択肢の組合せで図２に示すＯＫボタン４２（確定ボタン）が操作されたときに選択禁止の旨を通知する方法である。他の一つは、選択禁止の選択肢を無効化（グレーアウト又は非表示）してユーザによる選択を不能にする方法である。本実施形態は、前者の方法を採用する。
【００４３】
印刷条件を設定するためにＵＩ２８上で選択できる設定項目は、詳細設定画面等の下位の設定画面で設定されるものも含めると、プリンタ２１の機種によって異なるものの、例えば１０〜２０程度ある。各設定項目毎に２〜１０程度用意されている選択肢を設定項目毎に１つずつ選択して印刷条件を確定する。ＵＩ制御装置３０は、非常に多数の選択肢の組合せのうち、ＯＫボタン４２が操作されたときの選択肢の設定が禁則条件を満たすものであるか否かを判定して、その判定結果に応じた所定の処理を行う。本実施形態では所定の処理として、設定可能な場合にその設定を確定して受け付ける処理を行い、設定不可能な場合は、表示装置１９の画面に設定不可能な旨のメッセージを表示する処理を行う。
【００４４】
ＵＩ制御装置３０は、設定項目間において設定不可能な選択肢の組合わせを効率良く取得する。設定可能な選択肢の組合せと設定不可能な選択肢の組合せの判別処理は、設定不可能な選択肢の組合せのすべてを含む禁則条件の論理式を数値化した禁則データ（数値列）に基づき行う構成となっている。ＵＩ制御装置３０は、ＵＩ制御開始の入力を得ると、ＵＩ２８上で選択されている各選択肢の状態値を数値列に代入し、その代入後の数値列を演算して得られた演算結果から禁則条件である否かを判定し、その判定結果を表示装置１９の表示に反映させる。本実施形態では、図２に示すプリンタメーカー側のコンピュータ５０で作成された論理式５２を数値に変換した数値列５５が、禁則データとしてプリンタドライバプログラムと共にＣＤ−ＲＯＭ４１に記憶され、このＣＤ−ＲＯＭ４１がプリンタ２１に同梱されてユーザに提供される。そして、ＣＤ−ＲＯＭ４１からユーザのコンピュータ１１にプリンタドライバプログラム及び各種データがインストールされることにより、ＵＩ制御装置３０を有するプリンタドライバ２５がコンピュータ１１に実装される。
【００４５】
ここで、コンピュータ５０で行われる処理について説明する。コンピュータ５０には、開発者がプリンタ用のＵＩ制御装置３０を開発するためのツールが実装されており、このツールの一部の機能として数値列作成部５１が備えられている。開発用のツールはソフトウェアにより構成され、コンピュータ５０がそのソフトウェアを実行することで数値列作成部５１はその一部の機能として構築されている。数値列作成部５１は、開発者が入力手段（図示せず）を操作することで与えられる禁則情報に基づいて論理式５２を作成するとともに該論理式５２を所定の規則に従って数値列５５に変換する。論理式５２は、前述のように、複数の設定項目間で選択が禁止されている組合せを定める禁則条件を、選択肢を論理変数として表現された論理式である。この論理式５２の詳細については後述する。
【００４６】
次に、ＵＩ制御装置３０の構成部分について説明する。
図２に示す記憶部３１は、ＨＤＤ１５の所定記憶領域またはメモリにより構成されたもので、ＵＩ制御処理に必要なデータが格納されている。記憶部３１には、前述のとおり、ＣＤ−ＲＯＭ４１から読み込まれた数値列５５のデータが記憶されている。また、記憶部３１には、ＵＩ２８上の選択肢毎に選択／非選択のどちらの状態にあるかその選択状態の状態値をフラグで管理する所定記憶領域が用意されている。初期状態では各状態値（フラグ）はデフォルトの値が設定されており、入力装置２０の操作によって選択肢の選択状態が変更される度に、フラグの値が変更されるように構成されている。
【００４７】
データロード部３２は、入力装置２０からＵＩ制御処理開始のトリガとなる入力があると、そのときのＵＩ２８上における各選択肢の選択状態を示す状態値（フラグ）データと、数値列５５のデータとを、記憶部３１からロードする。本実施形態では、ＯＫボタン４２を操作したときの入力が、ＵＩ制御処理開始のトリガとなる。
【００４８】
テーブル作成部３３は、データロード部３２がロードした数値列５５のデータと、選択肢毎の状態値データとに基づきテーブル４４（図３に示す）を作成する。
演算部３４は、テーブル作成部３３が作成したテーブル４４を参照して、数値列５５を構成する多数の数値のうち各選択肢の論理変数に割り当てられた数値を、対応する選択肢の状態値に置き換える処理を行う。つまり、数値列５５で表現された論理式の論理変数に状態値を代入する処理を行う。そして、状態値適用後の数値列を計算する所定の演算処理を行う。
【００４９】
ＵＩ制御部３５は、演算部３４の演算結果から本設定が可能であるか否かを判定し、その判定結果をビデオドライバ２４を介して表示装置１９の表示内容に反映させる。本実施形態では、前述のように、本設定が可能な場合は、本設定を受け付けて印刷部３８に本設定を確定した旨を通知し、一方、本設定が不可能な場合は、本設定が不可能な旨のメッセージ表示を行う。
【００５０】
印刷部３８は、ＵＩ制御部３５から確定の旨の通知を受け取ると、記憶部３１から状態値のデータを読み出して印刷設定情報を取得するとともに、印刷対象の画像データに解像度変換処理、色変換処理、ハーフトーン処理およびラスタライズ処理を施して生成した印刷データをプリンタ２１に供給する。印刷データは、プリンタ２１が解釈できる形式のデータであって、前記画素データと、各種のコマンドデータとを有するデータである。
【００５１】
解像度変換処理は、印刷対象となる例えばＲＧＢ画像の解像度を、設定項目「印刷品質」の選択肢から決まる印刷解像度に変換する処理である。また、この処理を行う際は、設定項目「用紙サイズ」の選択肢から決まる用紙サイズに応じた画像サイズに変倍する変倍処理やトリミング処理等が必要に応じて行われる。色変換処理は、ＲＧＢ表色系で表現されたＲＧＢ画像データを、色変換テーブル（図示せず）を参照して、ＣＭＹＫ表色系の画像データに変換する処理である。ハーフトーン処理は、多段階の階調値を有するＣＭＹＫ画素データを、プリンタ２１が表現可能な、少段階の階調値を有するＣＭＹＫ画素データに変換する処理である。ラスタライズ処理は、前記ハーフトーン処理がなされたＣＭＹＫ画像データを、プリンタ２１に転送すべきデータ順に変更する処理である。ラスタライズ処理されたデータは、コマンドが付された印刷データとしてプリンタ２１に出力される。
【００５２】
図３は、メーカー側のコンピュータ５０で予め行われる処理を説明する流れ図である。数値列作成部５１が行う処理は、図３（ａ）〜（ｄ）に示すように、（ａ）論理式５２の作成、（ｂ）逆ポーランド記法への並び替え、（ｃ）論理変数・論理記号の数値変換の主に３つの処理からなる。
【００５３】
まず論理式の作成について説明する。ＵＩ２８上の選択可能な全ての選択肢を論理変数として扱い、各論理変数が｛選択(TRUE)，非選択(FALSE)｝のどちらかの状態を取るとする。それらの論理変数を組み合わせた論理式によって設定不可能である禁則条件を表現する。禁則条件の論理式Ｅは、以下のように示される。
Ｅ ＝ (( X1∧X2 ) ∨ ( X1￣∧X3 )) ∨ (( X2∧X4￣ ) ∨ ( ( X1∧X3 )∧X5 )) …(1)
例えば設定項目として、用紙サイズ、メディア、カラーモードなどがあり、各設定項目の下位に用意された各選択肢が論理変数で表される。例えば設定項目「用紙サイズ」には、その選択肢として、「Ａ２，Ａ３，Ａ４，Letter，Legal，…」があり、設定項目「メディア」には、その選択肢として、「普通紙、ＯＨＰシート、マット紙、光沢紙、半光沢紙、…」があり、さらに設定項目「カラーモード」には、その選択肢として、「カラー／モノクロ」がある。これら選択肢の一つひとつに論理変数が割り当てられる。
【００５４】
上記(1)式で示された論理式５２の右辺の論理変数には、「Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，…」と、「Ｘ１￣，Ｘ２￣，Ｘ３￣，Ｘ４￣，Ｘ５￣，…」がある。論理変数Ｘｎ（但しｎ＝１,2,…）は、論理変数Ｘｎで表された選択肢Ｎ１が選択されているときに真（TRUE）となり、この選択肢Ｎ１が選択されていないときに偽（FALSE）となる論理変数である。一方、論理変数Ｘｎ￣（但しｎ＝１,2,…）は、論理変数Ｘｎで表された選択肢Ｎ１が選択されていないときに真（TRUE）となり、この選択肢Ｎ１が選択されているときに偽（FALSE）となる論理変数である。論理変数Ｘｎ，Ｘｎ￣は、それぞれ真（TRUE）である場合に値「１」をとり、偽（FALSE）である場合に値「−１」をとる。
【００５５】
例えば上記(1)式の右辺中にある「Ｘ１∧Ｘ２」は、論理変数Ｘ１で表された選択肢Ａ１と、論理変数Ｘ２で表された選択肢Ｂ１の両方が選択された場合に、Ｘ１∧Ｘ２が真（TRUE）となり、Ｘ１∧Ｘ２＝１∧１＝１により、値「１」をとる。また、論理変数Ｘ１で表された選択肢Ａ１と、論理変数Ｘ２で表された選択肢Ｂ１のうち少なくとも一方が選択されなかった場合は、Ｘ１∧Ｘ２が偽（FALSE）となり、Ｘ１∧Ｘ２＝−１（∵１∧−１＝−１∧１＝−１∧−１＝−１）により、値「−１」をとる。
【００５６】
論理変数が論理和で結合されたＸｎ∨Ｘｍは、論理変数Ｘｎで表された選択肢Ａｎと、論理変数Ｘｍで表された選択肢Ｂｍのうち少なくとも一方が選択されている場合に、Ｘｎ∨Ｘｍが真（TRUE）となり、Ｘ１∨Ｘ２＝１（∵１∨−１＝−１∨１＝１∨１＝１）により、値「１」をとる。また、論理変数Ｘｎで表された選択肢Ａｎと、論理変数Ｘｍで表された選択肢Ｂｍのうち両方が選択されなかった場合は、Ｘｎ∨Ｘｍが偽（FALSE）となり、Ｘｎ∨Ｘｍ＝−１（∵−１∨−１＝−１）により、値「−１」をとる。
【００５７】
禁止関数Ｅは、その値が「１」になって真（TRUE）となると、そのとき選択されている選択肢の組合せが禁止されていることを意味し、一方、その値が「−１」になって偽（FALSE）となると、そのとき選択されている選択肢の組合せが禁止されていない、すなわち許可されていることを意味する。換言すれば、禁止されている選択肢の組合せを選択した場合、Ｅ＝１になり、禁止されていない（つまり許可されている）選択肢の組合せを選択した場合、Ｅ＝−１になる。
【００５８】
前述の例で示した「Ｘ１∧Ｘ２」は論理式５２中においては、選択肢Ａ１と選択肢Ｂ１の両方を同時に選択することは禁止することを意味する。また、前記(1)式中の「Ｘ１￣∧Ｘ３」は論理式５２中においては、論理変数Ｘ１￣で表された選択肢Ａ１が選択されていないときは、論理変数Ｘ３で表された選択肢Ｃ１の選択を禁止することを意味する。つまり、選択肢Ｃを選択するためには選択肢Ａ１の選択が必須であることを意味する。このように選択が禁止されている選択肢の組合せについては、それぞれを表す論理変数が論理積（∧）で繋がれ、例えば「Ｘｎ∧Ｘｍ」、「Ｘｎ￣∧Ｘｍ」、「Ｘｎ∧Ｘｍ￣」、「Ｘｎ￣∧Ｘｍ￣」「（Ｘｎ∧Ｘｍ）∧Ｘｌ」、…のように論理式中に組み込まれる。そして、これらの禁止の組合せを論理積で繋いだそれぞれが、論理和（∨）で繋がれて小集団の式が形成され、さらにその論理和で繋がれた小集団の式が他の小集団の式と論理和で繋がれることにより、例えば論理式５２は構築されている。よって、ある禁止の組合せを追加したい場合は、論理式中にその禁止の組合せに対応する各論理変数を論理積（∧）で繋いだ、例えば「Ｘｎ∧Ｘｍ」または前記小集団の式を、既存の論理式５２中に論理和で繋ぐかたちで追加すればよい。また、ある禁止の組合せを削除したい場合は、その禁止の組合せに対応する各論理変数を論理積（∧）で繋いだ、例えば「Ｘｎ∧Ｘｍ」または前記小集団の式を、既存の論理式５２から削除すればよい。このように論理式５２を用いれば、禁止の組合せの追加・削除は比較的簡単に行える。
【００５９】
図３（ａ）に示す論理式５２は、上述の手法に基づきコンピュータ５０の数値列作成部５１が作成する。開発者が入力装置（図示せず）を操作して選択肢の論理変数を必要に応じて定義して、数値列作成部５１からの要求に応じて禁止される組合せの情報を入力すると、数値列作成部５１は、上述の規則に従って論理式５２を作成する。
【００６０】
すなわち、数値列作成部５１は、設定項目中の特定の選択肢が選ばれた場合に真（TRUE）、 選ばれていない場合に偽（FALSE）になる論理変数Ｘ１，Ｘ２，Ｘ３，…を全設定項目の全選択肢分定義する。次に、Ｘ１，Ｘ２，Ｘ３，…の否定、すなわち選択肢が選ばれない場合に真（TRUE）、選ばれた場合に偽（FALSE）となる論理変数Ｘ１￣，Ｘ２￣，Ｘ３￣，…と定義する。そして、入力装置から与えられた禁則条件（選択禁止の条件）の情報を基に、これらの論理変数を論理和・論理積による組み合せることによって、禁則条件を表現した例えば前記(1)式で表される論理式５２を作成する。
【００６１】
こうして論理式５２が作成されると、数値列作成部５１は、次に図３（ｂ）に示すように、論理式５２を逆ポーランド記法へ並び替える処理を行う。この処理の結果、同図（ｂ）に示すように、論理式５２中の括弧「（）」が外されて論理変数・論理記号が計算順序の順番に並び替えられた、逆ポーランド記法の論理式５３が得られる。
【００６２】
次に、数値列作成部５１は、この逆ポーランド記法の論理式５３を、図３（ｃ）に示す変換テーブル５４を参照して、図３（ｄ）に示す数値列５５に変換する。この変換テーブル５４は予めメモリの所定記憶領域に記憶されているものを読み出して使用する。あるいは、その都度、設定項目の選択肢の数に応じて数値列作成部５１が作成してもよい。
【００６３】
図３（ｃ）に示す変換テーブル５４は、論理変数・論理記号とそれらの変換先の数値との対応関係を示したテーブルである。変換テーブル５４では、「TRUE（真）」が「１」、「FALSE（偽）」が「−１」に変換されるように設定され、また論理積（∧）が「２」、論理和（∨）が「−２」に変換されるように設定されている。また、論理変数については、論理変数「Ｘ１，Ｘ２，Ｘ３，Ｘ４，…」がそれぞれ「３、４，５，６，…」に変換され、論理変数「Ｘ１￣，Ｘ２￣，Ｘ３￣，Ｘ４￣，…」がそれぞれ「−３、−４，−５，−６，…」に変換されるように設定されている。また、「０」は終端用（NULL）に使用される。なお、「TRUE」および「FALSE」の変換は、論理式５３から数値列５５への変換には使用されないので、数値列５５は「１」および「−１」を含まない。ユーザ側のコンピュータ１１において、ＵＩ２８上で設定項目の選択肢が選択された状態でＵＩ制御のための演算を行うときに、選択肢の論理変数を表す数値が、対応する選択肢の選択・非選択に応じて「１」または「−１」に置き替えられて使用される。
【００６４】
こうして数値列作成部５１は、変換テーブル５４を参照して、図３（ｂ）に示す逆ポーランド記法の論理式５３を図３（ｄ）に示す数値列５５に変換する。数値列５５には、その最終端位置に、数値列５５の終端位置であることを示す「０」が配置される。コンピュータ１１がこの数値列５５の演算を行うときには、数値列５５における同図の左端位置が演算開始位置になり、この演算開始位置から順次右側へ１つずつ参照する数値をシフトしながら演算を進めることになる。そして、終端用の「０」を参照すると、すべての数値の演算が終了したことになる。この演算終了位置を認識できるように終端用の「０」は数値列５５の最後に配置される。
【００６５】
この数値列５５のデータは、前述のように、プリンタドライバプログラムと共にＣＤ−ＲＯＭ４１に書き込まれ、ＣＤ−ＲＯＭ４１からプリンタドライバプログラムと共にユーザのコンピュータ１１にインストールされることにより、ＨＤＤ１５内の所定記憶領域からなる図２に示す記憶部３１に格納される。コンピュータ１１は数値列５５をソフトウェアの設定データとして持ち、ＵＩ制御装置３０がＵＩ２８を制御するときに使用する。ユーザがアプリケーション部２３から印刷実行を指示し、プリンタドライバ２５が印刷指令を受け付けると、ＵＩ制御装置３０が表示装置１９の画面にＵＩ２８を表示させるとともに、入力装置２０の操作によってユーザがそのＵＩ２８上で選択肢を選択した場合に禁止されるべき組合せの選択を禁止する禁則制御を行う。
【００６６】
図４は、ＵＩ２８上の各設定項目で所望の選択肢を選択した状態でＯＫボタン４２が操作された入力を入力装置２０から得たときに、ＣＰＵ１２が実行するＵＩ制御処理用プログラム（禁則制御処理用プログラム）を示すフローチャートである。ＵＩ制御処理は、このＵＩ制御処理用プログラムを実行するＣＰＵ１２により構成されるＵＩ制御装置３０が行う。以下、ＵＩ制御処理について、図４のフローチャートに従って、図５及び図６を適宜参照しつつ説明する。図５は作業用メモリ４３における演算開始前の前処理を示す説明図であり、図６は作業用メモリ４３における演算手順を説明する説明図である。図２に示すＵＩ２８上に設けられたＯＫボタン４２が操作された際の入力は、ＵＩ制御装置３０のデータロード部３２に与えられる。この信号の入力を契機にＵＩ制御処理は開始される。
【００６７】
まずステップＳ１０では、作業用のメモリ領域の準備をする。本実施形態では、ＲＡＭ１４に作業用メモリ領域を確保し、そのメモリ領域を作業用メモリ４３（図５及び図６に示す）として使用する。なお、選択肢が125個以下の場合は、１つの数値につき１バイト分確保する。選択肢が125個を超える場合は、１つの数値につき２バイト分確保する。
【００６８】
ステップＳ２０では、数値列５５を作業用メモリ４３にコピーする。すなわち、記憶部から数値列５５を読み出して、図５に示すように、作業用メモリ４３に格納する。なお、選択肢（設定項目）が125個以下の場合は、１つの数値を先に確保した１バイト分に格納し、125個を超える場合は、１つの数値を先に確保した２バイト分に格納する。
【００６９】
ステップＳ３０では、設定状態（選択状態）を示すテーブルを生成する。すべての選択肢に対して論理変数Ｘ１，Ｘ２，Ｘ３，…が割り当てられており、ＵＩ２８上で選択されている選択肢の設定状態（選択状態）から、各論理変数Ｘ１，Ｘ２，Ｘ３，…について選択・非選択が分かる。選択されている選択肢の論理変数に対応する数値（Index）には「１」（TRUE）、選択されていない（非選択）の選択肢の論理変数に対応する数値（Index）には「−１」（FALSE）をそれぞれ設定して、図５（ｂ）に示すテーブル４４を作成する。同図の例では、選択されている選択肢の論理変数Ｘ２，Ｘ５，…に対応する数値（Index）「４」「７」…に対しては「１」が状態値として設定され、選択されていない（非選択の）選択肢の論理変数Ｘ１，Ｘ３，Ｘ４，…に対応する数値（Ind ex）「３」「５」「６」…に対しては「−１」が状態値として設定されている。なお、論理変数Ｘ１￣，Ｘ２￣，Ｘ３￣,…の状態値は、Ｘ１，Ｘ２，Ｘ３，…の状態値に「−１」を乗ずることによって取得可能である。また、テーブル４４において、数値（Index）「０」「１」「２」は選択肢を表す数値ではないので、未使用となる。
【００７０】
ステップＳ４０では、論理変数に割り当てられている数値を、テーブル４４から取得した論理変数の状態値に置き換える。すなわち、図５（ａ）に示す数値列５５のうち論理変数が割り当てられた数値（Index）「３，４，５，…」を、テーブル４４中の対応する状態値（「１」または「−１」）に置き換えて、図５（ｃ）に示すような数値列５６に変換する。
【００７１】
ステップＳ５０では、置き換え後の数値列５６をスタック操作で計算する。図６は、スタック操作で行われる計算手順を示すものである。このスタック操作で数値列５６を計算することで、禁則情報を抽出する。以下、スタック操作による計算方法を説明する。
【００７２】
置き換えられた数値列５６を、作業用メモリ４３の同図における先頭位置（同図の左端位置）から右方向に１つずつ数値を参照していき、作業用メモリ４３自体をスタックとして活用するスタック操作を行うことにより、数値列５６の計算を実施する。
【００７３】
図６（ａ）は、数値置き換え直後から最初の数値を参照して計算を行うまでの過程を示す。ここで、作業用メモリ４３をスタックとして活用してスタック操作による計算を行うためには、数値の参照位置を管理するとともに、スタック終端位置を管理する必要がある。ＣＰＵ１２はメモリ上に所定記憶領域を確保して、スタック終端位置を管理している。また、メモリ上に別の所定記憶領域を確保して、ここで作業用メモリ４３上の数値列５６中の数値を１つずつ順番に参照する参照位置４５（アドレス）を管理している。
【００７４】
参照位置４５は作業用メモリ４３における図６の左端位置を参照開始位置とし、数値を参照する度に１つずつ右方向へ移動していく。一方、スタック終端４６は、作業用メモリ４３上において図６の左端位置を初期位置とする。スタック操作は次の規則に従って行われる。参照位置４５の数値（参照数値）が論理変数の状態値である「１」（TRUE）又は「−１」（FALSE）の場合は、その参照数値を作業用メモリ４３のスタック終端４６の位置にプッシュする。数値をプッシュした場合は、スタック終端４６を１つ右へ移動する。また、参照位置４５の数値（参照数値）が論理記号を表す数値である「２」（論理積）又は「−２」（論理和）の場合は、作業用メモリ４３中のスタック領域から２つ数値をポップして、そのポップした数値の個数分（２つ分）スタック終端４６を左へ戻す。このような規則に従って行われるスタック操作と、参照位置４５およびスタック終端４６の位置管理は、ＵＩ制御用プログラムに基づいてＣＰＵ１２が行う。なお、図６における作業用メモリ４３における１つの数値が格納される格納エリア（同図における１升分）のアドレスを、便宜上、左端位置から順に第１アドレス、第２アドレス、第３アドレス、…と呼ぶことにする。
【００７５】
まず図６（ａ）に示すように、最初の参照位置４５である１番目の数値を参照する。参照数値が「−１」（FALSE）であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置である第１アドレスにプッシュする。プッシュしたことによってスタック終端４６は１つ右へ移動する。こうして１個目の数値の参照およびプッシュが終わると、図６（ｂ）に示すように、参照位置４５およびスタック終端４６が共に２個目の数値が位置する第２アドレスを示す状態になる。
【００７６】
次に図６（ｂ）に示すように、参照位置４５にある２個目の数値を参照すると、その参照数値が「１」であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置である第２アドレスにプッシュする。プッシュしたことによってスタック終端４６は１つ右へ移動する。こうして２個目の数値の参照およびプッシュが終わると、図示はしないが、参照位置４５およびスタック終端４６が共に３個目の数値の位置である第３アドレスを示す状態になる。
【００７７】
次に図６（ｃ）に示すように、参照位置４５にある３個目の数値を参照すると、その参照数値が「２」（論理積）であるので、作業用メモリ４３のスタック領域から２つ数値をポップして、スタック終端４６をポップした個数分（２つ分）だけ左へ戻す。ここで、参照数値「２」が論理積を意味するので、ポップした２つの数値の論理積を計算する。すなわち、−１（FALSE）２（∧）１（TRUE）を計算する。そして、この計算結果である「−１」をスタック終端４６の位置にプッシュする。このプッシュによってスタック終端４６は１つ右へシフトし、図６（ｄ）に示すように第２アドレスを示す状態になる。そして、参照位置４５は４個目の数値の位置である第４アドレスを示す状態になる。なお、スタック終端４６は、数値を次にプッシュすべき位置を指すので、数値をポップするときの位置は、スタック終端４６より１つ左側の位置となる。
【００７８】
次に図６（ｄ）に示すように、参照位置４５にある４個目の数値を参照すると、その参照数値が「１」（TRUE）であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置である第２アドレスにプッシュする。この場合、プッシュした数値が上書きされる。このプッシュによってスタック終端４６は１つ右へ移動する。こうして４個目の数値の参照およびプッシュが終わると、図示はしないが、参照位置４５が５個目の数値の位置である第５アドレスを示す状態になるとともに、スタック終端４６が３個目の数値の位置である第３アドレスを示す状態になる。以下、スタック操作を同様の手順で、終端数値「０」を参照するまで繰り返す。
【００７９】
そして、終端数値「０」を参照した段階ではスタック終端４６は、その前回の数値参照時に行われた最後の計算結果がプッシュされた位置より１つ右へ移動した状態にある。例えば「０」を参照したときには、スタック終端４６を左へ１つ戻し、作業用メモリ４３の先頭位置から演算結果を読み出す際の最終読出し位置をスタック終端４６が指しているようにしている。よって、スタック終端４６が指す先頭位置の数値が、禁則条件の論理式の演算結果となる。こうして図４に示すステップＳ５０における数値列のスタック操作による計算は行われ、その計算結果が得られることになる。
【００８０】
ステップＳ６０では、本設定が可能であるか否かを判断する。すなわち、計算終了後の作業用メモリ４３からスタック終端位置である先頭位置から数値を読み出し、その演算結果の数値が「−１」（FALSE）であるか否かを判断する。ここで、図６で説明したように、作業用メモリ４３の先頭位置の値が計算結果であるので、作業用メモリ４３の先頭位置の数値をみて、その数値が「−１」（FALSE）であれば、本設定が禁則条件ではないことになり、本設定が設定可能である。一方、この先頭位置の数値（演算結果）が、「１」（TRUE）であれば、本設定が禁則条件であることになり、本設定が設定不可能である。よって、このステップＳ６０では、作業用メモリ４３の先頭位置の数値が「−１」（FALSE）であるか否かを判断する。そして、先頭位置の数値が「−１」（FALSE）であれば、ステップＳ７０に進み、先頭位置の数値が「１」（TRUE）であれば、ステップＳ８０に進む。
【００８１】
ステップＳ７０では、本設定を確定する。すなわち、ユーザが選択した各設定項目の選択肢が確定され、例えばプリンタドライバ２５がその確定した本設定の印刷設定条件で印刷を行うための処理を開始する。
【００８２】
ステップＳ８０では、選択不可能（設定不可能）の旨を表示する。
図７は、ユーザインターフェイス制御について説明する模式図である。図７（ａ）に示すように、ＵＩ２８上でカラーモードが「カラー」、メディアが「マット紙」を選択し、最後に用紙サイズとして「Ａ４」を入力装置２０のマウスを操作してポインタ４７で選択した後、ポインタ４７でＯＫボタン４２を操作する。すると、コンピュータ１１内ではＣＰＵ１２によりＵＩ制御用プログラムが実行されて、先に説明した処理が実行され、論理式の数値列の計算結果が得られる。そして、その計算結果が「−１」であれば、その選択された設定が禁則条件ではないので、その選択された設定が受け付けられる。一方、計算結果が「１」であれば、その選択された設定が禁則条件であるので、図７（ｂ）の下側に示すような本設定が設定不可能である旨のメッセージ４８が表示装置１９の画面に表示され、その設定は受け付けられない。なお、ステップＳ１０〜Ｓ４０が状態値適用ステップに相当し、ステップＳ５０が演算ステップに相当し、さらにステップＳ６０，Ｓ８０が表示反映ステップに相当する。
【００８３】
以上詳述したように本実施形態によれば、以下の効果を得ることができる。
（１）ＵＩ２８における選択肢の禁則条件を表した論理式を、そのうちの論理変数及び論理演算子の一つひとつを数値に変換してなる数値列として記憶部３１に記憶する。そして、ＯＫボタン４２が操作された確定入力を得ると、そのとき選択されている各選択肢の状態値を数値列の対応する数値に置き換え、該置き換え後の数値列に対して演算することにより、その演算結果からＵＩ２８上で選択された本設定が設定可能か設定不可能かを判定する構成とした。必要なデータ量も比較的少なくしかも比較的簡単な処理でＵＩ制御を行うことができる。また、論理式を表す数値列を計算して禁則情報を得る構成なので、禁則条件の整合も確保しやすい。
【００８４】
（２）作業用メモリ４３をスタックとして活用して、スタック操作を行うことによって数値列５６の演算を行うので、演算に使用するメモリ容量を少なくすることができる。
（３）ＵＩ２８上の選択肢をすべて選択した状態でＯＫボタン４２が操作されたことをトリガにしてＵＩ制御処理を開始する構成とした。よって、数値列５６には論理変数に対応する数値のすべてに状態値「１」又は「−１」が設定されているので、演算結果は必ず「１」又は「−１」として得られる。よって、演算結果に基づき行われるその後の処理を比較的簡単にすることができる。例えば演算結果がＥ＝−１であれば、本設定が確定されて所定の手順を経て印刷が開始され、演算結果がＥ＝１であれば、本設定が選択不可能な旨のメッセージ４８を表示する処理を行えば足りる。
【００８５】
（４）数値列５５は、論理式を逆ポーランド記法に並び替えたものを数値で表現されたものであり、数値が逆ポーランド記法の順序で配列されているので、先頭から順番に計算するスタック計算で数値列５６の計算を行うことができる。このため、数値列５６の計算を比較的簡単な演算処理で済ませることができる。
【００８６】
（第２実施形態）
次に、第２実施形態を図８〜図１４に基づいて説明する。選択が禁止された項目の組合せで印刷条件が設定されることを防止する方法として、前記第１実施形態では、選択が禁止された項目の組合せでＯＫボタン４２が操作されたときに選択禁止の旨を通知する方法を採用した。これに対して、この第２実施形態は、選択禁止の選択肢を予め無効化（グレーアウト）することによって、ユーザによる選択を事前に禁止する方法を採用するものである。なお、前記第１実施形態と共通の構成については、同一の符号を使用して説明を省略し、特に異なる構成について詳述する。
【００８７】
図８は、本実施形態におけるＵＩ制御処理用プログラムを示すフローチャートである。ＣＰＵ１２は、入力装置２０から選択肢を選択する入力がある度に、このＵＩ制御処理用プログラムを実行する。以下、ＵＩ制御処理について、図８のフローチャートに従って、図９〜図１２を適宜参照しつつ説明する。図９は作業用メモリ４３における演算開始前の前処理を示す説明図であり、図１０は論理変数を含む数値式の演算方法を説明する説明図、図１１は作業用メモリ４３におけるスタック操作による計算方法を説明する説明図である。図１４（ａ）に示すようにＵＩ２８上の設定項目の中から選択肢を選択した入力があると、ＣＰＵ１２はＵＩ制御処理を開始する。図２においては、入力装置から選択肢を選択した入力があると、ＵＩ制御装置３０がＵＩ制御処理を開始し、まずデータロード部３２を起動させる。
【００８８】
まずステップＳ１１０で作業用のメモリ領域を準備し、ステップＳ１２０で数値列５５を作業用メモリ４３にコピーする。これらステップＳ１１０及びＳ１２０は、前記第１実施形態におけるステップＳ１０及びＳ２０と同様の処理である。ステップＳ１２０の処理の結果、図９（ａ）に示すように作業用メモリ４３に数値列５５がコピーされる。
【００８９】
次のステップＳ１３０では、設定状態（選択状態）を示すテーブルを生成する。この処理も基本的に前記第１実施形態におけるステップＳ３０と同様であるが、本実施形態では、設定項目の選択肢が選択される度にＵＩ制御処理を開始するので、状態値が「１」（TRUE）又は「−１」（FALSE）に決まっていない未定の論理変数が存在する点で異なる。選択されている選択肢の論理変数に対応する数値（Index）には「１」（TRUE）、選択されていない（非選択）の選択肢の論理変数に対応する数値（Index）には「−１」（FALSE）をそれぞれ設定する。このとき、今から禁則判定を行なおうとしている設定項目の選択肢に対応する数値に関しては、置き換えを行なわない。このような数値の置き換えを行って、図９（ｂ）に示すテーブル４９を作成する。同図の例では、選択されている選択肢の論理変数Ｘ２，Ｘ５，…に対応する数値（Index）「４」「７」…に対しては「１」が状態値として設定され、選択されていない（非選択の）選択肢の論理変数Ｘ３，…に対応する数値（Index）「５」…に対しては「−１」が状態値として設定され、未選択の選択肢の論理変数Ｘ１，Ｘ４に対応する数値「３」「６」に対してはそのまま「３」「６」が設定されている。なお、論理変数Ｘ１￣，Ｘ２￣，Ｘ３￣,…の状態値は、Ｘ１，Ｘ２，Ｘ３，…の状態値に「−１」を乗ずることによって取得可能である。
【００９０】
ステップＳ１４０では、論理変数に割り当てられている数値を、テーブル４４から取得した論理変数の状態値に置き換える。すなわち、図９（ａ）に示す数値列５５のうち論理変数が割り当てられた数値（Index）「３，４，５，…」を、テーブル４４中の対応する状態値に置き換えて、図９（ｃ）に示すような数値列５７に変換する。同図に示すように、数値列５７には、選択肢が未選択の設定項目に対応する論理変数の数値「３」「−３」「６」「−６」が含まれている。
【００９１】
ステップＳ１５０では、置き換え後の数値列５７をスタック操作で計算する。このスタック操作による計算方法も、基本的に前記第１実施形態におけるステップＳ５０及び図６で説明した手順で同様に行われる。但し、論理変数の数値を含むので、論理積または論理和の計算をする際にその計算対象になる１組の数値のうち少なくとも一方に論理変数の数値が含まれる場合がある点が前記第１実施形態と異なる。このような論理変数の数値を少なくとも一方に含む式の計算は、図１０に示す演算ルールに従って効率かつ正確に行えるようにしている。
【００９２】
以下、論理変数の数値を含む場合の演算ルールについて、図１０を用いて説明する。同図（ａ）〜（ｆ）に示す６つの演算ルールが予めプログラムに組み込まれている。これらの演算ルールはいずれも論理積または論理和の演算則から論理的に導かれるものである。
【００９３】
同図では、演算の対象となる論理変数の数値をＡ，Ｂで表し、これらの数値Ａ，Ｂの論理変数をそれぞれＸｎ，Ｘｍとしている。同図（ａ）〜（ｆ）に示した各演算式では、数値の後の括弧内に、その数値に対応する論理変数、論理記号、状態値を示している。
【００９４】
図１１（ａ）に示す数値列「Ａ２１」で表される演算式は、論理変数Ｘｎと状態値「１」との論理積（∧）、すなわち「Ｘｎ∧１」を意味する。Ｘｎ∧１の場合、Ｘｎが「１」の場合にその演算結果が「１」、Ｘｎが「−１」の場合にその演算結果が「−１」となるので、Ｘｎ∧１＝Ｘｎになる。よって、「Ａ２１」の場合は、スタック終端位置に「Ａ」をプッシュする。
【００９５】
図１１（ｂ）に示す数値列「Ａ２−１」で表される演算式は、論理変数Ｘｎと状態値「−１」との論理積（∧）、すなわち「Ｘｎ∧−１」を意味する。Ｘｎ∧−１の場合、Ｘｎが「１」と「−１」のどちらの値をとっても、その演算結果は「−１」となるので、Ｘｎ∧−１＝−１になる。よって、「Ａ２−１」の場合は、スタック終端位置に「−１」をプッシュする。
【００９６】
図１１（ｃ）に示す数値列「Ａ−２１」で表される演算式は、論理変数Ｘｎと状態値「１」との論理和（∨）、すなわち「Ｘｎ∨１」を意味する。Ｘｎ∨１の場合、Ｘｎが「１」と「−１」のどちらの値をとっても、その演算結果は「１」となるので、Ｘｎ∨１＝１になる。よって、「Ａ−２１」の場合は、スタック終端位置に「１」をプッシュする。
【００９７】
図１１（ｄ）に示す数値列「Ａ−２−１」で表される演算式は、論理変数Ｘｎと状態値「−１」との論理和（∨）、すなわち「Ｘｎ∨−１」を意味する。Ｘｎ∨−１の場合、Ｘｎが「１」の場合にその演算結果が「１」、Ｘｎが「−１」の場合にその演算結果が「−１」となるので、Ｘｎ∨−１＝Ｘｎになる。よって、「Ａ−２−１」の場合は、スタック終端位置に「Ａ」をプッシュする。
【００９８】
図１１（ｅ）に示す数値列「Ａ２Ｂ」で表される演算式は、論理変数Ｘｎと論理変数Ｘｍとの論理積（∧）、すなわち「Ｘｎ∧Ｘｍ」を意味する。Ｘｎ∧Ｘｍの場合、Ｘｎ，Ｘｍの両方の状態値が未定なので「１」又は「−１」のどちらの値をとるかは分からない。しかし、例えば用紙サイズの設定項目内で「Ａ４」と「Letter」の両方を同時に選択することはあり得ない。このように、同一設定項目内の２つの選択肢を同時に選択するような、あり得ない組合せの論理積であった場合は、Ｘｎ∧ＸｍをFALSE（「−１」）として除外する。よって、「Ａ２Ｂ」の場合、Ａ，Ｂが同一設定項目内の２つの選択肢を表す数値であれば、スタック終端位置に「−１」をプッシュする。
【００９９】
図１１（ｆ）に示す数値列「Ａ−２Ｂ」で表される演算式は、論理変数Ｘｎと論理変数Ｘｍとの論理和（∨）、すなわち「Ｘｎ∨Ｘｍ」を意味する。Ｘｎ∨Ｘｍの場合、Ｘｎ，Ｘｍの両方の状態値が未定なので「１」又は「−１」のどちらの値をとるかは分からない。よって、「Ａ２Ｂ」の場合、Ａ，Ｂが異なる設定項目内の２つの選択肢を表す数値である場合は、スタック終端位置に「Ａ」と「Ｂ」をプッシュする。２つの数値をプッシュした場合は、スタック終端４６の位置は右へ２つ移動することになる。なお、Ｘｎ￣，Ｘｍ￣のような否定の場合も、同様の規則が適用される。
【０１００】
図１１は、スタック操作で行われる計算手順を示すものである。このスタック操作で数値列５７を計算することで、禁則情報を抽出する。以下、スタック操作による計算について説明する。
【０１０１】
置き換えられた数値列５７を同図における左から右方向に参照していき、作業用メモリ４３自体をスタックとして活用して、前記第１実施形態の図６と同様のスタック操作を行う。
【０１０２】
図１１（ａ）は、数値置き換え直後から最初の数値を参照して計算を行うまでの過程を示す。まず図１１（ａ）に示すように、最初は参照位置４５にある１番目の数値を参照する。参照数値が「３」（Ｘ１）であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置にプッシュする。プッシュしたことによってスタック終端４６は１つ右へ移動する。
【０１０３】
次に図１１（ｂ）に示すように、参照位置４５にある２個目の数値を参照すると、その参照数値が「１」であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置にプッシュする。プッシュしたことによってスタック終端４６は１つ右へ移動する。
【０１０４】
次に図１１（ｃ）に示すように、参照位置４５にある３個目の数値を参照すると、その参照数値が「２」（論理積）であるので、作業用メモリ４３のスタック領域から２つ数値をポップして、スタック終端４６をポップした個数分（２つ分）だけ左へ戻す。ここで、参照数値「２」が論理積を意味するので、ポップした２つの数値の論理積を計算する。すなわち、３（Ｘ１）２（∧）１（TRUE）を計算する。この計算は、図１０（ａ）で示す演算式に該当し、その計算結果は「３」となるので、図１１（ｃ）に示すように、スタック終端４６の位置に「３」をプッシュする。このプッシュによってスタック終端４６は１つ右へシフトする。
【０１０５】
次に図１１（ｄ）に示すように、参照位置４５にある４個目の数値を参照すると、その参照数値が「−３」（Ｘ１￣）であるので、その参照数値を作業用メモリ４３上のスタック終端４６の位置にプッシュする。この場合、プッシュした数値が上書きされる。このプッシュによってスタック終端４６は１つ右へ移動する。以下、スタック操作を同様の手順で、終端数値「０」を参照するまで繰り返す。
【０１０６】
そして、終端数値「０」を参照した段階では、スタック終端４６は、その前回の数値参照時に行われた最後の計算結果のプッシュの結果、そのプッシュ位置より１つ右へ移動している。例えば計算完了時には、作業用メモリ４３の先頭位置から演算結果を読み出す際の最終読出し位置をスタック終端４６の位置で特定できると都合がよい。このため、終端数値「０」を参照したときにはスタック終端４６を左へ１つ戻すようにする。よって、作業用メモリ４３の先頭位置からスタック終端位置までのメモリ領域に格納された数値列又は数値が、禁則条件の論理式Ｅの演算結果として取得される。こうして図８に示すステップＳ１５０における数値列のスタック操作による計算は行われ、その計算結果が得られることになる。
【０１０７】
図１２は、計算完了時の作業用メモリ４３を示す。終端数値「０」を参照した段階で、作業用メモリ４３の中には、先頭位置からスタック終端位置まで選択不可の論理変数（選択肢）を示す数値が格納されている。ＣＰＵ１２は、作業用メモリ４３の先頭位置からスタック終端位置までのメモリ領域に格納された演算結果を取得する。同図に示す例では、「３−６」が得られる。計算結果として得られたこの数値列「３−６」は、数値「３」で示される論理変数Ｘ１と数値「−６」で示される論理変数Ｘ４￣は、選択不可の選択肢に対応するものであることから、禁則情報として、Ｅ＝Ｘ１∨Ｘ４￣が取得される。これは、論理変数Ｘ１の選択肢が選択されることを禁止し、かつ、論理変数Ｘ４の選択肢が選択されないことを禁止することを意味する。つまり、論理変数Ｘ１の選択肢は選択禁止（設定禁止）で、論理変数Ｘ４の選択肢が必ず選択される必要があることを意味する。
【０１０８】
この計算結果を受けて、図８に示すステップＳ１６０では、計算結果に従って選択肢を無効化する。すなわち、図１２の例で、論理変数Ｘ１の選択肢が含まれる設定項目をＮ、論理変数Ｘ４の選択肢が含まれる設定項目をＭとすると、設定項目Ｎの選択肢のうち論理変数Ｘ１の選択肢は無効化（グレーアウト）され、設定項目Ｍ中の複数の選択肢のうち論理変数Ｘ４の選択肢以外の選択肢が無効化（グレーアウト）される。よって、ユーザは、設定項目Ｎでは、論理変数Ｘ１の選択肢以外の選択肢を選択することになり、設定項目Ｍでは、論理変数Ｘ４の選択肢しか選択できないので、必ずこれを選択することになる。
【０１０９】
ここで、例えば論理式Ｅ＝ＡＢ（但しＡ，Ｂはそれぞれ数値）という計算結果が得られたとする。この場合、数値Ａが正の数値の場合は、数値Ａに対応する選択肢を選択不能な状態に無効化（グレーアウト）する。また、数値Ａが負の数値の場合は、該当する設定項目において数値Ａに対応する選択肢以外の選択肢をすべて選択不能な状態に無効化（グレーアウト又は非表示）する。この場合は、無効化されていない数値Ａに対応する選択肢しか設定できないことになる。他方の数値Ｂについても同様で、その値の正負に応じて定まる所定の選択肢を無効化（グレーアウト）する。
【０１１０】
また、数値列の計算結果において、矛盾する論理式が出ないように、ＣＰＵ１２がＵＩ制御処理上で参照するデータがメモリには記憶されている。例えば、論理式に同一設定項目内の選択肢は、同時に設定不可である条件を入れて演算を行うので、負の数値（否定の論理変数）が複数個発生することが回避可能となっている。なお、ステップＳ１１０〜Ｓ１４０が状態値適用ステップに相当し、ステップＳ１５０が演算ステップに相当し、さらにステップＳ１６０が表示反映ステップに相当する。
【０１１１】
図１４は、ユーザインターフェイス制御について説明する模式図である。図１４に示すＵＩ２８は、ＵＩ２８のうち一部の設定画面であり、図示しない詳細設定ボタンやプロパティボタン等を操作することによって、詳細設定画面などが表示されるようになっている。詳細設定画面に用意された各種の設定項目では規定の選択肢がデフォルトで選択されている。図１４（ａ）に示すように、例えばユーザが、ＵＩ２８上で設定項目「カラーモード」とメディアの両方が未選択の状態で、入力装置２０（マウス）を操作して用紙サイズ中の「Ａ４」にポインタ４７を移動させてこれを選択したとする。すると、コンピュータ１１内ではＣＰＵ１２によりＵＩ制御用プログラムが実行され、前述の処理が実行され、論理式の数値列の計算結果が得られる。なお、図１４（ａ）におけるカラーモードがデフォルトのままでユーザによる選択がなされていない状態では、デフォルトでカラーが選択されていても、ＣＰＵ１２は未選択とみなすものとして説明する。
【０１１２】
この場合、例えば論理変数Ｘ１の選択肢が、設定項目「メディア」中の「ＯＨＰシート」であり、論理変数Ｘ４の選択肢が、設定項目「カラーモード」の「カラー」であるとする。計算の結果、図１２で示した禁則情報、Ｅ＝Ｘ１∨Ｘ４￣が取得される。すると、図１４（ｂ）に示すように、論理変数Ｘ１の選択肢である「ＯＨＰシート」が無効化され、かつ論理変数Ｘ４の選択肢である「カラー」以外の設定項目、つまり「モノクロ」が無効化される。
【０１１３】
ここで、設定項目には優先順位があり、優先順位が高いか同じ設定項目については状態値を設定するが、優先順位が低い設定項目には状態値を設定せず論理変数の数値をそのまま設定して、テーブル４４を作成する。図１２の例は、例えば設定項目「カラーモード」が設定項目「用紙サイズ」よりも優先順位が低い例であり、設定項目「カラーモード」の選択肢を表す論理変数に割り当てられた数値は状態値には置き換えない。よって、数値列の演算結果として得られる数値列の中に設定項目「カラーモード」中の選択肢に対応する数値が含まれることになって、既に「カラー」が選択状態にあった設定項目「カラーモード」において「モノクロ」が無効化される。なお、同図では無効化された選択肢には括弧を付している。
【０１１４】
また、禁則条件の論理式は、設定画面だけでなく詳細設定画面を含むＵＩ２８のすべての選択肢に割り当てられた論理変数を含んでいる。このため、設定画面で選択肢を選択したときに実施された演算で取得された禁則情報には、設定画面だけでなく詳細設定画面の選択肢についての無効化すべき選択肢の情報が含まれている。よって、設定画面で詳細設定ボタンを操作して詳細設定画面を表示させたときには、既に演算された演算結果を用いることから、当初から所定の選択肢が無効化（グレーアウト）された状態で表示できる。つまり、詳細設定画面を表示させたときに、選択肢の無効化の反映が遅れることを回避できる。
【０１１５】
以上詳述したように本実施形態によれば、前記第１実施形態と共通の部分については共通の効果が得られるうえ、以下の効果を得ることができる。
（５）設定途中段階で、ある選択肢を選択すればその選択した入力をトリガとしてＵＩ制御を開始する構成とした。よって、設定途中段階で選択不可能な選択肢が予め無効化（グレーアウト）されるので、選択不可能な選択肢の選択を未然に防止することができる。例えば前記第１実施形態では、設定項目毎の選択肢を全て選択した後にＯＫボタン４２が操作されるとＵＩ制御を開始する構成であったので、設定不可能な旨のメッセージ４８が表示された際は設定し直す必要があったが、本実施形態では、この種の設定のやり直し操作をしなくて済む。また、前記第１実施形態の方法では、設定をやり直す場合も選択禁止の選択肢が分からないので、試行錯誤で設定しなければならず、何度もやり直す場合も起こり得る。これに対し、本実施形態によれば、やり直しそのものを回避できるので、一度で正しく設定することができる。
【０１１６】
（６）ＵＩ制御は、複数画面からなるＵＩ２８のある一画面上でユーザが選択操作しているときに、他の画面に設定すべき設定項目に係る禁則に関する演算がなされるので、ユーザが画面を切り換えたときには既に演算済みの演算結果を表示に反映すればよい。よって、他の画面に切り換えた当初から選択肢が無効化（グレーアウト）された状態で表示できる。例えば、画面を切り換えてから遅れて選択肢が無効化される応答遅れを回避できる。
【０１１７】
（７）数値列５６の計算結果は、簡単な論理式を表す短い数値列として得られるので、その解析に時間をさほど要せず、数値列の計算時間と合わせても、比較的短時間で処理を終えることができる。
【０１１８】
（８）論理変数を含む計算に図１０に示す所定のルールを設けたので、論理変数を含む論理演算を比較的スムーズにかつ正確に行うことができる。
（第３実施形態）
次に第３実施形態について説明する。本実施形態は、前記第１及び第２実施形態において採用する数値列の変形例である。禁則条件を示す論理式に対して制約を設けることによって、数値列のフォーマットの簡略化を行い、作業用メモリのサイズ削減と計算効率の向上を実現する例である。
【０１１９】
図１３は、数値列の簡略化を説明する説明図である。同図（ａ）は数値列を簡略化するために本実施形態で採用する論理式の表記形式を示す。一つの禁則条件を表す論理式は種々の表記形式で表現できるが、本実施形態では、禁則条件を示す論理式を、図１３（ａ）に示す表記形式に限定する。すなわち、２つの論理変数の論理積を示す（Ｘｎ∧Ｘｍ）を論理和で繋いだ表記形式で論理式を表現する。こうすると、図１３（ｂ）の上段に示すように、作業用メモリ４３に逆ポーランド記法の順番で配列された数値列において、論理演算子に割り当てられた数値「２」「−２」の位置が常に固定される。この場合、選択肢の数や禁則条件を変更した場合であっても、論理式の表記形式を図１３（ａ）に示す表記形式に限定することで、数値と論理記号の現れる順番は常に固定される。この場合、１つの数値や論理記号を格納するのに必要なバイト数（例えば１バイト）に、論理式中の論理変数の個数と論理記号の個数と終端用数値などその他必要な数値の個数の総計を乗じた分のメモリ容量が必要になる。図１３（ａ）の論理式を数値列に置き換えると、図１３（ｂ）の上段の作業用メモリ４３には、論理記号を表す数値「２」「−２」が一定の規則で固定の位置に現れる。すなわち、作業用メモリ４３の先頭位置から３番目、６番目、７番目、１０番目、１１番目、…に現れる。つまり、数値「２」が（４ｐ−１）番目（但し、ｐ＝１，２，…）に規則的に現れ、数値「−２」が（４ｐ＋２）番目に規則的に現れる。
【０１２０】
よって、論理記号は特に数値として格納しなくても、上記の規則から何番目の数値を参照後に論理積の計算を行い、何番目の数値を参照後に論理和の計算を行うかが分かる。これにより、論理記号を表す数値「２」「−２」は削除可能であり、それらの削除によって図１３（ｂ）の下段に示す作業用メモリ４３Ａのように、数値列自体を縮小でき、作業用メモリ４３Ａのメモリ領域を数値「２」「−２」の削除分だけ削減できる。数値列の演算では、最初に数値を２回プッシュすると、次は数値を２つポップして論理積の計算を行う。その後、数値を２回プッシュする度に数値を２つポップして論理積を行いその結果をポップした後、引き続き数値を２つポップして論理和の計算を行うという規則を決めておくことで行うことができる。もちろん、論理式の表現形式を制限することによって、同じ禁則条件を示す論理式自体が長くなることがあるため、常に数値列の縮小と作業用メモリの削減が図られるとは限らないので、論理式によって作業用メモリ４３を容量を小さくできる方を選択する。
【０１２１】
図１３（ｂ）に示す作業用メモリ４３Ａ上で計算を行う場合、最初の２つの数値に関しては、（Ｘ１Ｘ２∧）を表現、残りの数値に関しては、２つセットで、（Ｘ１￣Ｘ３∧∨）を表現している前提とする。この場合、参照する数値が最初の２つかどうかを判断する方法が必要になる。２つの数値をポップして計算結果をプッシュした後、スタック終端位置が、作業用メモリ４３の先頭位置を指している場合は、最初の２つの数値と判断する。また、（Ｘ１￣Ｘ３∧∨）形式の演算の場合は、２つの数値をポップして計算結果をプッシュした後の論理和計算のために、２回ポップする必要がある。この時、２回目のポップが失敗した場合は、最初の２つの数値と判断する。この場合、作業用メモリ４３上の数値の参照位置を示す参照位置４５のアドレス番号が「−１」となる場合に、ポップが失敗するようにしておけばよい。
【０１２２】
次に、（Ｘ１￣Ｘ３∧∨）形式の計算ロジックの最適化の方法を以下に示す。（Ｘ１￣Ｘ３∧∨）の実際の計算は、スタックからポップした数値Ｘｎ（１，−１，数値）との組み合わせで実施される。実際の論理式を、例えば、Ｘｎ∧（Ｘ１￣∧Ｘ３）とする。よって、スタックからポップされた数値によって、以下のように計算の省略が可能である。
【０１２３】
Ｘｎ＝１（TRUE）の場合、（Ｘ１￣∧Ｘ３）の計算を行なわず、「１」（TRUE）をプッシュする。Ｘｎ＝−１（FALSE）の場合、（Ｘ１￣∧Ｘ３）の計算結果をプッシュする。この場合、論理和の計算は省略する。
【０１２４】
Ｘｎ＝数値の場合、（Ｘ１∧Ｘ３）の計算結果によって、以下のように処理を切り替える。
（Ｘ１￣∧Ｘ３）の計算結果＝１（TRUE）の場合、「１」（TRUE）をプッシュする。
（Ｘ１￣∧Ｘ３）の計算結果＝−１（FALSE）の場合、Ｘｎ（数値）をプッシュする。
（Ｘ１￣∧Ｘ３）の計算結果＝数値の場合、Ｘｎと計算結果の数値をプッシュする。
【０１２５】
この第３実施形態によれば、以下の効果を得ることができる。
（９）論理記号の数値「２」「−２」を省略しても、逆ポーランド記法に並び替えた際の論理記号の位置の順番が固定されるような形式の表現方法で論理式を表現し、このような論理式を逆ポーランド記法に並び替えたものを数値列化している。よって、論理記号の数値「２」「−２」が先頭から数えて同じ順番の位置に現れる。よって、論理記号の数値を省略しても、その決まった位置に論理記号があるものとしてその論理記号から定まる演算を行うプログラムを組めば、参照した数値の個数が所定数に達したら、次に省略された論理記号の演算を行うようにする。このような規則化が可能なので、論理記号が省略されていても数値列の計算は行える。単純な禁則条件の場合は、本例の表記形式の採用により論理記号を削除して、比較的小さなデータ・メモリ量にすることが可能である。よって、比較的短い時間で計算することが可能である。
【０１２６】
また、論理記号の省略された位置が固定であるため、例えば選択肢の増加等の変更や、禁則条件の変更を行っても、その変更後の禁則条件を表す論理式においても論理記号の現れる位置は規則的に決まってくるので、論理記号の数値を省略した数値列の演算を行う演算規則に基づく演算プログラムは、論理式の変更の前後で共通に使用することができる。つまり、ＵＩを制御するソフトウェアにおいて、制御ロジックを変更することなく、任意の禁則条件を再現可能になる。また、論理記号を省略したので、作業用メモリ４３が使用するメモリ領域を少なくすることができる。
【０１２７】
前記実施形態に限定されず、以下の構成で実施することもできる。
（変形例１）前記実施形態では、数値列のスタック計算を、作業用メモリ４３上でスタック操作を行うことで作業用メモリ４３を活用して行う構成としたが、これに限定されない。スタック用のメモリ領域を別途確保し、作業用メモリから読み出した数値をスタック用メモリに書き込んでプッシュし、スタック用メモリから数値を読み出してポップする構成を採用することもできる。この構成によれば、スタック用メモリが必要になるとともに数値データの読出し・書込み回数が増える処理にはなるものの、数値列の演算で禁則情報を得る方法なので、複雑な演算が伴うことは同様に回避できる。
【０１２８】
（変形例２）前記第３実施形態では、逆ポーランド記法で表現した際に論理記号が位置する順番が常に固定されるような形式で論理式を作成することにより、論理記号を省略したが、これに限定されない。例えば論理記号の数値を省略するが、禁則条件を変更して論理式が変更される度に、参照数値が所定個数になる度に論理式の演算をするその所定個数の値を変更したプログラムを作成し直しても良い。
【０１２９】
（変形例３）前記実施形態におけるテーブル４４，４９のフォーマットに限定されない。例えば状態値置き換え処理の高速化のために、正の数値用と負の数値用に２つテーブルを用意する方法や、２の補数でIndex参照する方法等を採用することもできる。
【０１３０】
（変形例４）前記実施形態では、禁則条件を表す論理式を使用したが、禁則の反対で許可される条件を表す論理式を採用してもよい。この場合、数値列の計算結果に基づき選択可能状態に有効化されるべき選択肢を求めることにより、それ以外の選択肢を無効化する構成とする。禁則条件か許可条件かどちらを選択するかは、論理式が簡単で済む方を選択するのが好ましく、選択禁止の条件より選択許可の条件の方が少ない場合は、許可条件の論理式を採用することが好ましい。
【０１３１】
（変形例５）前記実施形態では、数値列のスタック計算を、作業用メモリ上でスタック操作を行うことで作業用メモリ上の数値の参照が終わったメモリ領域をスタック領域として活用する構成としたが、これに限定されない。スタック専用のメモリ領域を別途確保し、作業用メモリから読み出した数値をスタック専用のメモリ領域にプッシュしたり、スタック専用メモリ領域から数値をポップしたりする構成を採用できる。この構成によれば、スタック専用メモリ領域を別途確保する必要があり、しかも数値データの読出し・書込み回数が増える処理にはなるものの、数値列の演算で済むので、論理式の解析処理など複雑な演算が伴うことは同様に回避できる。
【０１３２】
（変形例６）前記実施形態では、ＵＩ２８上に用意されたすべての選択肢を論理変数にして論理式を作成したが、一部の選択肢のみを論理変数に表現した論理式を採用し数値列計算を行う構成とすることもできる。例えば他の設定項目での選択結果によらず、常に全選択肢が許可される設定項目については、敢えて計算して特定するまでもないので、この種の設定項目の選択肢については予め論理式から除外してもよい。つまり、ＵＩ２８上に用意された全設定項目の全選択肢について論理変数を定義する必要はなく、一部の設定項目の選択肢についてだけ論理変数を定義して論理式を作成するようにすればよい。
【０１３３】
（変形例７）前記実施形態では、論理式を表現した数値列の演算を含むＵＩ制御処理をＣＰＵにプログラムを実行させるソフトウェアにより実現したが、ＵＩ制御処理の少なくとも一部の処理をハードウェアにより実現することもできる。例えばＡＳＩＣ等のカスタマＩＣに禁則条件を示す論理式及びその演算プログラム用の回路を形成してＵＩ制御処理をハードウェア上の演算で行ってもよい。ＵＩ制御処理がパーソナルコンピュータ以外の例えばプリンタや複合機等の電子機器で行われる構成であれば、電子回路として論理式（数値列）を含む数値列演算回路を持つことも可能である。
【０１３４】
（変形例８）ユーザインターフェイス制御方法及び制御装置をパーソナルコンピュータ等のコンピュータにおいて実現したが、前述のようにプリンタや複合機等の電子機器において適用することもできる。この場合、電子機器に内蔵されたＣＰＵにＵＩ制御用プログラムを実行させる構成を採用してもよい。また、プリンタや複合機以外の電子機器に適用することもでき、例えばプロジェクタ、デジタルカメラ、デジタルビデオカメラ、携帯電話機などに適用することもできる。
【０１３５】
前記実施形態及び変形例から把握される技術的思想を以下に記載する。
（１）請求項１１に記載のユーザインターフェイス制御装置において、前記演算手段は、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わった作業用メモリ上のメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするユーザインターフェイス制御装置。
【０１３６】
（２）請求項１２に記載のユーザインターフェイス用プログラムにおいて、前記演算ステップでは、前記数値列を演算の際に格納する作業用メモリ上で該数値列の数値を順次参照するとともに、数値の参照が終わった作業用メモリ上のメモリ領域をスタック領域として用い、参照数値が論理変数に対応するものである場合は該参照数値を前記スタック領域にプッシュし、参照数値が論理演算子に対応するものである場合は前記スタック領域から複数の数値をポップして当該複数の数値に該論理演算子で規定される演算を施してその演算結果を前記スタック領域にプッシュするスタック操作を行うことで、前記数値列の演算を行うことを特徴とするプログラム。
【図面の簡単な説明】
【０１３７】
【図１】第１実施形態における印刷システムのハードウェア構成を示すブロック図。
【図２】印刷システムの概略構成を示すブロック図。
【図３】（ａ）〜（ｄ）メーカー側のコンピュータで予め行われる処理を説明する流れ図。
【図４】ＵＩ制御処理を示すフローチャート。
【図５】（ａ）〜（ｃ）作業用メモリにおける演算開始前の前処理を示す説明図。
【図６】（ａ）〜（ｄ）作業用メモリにおける演算手順を説明する説明図。
【図７】（ａ），（ｂ）ユーザインターフェイス制御について説明するためのＵＩの模式図。
【図８】第２実施形態におけるＵＩ制御処理を示すフローチャート。
【図９】（ａ）〜（ｃ）作業用メモリにおける演算開始前の前処理を示す説明図。
【図１０】（ａ）〜（ｆ）論理変数を含む数値式の演算方法を説明する説明図。
【図１１】（ａ）〜（ｄ）作業用メモリにおけるスタック操作による計算方法を説明する説明図。
【図１２】計算完了後の作業用メモリを示す図。
【図１３】（ａ），（ｂ）数値列簡略化の構成を説明するための説明図。
【図１４】（ａ），（ｂ）ユーザインターフェイス制御について説明するためのＵＩの模式図。
【図１５】従来技術におけるフラグテーブルを示す図。
【符号の説明】
【０１３８】
１０…印刷システム、１１…コンピュータ、１２…状態値適用手段、演算手段及び表示反映手段を構成するＣＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…ＨＤＤ、１６…ビデオ回路、１９…表示手段としての表示装置、２０…入力手段としての入力装置、２１…プリンタ、２３…アプリケーション部、２４…ビデオドライバ、２５…プリンタドライバ、３０…表示反映手段としてのＵＩ制御装置、３１…記憶手段としての記憶部、３２…データロード部、３３…状態値適用手段を構成するテーブル作成部、３４…演算手段としての演算部、３５…ＵＩ制御部、３８…印刷部、４３，４３Ａ…作業用メモリ、４４…テーブル、４５…参照位置、４６…スタック終端、５２…論理式、５５…数値列、５６…数値列、５７…数値列。
【図１】
2007299324.tif 000003
【図２】
2007299324.tif 000004
【図３】
2007299324.tif 000005
【図４】
2007299324.tif 000006
【図５】
2007299324.tif 000007
【図６】
2007299324.tif 000008
【図７】
2007299324.tif 000009
【図８】
2007299324.tif 000010
【図９】
2007299324.tif 000011
【図１０】
2007299324.tif 000012
【図１１】
2007299324.tif 000013
【図１２】
2007299324.tif 000014
【図１３】
2007299324.tif 000015
【図１４】
2007299324.tif 000016
【図１５】
2007299324.tif 000017