情報処理装置及びその制御方法、プログラム、並びに、コンピュータ読み取り可能な記録媒体
【課題】
本発明は、上記課題を解決するものであり、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することを目的とする。
【解決手段】
画像データ配置装置は、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段とにより実現する。
本発明は、上記課題を解決するものであり、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することを目的とする。
【解決手段】
画像データ配置装置は、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段とにより実現する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像配置領域に画像データを配置する処理を行う情報処理装置及びその制御方法、プログラム、並びに、コンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【0002】
従来、人間が感覚に頼る等により手作業で行わなければならなかったレイアウト方法を自動化することで、効率化を図るものはあるが、レイアウトするデータの種類(例えば、画像データ)及び配置後の形等についての複雑な条件に対応するレイアウトの方法は無かった。
【0003】
特許文献1には、画像配置領域を、ユーザーが希望する組み合わせに直線かつ一方向に切断可能にするように画像配置領域に画像データを自動で(ユーザーによる手作業のレイアウト操作無しに)レイアウトするという、一つのレイアウトの方法が記載されている。
【特許文献1】特開2007−251911
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、このレイアウトの方法は、切り易さや省スペースを考慮したレイアウト方法であるが、切り易さを向上させることを優先するがためにレイアウトの中に空きスペースができてしまう。また、設定値を順番に取得し、レイアウトして1つの候補を算出しているため、設定順次第で、結果が異なる方法であるため、複数の好適なレイアウトを算出した上で、この複数の候補をユーザーに提示し、ユーザーに選択させるなど、ユーザーにとって自由度の高い機能は不足しているため、ユーザーが得られるレイアウト結果は制限されてしまう。
【0005】
本発明は、上記課題を解決するものであり、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することを目的とする。
【0006】
また、好適なレイアウト候補を算出するに当たり、複数のデータを分類し、整理し、同じ種類のデータをまとめ、そのまとまった形が矩形という特殊な形になり、なおかつ省スペースになるようすることを更なる目的とする。
【課題を解決するための手段】
【0007】
本発明の情報処理装置は、第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置であって、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段とを有する。
【0008】
本発明の制御方法は、第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置における制御方法であって、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定ステップと、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定ステップと、前記設定ステップにより設定された配置数、及び前記指定ステップにより指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出ステップと、前記算出ステップにより算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御ステップとを有する。
【発明の効果】
【0009】
本発明によれば、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。
【発明を実施するための最良の形態】
【0010】
以下、添付図面に従って本発明に係わる画像データ配置装置(情報処理装置)の好ましい実施の形態について、図を用いながら詳述する。
【0011】
図1−1は、画像データ配置装置の内部の構成例を示すハードウェアブロック図である。
【0012】
画像データ配置装置(パソコン1は、情報処理の制御を行うCPU、プログラム等を記憶するROM及びRAM、レイアウト設定を入力するキーボード等の入力装置4からの入力を制御する入力制御部、レイアウト設定画面、レイアウト画面等を表示するためにディスプレイ2及び作成したレイアウトを印刷するための印刷装置3に対して出力制御を行う出力制御部、レイアウト配置処理の際に使用する画像データを格納するHD(HD内にDBが含まれている。)とから構成される。
【0013】
図1−2は、画像データ配置装置の内部の構成例を示すソフトウェアブロック図である。
【0014】
画像データ配置装置は、レイアウト設定等の入力情報を取得する入力制御部と、入力情報をもとにレイアウトを作成するレイアウト作成部と、レイアウト作成部がレイアウトの作成及び配置を行う際に使用するデータを格納するデータベース、レイアウト作成部が作成したレイアウト結果を表示及び印刷する出力制御部とから構成される。
【0015】
なお、レイアウト作成部は、入力装置情報取得機能、データ振り分け機能、矩形が出来る組み合わせデータベース作成準備機能、矩形が出来る組み合わせデータベース作成機能、矩形が出来る組み合わせ連結機能、レイアウト結果出力機能とからなる。
【0016】
また、データベースは、選択データDB(データベースa)、セット合計枚数DB(データベースb)、振り分け後データ1DB(データベースd)、振り分け後2DB(データベースe)、矩形ができる組み合わせデータDB(データベースf)、配置データDB(データベースh)、配置データ2DB(データベースi)とからなる。
【0017】
図17は、本システムの配置準備処理及び配置処理の概念を簡略化して説明した図である。ユーザーの数が5人で、それぞれのセット数が、7、18、4、9、10、14で、行数nを5と設定を行ったと仮定し、説明を行う。
【0018】
手順(1)〜(5)まであり、手順(1)〜(4)までは配置準備処理で、後述する図3の画像データ並び替え・配置処理のうち、配置処理の前までの処理を簡略化したものである。手順(5)が配置処理で、後述する図11の配置処理のフローチャートの説明における配置方法Fにあたる。
【0019】
手順(1)において、セット数の中から行数5で割り切れる物もの探し、nで割り切れるものリストに登録を行うため、7、18、4、9、10、14のうち、10を、5でわりきれるものリストに登録する。ここでいう5でわりきれるものリストは、上述した、データベースaに相当する。
【0020】
手順(2)において、手順(1)において5で割り切れるものリストに登録されなかったセット数のみ対象とし、それらのセット数の組み合わせを全て作成する。2組の組み合わせであれば、7と18、7と4、7と9、7と14の4通りあり、最大5組の組み合せまですべて求める。上記実処理フローの説明では、呼応述する図3のステップb3にて、データベースfを作る際に、セット数の組み合わせを全て算出している。
【0021】
手順(3)において、手順(2)において作成した組み合わせの中から、組み合わせて足して5で割りきれる組み合わせを検出するため、7と4と9の3組の組み合わせが合計値20で5の倍数となるのと、18と4と9と14の4組の組み合わせが、合計値45で5の倍数となるので、2つの組み合わせが検出される事になる。上記実処理フローの説明では、図3のステップb3にて、データベースfにデータを格納している部分に相当する。
【0022】
手順(4)において、手順(3)において検出された組み合わせから全ての数が矩形で配置できる組み合わせを検出し、矩形が出来る組み合わせリストに登録する。手順(3)において検出された7と4と9の3組の組み合わせと、18と4と9と14の4組の組み合わせのうち、すべての数が矩形で配置できる組み合わせは18と4と9と14の4組の組み合わせのみのため、この組み合わせを矩形が出来る組み合わせリストに登録する。矩形が出来る組み合わせリストは、上記実処理のフローでは、データベースh及びデータベースiに相当する。
【0023】
手順(5)において、5で割り切れるものリスト及び、矩形が出来る組み合わせリストをもとに、配置する。
【0024】
まず、手順(5−1)において、5で割り切れるものリストに入っているセット数のものを配置するため、セット数が10のデータを配置する。
【0025】
次に、手順(5−2)では、矩形が出来る組み合わせリストから組み合わせ数が一番多いものを選び、配置するため、18、4、9、14の4組の組み合わせを選び、セット数が18、4、9、14のデータをまとめて配置する。
【0026】
次に、手順(5−3)では、組み合わせリストに残りセット数で組み合わせ可能なものがなければあまり処理方法にて配置する。このあまり処理は、後述する図3のあまり処理のフローに相当する。例の場合、配置されていないセット数は7のみであるため、セット数7のデータを端から並べて配置する。あまり処理では、足して行数の倍数になる組み合わせを探し、それらを優先的に配置する。
【0027】
例えば、13と7と4が余っている場合は、13と7の2組の組み合わせが合計値20で行数5の倍数となるため、13と7の2組のセット数のデータをまとめて優先させて配置し、その後にセット数4のデータを配置する事になる。こうすることで、直線の境目を増やす事が出来る。
【0028】
上記例では、完成レイアウトは一つであるため、これに決定されるが、複数候補が出た場合には、ユーザーにレイアウトを選択させることや、システムで自動的に1つのレイアウトに絞ることが可能である。システムで自動的に絞る場合、条件としては、矩形の列数の最大値が一番小さい、レイアウト候補のうちの先頭に検出された、印刷して切り分ける時のカット数が一番少ない、等があり、それらの優先順位を決めてレイアウト候補が1つになるまで探すようにする。
【0029】
以下、具体的な処理の流れを説明する。
【0030】
図2は、画像データ配置装置における処理の流れを示すフローチャートである。各ステップは、画像データ配置装置のCPUにより実行される。
【0031】
ステップa1において、ユーザーからの指示に従って、アプリケーションを起動させる。
【0032】
ステップa2において、レイアウトの設定情報を取得する。具体的には、図18に示すレイアウト設定画面にてユーザーにより入力された設定情報を取得する。
【0033】
図18において、ユーザーは、データ0001〜データ××××の中からレイアウトを所望するデータを選択し枚数を入力する。この入力を1セットとする。他のセットを追加する場合は、「新規セット作成」ボタンをクリックすることで複数セットを更に設定することができる。例えば、3人に印刷した画像データを配布したい場合は、3人分の3セット入力することとなる。次に、画像データをレイアウトする場合の行数(配置数)を入力する。1頁あたりの列数を制限する場合は、制限をする列数を入力する。なお、矩形の列数制限及び矩形の行数制限(それぞれの上限数)については、後述する。なお、行又は列の方向を第1方向又は第2方向と称してもよい。
【0034】
ステップa3において、セットレイアウト設定の有無を判定し、セットレイアウトありの場合、ステップa4の画像データ並び替え処理に移行する。ステップa4の処理の説明は、図3〜図17の説明にて詳述する。
【0035】
ステップa5において、並び替え後のレイアウトをディスプレイに表示する。図19は、その表示形式の例である。現在、候補「1」が表示されているが、複数の候補がある場合、プルダウンメニューから複数の候補を選択可能である。他の候補を選択した場合、その候補に対応するレイアウトが表示される。レイアウト表示は、画像データが碁盤状に分割された画像配置領域に配置される配置イメージとして表示される。
【0036】
ステップa6において、ユーザーにより図19における印刷ボタンが押下された事を確認したら、ステップa7でユーザーにより選択されたレイアウトを印刷するために印刷装置に指示を行う。
【0037】
上述したとおり、ユーザーは、レイアウト設定を入力することにより、画像データは位置装置が、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。ユーザーはその複数の候補から選択し印刷指示を行うことで、印刷物を得ることが可能となる。
【0038】
次に、図2におけるステップa4の詳細処理について、図3〜図17を用いて説明を行う。ここでは、ステップa2で取得されたレイアウトの設定について、シール紙インデックスの一列あたりの画像枚数(行数)の設定枚数をN枚、1頁あたりの列数をC列、1行または1列の矩形は作らない設定はOFFとし、矩形の制限列数をA、矩形の制限行数をBとして、説明を行う。
【0039】
図3は、a4におけるデータ並び替え処理の詳細を示すフローチャート(画像データ並び替え・配置処理を示すフロー)である。
【0040】
ステップb1において、レイアウト設定画面で設定されたデータを取得し、データベースa、データベースbを作成する。データベースa及びデータベースbは、図15Aに示すとおりである。
【0041】
ステップb2において、データ別振り分け処理を行う。主にデータベースd、データベースeを作成する。データベースd及びデータベースeは、図15Aに示すとおりである。また、データベースh、データベースiについても部分的に作成行う。データベースhは、図15C、データベースiは、図15Dに示すとおりである。処理の説明は、図4の説明で詳述する。
【0042】
ステップb3において、矩形ができる組み合わせデータベース作成準備処理を行う。主にデータベースfの作成を目的とする。データベースfは、図15Bに示すとおりである。処理の説明は、図5の説明で詳述する。
【0043】
ステップb4において、矩形ができる組み合わせデータベース作成処理を行う。データベースh、データベースiの作成を目的とする。処理の説明は、図6の説明で詳述する。
【0044】
ステップb5において、組み合わせ合体配列の作成処理を行う。配列jの作成を目的とする。配列jは、図13に示すとおりである。処理の説明は、図7の説明で詳述する。
【0045】
ステップb6において、配置処理を行う。処理の説明は、図11の説明で詳述する。
【0046】
図4は、図3のステップb2におけるデータ別振り分け処理のフローチャートである。
【0047】
この処理では、まず合計枚数がN倍のデータのみを選別し、データの振り分けを行う例を記載する。
【0048】
ステップc1において、データベースbの先頭のデータを取得し、ステップc2において、データベースbのデータの合計枚数がN倍かどうかを判定する。N倍であればステップc3に進み、データベースdにデータを格納する。N倍でなければ ステップc6に進み、データベースeに処理中のデータを格納する。その後、ステップc4及びステップc5においてデータベースh、データベースiへの情報の格納を行うが、データベースh、データベースiについての説明は、後の矩形ができる組み合わせデータベース作成処理の説明にて行うため、ここでは格納する情報の内容のみ記す。
【0049】
ステップc4において、データベースhに、処理中のデータに基づき、組み合わせる数と合計値には処理中のデータを、必要列数には処理中のデータを行数Nで割った値を、組数には常に1を格納する。
【0050】
ステップc5において、データベースiに、処理中のデータに基づき、数字の配列を格納する。数字の配列は、3字で、1字目が0、2字目が行数N、3字目が処理中のデータを行数Nで割った値である。
【0051】
ステップc8において、データベースbのデータの合計枚数がN倍かどうかを判定する。N倍であればステップc9に進み、N倍でなければ 終了する。
【0052】
ステップc9では、データベースbの次のデータに移行し、ステップc2へ進み、同様の処理を行う。
【0053】
図5は、図3のステップb3における矩形ができる組み合わせデータベース作成準備処理のフローチャートである。
【0054】
この処理では、データベースeのデータの中から、すべてのデータの組み合わせを求め、その組み合わせるデータの中に、組み合わせの合計値をNで割った数の倍数であるセット数を含む組み合わせを選別し、データベースfを作成するためにデータの振り分けを行う。
【0055】
データベースfの内容は、ユーザーの数が9人で、セット数の組み合わせの例が、4、6、8、9、10、12、14、15、16の場合、図15Bのデータベースfのようになる。IDと、複数のセット数がひとまとまりになったデータが複数記録されている。例えばIDが8のデータには、4、6、8、12という4つのセット数が記録されている。
【0056】
ステップd1において、データベースeのデータからすべてのM組の組み合わせを求める。Mの初期値は2とし、最終的には2〜セット数までの組数を求めることになる。
【0057】
ステップd2において、M組のデータの合計枚数の合計SがNの倍数であるかどうか調べ、Nの倍数である場合、ステップd3に進み、合計がNの倍数でなければステップd5に進む。
【0058】
ステップd3において、M組のデータの中に、合計枚数が、組み合わせたデータの合計枚数の合計SをNで割った数の倍数であるものが1つ以上存在するかどうか調べ、存在すれば、ステップd4に進み、データベースfにそのM組の組み合わせの情報を記録する。存在しなければ、ステップd5へ進む。
【0059】
ステップd4において、データベースfにデータの組み合わせを記録する。
【0060】
ステップd5において、すべてのM組の組み合わせについて調べたか判断し、調べてなければ、ステップd8に進み、M組組み合わせの次の組み合わせのデータに移動し、ステップd2以降の処理を行う。すべてのM組の組み合わせを調べ終わるまで、同様の処理を繰り返す。ステップd5において、すべてのM組の組み合わせが調べ終わったと判断されると、ステップd6に進み、組み合わせる数がセット数と等しいかどうかを判別し、等しく無ければ、ステップd7へ進み、組み合わせる数Mを1増やしてステップd1に進む。ステップd6において、組み合わせる数Mがセット数と等しいと判断されるまで、同様の処理を繰り返し、等しいと判断されたら、すべての2〜セット数までの組数のデータの組み合わせを選別したことになるため、矩形ができる組み合わせデータベース作成準備処理を終了する。
【0061】
図6は、図3のb4における矩形ができる組み合わせデータベース作成処理のフローチャートである。
【0062】
この処理では、矩形ができる組み合わせデータベース作成準備処理で求めた、データの中に1つでも組み合わせの合計値をNで割った数の倍数のセット数を含む組み合わせの中から、さらに、すべてのデータを矩形にまとめて配置できるような組み合わせを選別し、データベースhとデータベースiにデータの追加を行う。矩形の制限列数Aや矩形の制限行数Bが設定されている場合は、A列B行の矩形の大きさを超えない大きさの矩形になるようにする。
【0063】
図3のデータ振り分け処理にて、セット数の中に行数Nの倍数がある場合は、すでにデータが格納されている。
【0064】
データベースhとデータベースiはID(格納番号)により、相互の情報を関連づけられている。データベースhとデータベースiの内容を図15Cのデータベースh、図15Dデータベースiにそれぞれ示す。データベースiは、データべースhの内容の一部を、配置処理で使用できる処理内部用のデータに変換したようなもので、データベースhとデータデータベースiのデータのIDが等しければ、それぞれのデータは変換前と変換後の関係のようなものであるといえる。
【0065】
データベースhは、矩形ができる組み合わせデータベースと呼び、データベースfより抜粋されたデータと同じ物が格納される。
【0066】
データベースiは、矩形ができる組み合わせデータベース_配置用と呼び、本矩形ができる組み合わせデータベース作成処理で作られる配列gが複数個格納される事になる。
【0067】
配列gは、データベースfに格納されているデータをもとに、本処理によりつくられる配列である。配列gの内容は、縦横フラグと、縦に並べる数と、横に並べる数といった、3種の情報からなる。そして配列gは、この3種の情報が、繰り返し複数個並んだものである。配列gの内容の例を図14に示す。これは、データベースfのあるIDのレコードに18、4、9、14という4つのセット数が格納されている場合に、このレコードを処理した際にできた配列gの内容である。残列数Xの初期値は4つのセット数の合計値45をN(5とする)で割った値であるので、9となる。データベースfの先頭のセット数、すなわち18が処理されて、0、9、2という配列ができ、次は、3番目の9から0、9、1ができ、次に2番目の4から1、2、2ができ、最後に4番目の14から1、2、7ができる。これらを順番につなぎ合わせて、0、9、2、0、9、1、1、2、2、1、2、7という数字の配列ができる。以下、処理の手順を説明する。
【0068】
ここでは、データベースfに格納されている1つあたりのデータをレコードと呼ぶ。また、レコードに複数格納されている、組み合わせる数をデータと呼ぶ。
【0069】
ステップe1において、データベースfの先頭のレコードに移動する。ステップe2において、残列数Xの初期値をまず、レコード内のすべてのデータの合計値の合計をNで割った値とし、データベースfに格納されている、先頭のレコードを取得し、レコードに含まれる複数のデータのうち先頭のデータが、Xの倍数であるかどうか調べ、倍数であれば、ステップe3へ進み、倍数でなければステップe5へ進む。
【0070】
ここで、1行または1列の矩形はつくらない設定である場合、データがXの倍数であっても、データを残列数Xで割った時の商が1の場合はステップe5へ進む。1行または1列の矩形はつくらない設定とは、図18に示す設定画面において、ユーザーがチェックボックスにチェックを入れている場合の設定である。また、倍数であっても、矩形の制限行数Bが設定されている場合、データを残列数Xで割った時の商がBを超える場合は、ステップe5へ進む。矩形の制限行数Bが設定とは、図18に示す設定画面において、ユーザーが「矩形の行数制限」のプルダウンメニューから選択した設定である。
【0071】
ステップe3において、配列gにデータを格納し、ステップe4へ進む。ここで配列gにデータを格納する場合、最初に、横を表す情報(0)を、次に、残列数Xを、そしてステップe2にてデータを残列数Xで割った時の商の3要素を格納する。
【0072】
ステップe4において、残行数Yからステップe1にてデータを残列数Xで割った時の商を引き、ステップe5へ進む。
【0073】
ステップe5において、レコード内のデータをすべて調べたかどうか判断し、調べてなければ、ステップe15へ進み、レコード内の次のデータに移動し、ステップe2に進み、レコード内のまだ配列gに追加されていない全てのデータについて同様の処理を繰り返す。その結果、配列gに3要素ずつ順番に追加されていく。レコード内のデータをすべて調べたと判断した場合、ステップe6へ進む。
【0074】
ステップe6において、レコードの中に残列数Xの倍数がひとつ以上あったかどうか判断し、あればステップe7へ進み、なければステップe13へ進む。
【0075】
ステップe7において、レコードに含まれる複数のデータのうちまだ配列gに格納されていない先頭のデータを取得し、そのデータが残行数Yの倍数であるかどうか調べ、倍数であれば、ステップe8へ進み、倍数でなければステップe10へ進む。ここで、1行または1列の矩形はつくらない設定である場合、データが残行数Yの倍数であっても、データを残行数Yで割った時の商が1の場合はステップe10へ進む。ただし、倍数であっても、矩形の制限列数Aが設定されている場合、データを残列数Yで割った時の商がAを超える場合は、ステップe10へ進む。矩形の制限列数Aが設定とは、図18に示す設定画面において、ユーザーが「矩形の列数制限」のプルダウンメニューから選択した設定である。
【0076】
ステップe8において、配列gにデータを格納し、ステップe9へ進む。ここで配列gにデータを格納する場合、配列gに、縦を表す情報(1)と、残行数Yと、ステップe7でデータを残行数Yで割った時の商の、3要素を追加する。
【0077】
ステップe9において、残列数Xよりステップe7でデータを残行数Yで割った時の商を引き、ステップe10へ進む。
【0078】
ステップe10において、レコード内のデータをすべて調べたかどうか判断し、調べたと判断した場合、ステップe11へ進む。調べてなければ、ステップe16に進み、レコード内の次のデータに移動し、ステップe7に進み、レコード内のまだ配列gに追加されていない全てのデータについて同様の処理を繰り返す。その結果、配列gに3要素ずつ情報が追加されていく。
【0079】
ステップe11において、レコード内のデータをすべて調べたと判断した場合、ステップe12へ進む。調べてなければ、ステップe14へ進む。
【0080】
ステップe12において、セット数の組み合わせを、矩形ができる組み合わせデータベースiに追加し、配列gを、矩形ができる組み合わせデータベースの配置用内部データ格納用であるデータベース iに追加し、ステップe13へ進む。
【0081】
ステップe14において、レコード内のまだ配列gに追加されていない全てのデータの中に、行算数Yの残数が1つ以上あった場合、ステップe18へ進み、そのデータへ移動し、ステップe2へ進み、ステップe11で、レコード内のデータをすべて調べたと判断されるまで同様の処理が繰り返される。
【0082】
ステップe13において、データベースfに格納されているすべてのレコードについて調べたか判断し、調べた場合は矩形ができる組み合わせデータベース作成処理を終了する。調べていない場合は、ステップe17へ進み、次のレコードへ移動し、ステップe2に進み、データベースfに格納されているすべてのレコードを調べ終えるまで同様の処理を繰り返す。
【0083】
図7は、図3のb5のリスト合体配列の配列作成処理のフローチャートである。
【0084】
この処理では、組み合わせ合体配列として配列jを作成する。配列jの一例を図13に示す。上記で作られた、矩形ができる組み合わせデータベースより、組み合わせを合体させて、すべてのセットを配置できる配置を抽出し、配列jに、合体する組み合わせ合体順の情報を格納する。
【0085】
ステップf1において、列数の指定があるかどうか判断し、あればステップf2へ進み、なければステップf3へ進む。
【0086】
ステップf2において、レイアウト設定画面で列数が指定されている場合の処理である。詳細説明は、図8の組み合わせ合体配列作成処理(列数指定時)の説明で行う。
【0087】
ステップf3は、レイアウト設定画面で列数が指定されていない場合の処理である。詳細説明は、図9の組み合わせ合体配列作成処理(列数指定なし時)の説明で行う。
【0088】
ステップf2あるいはステップf3の処理を終えた後、組み合わせ合体配列の作成処理を終了する。
【0089】
図8は、図7のf2におけるリスト合体データベース作成処理(列数指定時)のフローチャートである。
【0090】
ステップg1において、配列kを作成し、初期頁番号は1とする。ステップg2において、合計列数Sに0を入れ、Tに指定制限列数を入れる。SとTはそれぞれこのフローのみで使用する変数である。図12に配列kのデータ構造を示す。配列kはデータベース hのIDを複数記憶する配列で、2次元配列である。1ページあたりの制限列数が指定されている場合は、図12の配列k(列数制限がある場合)のように、配列kに複数ページ分のデータベースhのIDの情報が2次元的に格納される事になる。制限列数の指定が無い場合は配列k(列数制限がない場合)のように1ページ分のデータベースhのIDが1次元的に配列されるだけである。
【0091】
ステップg3において、データベースhの区切りレコードより前のレコードの中に、必要列数が1であり、組み合わせるセット合計枚数のすべての数について、それと同じ値の合計枚数を持つデータベースbのレコードにフラグがたっていないものがあるかどうか先頭レコードから順に検索して判断する。もしあればステップg4へ進み、なければステップg7へ進む。
【0092】
ステップg4において、ステップg3で最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップg5へ進む。
【0093】
ステップg5において、ステップg4で処理したレコードの必要列数を合計列数Sに足し、ステップg6へ進む。
【0094】
ステップg6において、Tに制限列数Cから合計列数Sを引いた値を格納し、ステップg7へ進む。
【0095】
ステップg7において、データベースhの区切りレコードより前のレコードの中に必要列数がTと等しく、なおかつ、データベースbのフラグを立っていないデータで、そのレコードの組み合わせるセット合計枚数と同じ合計枚数であるものがあるかどうか判断する。もしあればステップg8へ進み、なければステップg9へ進む。
【0096】
ステップg8において、ステップg7で最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップg10へ進む。ステップg9において、Tから1を引き、ステップg12へ進む。
【0097】
ステップg10において、合計列数にステップg8で処理したレコードの必要列数を加えてステップg11へいく。
【0098】
ステップg11において、Tに制限列数Cから合計列数Sを引いた者を入れ直し、ステップg12へ進む。
【0099】
ステップg12において、Tが0になったか判断し、0であれば、ステップg13へ進み、0でなければ、ステップg7へ進み、同様の処理を繰り返す。ステップg13において、合計列数Sが制限列数Cと等しくなったか判断し、等しければ、ステップg14へ進み、等しく無ければステップg16へ進む。
【0100】
ステップg14において、Tに制限列数Cから合計列数Sを引いたものを入れ直し、ステップg15へ進む。
【0101】
ステップg15において、余り処理(列数制限時)の処理を行い、ステップg16へ進む。余り処理(列数制限時)の詳細フローの説明は図102を用いて後述する。
【0102】
ステップg16において、データベースbのすべてのデータにフラグが立っているか確認する。立っていれば、ステップg18へ進み、立っていないものがあればステップg17へ進み、頁番号Pに1を追加してステップg2に進み、同様の処理を繰り返す。
【0103】
ステップg18において、データベースhで区切りレコードより後のレコードについて、組み合わるセット合計枚数(1つのみ)と同じ合計枚数のデータベースbのデータにフラグが立っていないものがあれば、検出された順番に配列kのP頁から追加格納する。その際、列数制限を超えた場合はkに次頁情報を追加しながら格納する。
【0104】
ステップg19において、配列kの合計列数にSを格納する。ステップg20において、配列kをリスト合体配列の配列jに格納する。
【0105】
列数制限時では複数の候補が算出されないため、配列jには1つの配列kが格納される事になる。
【0106】
図9は、図7のf3におけるリスト合体データベース作成処理(列数指定無し時)のフローチャートである。
【0107】
ステップh1において、配列kを新規作成する。頁番号の初期値は1である。合計列数Sは0とする。また、ここでデータベースbのフラグはすべておとす(0にする)。ここで、この処理では列数制限がない場合の処理であるため、頁番号は1から変化しない。
【0108】
ステップh2において、データベースhのレコードの中から組数が1であり、なおかつ区切りレコードより前のものすべてについて格納番号を配列kに検出された順番に格納し、データベースbでデータベースhの処理中のレコードの組み合わせるセット合計枚数と等しい合計枚数のレコードにフラグを立て、該当レコードのすべての必要列数の総計をSに加え、ステップh3へ進む。
【0109】
ステップh3において、データベースhを組数が多い順にソートし、合計値が多い順にソートし、ステップh4へ進む。
【0110】
ステップh4において、ソート後のデータベースhのi番目のレコードへ移動する。iは本処理のみで使用する変数であり、初期値は1とする。
【0111】
ステップh5において、データベースbで、処理中のデータベースhのレコードの組み合わせるセット合計枚数と等しい合計枚数であるデータにフラグが立っていないものがあるかどうか確認する。もしあれば、ステップh6へ進み、なければステップh8へ進む。
【0112】
ステップh6において、データベースhの処理中レコードの格納番号を配列kに追加格納し、そのレコードの必要列数をSに加えてステップh7へ進む。
【0113】
ステップh7において、データベースbでデータベースhの処理中のレコードの組み合わせるセット合計枚数と等しい合計枚数のレコードにフラグを立て(1にする)、ステップh8へ進む。
【0114】
ステップh8では、データベースhの全てのレコードを調べたかどうか判断し、調べていれば、ステップh8へ進み、調べてなければ、ステップh10へ進む。ステップh10では次のレコードに移動し、ステップh5に進み、同様の処理を繰り返す。
【0115】
ステップh9において、データベースbでフラグが立っていないレコードがあるかどうか判断する。あれば、ステップh12へ進み、なければ、ステップh11へ進む。
【0116】
ステップh12において、あまり処理(列指定なしの時)の処理を行い、ステップh11へ進む。あまり処理(列指定なしの時)の詳細フローの説明については図10−1を用い後述する。
【0117】
ステップh11において、配列kの合計列数にSを格納し、ステップh13へ進む。
【0118】
ステップh13において、ここまでに出来た配列kを配列jに格納し、ステップh14へ進む。
【0119】
ステップh14において、iに1を加えてステップh15へ進む。
【0120】
ステップh15において、データベースhのi番目のレコードの組数が1であるかどうか判断する。1であれば、組み合わせ合体データベース作成処理(列数指定無し時)を終了し、1でなければ、ステップh1へ進み、新たに配列kを作成し、同様の処理を繰り返す。
【0121】
複数レイアウト候補が算出される場合は、本処理終了後に、配列jに配列kが複数格納されている事になる。
【0122】
図101は、図9のh12におけるあまり処理(時列数制限なしの時)のフローチャートである。
【0123】
ステップi1において、データベースhの区切りレコードより後のレコードの中に、合計値を足してNの倍数になり、合計値の総数をNで割った商がTを超えないA組の組み合わせがあるかどうかを判断する。もしあればステップi2へ進み、なければステップi3へ進む。
【0124】
ステップi2において、最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップi4へ進む。
【0125】
ステップi3において、組み合わせる数Aに1を追加し、ステップi4へ進む。ステップi4において、組み合わせる数Aがデータベースbでフラグが立っていないレコードの数を超えたかどうかを判断し、超えていればステップi5へ進み、超えていなければステップI1へ進み、同様の処理を繰り返す。
【0126】
ステップi5において、データベースbにフラグが立っていないレコードがあるかどうか判断し、あればステップi7へ進み、なければ終了する。
【0127】
ステップi7において、データベースhの区切りレコードより後のレコードの組み合わせるセット合計枚数で、データベースbにフラグを立てていないものすべてについて、格納番号を配列kに検出された順に格納する。
【0128】
ステップi8において、本あまり処理(時列数制限なしの時)で配列kに格納されたデータベースhのレコードの合計値を足し合わせた総計をNで割った時の商を合計列数Sに格納し、その後終了する。
【0129】
図102は、図8のg15におけるあまり処理(列数制限)のフローチャートである。
【0130】
ステップi’1において、データベースhの区切りレコードより後のレコードの中に、合計値を足してNの倍数になり、合計値の総数をNで割った商がTを超えないA組の組み合わせがあるかどうかを判断する。Aは組み合わせる数を格納する変数であり、初期値は2とする。もしあればステップi’2へ進み、なければステップi’5へ進む。
【0131】
ステップi’2において、最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップi’3へ進む。
【0132】
ステップi’3において、合計列数Sにステップi’1で算出した、合計値の総数をNで割った商を、合計値Sに加えステップi’4へ進む。
【0133】
ステップi’4において、Tに制限列数Cから合計列数Sを引いた値を入れ直し、ステップi’6へ進む。ステップi’5において、Tから1を引き、ステップi’6へ進む。
【0134】
ステップi’6において、Tが0になったか、あるいは組み合わせる数Aがデータベースbでフラグが立っていないレコードの数を超えたかどうかを判断し、どちらも該当しなければ、ステップi’1へいき、同様の処理を繰り返す。どちらか該当すれば終了する。
【0135】
図11は、図3のb6における配置処理のフローチャートである。
【0136】
ステップj1において、オート選出処理が設定されたか判断し、設定されていれば、複数レイアウト候補がある場合に1つの候補に自動的に選出するためステップj2へ進み、設定されていなければ、全ての候補をレイアウト結果として表示するためステップj3へ進む。なお、オート選出処理の設定は、例えば、図18の設定画面にチェック項目を作り、ユーザーにより選択させる方法が考えられる。
【0137】
ステップj2において、オート選出処理を行う。詳細は図20を用い後述する。ステップj3において、レイアウトを表示する候補について、矩形ができる組み合わせデータベース hと組み合わせ合体配列の配列jをもとに、配置方法Fで配置を行う。配置方法Fは、端から順に配置する方法であり、詳細説明は図16を用い後述する。
【0138】
図16は、図11のj3における配置方法Fを説明する概略図である。
【0139】
配列jより配列kを取得する。本実施の形態においては、1頁あたりの列数制限なしの場合は、配列jには図12の配列kが1つ格納されている。複数レイアウトの候補がある場合、配列jは複数の内容の異なる配列kを格納している。1頁あたりの列数制限時には、候補が複数算出されるため、配列jには図13のように複数の配列kが格納される。ここでは、列数制限なし時として、図12の配列kの内容をもとに、端から順番に配置を行う。配列kには前記の通り、複数のデータベースhのIDが格納されている。
【0140】
ステップk1において、配列kの先頭の要素である要素1に格納されているのデータベースhのID1を取得する。データベースiより、取得したデータベースhのID1と同じID1のデータに格納されている数字配列「152」を取得する。これは1と5と23つの数字の配列である。1番目の数字は、0あるいは1のどちらかの値が記憶されており、1の場合は、2番目の数字が行数で3番目の数字が列数を示す事を表す。
【0141】
0の場合は、2番目の数字が列数で3番目の数字が行数を示す事を表す。ここでは0のため、2番目の数字の5と3番目の数字の2により、5行2列に合計枚数10のセットの配置を行う。合計枚数10のセットは、データベースd及びデータベースbから合計枚数10であるセットを検索し、最初に検出されたものとする。合計枚数10のセットとして、セットID5が検出される。データベースaをもとにセットID5の、ユーサーが選択したデータを全て、5行2列の中に配置する。
【0142】
ステップk2において、配列kの要素2に格納されているデータベースhのID2を取得する。これについては、ステップk1同様に配置を行う。ステップk3において、配列kの要素2に格納されているデータベースhのID12を取得する。データベースiより、取得したデータベースhのID12と同じID12のデータに格納されている数字配列「091142143144」を取得する。ステップk1では、数字配列は3つの数字であったが、この場合は、先頭から3つの数字毎に区切った情報をもとに配置を行う。3つの数字のうち、格納順の2番目と3番目の数を掛け合わせることで合計枚数を算出する。この合計枚数であるセットを求めるために、データベースbの先頭から順に、合計枚数に対応するセットIDを検索する。同じ合計枚数のセットがある場合は、セットIDが小さいセットを先に検出する。
【0143】
まず、ステップk31のように、最初の3文字「091」より、1行9列に合計枚数9のセットである、セットID4のセットの配置を行う。
【0144】
次に、ステップk32のように、次の3文字「142」により、4行2列に合計枚数8のセットである、セットID3のセットの配置を行う。
【0145】
次に、ステップk33のように、次の3文字「143」により、4行3列に合計枚数12のセットである、セットID6のセットの配置を行う。
【0146】
次に、ステップk34のように、次の3文字「144」により、4行4列に合計枚数16のセットである、セットID9のセットの配置を行う。
【0147】
ステップk4において、配列kの要素2に格納されているデータベースhのID3を取得する。これについては、ステップk3同様に配置を行う。
【0148】
ステップ5において、配列kの要素2に格納されているデータベースhのID19を取得する。これについて、データベースhのIDが13より大きいため、矩形で配置できないものであると判断し、データベースhのIDが19であるデータに格納されている組み合わせる数14を取得し、合計枚数がその数14であるセットID7のセットのデータを端から順番に配置する。これにより、完成図のように、すべてのセットが配置され、レイアウトが完成する。また、配列kが複数頁分の情報を持っている場合、頁毎のレイアウトをそれぞれ作成する。例えば、図13の配列jに格納されている配列k(1)の場合、2頁分のDB hのID情報を持っている。1頁目の情報は、1と11であり、2頁目の情報は、2と5と18であることを示している。
【0149】
図20は、図11におけるj2のオート選出処理のフローチャートである。画像データ配置装置が自動的に1つのレイアウトに絞るための処理である。選出条件の優先順位を、矩形に使われているセット数が一番多い、矩形の列数の最大値が一番小さい、切り分ける際のカット数が一番少ない、最初に検出された、の順とし、複数の候補の中から一つの候補を選出する処理である。優先条件は、例えば図18に示す設定画面に設定項目を表示させ、ユーザーに指定させても良い。
【0150】
ステップk1において、優先条件1で選出する。本実施の形態においては、矩形に使われている升目が一番多い候補を検出する。
【0151】
ステップ2において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk3へ進む。
【0152】
ステップk3において、さらにステップ1の条件で検出されたものの中から優先条件2で選出する。本実施の形態においては、矩形の列数の最大値が一番小さい候補を検出する。
【0153】
ステップk4において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk5へ進む。
【0154】
ステップk5において、さらにステップ3の条件で検出されたものの中から優先条件3で選出する。本実施の形態においては、カット数が一番少ないものを選出する。
【0155】
ステップk6において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk7へ進む。
【0156】
最後に、ステップk7において、最初に検出されたものを選出するため、必ず一つの候補が選ばれる事になる。
【0157】
ステップk8において、選出された1つの候補をレイアウト結果に表示するデータとして保存し、配置処理でこのデータを使用する。
【0158】
図21は、オート選出処理を設定した時の例である。セット合計枚数がそれぞれ、4、6、8、9、10、12、14、15、16の9セットのレイアウトの場合、図のように6候補ができる。
【0159】
これについてオート選出処理を行うと、まず優先条件1の、矩形に使われているセット数が一番多い候補の選出により、8セットが矩形でレイアウトされている、候補3、4、5、6が選出される。
【0160】
次に、優先条件2の、矩形の列数の最大値が一番小さい候補の選出により、一番列数の多い矩形の列数が7である候補5、6が選出される。
【0161】
そして、優先条件3の、切り分ける際のカット数が一番少ない候補の選出により、候補5、6はどちらも同じ8カットにより選出される。
【0162】
ここまでで1つの候補に絞られていないため、候補1から6までの情報が順番に格納されている場合は、順番に選出処理を行うため、最終的にシステムで最初に検出される候補5が選出される事になる。
【0163】
上述したとおり、本発明によれば、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。
【0164】
さらに、複数のレイアウト候補の中から優先順位に従ってレイアウト候補を提示することが可能であるため、ユーザーの選択負担を軽減することも可能となる。
【0165】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0166】
以上、一実施形態について示したが、本発明は、例えば、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。
【図面の簡単な説明】
【0167】
【図1−1】画像データ配置装置の内部の構成例を示すハードウェアブロック図である。
【図1−2】画像データ配置装置の内部の構成例を示すソフトウェアブロック図である。
【図2】画像データ配置装置における全体の流れを示すフローチャートである。
【図3】画像データ並び替え・配置処理を示すフローチャートである。
【図4】データ別振り分け処理のフローチャートである。
【図5】矩形ができる組み合わせデータベース作成準備処理のフローチャートである。
【図6】矩形ができる組み合わせデータベース作成処理のフローチャートである。
【図7】リスト合体配列の配列作成処理のフローチャートである。
【図8】リスト合体データベース作成処理(列数指定時)のフローチャートである。
【図9】リスト合体データベース作成処理(列数指定無し時)のフローチャートである。
【図10−1】あまり処理(列数制限なしの時)のフローチャートである。
【図10−2】あまり処理(列数制限ありの時)のフローチャートである。
【図11】画像配置処理のフローチャートである。
【図12】配列kの内容を示す図である。
【図13】配列jの内容を示す図である。
【図14】配列gの内容を示す図である。
【図15A】使用するデータベースとの内容を示す図である。
【図15B】使用するデータベースとの内容を示す図である。
【図15C】使用するデータベースとの内容を示す図である。
【図15D】使用するデータベースとの内容を示す図である。
【図16】配置方法Fの説明図である。
【図17】配置準備処理と配置処理の概略説明図である。
【図18】レイアウト設定画面を示す。
【図19】レイアウト結果画面を示す。
【図20】オート選出処理のフローチャートである。
【図21】オート選出処理例である。
【符号の説明】
【0168】
1 パソコン
2 ディスプレイ
3 印刷装置
4 入力装置
【技術分野】
【0001】
本発明は、画像配置領域に画像データを配置する処理を行う情報処理装置及びその制御方法、プログラム、並びに、コンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【0002】
従来、人間が感覚に頼る等により手作業で行わなければならなかったレイアウト方法を自動化することで、効率化を図るものはあるが、レイアウトするデータの種類(例えば、画像データ)及び配置後の形等についての複雑な条件に対応するレイアウトの方法は無かった。
【0003】
特許文献1には、画像配置領域を、ユーザーが希望する組み合わせに直線かつ一方向に切断可能にするように画像配置領域に画像データを自動で(ユーザーによる手作業のレイアウト操作無しに)レイアウトするという、一つのレイアウトの方法が記載されている。
【特許文献1】特開2007−251911
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、このレイアウトの方法は、切り易さや省スペースを考慮したレイアウト方法であるが、切り易さを向上させることを優先するがためにレイアウトの中に空きスペースができてしまう。また、設定値を順番に取得し、レイアウトして1つの候補を算出しているため、設定順次第で、結果が異なる方法であるため、複数の好適なレイアウトを算出した上で、この複数の候補をユーザーに提示し、ユーザーに選択させるなど、ユーザーにとって自由度の高い機能は不足しているため、ユーザーが得られるレイアウト結果は制限されてしまう。
【0005】
本発明は、上記課題を解決するものであり、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することを目的とする。
【0006】
また、好適なレイアウト候補を算出するに当たり、複数のデータを分類し、整理し、同じ種類のデータをまとめ、そのまとまった形が矩形という特殊な形になり、なおかつ省スペースになるようすることを更なる目的とする。
【課題を解決するための手段】
【0007】
本発明の情報処理装置は、第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置であって、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段とを有する。
【0008】
本発明の制御方法は、第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置における制御方法であって、前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定ステップと、複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定ステップと、前記設定ステップにより設定された配置数、及び前記指定ステップにより指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出ステップと、前記算出ステップにより算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御ステップとを有する。
【発明の効果】
【0009】
本発明によれば、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。
【発明を実施するための最良の形態】
【0010】
以下、添付図面に従って本発明に係わる画像データ配置装置(情報処理装置)の好ましい実施の形態について、図を用いながら詳述する。
【0011】
図1−1は、画像データ配置装置の内部の構成例を示すハードウェアブロック図である。
【0012】
画像データ配置装置(パソコン1は、情報処理の制御を行うCPU、プログラム等を記憶するROM及びRAM、レイアウト設定を入力するキーボード等の入力装置4からの入力を制御する入力制御部、レイアウト設定画面、レイアウト画面等を表示するためにディスプレイ2及び作成したレイアウトを印刷するための印刷装置3に対して出力制御を行う出力制御部、レイアウト配置処理の際に使用する画像データを格納するHD(HD内にDBが含まれている。)とから構成される。
【0013】
図1−2は、画像データ配置装置の内部の構成例を示すソフトウェアブロック図である。
【0014】
画像データ配置装置は、レイアウト設定等の入力情報を取得する入力制御部と、入力情報をもとにレイアウトを作成するレイアウト作成部と、レイアウト作成部がレイアウトの作成及び配置を行う際に使用するデータを格納するデータベース、レイアウト作成部が作成したレイアウト結果を表示及び印刷する出力制御部とから構成される。
【0015】
なお、レイアウト作成部は、入力装置情報取得機能、データ振り分け機能、矩形が出来る組み合わせデータベース作成準備機能、矩形が出来る組み合わせデータベース作成機能、矩形が出来る組み合わせ連結機能、レイアウト結果出力機能とからなる。
【0016】
また、データベースは、選択データDB(データベースa)、セット合計枚数DB(データベースb)、振り分け後データ1DB(データベースd)、振り分け後2DB(データベースe)、矩形ができる組み合わせデータDB(データベースf)、配置データDB(データベースh)、配置データ2DB(データベースi)とからなる。
【0017】
図17は、本システムの配置準備処理及び配置処理の概念を簡略化して説明した図である。ユーザーの数が5人で、それぞれのセット数が、7、18、4、9、10、14で、行数nを5と設定を行ったと仮定し、説明を行う。
【0018】
手順(1)〜(5)まであり、手順(1)〜(4)までは配置準備処理で、後述する図3の画像データ並び替え・配置処理のうち、配置処理の前までの処理を簡略化したものである。手順(5)が配置処理で、後述する図11の配置処理のフローチャートの説明における配置方法Fにあたる。
【0019】
手順(1)において、セット数の中から行数5で割り切れる物もの探し、nで割り切れるものリストに登録を行うため、7、18、4、9、10、14のうち、10を、5でわりきれるものリストに登録する。ここでいう5でわりきれるものリストは、上述した、データベースaに相当する。
【0020】
手順(2)において、手順(1)において5で割り切れるものリストに登録されなかったセット数のみ対象とし、それらのセット数の組み合わせを全て作成する。2組の組み合わせであれば、7と18、7と4、7と9、7と14の4通りあり、最大5組の組み合せまですべて求める。上記実処理フローの説明では、呼応述する図3のステップb3にて、データベースfを作る際に、セット数の組み合わせを全て算出している。
【0021】
手順(3)において、手順(2)において作成した組み合わせの中から、組み合わせて足して5で割りきれる組み合わせを検出するため、7と4と9の3組の組み合わせが合計値20で5の倍数となるのと、18と4と9と14の4組の組み合わせが、合計値45で5の倍数となるので、2つの組み合わせが検出される事になる。上記実処理フローの説明では、図3のステップb3にて、データベースfにデータを格納している部分に相当する。
【0022】
手順(4)において、手順(3)において検出された組み合わせから全ての数が矩形で配置できる組み合わせを検出し、矩形が出来る組み合わせリストに登録する。手順(3)において検出された7と4と9の3組の組み合わせと、18と4と9と14の4組の組み合わせのうち、すべての数が矩形で配置できる組み合わせは18と4と9と14の4組の組み合わせのみのため、この組み合わせを矩形が出来る組み合わせリストに登録する。矩形が出来る組み合わせリストは、上記実処理のフローでは、データベースh及びデータベースiに相当する。
【0023】
手順(5)において、5で割り切れるものリスト及び、矩形が出来る組み合わせリストをもとに、配置する。
【0024】
まず、手順(5−1)において、5で割り切れるものリストに入っているセット数のものを配置するため、セット数が10のデータを配置する。
【0025】
次に、手順(5−2)では、矩形が出来る組み合わせリストから組み合わせ数が一番多いものを選び、配置するため、18、4、9、14の4組の組み合わせを選び、セット数が18、4、9、14のデータをまとめて配置する。
【0026】
次に、手順(5−3)では、組み合わせリストに残りセット数で組み合わせ可能なものがなければあまり処理方法にて配置する。このあまり処理は、後述する図3のあまり処理のフローに相当する。例の場合、配置されていないセット数は7のみであるため、セット数7のデータを端から並べて配置する。あまり処理では、足して行数の倍数になる組み合わせを探し、それらを優先的に配置する。
【0027】
例えば、13と7と4が余っている場合は、13と7の2組の組み合わせが合計値20で行数5の倍数となるため、13と7の2組のセット数のデータをまとめて優先させて配置し、その後にセット数4のデータを配置する事になる。こうすることで、直線の境目を増やす事が出来る。
【0028】
上記例では、完成レイアウトは一つであるため、これに決定されるが、複数候補が出た場合には、ユーザーにレイアウトを選択させることや、システムで自動的に1つのレイアウトに絞ることが可能である。システムで自動的に絞る場合、条件としては、矩形の列数の最大値が一番小さい、レイアウト候補のうちの先頭に検出された、印刷して切り分ける時のカット数が一番少ない、等があり、それらの優先順位を決めてレイアウト候補が1つになるまで探すようにする。
【0029】
以下、具体的な処理の流れを説明する。
【0030】
図2は、画像データ配置装置における処理の流れを示すフローチャートである。各ステップは、画像データ配置装置のCPUにより実行される。
【0031】
ステップa1において、ユーザーからの指示に従って、アプリケーションを起動させる。
【0032】
ステップa2において、レイアウトの設定情報を取得する。具体的には、図18に示すレイアウト設定画面にてユーザーにより入力された設定情報を取得する。
【0033】
図18において、ユーザーは、データ0001〜データ××××の中からレイアウトを所望するデータを選択し枚数を入力する。この入力を1セットとする。他のセットを追加する場合は、「新規セット作成」ボタンをクリックすることで複数セットを更に設定することができる。例えば、3人に印刷した画像データを配布したい場合は、3人分の3セット入力することとなる。次に、画像データをレイアウトする場合の行数(配置数)を入力する。1頁あたりの列数を制限する場合は、制限をする列数を入力する。なお、矩形の列数制限及び矩形の行数制限(それぞれの上限数)については、後述する。なお、行又は列の方向を第1方向又は第2方向と称してもよい。
【0034】
ステップa3において、セットレイアウト設定の有無を判定し、セットレイアウトありの場合、ステップa4の画像データ並び替え処理に移行する。ステップa4の処理の説明は、図3〜図17の説明にて詳述する。
【0035】
ステップa5において、並び替え後のレイアウトをディスプレイに表示する。図19は、その表示形式の例である。現在、候補「1」が表示されているが、複数の候補がある場合、プルダウンメニューから複数の候補を選択可能である。他の候補を選択した場合、その候補に対応するレイアウトが表示される。レイアウト表示は、画像データが碁盤状に分割された画像配置領域に配置される配置イメージとして表示される。
【0036】
ステップa6において、ユーザーにより図19における印刷ボタンが押下された事を確認したら、ステップa7でユーザーにより選択されたレイアウトを印刷するために印刷装置に指示を行う。
【0037】
上述したとおり、ユーザーは、レイアウト設定を入力することにより、画像データは位置装置が、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。ユーザーはその複数の候補から選択し印刷指示を行うことで、印刷物を得ることが可能となる。
【0038】
次に、図2におけるステップa4の詳細処理について、図3〜図17を用いて説明を行う。ここでは、ステップa2で取得されたレイアウトの設定について、シール紙インデックスの一列あたりの画像枚数(行数)の設定枚数をN枚、1頁あたりの列数をC列、1行または1列の矩形は作らない設定はOFFとし、矩形の制限列数をA、矩形の制限行数をBとして、説明を行う。
【0039】
図3は、a4におけるデータ並び替え処理の詳細を示すフローチャート(画像データ並び替え・配置処理を示すフロー)である。
【0040】
ステップb1において、レイアウト設定画面で設定されたデータを取得し、データベースa、データベースbを作成する。データベースa及びデータベースbは、図15Aに示すとおりである。
【0041】
ステップb2において、データ別振り分け処理を行う。主にデータベースd、データベースeを作成する。データベースd及びデータベースeは、図15Aに示すとおりである。また、データベースh、データベースiについても部分的に作成行う。データベースhは、図15C、データベースiは、図15Dに示すとおりである。処理の説明は、図4の説明で詳述する。
【0042】
ステップb3において、矩形ができる組み合わせデータベース作成準備処理を行う。主にデータベースfの作成を目的とする。データベースfは、図15Bに示すとおりである。処理の説明は、図5の説明で詳述する。
【0043】
ステップb4において、矩形ができる組み合わせデータベース作成処理を行う。データベースh、データベースiの作成を目的とする。処理の説明は、図6の説明で詳述する。
【0044】
ステップb5において、組み合わせ合体配列の作成処理を行う。配列jの作成を目的とする。配列jは、図13に示すとおりである。処理の説明は、図7の説明で詳述する。
【0045】
ステップb6において、配置処理を行う。処理の説明は、図11の説明で詳述する。
【0046】
図4は、図3のステップb2におけるデータ別振り分け処理のフローチャートである。
【0047】
この処理では、まず合計枚数がN倍のデータのみを選別し、データの振り分けを行う例を記載する。
【0048】
ステップc1において、データベースbの先頭のデータを取得し、ステップc2において、データベースbのデータの合計枚数がN倍かどうかを判定する。N倍であればステップc3に進み、データベースdにデータを格納する。N倍でなければ ステップc6に進み、データベースeに処理中のデータを格納する。その後、ステップc4及びステップc5においてデータベースh、データベースiへの情報の格納を行うが、データベースh、データベースiについての説明は、後の矩形ができる組み合わせデータベース作成処理の説明にて行うため、ここでは格納する情報の内容のみ記す。
【0049】
ステップc4において、データベースhに、処理中のデータに基づき、組み合わせる数と合計値には処理中のデータを、必要列数には処理中のデータを行数Nで割った値を、組数には常に1を格納する。
【0050】
ステップc5において、データベースiに、処理中のデータに基づき、数字の配列を格納する。数字の配列は、3字で、1字目が0、2字目が行数N、3字目が処理中のデータを行数Nで割った値である。
【0051】
ステップc8において、データベースbのデータの合計枚数がN倍かどうかを判定する。N倍であればステップc9に進み、N倍でなければ 終了する。
【0052】
ステップc9では、データベースbの次のデータに移行し、ステップc2へ進み、同様の処理を行う。
【0053】
図5は、図3のステップb3における矩形ができる組み合わせデータベース作成準備処理のフローチャートである。
【0054】
この処理では、データベースeのデータの中から、すべてのデータの組み合わせを求め、その組み合わせるデータの中に、組み合わせの合計値をNで割った数の倍数であるセット数を含む組み合わせを選別し、データベースfを作成するためにデータの振り分けを行う。
【0055】
データベースfの内容は、ユーザーの数が9人で、セット数の組み合わせの例が、4、6、8、9、10、12、14、15、16の場合、図15Bのデータベースfのようになる。IDと、複数のセット数がひとまとまりになったデータが複数記録されている。例えばIDが8のデータには、4、6、8、12という4つのセット数が記録されている。
【0056】
ステップd1において、データベースeのデータからすべてのM組の組み合わせを求める。Mの初期値は2とし、最終的には2〜セット数までの組数を求めることになる。
【0057】
ステップd2において、M組のデータの合計枚数の合計SがNの倍数であるかどうか調べ、Nの倍数である場合、ステップd3に進み、合計がNの倍数でなければステップd5に進む。
【0058】
ステップd3において、M組のデータの中に、合計枚数が、組み合わせたデータの合計枚数の合計SをNで割った数の倍数であるものが1つ以上存在するかどうか調べ、存在すれば、ステップd4に進み、データベースfにそのM組の組み合わせの情報を記録する。存在しなければ、ステップd5へ進む。
【0059】
ステップd4において、データベースfにデータの組み合わせを記録する。
【0060】
ステップd5において、すべてのM組の組み合わせについて調べたか判断し、調べてなければ、ステップd8に進み、M組組み合わせの次の組み合わせのデータに移動し、ステップd2以降の処理を行う。すべてのM組の組み合わせを調べ終わるまで、同様の処理を繰り返す。ステップd5において、すべてのM組の組み合わせが調べ終わったと判断されると、ステップd6に進み、組み合わせる数がセット数と等しいかどうかを判別し、等しく無ければ、ステップd7へ進み、組み合わせる数Mを1増やしてステップd1に進む。ステップd6において、組み合わせる数Mがセット数と等しいと判断されるまで、同様の処理を繰り返し、等しいと判断されたら、すべての2〜セット数までの組数のデータの組み合わせを選別したことになるため、矩形ができる組み合わせデータベース作成準備処理を終了する。
【0061】
図6は、図3のb4における矩形ができる組み合わせデータベース作成処理のフローチャートである。
【0062】
この処理では、矩形ができる組み合わせデータベース作成準備処理で求めた、データの中に1つでも組み合わせの合計値をNで割った数の倍数のセット数を含む組み合わせの中から、さらに、すべてのデータを矩形にまとめて配置できるような組み合わせを選別し、データベースhとデータベースiにデータの追加を行う。矩形の制限列数Aや矩形の制限行数Bが設定されている場合は、A列B行の矩形の大きさを超えない大きさの矩形になるようにする。
【0063】
図3のデータ振り分け処理にて、セット数の中に行数Nの倍数がある場合は、すでにデータが格納されている。
【0064】
データベースhとデータベースiはID(格納番号)により、相互の情報を関連づけられている。データベースhとデータベースiの内容を図15Cのデータベースh、図15Dデータベースiにそれぞれ示す。データベースiは、データべースhの内容の一部を、配置処理で使用できる処理内部用のデータに変換したようなもので、データベースhとデータデータベースiのデータのIDが等しければ、それぞれのデータは変換前と変換後の関係のようなものであるといえる。
【0065】
データベースhは、矩形ができる組み合わせデータベースと呼び、データベースfより抜粋されたデータと同じ物が格納される。
【0066】
データベースiは、矩形ができる組み合わせデータベース_配置用と呼び、本矩形ができる組み合わせデータベース作成処理で作られる配列gが複数個格納される事になる。
【0067】
配列gは、データベースfに格納されているデータをもとに、本処理によりつくられる配列である。配列gの内容は、縦横フラグと、縦に並べる数と、横に並べる数といった、3種の情報からなる。そして配列gは、この3種の情報が、繰り返し複数個並んだものである。配列gの内容の例を図14に示す。これは、データベースfのあるIDのレコードに18、4、9、14という4つのセット数が格納されている場合に、このレコードを処理した際にできた配列gの内容である。残列数Xの初期値は4つのセット数の合計値45をN(5とする)で割った値であるので、9となる。データベースfの先頭のセット数、すなわち18が処理されて、0、9、2という配列ができ、次は、3番目の9から0、9、1ができ、次に2番目の4から1、2、2ができ、最後に4番目の14から1、2、7ができる。これらを順番につなぎ合わせて、0、9、2、0、9、1、1、2、2、1、2、7という数字の配列ができる。以下、処理の手順を説明する。
【0068】
ここでは、データベースfに格納されている1つあたりのデータをレコードと呼ぶ。また、レコードに複数格納されている、組み合わせる数をデータと呼ぶ。
【0069】
ステップe1において、データベースfの先頭のレコードに移動する。ステップe2において、残列数Xの初期値をまず、レコード内のすべてのデータの合計値の合計をNで割った値とし、データベースfに格納されている、先頭のレコードを取得し、レコードに含まれる複数のデータのうち先頭のデータが、Xの倍数であるかどうか調べ、倍数であれば、ステップe3へ進み、倍数でなければステップe5へ進む。
【0070】
ここで、1行または1列の矩形はつくらない設定である場合、データがXの倍数であっても、データを残列数Xで割った時の商が1の場合はステップe5へ進む。1行または1列の矩形はつくらない設定とは、図18に示す設定画面において、ユーザーがチェックボックスにチェックを入れている場合の設定である。また、倍数であっても、矩形の制限行数Bが設定されている場合、データを残列数Xで割った時の商がBを超える場合は、ステップe5へ進む。矩形の制限行数Bが設定とは、図18に示す設定画面において、ユーザーが「矩形の行数制限」のプルダウンメニューから選択した設定である。
【0071】
ステップe3において、配列gにデータを格納し、ステップe4へ進む。ここで配列gにデータを格納する場合、最初に、横を表す情報(0)を、次に、残列数Xを、そしてステップe2にてデータを残列数Xで割った時の商の3要素を格納する。
【0072】
ステップe4において、残行数Yからステップe1にてデータを残列数Xで割った時の商を引き、ステップe5へ進む。
【0073】
ステップe5において、レコード内のデータをすべて調べたかどうか判断し、調べてなければ、ステップe15へ進み、レコード内の次のデータに移動し、ステップe2に進み、レコード内のまだ配列gに追加されていない全てのデータについて同様の処理を繰り返す。その結果、配列gに3要素ずつ順番に追加されていく。レコード内のデータをすべて調べたと判断した場合、ステップe6へ進む。
【0074】
ステップe6において、レコードの中に残列数Xの倍数がひとつ以上あったかどうか判断し、あればステップe7へ進み、なければステップe13へ進む。
【0075】
ステップe7において、レコードに含まれる複数のデータのうちまだ配列gに格納されていない先頭のデータを取得し、そのデータが残行数Yの倍数であるかどうか調べ、倍数であれば、ステップe8へ進み、倍数でなければステップe10へ進む。ここで、1行または1列の矩形はつくらない設定である場合、データが残行数Yの倍数であっても、データを残行数Yで割った時の商が1の場合はステップe10へ進む。ただし、倍数であっても、矩形の制限列数Aが設定されている場合、データを残列数Yで割った時の商がAを超える場合は、ステップe10へ進む。矩形の制限列数Aが設定とは、図18に示す設定画面において、ユーザーが「矩形の列数制限」のプルダウンメニューから選択した設定である。
【0076】
ステップe8において、配列gにデータを格納し、ステップe9へ進む。ここで配列gにデータを格納する場合、配列gに、縦を表す情報(1)と、残行数Yと、ステップe7でデータを残行数Yで割った時の商の、3要素を追加する。
【0077】
ステップe9において、残列数Xよりステップe7でデータを残行数Yで割った時の商を引き、ステップe10へ進む。
【0078】
ステップe10において、レコード内のデータをすべて調べたかどうか判断し、調べたと判断した場合、ステップe11へ進む。調べてなければ、ステップe16に進み、レコード内の次のデータに移動し、ステップe7に進み、レコード内のまだ配列gに追加されていない全てのデータについて同様の処理を繰り返す。その結果、配列gに3要素ずつ情報が追加されていく。
【0079】
ステップe11において、レコード内のデータをすべて調べたと判断した場合、ステップe12へ進む。調べてなければ、ステップe14へ進む。
【0080】
ステップe12において、セット数の組み合わせを、矩形ができる組み合わせデータベースiに追加し、配列gを、矩形ができる組み合わせデータベースの配置用内部データ格納用であるデータベース iに追加し、ステップe13へ進む。
【0081】
ステップe14において、レコード内のまだ配列gに追加されていない全てのデータの中に、行算数Yの残数が1つ以上あった場合、ステップe18へ進み、そのデータへ移動し、ステップe2へ進み、ステップe11で、レコード内のデータをすべて調べたと判断されるまで同様の処理が繰り返される。
【0082】
ステップe13において、データベースfに格納されているすべてのレコードについて調べたか判断し、調べた場合は矩形ができる組み合わせデータベース作成処理を終了する。調べていない場合は、ステップe17へ進み、次のレコードへ移動し、ステップe2に進み、データベースfに格納されているすべてのレコードを調べ終えるまで同様の処理を繰り返す。
【0083】
図7は、図3のb5のリスト合体配列の配列作成処理のフローチャートである。
【0084】
この処理では、組み合わせ合体配列として配列jを作成する。配列jの一例を図13に示す。上記で作られた、矩形ができる組み合わせデータベースより、組み合わせを合体させて、すべてのセットを配置できる配置を抽出し、配列jに、合体する組み合わせ合体順の情報を格納する。
【0085】
ステップf1において、列数の指定があるかどうか判断し、あればステップf2へ進み、なければステップf3へ進む。
【0086】
ステップf2において、レイアウト設定画面で列数が指定されている場合の処理である。詳細説明は、図8の組み合わせ合体配列作成処理(列数指定時)の説明で行う。
【0087】
ステップf3は、レイアウト設定画面で列数が指定されていない場合の処理である。詳細説明は、図9の組み合わせ合体配列作成処理(列数指定なし時)の説明で行う。
【0088】
ステップf2あるいはステップf3の処理を終えた後、組み合わせ合体配列の作成処理を終了する。
【0089】
図8は、図7のf2におけるリスト合体データベース作成処理(列数指定時)のフローチャートである。
【0090】
ステップg1において、配列kを作成し、初期頁番号は1とする。ステップg2において、合計列数Sに0を入れ、Tに指定制限列数を入れる。SとTはそれぞれこのフローのみで使用する変数である。図12に配列kのデータ構造を示す。配列kはデータベース hのIDを複数記憶する配列で、2次元配列である。1ページあたりの制限列数が指定されている場合は、図12の配列k(列数制限がある場合)のように、配列kに複数ページ分のデータベースhのIDの情報が2次元的に格納される事になる。制限列数の指定が無い場合は配列k(列数制限がない場合)のように1ページ分のデータベースhのIDが1次元的に配列されるだけである。
【0091】
ステップg3において、データベースhの区切りレコードより前のレコードの中に、必要列数が1であり、組み合わせるセット合計枚数のすべての数について、それと同じ値の合計枚数を持つデータベースbのレコードにフラグがたっていないものがあるかどうか先頭レコードから順に検索して判断する。もしあればステップg4へ進み、なければステップg7へ進む。
【0092】
ステップg4において、ステップg3で最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップg5へ進む。
【0093】
ステップg5において、ステップg4で処理したレコードの必要列数を合計列数Sに足し、ステップg6へ進む。
【0094】
ステップg6において、Tに制限列数Cから合計列数Sを引いた値を格納し、ステップg7へ進む。
【0095】
ステップg7において、データベースhの区切りレコードより前のレコードの中に必要列数がTと等しく、なおかつ、データベースbのフラグを立っていないデータで、そのレコードの組み合わせるセット合計枚数と同じ合計枚数であるものがあるかどうか判断する。もしあればステップg8へ進み、なければステップg9へ進む。
【0096】
ステップg8において、ステップg7で最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップg10へ進む。ステップg9において、Tから1を引き、ステップg12へ進む。
【0097】
ステップg10において、合計列数にステップg8で処理したレコードの必要列数を加えてステップg11へいく。
【0098】
ステップg11において、Tに制限列数Cから合計列数Sを引いた者を入れ直し、ステップg12へ進む。
【0099】
ステップg12において、Tが0になったか判断し、0であれば、ステップg13へ進み、0でなければ、ステップg7へ進み、同様の処理を繰り返す。ステップg13において、合計列数Sが制限列数Cと等しくなったか判断し、等しければ、ステップg14へ進み、等しく無ければステップg16へ進む。
【0100】
ステップg14において、Tに制限列数Cから合計列数Sを引いたものを入れ直し、ステップg15へ進む。
【0101】
ステップg15において、余り処理(列数制限時)の処理を行い、ステップg16へ進む。余り処理(列数制限時)の詳細フローの説明は図102を用いて後述する。
【0102】
ステップg16において、データベースbのすべてのデータにフラグが立っているか確認する。立っていれば、ステップg18へ進み、立っていないものがあればステップg17へ進み、頁番号Pに1を追加してステップg2に進み、同様の処理を繰り返す。
【0103】
ステップg18において、データベースhで区切りレコードより後のレコードについて、組み合わるセット合計枚数(1つのみ)と同じ合計枚数のデータベースbのデータにフラグが立っていないものがあれば、検出された順番に配列kのP頁から追加格納する。その際、列数制限を超えた場合はkに次頁情報を追加しながら格納する。
【0104】
ステップg19において、配列kの合計列数にSを格納する。ステップg20において、配列kをリスト合体配列の配列jに格納する。
【0105】
列数制限時では複数の候補が算出されないため、配列jには1つの配列kが格納される事になる。
【0106】
図9は、図7のf3におけるリスト合体データベース作成処理(列数指定無し時)のフローチャートである。
【0107】
ステップh1において、配列kを新規作成する。頁番号の初期値は1である。合計列数Sは0とする。また、ここでデータベースbのフラグはすべておとす(0にする)。ここで、この処理では列数制限がない場合の処理であるため、頁番号は1から変化しない。
【0108】
ステップh2において、データベースhのレコードの中から組数が1であり、なおかつ区切りレコードより前のものすべてについて格納番号を配列kに検出された順番に格納し、データベースbでデータベースhの処理中のレコードの組み合わせるセット合計枚数と等しい合計枚数のレコードにフラグを立て、該当レコードのすべての必要列数の総計をSに加え、ステップh3へ進む。
【0109】
ステップh3において、データベースhを組数が多い順にソートし、合計値が多い順にソートし、ステップh4へ進む。
【0110】
ステップh4において、ソート後のデータベースhのi番目のレコードへ移動する。iは本処理のみで使用する変数であり、初期値は1とする。
【0111】
ステップh5において、データベースbで、処理中のデータベースhのレコードの組み合わせるセット合計枚数と等しい合計枚数であるデータにフラグが立っていないものがあるかどうか確認する。もしあれば、ステップh6へ進み、なければステップh8へ進む。
【0112】
ステップh6において、データベースhの処理中レコードの格納番号を配列kに追加格納し、そのレコードの必要列数をSに加えてステップh7へ進む。
【0113】
ステップh7において、データベースbでデータベースhの処理中のレコードの組み合わせるセット合計枚数と等しい合計枚数のレコードにフラグを立て(1にする)、ステップh8へ進む。
【0114】
ステップh8では、データベースhの全てのレコードを調べたかどうか判断し、調べていれば、ステップh8へ進み、調べてなければ、ステップh10へ進む。ステップh10では次のレコードに移動し、ステップh5に進み、同様の処理を繰り返す。
【0115】
ステップh9において、データベースbでフラグが立っていないレコードがあるかどうか判断する。あれば、ステップh12へ進み、なければ、ステップh11へ進む。
【0116】
ステップh12において、あまり処理(列指定なしの時)の処理を行い、ステップh11へ進む。あまり処理(列指定なしの時)の詳細フローの説明については図10−1を用い後述する。
【0117】
ステップh11において、配列kの合計列数にSを格納し、ステップh13へ進む。
【0118】
ステップh13において、ここまでに出来た配列kを配列jに格納し、ステップh14へ進む。
【0119】
ステップh14において、iに1を加えてステップh15へ進む。
【0120】
ステップh15において、データベースhのi番目のレコードの組数が1であるかどうか判断する。1であれば、組み合わせ合体データベース作成処理(列数指定無し時)を終了し、1でなければ、ステップh1へ進み、新たに配列kを作成し、同様の処理を繰り返す。
【0121】
複数レイアウト候補が算出される場合は、本処理終了後に、配列jに配列kが複数格納されている事になる。
【0122】
図101は、図9のh12におけるあまり処理(時列数制限なしの時)のフローチャートである。
【0123】
ステップi1において、データベースhの区切りレコードより後のレコードの中に、合計値を足してNの倍数になり、合計値の総数をNで割った商がTを超えないA組の組み合わせがあるかどうかを判断する。もしあればステップi2へ進み、なければステップi3へ進む。
【0124】
ステップi2において、最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップi4へ進む。
【0125】
ステップi3において、組み合わせる数Aに1を追加し、ステップi4へ進む。ステップi4において、組み合わせる数Aがデータベースbでフラグが立っていないレコードの数を超えたかどうかを判断し、超えていればステップi5へ進み、超えていなければステップI1へ進み、同様の処理を繰り返す。
【0126】
ステップi5において、データベースbにフラグが立っていないレコードがあるかどうか判断し、あればステップi7へ進み、なければ終了する。
【0127】
ステップi7において、データベースhの区切りレコードより後のレコードの組み合わせるセット合計枚数で、データベースbにフラグを立てていないものすべてについて、格納番号を配列kに検出された順に格納する。
【0128】
ステップi8において、本あまり処理(時列数制限なしの時)で配列kに格納されたデータベースhのレコードの合計値を足し合わせた総計をNで割った時の商を合計列数Sに格納し、その後終了する。
【0129】
図102は、図8のg15におけるあまり処理(列数制限)のフローチャートである。
【0130】
ステップi’1において、データベースhの区切りレコードより後のレコードの中に、合計値を足してNの倍数になり、合計値の総数をNで割った商がTを超えないA組の組み合わせがあるかどうかを判断する。Aは組み合わせる数を格納する変数であり、初期値は2とする。もしあればステップi’2へ進み、なければステップi’5へ進む。
【0131】
ステップi’2において、最初に検出されたデータベースhのレコードの格納番号を配列kのP頁の情報を記憶する領域に追加し、データベースbのデータについて、そのレコードの組み合わせるセット合計枚数に等しい合計列数をもつものを先頭から検索し、あればフラグを立て、ステップi’3へ進む。
【0132】
ステップi’3において、合計列数Sにステップi’1で算出した、合計値の総数をNで割った商を、合計値Sに加えステップi’4へ進む。
【0133】
ステップi’4において、Tに制限列数Cから合計列数Sを引いた値を入れ直し、ステップi’6へ進む。ステップi’5において、Tから1を引き、ステップi’6へ進む。
【0134】
ステップi’6において、Tが0になったか、あるいは組み合わせる数Aがデータベースbでフラグが立っていないレコードの数を超えたかどうかを判断し、どちらも該当しなければ、ステップi’1へいき、同様の処理を繰り返す。どちらか該当すれば終了する。
【0135】
図11は、図3のb6における配置処理のフローチャートである。
【0136】
ステップj1において、オート選出処理が設定されたか判断し、設定されていれば、複数レイアウト候補がある場合に1つの候補に自動的に選出するためステップj2へ進み、設定されていなければ、全ての候補をレイアウト結果として表示するためステップj3へ進む。なお、オート選出処理の設定は、例えば、図18の設定画面にチェック項目を作り、ユーザーにより選択させる方法が考えられる。
【0137】
ステップj2において、オート選出処理を行う。詳細は図20を用い後述する。ステップj3において、レイアウトを表示する候補について、矩形ができる組み合わせデータベース hと組み合わせ合体配列の配列jをもとに、配置方法Fで配置を行う。配置方法Fは、端から順に配置する方法であり、詳細説明は図16を用い後述する。
【0138】
図16は、図11のj3における配置方法Fを説明する概略図である。
【0139】
配列jより配列kを取得する。本実施の形態においては、1頁あたりの列数制限なしの場合は、配列jには図12の配列kが1つ格納されている。複数レイアウトの候補がある場合、配列jは複数の内容の異なる配列kを格納している。1頁あたりの列数制限時には、候補が複数算出されるため、配列jには図13のように複数の配列kが格納される。ここでは、列数制限なし時として、図12の配列kの内容をもとに、端から順番に配置を行う。配列kには前記の通り、複数のデータベースhのIDが格納されている。
【0140】
ステップk1において、配列kの先頭の要素である要素1に格納されているのデータベースhのID1を取得する。データベースiより、取得したデータベースhのID1と同じID1のデータに格納されている数字配列「152」を取得する。これは1と5と23つの数字の配列である。1番目の数字は、0あるいは1のどちらかの値が記憶されており、1の場合は、2番目の数字が行数で3番目の数字が列数を示す事を表す。
【0141】
0の場合は、2番目の数字が列数で3番目の数字が行数を示す事を表す。ここでは0のため、2番目の数字の5と3番目の数字の2により、5行2列に合計枚数10のセットの配置を行う。合計枚数10のセットは、データベースd及びデータベースbから合計枚数10であるセットを検索し、最初に検出されたものとする。合計枚数10のセットとして、セットID5が検出される。データベースaをもとにセットID5の、ユーサーが選択したデータを全て、5行2列の中に配置する。
【0142】
ステップk2において、配列kの要素2に格納されているデータベースhのID2を取得する。これについては、ステップk1同様に配置を行う。ステップk3において、配列kの要素2に格納されているデータベースhのID12を取得する。データベースiより、取得したデータベースhのID12と同じID12のデータに格納されている数字配列「091142143144」を取得する。ステップk1では、数字配列は3つの数字であったが、この場合は、先頭から3つの数字毎に区切った情報をもとに配置を行う。3つの数字のうち、格納順の2番目と3番目の数を掛け合わせることで合計枚数を算出する。この合計枚数であるセットを求めるために、データベースbの先頭から順に、合計枚数に対応するセットIDを検索する。同じ合計枚数のセットがある場合は、セットIDが小さいセットを先に検出する。
【0143】
まず、ステップk31のように、最初の3文字「091」より、1行9列に合計枚数9のセットである、セットID4のセットの配置を行う。
【0144】
次に、ステップk32のように、次の3文字「142」により、4行2列に合計枚数8のセットである、セットID3のセットの配置を行う。
【0145】
次に、ステップk33のように、次の3文字「143」により、4行3列に合計枚数12のセットである、セットID6のセットの配置を行う。
【0146】
次に、ステップk34のように、次の3文字「144」により、4行4列に合計枚数16のセットである、セットID9のセットの配置を行う。
【0147】
ステップk4において、配列kの要素2に格納されているデータベースhのID3を取得する。これについては、ステップk3同様に配置を行う。
【0148】
ステップ5において、配列kの要素2に格納されているデータベースhのID19を取得する。これについて、データベースhのIDが13より大きいため、矩形で配置できないものであると判断し、データベースhのIDが19であるデータに格納されている組み合わせる数14を取得し、合計枚数がその数14であるセットID7のセットのデータを端から順番に配置する。これにより、完成図のように、すべてのセットが配置され、レイアウトが完成する。また、配列kが複数頁分の情報を持っている場合、頁毎のレイアウトをそれぞれ作成する。例えば、図13の配列jに格納されている配列k(1)の場合、2頁分のDB hのID情報を持っている。1頁目の情報は、1と11であり、2頁目の情報は、2と5と18であることを示している。
【0149】
図20は、図11におけるj2のオート選出処理のフローチャートである。画像データ配置装置が自動的に1つのレイアウトに絞るための処理である。選出条件の優先順位を、矩形に使われているセット数が一番多い、矩形の列数の最大値が一番小さい、切り分ける際のカット数が一番少ない、最初に検出された、の順とし、複数の候補の中から一つの候補を選出する処理である。優先条件は、例えば図18に示す設定画面に設定項目を表示させ、ユーザーに指定させても良い。
【0150】
ステップk1において、優先条件1で選出する。本実施の形態においては、矩形に使われている升目が一番多い候補を検出する。
【0151】
ステップ2において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk3へ進む。
【0152】
ステップk3において、さらにステップ1の条件で検出されたものの中から優先条件2で選出する。本実施の形態においては、矩形の列数の最大値が一番小さい候補を検出する。
【0153】
ステップk4において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk5へ進む。
【0154】
ステップk5において、さらにステップ3の条件で検出されたものの中から優先条件3で選出する。本実施の形態においては、カット数が一番少ないものを選出する。
【0155】
ステップk6において、1つに絞られたと判断されればステップk8へ進み、絞られなければ、ステップk7へ進む。
【0156】
最後に、ステップk7において、最初に検出されたものを選出するため、必ず一つの候補が選ばれる事になる。
【0157】
ステップk8において、選出された1つの候補をレイアウト結果に表示するデータとして保存し、配置処理でこのデータを使用する。
【0158】
図21は、オート選出処理を設定した時の例である。セット合計枚数がそれぞれ、4、6、8、9、10、12、14、15、16の9セットのレイアウトの場合、図のように6候補ができる。
【0159】
これについてオート選出処理を行うと、まず優先条件1の、矩形に使われているセット数が一番多い候補の選出により、8セットが矩形でレイアウトされている、候補3、4、5、6が選出される。
【0160】
次に、優先条件2の、矩形の列数の最大値が一番小さい候補の選出により、一番列数の多い矩形の列数が7である候補5、6が選出される。
【0161】
そして、優先条件3の、切り分ける際のカット数が一番少ない候補の選出により、候補5、6はどちらも同じ8カットにより選出される。
【0162】
ここまでで1つの候補に絞られていないため、候補1から6までの情報が順番に格納されている場合は、順番に選出処理を行うため、最終的にシステムで最初に検出される候補5が選出される事になる。
【0163】
上述したとおり、本発明によれば、あらゆる組み合わせを事前に算出した上で複数の好適なレイアウトを決定し、ユーザーに複数のレイアウト候補を提示することが可能となる。
【0164】
さらに、複数のレイアウト候補の中から優先順位に従ってレイアウト候補を提示することが可能であるため、ユーザーの選択負担を軽減することも可能となる。
【0165】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0166】
以上、一実施形態について示したが、本発明は、例えば、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。
【図面の簡単な説明】
【0167】
【図1−1】画像データ配置装置の内部の構成例を示すハードウェアブロック図である。
【図1−2】画像データ配置装置の内部の構成例を示すソフトウェアブロック図である。
【図2】画像データ配置装置における全体の流れを示すフローチャートである。
【図3】画像データ並び替え・配置処理を示すフローチャートである。
【図4】データ別振り分け処理のフローチャートである。
【図5】矩形ができる組み合わせデータベース作成準備処理のフローチャートである。
【図6】矩形ができる組み合わせデータベース作成処理のフローチャートである。
【図7】リスト合体配列の配列作成処理のフローチャートである。
【図8】リスト合体データベース作成処理(列数指定時)のフローチャートである。
【図9】リスト合体データベース作成処理(列数指定無し時)のフローチャートである。
【図10−1】あまり処理(列数制限なしの時)のフローチャートである。
【図10−2】あまり処理(列数制限ありの時)のフローチャートである。
【図11】画像配置処理のフローチャートである。
【図12】配列kの内容を示す図である。
【図13】配列jの内容を示す図である。
【図14】配列gの内容を示す図である。
【図15A】使用するデータベースとの内容を示す図である。
【図15B】使用するデータベースとの内容を示す図である。
【図15C】使用するデータベースとの内容を示す図である。
【図15D】使用するデータベースとの内容を示す図である。
【図16】配置方法Fの説明図である。
【図17】配置準備処理と配置処理の概略説明図である。
【図18】レイアウト設定画面を示す。
【図19】レイアウト結果画面を示す。
【図20】オート選出処理のフローチャートである。
【図21】オート選出処理例である。
【符号の説明】
【0168】
1 パソコン
2 ディスプレイ
3 印刷装置
4 入力装置
【特許請求の範囲】
【請求項1】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置であって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、
前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、
前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段と
を有することを特徴とする情報処理装置。
【請求項2】
前記表示制御手段は、前記組み合わせ候補を、該組み合わせ候補の前記画像配置領域における配置イメージと共に表示することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記算出手段は、組み合わせたセットの画像データの合計数が、前記配置数の倍数となる組み合わせから、組み合わせを構成する各セットの画像データが矩形として配置される組み合わせを算出することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記算出手段は、予め定められる優先順位に従って、組み合わせを算出することを特徴とする請求1又は2に記載の情報処理装置。
【請求項5】
前記指定手段により指定された複数セットのうち、前記画像データが前記配置数の倍数であるセットを配置する配置制御手段を更に有し、
前記算出手段は、前記指定手段により指定された複数セットから前記配置制御手段により配置されたセットを除き、配置可能な組み合わせを算出することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記設定手段は、前記画像領域における第1方向又は第2方向に前記画像データを配置する上限数を更に設定し、
前記算出手段は、前記設定された上限数を用いて、組み合わせを算出することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置における制御方法であって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定ステップと、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定ステップと、
前記設定ステップにより設定された配置数、及び前記指定ステップにより指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出ステップと、
前記算出ステップにより算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御ステップと
を有することを特徴とする制御方法。
【請求項8】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置において実行可能なプログラムであって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段、
前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段、
前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段
として前記情報処理装置を機能させることを特徴とするプログラム。
【請求項9】
請求項8に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置であって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段と、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段と、
前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段と、
前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段と
を有することを特徴とする情報処理装置。
【請求項2】
前記表示制御手段は、前記組み合わせ候補を、該組み合わせ候補の前記画像配置領域における配置イメージと共に表示することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記算出手段は、組み合わせたセットの画像データの合計数が、前記配置数の倍数となる組み合わせから、組み合わせを構成する各セットの画像データが矩形として配置される組み合わせを算出することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記算出手段は、予め定められる優先順位に従って、組み合わせを算出することを特徴とする請求1又は2に記載の情報処理装置。
【請求項5】
前記指定手段により指定された複数セットのうち、前記画像データが前記配置数の倍数であるセットを配置する配置制御手段を更に有し、
前記算出手段は、前記指定手段により指定された複数セットから前記配置制御手段により配置されたセットを除き、配置可能な組み合わせを算出することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記設定手段は、前記画像領域における第1方向又は第2方向に前記画像データを配置する上限数を更に設定し、
前記算出手段は、前記設定された上限数を用いて、組み合わせを算出することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置における制御方法であって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定ステップと、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定ステップと、
前記設定ステップにより設定された配置数、及び前記指定ステップにより指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出ステップと、
前記算出ステップにより算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御ステップと
を有することを特徴とする制御方法。
【請求項8】
第1方向及び第2方向に碁盤状に分割された画像配置領域に画像データを配置可能な情報処理装置において実行可能なプログラムであって、
前記画像配置領域における前記第1方向に配置可能な画像の配置数を設定する設定手段、
複数の画像データから指定される1又は複数の画像データから構成されるセットを複数セット指定可能な指定手段、
前記設定手段により設定された配置数、及び前記指定手段により指定された複数セットとを用いて、該複数セットの組み合わせの中から、前記画像データを矩形として配置可能な組み合わせを算出する算出手段、
前記算出手段により算出された組み合わせ候補をユーザーにより選択可能な形式で表示させる表示制御手段
として前記情報処理装置を機能させることを特徴とするプログラム。
【請求項9】
請求項8に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1−1】
【図1−2】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10−1】
【図10−2】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図15C】
【図15D】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図1−2】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10−1】
【図10−2】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図15C】
【図15D】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2009−164854(P2009−164854A)
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2007−341493(P2007−341493)
【出願日】平成19年12月29日(2007.12.29)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願日】平成19年12月29日(2007.12.29)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】
[ Back to top ]