(57)【要約】【課題】構造化データから、容易な操作により、各領域に適切な構造化データの要素が対応付けられたレイアウトデータを生成する装置を提供する。【解決手段】レイアウトデータ処理装置は、ポインティングデバイスにより指定された位置及びその指定順序に基づいて、レイアウト対象領域上にレイアウト用の領域を設定し、当該１又は複数のレイアウト用の領域を順序付ける領域設定処理部８２及び８５４と、領域設定処理部８５２及び８５４により設定された領域と、構造化データの要素とを対応付ける対応付け、その対応付けに基づいて、レイアウト用の各領域に、構造化データの要素がレイアウトされるレイアウトデータを生成するレイアウトデータ生成処理部８５８とを含む。【選択図】図１９
2013148995.tif 000002
【特許請求の範囲】
【請求項１】
表示装置と、当該表示装置の表示面上の点の位置を指定する位置指定装置とともに用いられ、構造化データを表示又は印刷するためのレイアウトデータを処理するためのレイアウトデータ処理装置であって、
前記位置指定装置により指定された前記表示面上の点の位置及びその指定順序に基づいて、レイアウト対象領域上に１又は複数のレイアウト用の領域を設定し、当該１又は複数のレイアウト用の領域を順序付ける領域設定手段と、
前記領域設定手段により設定された前記１又は複数のレイアウト用の領域と、前記構造化データの要素とを、前記構造化データ内の構造と前記１又は複数のレイアウト用の領域に付けられた順序とに基づいて対応付ける対応付け手段と、
前記対応付け手段による対応付けに基づいて、前記１又は複数のレイアウト用の領域に、前記構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成するレイアウトデータ生成手段とを含む、レイアウトデータ処理装置。
【請求項２】
前記対応付け手段は、前記領域設定手段によりレイアウト用の新たな領域が設定され、当該新たな領域の順序が決定されたことに応答して、前記構造化データの構造と、前記新たな領域に付けられた順序とに基づいて、前記構造化データの内で、当該新たな領域に対応する要素を決定する要素決定手段を含む、請求項１に記載のレイアウトデータ処理装置。
【請求項３】
前記レイアウトデータ処理装置はさらに、前記要素決定手段により、前記新たな領域に対応する要素が決定されたことに応答して、当該要素に付された表示用データを、前記新たな領域に表示するための表示データを生成し、前記表示装置により表示させる表示制御手段を含む、請求項２に記載のレイアウトデータ処理装置。
【請求項４】
前記領域設定手段は、
前記位置指定装置により指定された前記表示面上の位置の軌跡を形成するための軌跡形成手段と、
前記軌跡形成手段により形成された軌跡の一部により、予め定める図形が形成されたことを検出する検出手段と、
前記検出手段により前記図形が検出されたことに応答して、当該図形が描かれた位置及び領域に基づいて、前記レイアウト対象領域にレイアウト用の領域を設定する手段とを含む、請求項１〜請求項３のいずれかに記載のレイアウトデータ処理装置。
【請求項５】
前記レイアウトデータ生成手段は、
前記対応付け手段による対応付けがされたことに応答して、前記１又は複数のレイアウト用の領域の各々の属性を、レイアウトに関連した条件に基づき、予め定められた手順にしたがって補正するための補正手段と、
前記対応付け手段による対応付けに基づいて、前記補正手段により属性が補正された前記１又は複数のレイアウト用の領域に、前記構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成する手段とを含む、請求項１〜請求項４のいずれかに記載のレイアウトデータ処理装置。
【請求項６】
表示装置と、当該表示装置の表示面上の点の位置を指定する位置指定装置に接続されるコンピュータに、構造化データを表示又は印刷するためのレイアウトデータを処理させるために、当該コンピュータに、
前記位置指定装置により指定された前記表示面上の点の位置及びその指定順序に基づいて、レイアウト対象領域上に１又は複数のレイアウト用の領域を設定し、当該１又は複数のレイアウト用の領域を順序付ける領域設定ステップと、
前記領域設定ステップにより設定された前記１又は複数のレイアウト用の領域と、前記構造化データの要素とを、前記構造化データ内の構造と前記１又は複数のレイアウト用の領域に付けられた順序とに基づいて対応付ける対応付けステップと、
前記対応付けステップによる対応付けに基づいて、前記１又は複数のレイアウト用の領域に、前記構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成するレイアウトデータ生成ステップとを実行させる、レイアウトデータ処理のためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクトを含む構造化データをコンピュータで表示する際のレイアウトデータを処理する装置に関し、特に、オブジェクト間の関係の構造を特定する構造情報を含む構造化データを、容易に生成したり編集したり削除したりできるレイアウトデータ処理装置に関する。
【背景技術】
【０００２】
従来、電子データであるテキストデータ及び画像データ等をコンピュータ画面上に配置してレイアウトを作成する技術が知られている。この技術は、いわゆるＤＴＰ（Ｄｅｓｋｔｏｐ  Ｐｕｂｌｉｓｈｉｎｇ）等、印刷紙面上のレイアウトを編集ソフトウェア、及び、プレゼンテーション用のスライドを編集するソフトウェア等で利用される。これらのレイアウトを行なうソフトウェアでは、コンピュータ画面上に、レイアウト用の境界を表示する。さらにこの境界中の、データを配置する位置に、配置されるデータ（画像、テキストデータ等）の大きさに相当する領域を設ける。この領域の位置を変更したり、大きさを変更したりすることにより、データのレイアウトをデザインできる。
【０００３】
このようなレイアウトの対象となる印刷物及びプレゼンテーションのスライドを作成する場合、配置されるデータは異なるが、レイアウトそのものは一致させたい場合が多い。そうした場合、個別にレイアウトを作成し、テキスト及び画像を配置していては、作業が非効率的である。
【０００４】
そのような問題を回避するための技術として、以下のような技術がある。すなわち、配置の対象となるテキストデータ及び画像データ等に予め名前を付しておく。レイアウト上にデータを配置する領域を設け、それら領域にも同様に名前を付す。両者の名前を予め対応付けておくことで、所望の領域に所望のデータを配置できる。本明細書では、以後、このような対応付けを「文書構造による対応付け」と呼ぶ。文書構造による対応付けにおいてレイアウト上の領域、及び、配置されるデータ、に付与される名前を「文書構造名」と呼ぶ。
【０００５】
最近では、操作デバイスと表示デバイスとを備えた計算機用のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が発達している。例えば後掲の特許文献１には、ＧＵＩ技術の応用により、視覚的に表現されたグラフィカルオブジェクトの間を線分で結ぶことによりリンク情報を生成する技術が開示されている。
【０００６】
また、文書構造名を付与したデータを容易に生成する技術として、特許文献２に開示された技術がある。特許文献２に開示された技術では、表示画面上にオブジェクトを複数個表示する。ユーザは、表示画面上に一筆書きの経路を生成する。一筆書きの経路の形状（ジェスチャ）によりオブジェクトに様々な属性を付与できる。さらに、一筆書きの経路と各オブジェクト上の経路の形状とにより、オブジェクト間の関係を特定して構造化データを作成する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２８０４３７号公報
【特許文献２】特開２０１１−１５４４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記した「文書構造による対応付け」を用いる技術では、デザインを効率的に行なえるようになり、かつ、テキスト及び画像等のデータに文書構造名を付与することが容易になるという効果がある。しかし、この技術では、表示するレイアウトの領域に対する文書構造名を付与する点は効率化されていない。そのため、レイアウトを定める際には、領域を１つずつ配置した後に、それらに文書構造名を１つずつ付与していく作業を各データについて行なっていく必要があるという問題点がある。
【０００９】
さらに、文書構造名を付与した領域を持つレイアウトを予め生成しようとする場合、テキストデータ及び画像データ等のデータなしに、空の領域を配置していくことになる。そのようにしてレイアウトの生成を行なうと、レイアウトの作成途中では最終的なレイアウトが分かりにくくなるという問題がある。各領域に文書構造名を付与するときにも、どのような文書構造名を付与したらよいかがわかりづらいという問題もある。
【００１０】
特許文献１及び特許文献２に記載されたように、レイアウト上でテキストデータ及び画像データ等の間の関連をＧＵＩを用いて特定できるようにすることで、レイアウトから構造化された文書データを作成することは比較的容易に行なえる。しかしこれら文献には、逆に構造化された文書データを効率的にレイアウトする技術は開示されていない。
【００１１】
従って、本発明の目的は、構造化された文書データから、容易でかつ分かりやすい操作により、各領域に適切な構造化データの要素が対応付けられたレイアウトデータを生成できるレイアウトデータ処理装置及びレイアウトデータ処理のためのコンピュータプログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明のある局面に係るレイアウトデータ処理装置は、表示装置と、当該表示装置の表示面上の点の位置を指定する位置指定装置とともに用いられ、構造化データを表示又は印刷するためのレイアウトデータを処理するためのレイアウトデータ処理装置である。このレイアウトデータ処理装置は、位置指定装置により指定された表示面上の点の位置及びその指定順序に基づいて、レイアウト対象領域上に１又は複数のレイアウト用の領域を設定し、当該１又は複数のレイアウト用の領域を順序付ける領域設定手段と、領域設定手段により設定された１又は複数のレイアウト用の領域と、構造化データの要素とを、構造化データ内の構造と１又は複数のレイアウト用の領域に付けられた順序とに基づいて対応付ける対応付け手段と、対応付け手段による対応付けに基づいて、１又は複数のレイアウト用の領域に、構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成するレイアウトデータ生成手段とを含む。
【００１３】
表示装置の表示面上の位置を位置指定装置で指定すると、領域設定手段が、その位置及び指定の順序に基づいて、複数のレイアウト用の領域を設定する。対応付け手段は、各領域と、構造化データの要素とを対応付け、その対応付けに基づいて、各領域に、構造化データのうちでその領域に対応する要素がレイアウトされるよう、レイアウトデータ生成手段がレイアウトデータを生成する。
【００１４】
表示面上の位置を位置指定装置で指定するという簡単な操作により、構造化データとレイアウト用の各領域とが関係付けられ、その関係に基づいてレイアウトデータが生成される。特に複雑な操作は必要とされない。また、構造化データの要素とレイアウト用の領域との関係がレイアウトデータとして生成されるので、異なる構造化データであっても、その構造が同じであれば、このようにして生成された同じレイアウトデータを使用してレイアウトできる。その結果、構造化された文書データから、容易でかつ分かりやすい操作により、各領域に適切な構造化データの要素が対応付けられたレイアウトデータを生成できるレイアウトデータ処理装置を提供できる。
【００１５】
好ましくは、対応付け手段は、領域設定手段によりレイアウト用の新たな領域が設定され、当該新たな領域の順序が決定されたことに応答して、構造化データの構造と、新たな領域に付けられた順序とに基づいて、構造化データの内で、当該新たな領域に対応する要素を決定する要素決定手段を含む。
【００１６】
レイアウトデータ処理装置はさらに、要素決定手段により、新たな領域に対応する要素が決定されたことに応答して、当該要素に付された表示用データを、新たな領域に表示するための表示データを生成し、表示装置により表示させる表示制御手段を含んでもよい。
【００１７】
新たな領域が設定されるたびに、その領域に対応する要素が要素決定手段により決定される。さらに、新たな領域に、その領域に対応する要素に付された表示用データが表示される。その結果、レイアウトデータの生成途中であっても、レイアウト作成過程が簡単に確認でき、さらに完成時レイアウトも容易に想像できる。
【００１８】
さらに好ましくは、領域設定手段は、位置指定装置により指定された表示面上の位置の軌跡を形成するための軌跡形成手段と、軌跡形成手段により形成された軌跡の一部により、予め定める図形が形成されたことを検出する検出手段と、検出手段により図形が検出されたことに応答して、当該図形が描かれた位置及び領域に基づいて、レイアウト対象領域にレイアウト用の領域を設定する手段とを含む。
【００１９】
位置指定装置を用いて表示面上に軌跡を指定し、その軌跡で予め定める図形を描くと、その図形が検出手段により検出される。図形が検出手段により検出されると、その図形の位置及び領域に基づいて、レイアウト用の領域が設定される。位置指定装置を用いて図形を描くという簡単な操作で、レイアウト用の領域を指定できる。
【００２０】
好ましくは、レイアウトデータ生成手段は、対応付け手段による対応付けがされたことに応答して、１又は複数のレイアウト用の領域の各々の属性を、レイアウトに関連した条件に基づき、予め定められた手順にしたがって補正するための補正手段と、対応付け手段による対応付けに基づいて、補正手段により属性が補正された１又は複数のレイアウト用の領域に、構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成する手段とを含む。
【００２１】
ジェスチャにより指定された領域の属性（例えば大きさ）では、対応する要素の全体が表示されないときに、レイアウトに関連した条件に基づいて予め定められる手順により、領域の属性、又は対応する要素の属性（縮小・拡大倍率等）が変更され、要素が見やすく表示されるようになる。その結果、簡単な操作で、見やすいレイアウトを実現するレイアウトデータを生成できる。
【００２２】
本発明の第２の局面に係る、レイアウトデータ処理のためのコンピュータプログラムは、表示装置と、当該表示装置の表示面上の点の位置を指定する位置指定装置に接続されるコンピュータに、構造化データを表示又は印刷するためのレイアウトデータを処理させるためのものである。このプログラムは、当該コンピュータに、位置指定装置により指定された表示面上の点の位置及びその指定順序に基づいて、レイアウト対象領域上に１又は複数のレイアウト用の領域を設定し、当該１又は複数のレイアウト用の領域を順序付ける領域設定ステップと、領域設定ステップにより設定された１又は複数のレイアウト用の領域と、構造化データの要素とを、構造化データ内の構造と１又は複数のレイアウト用の領域に付けられた順序とに基づいて対応付ける対応付けステップと、対応付けステップによる対応付けに基づいて、１又は複数のレイアウト用の領域に、構造化データの要素の内で当該領域に対応する要素がレイアウトされるレイアウトデータを生成するレイアウトデータ生成ステップとを実行させる。
【発明の効果】
【００２３】
以上のように本発明によると、位置指定装置を用いて表示装置の表示面上の位置を指定するという、容易でかつ分かりやすい操作により、構造化データの各要素をレイアウト対象領域にレイアウトできる。レイアウトされた要素を順次各領域に表示するようにすると、レイアウト生成時に最終的なレイアウトを容易に想像できる。各領域に表示されるオブジェクトもその都度確認できるため、構造化データの要素を各領域に付与する作業が容易に行なえる。その結果、構造化された文書データから、容易でかつ分かりやすい操作により、各領域に適切な要素が対応付けられたレイアウトデータを生成できるレイアウトデータ生成装置及びそのためのコンピュータプログラムを提供できる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施の形態に係るレイアウト生成装置の外観図である。
【図２】図１に示すレイアウト生成装置のハードウェアブロック図である。
【図３】構造化された文書データの構造の例を示す図である。
【図４】図３に示す文書データの記述例を示す図である。
【図５】図３及び図４に示す文書データのレイアウト例を示す図である。
【図６】図５のレイアウトの各領域を示す図である。
【図７】図５のレイアウトの各領域の座標を示す図である
【図８】従来のレイアウトデータの例を示す図である。
【図９】本発明の第１の実施の形態に係るレイアウト生成装置により生成されるレイアウトデータの例を示す図である。
【図１０】本発明の第１の実施の形態に係るレイアウト生成装置により生成されるレイアウトデータの他の例を示す図である。
【図１１】第１の実施の形態のレイアウト生成装置でレイアウトを生成する際の操作及び画面の表示の経過を示す図である。
【図１２】構造化された文書データのメモリ上の配置を示す図である。
【図１３】レイアウトデータのメモリ上の配置を示す図である。
【図１４】ストロークの例を示す図である。
【図１５】ストロークのデータ化方法を説明するための図である。
【図１６】ストロークデータのメモリ上の配置を示す図である。
【図１７】ジェスチャ情報データの例を示す図である。
【図１８】ジェスチャ情報データのメモリ上の配置を示す図である。
【図１９】本発明の第１の実施の形態に係る生成装置において実行される生成処理を示すフローチャート（メインルーチン）である。ある。
【図２０】図１９における操作検出処理を示すフローチャートで
【図２１】図１９におけるジェスチャ特定処理を示すフローチャートである。
【図２２】図１９における対応情報生成処理を示すフローチャートである。
【図２３】ユーザ操作の具体例を示す図（その１）である。
【図２４】図２３に示す操作の対象を説明するための、文書の構造化データを示す図である。
【図２５】図２３に示す操作が行われたときに生成されるレイアウトデータを示す図である。
【図２６】図２３に示す操作により特定された領域に、文書内のテキストデータが表示された状態を示す図である。
【図２７】図２３に示す操作に続く、ユーザ操作の具体例を示す図（その２）である。
【図２８】図２７に示す操作の対象を説明するための、文書の構造化データを示す図である。
【図２９】図２７に示す操作が行われたときに生成されるレイアウトデータを示す図である。
【図３０】図２７に示す操作により特定された領域に、文書内のテキストデータが表示された状態を示す図である。
【図３１】図２７に続く、ユーザ操作の具体例を示す図（その３）である。
【図３２】図３１に示す操作に引き続き、文書の構造化データの要素が対応する領域に表示された状態を示す図である。
【図３３】図３１に示す操作の対象を説明するための、文書の構造化データを示す図である。
【図３４】図３１に示す操作の結果生成されるレイアウトデータを示す図である。
【図３５】ユーザ操作と、操作の対象となる要素との対応関係の変形例を説明する図である。
【図３６】表示される要素の大きさにしたがって、同じ操作でも割当てる領域の大きさを変化させる変形例を説明するための図である。
【図３７】特定のジェスチャを行なうことにより、割当てられる領域の大きさを画像の大きさによって変化させる変形例を説明するための図である。
【図３８】領域を確保する面積により、その領域に配置するデータの数を変化させる変形例を説明するための図である。
【図３９】作成済のレイアウトの各領域と構造化データ内の各データとを対応付ける変形例の操作例を示す図である。
【図４０】ユーザ操作により確保された領域を、当該領域に流し込まれるデータの大きさに応じて変化させる変形例を説明するための図である。
【発明を実施するための形態】
【００２５】
以下の実施の形態では、同一の部品には同一の参照番号を付してある。それらの機能及び名称も同一である。従って、それらについての詳細な説明は繰返さない。
【００２６】
＜第１の実施の形態＞
［レイアウト生成装置の概略構成］
図１を参照して、本実施の形態に係るレイアウト生成装置６０は、コンピュータ７０と、コンピュータ７０に接続される周辺機器である表示パネル７２、キーボード７４、マウス７６、及びタブレット７８とを含む。本実施の形態では、タブレット７８は専用のペン８０で指定された位置に対応する座標データを発生してコンピュータ７０に与える。コンピュータ７０上で動作している、タブレット７８のためのドライバプログラムが、この座標データを受信し、表示パネル７２上のどの位置が指定されたかを判定する。
【００２７】
レイアウト生成装置６０は、表示パネル７２に表示されるレイアウト対象領域９０に、タブレット７８又はマウス７６により描かれる一筆書き９２の各部の形状に応じ、構造化データの各要素を配置する領域の位置及び大きさを決める。処理開始時には構造化データの要素は何も表示されないが、各領域の位置及び大きさが決まると、その領域に表示すべき要素が決められ、その要素がその領域に配置され、表示される。同時に、その領域の位置及び大きさと、その領域に配置される要素を特定する情報とからなるレイアウトデータが生成される。
【００２８】
［コンピュータ７０のハードウェアブロック］
図２を参照して、レイアウト生成装置６０を構成するコンピュータ７０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含むプロセッサからなる制御部１４０、制御部１４０と通信可能な各種の記憶デバイス（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、Ｒｅａｄ-Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）等）からなる記憶部１４２、制御部１４０の制御の下で表示パネル７２を制御する表示部１４４、キーボード７４、マウス７６、及びタブレット７８に接続され、これらからの出力を制御部１４０に与える操作部１４６、並びに制御部１４０に対して、インターネット等の外部のネットワーク１５０への接続を提供する外部インターフェイス部１４８を含む。これらの各部間のデータ送受信は図示しないバスを介して行なわれる。
【００２９】
構造化データ、レイアウトデータ等は通常は記憶部１４２内のＨＤＤ又はＳＳＤに記憶されており、表示パネル７２により処理されるときにはＲＡＭにロードされる。後述するように、制御部１４０をレイアウトデータ生成装置として動作させるプログラムも同様で、通常は記憶部１４２内のＨＤＤ等の不揮発性の記憶装置に記憶されており、プログラムの実行時には制御部１４０の制御によりＲＡＭにロードされ、制御部１４０により実行される。
【００３０】
レイアウト生成装置６０がネットワーク１５０に接続されていることにより、レイアウト生成装置６０はネットワーク１５０上の他の端末と通信できる。たとえば、レイアウト生成装置６０は、ネットワーク１５０に接続された他の端末（図示せず）から構造化データを受信したり、レイアウト生成装置６０が生成したレイアウトデータを他の端末へ送信したりできる。
【００３１】
制御部１４０は、所定のプログラムを実行することにより、コンピュータ７０の全体を制御するものである。制御部１４０はまた、コンピュータ７０と表示パネル７２、キーボード７４、マウス７６、タブレット７８及びネットワーク１５０上の端末との間の通信も制御する。制御部１４０は、記憶部１４２または外部インターフェイス部１４８を介してネットワーク１５０に接続された外部装置などから構造化データを取得する。さらに、制御部１４０は、後述するプログラムを実行することにより、表示パネル７２上にレイアウト領域を表示し、キーボード７４、マウス７６及びタブレット７８によるユーザの操作に応答して、構造化データを印刷するためのレイアウトデータを生成する。生成されたレイアウトデータは、記憶部１４２に保存され、必要に応じて制御部１４０により読出され、外部インターフェイス部１４８を介して他の装置に送信される。
【００３２】
記憶部１４２は、処理途中の一時的な記憶を含め、種々のデータを記憶する。記憶部１４２に記憶されるデータは、オブジェクトとそれらの間の関係とを記述した構造化データ、構造化データ内の各オブジェクトのレイアウト位置（位置及び大きさ）を特定するレイアウトデータ、ユーザによるポインタの軌跡であるストロークを記述するストロークデータ、ストロークの形状が所定の形状であるか否か、すなわち所定のジェスチャがあったか否かを判定する際の対照データとなるジェスチャ情報データ、及び、ジェスチャがあったと判定されたときに、各ジェスチャに対応してレイアウト生成装置６０が実行すべきアクションを特定するアクション情報データを含む。
【００３３】
［データ構造］
【００３４】
・構造化データ
図３を参照して、構造化データ２００は、ルートノード２１０から分岐するツリー構造により記述される。このツリーは、ルートノード２１０の子ノードであるノード２１２及び２１８と、ノード２１２の子ノードであるノード２１４及び２１６と、ノード２１８の子ノードであるノード２２０とを含む。各ノードには、それらのノード名と、そのノードにより表されるデータとしてテキスト又は画像データが割当てられている。例えばノード２１２のノード名は「ｃａｐｔｉｏｎ１」であり、対応するデータはそのテキストは「問題１  面積」である。ノード２１６のノード名は「ｉｍａｇｅ１」であり、対応するデータは「ｉｍａｇｅＡ．ｐｎｇ」というファイル名の画像データである。
【００３５】
図４を参照して、構造化データ２００は、本実施の形態では、ＸＭＬで記述されたＸＭＬファイル２７０として記憶部１４２（図２参照）に保存されている。図４に示すように、このＸＭＬファイル２７０は、各ノードの間の関係をタグで示す。各ノードの名称は「タグ内に記述されたｉｄにより示されている。各ノードに割当てられたデータは各タグ内に記述された「ｄａｔａ」タグの番号により表されている。「ｄａｔａ」タグの番号に対応するデータの実体が末尾の「ｄａｔａ＿ｉｎｆｏ」内に各番号と関係付けて保持されている。
【００３６】
・レイアウトデータ
図５を参照して、上記した構造化データ２００に基づいてユーザによりレイアウト３００を生成する場合を考える。図６を参照して、レイアウト３００は、第１の領域３１０、第２の領域３１２，第３の領域３１４、第４の領域３１６、及び第５の領域３１８を含む。これら領域３１０，３１２，３１４，３１６及び３１８はいずれも矩形であり、それぞれ、図３に示すノード２１２、２１４，２１６，２１８及び２２０が割当てられるものとする。
【００３７】
図７を参照して、このレイアウト３００の各領域の位置及び大きさを特定するためには、座標系３４０を定める必要がある。ここでは、座標系３４０の原点を、表示パネル７２のための表示メモリの左上に置き、Ｘ座標は図において右側にいくほど値が大きくなるものとし、Ｙ座標は図において下側にいくほど値が大きくなるものとする。すると、上記した領域の各々について、その位置および大きさが、例えば領域の左上の頂点の座標と右下の頂点の座標との組みにより特定できる。例えば、各領域の頂点の座標が図７に示すようになっているものとすると、領域３１０は、左上の頂点の座標（ｘ１，ｙ１）と、右下の頂点の座標（ｘ４，ｙ２）により特定できる。同様に、最も下の領域３１８は、その左上の頂点の座標（ｘ１，ｙ７）と、右下の頂点の座標（ｘ４，ｙ８）とにより特定できる。他の領域についても同様である。
【００３８】
図８を参照して、図５に示すレイアウト３００について、図３に示すレイアウト３００のルートノード２１０以外のノードを割当てたときのレイアウト情報の一例をレイアウトデータ３５０とする。図８に示すレイアウトデータ３５０は、手作業で作成した例であり、やはりＸＭＬ形式で記述されている。レイアウトデータ３５０は、全体を囲む「ｌａｙｏｕｔ」タグと、図６に示す５個の領域の位置及び大きさをそれぞれ特定する５個の「ａｒｅａ」タグとを含む。各「ａｒｅａ」タグの内部には、そのタグに対応する領域に表示すべきテキスト又は画像データを特定する「ｄａｔａ」タグが記述される。この「ｄａｔａ」タグ内に「ｖａｌｕｅ」として記述されているのが表示されるテキスト又は画像である。これらテキスト又は画像は、図３及び図４に示す構造化データ２００において、「ａｒｅａ」タグに対応するノードに割当てられているデータである。
【００３９】
図８に示すレイアウトデータ３５０は、手作業により作成したものである。すなわち、図８に示すレイアウトデータ３５０は、例えばユーザが構造化データとレイアウト３００とから、エディタ等により作成したものである。本実施の形態に係るレイアウト生成装置６０は、前述したとおり、タブレット７８を用いた一筆書きという簡単な操作により、構造化データ２００からレイアウトデータ３５０と同様なレイアウト情報を生成しようとするものである。
【００４０】
図３及び図４に示す構造化データ２００からレイアウト生成装置６０が生成するレイアウトデータの例として、図９にレイアウトデータ３８０を、図１０にレイアウトデータ４１０を、それぞれ示す。これらはいずれも図８に示すものとよく似ている。ただしレイアウトデータ３８０及び４１０が図８に示すレイアウトデータ３５０と異なるのは、「ｄａｔａ」タグの中に具体的なデータを記載しているのではなく、構造化データにおいてその領域に対応するノードの名称が「ｓｔｒｕｃｔｕｒｅ」属性として記述されている点である。例えば、図９に示す例では、最初の「ａｒｅａ」タグ（図６の領域３１０）に割当てられるデータとして、「ｃａｐｔｉｏｎ１」が記載されている。この「ｃａｐｔｉｏｎ１」は、図３に示すノード２１２のノード名称である。すなわち、図６の領域３１０には、構造化データのノード２１２に割当てられたテキストが表示される。同様に、２番目の「ａｒｅａ」タグ（図６の領域３１２）に割当てられるデータとして、「ｂｏｄｙ１」が記載されている。「ｂｏｄｙ１」は図３に示すノード２１４のノード名称である。すなわち、図６の領域３１２には、構造化データのノード２１４に割当てられたテキストが表示される。以下同様である。
【００４１】
一方、図１０に示す例では、第１番目の領域については図９と変わらない。しかし第２番目の領域については、「ｂｏｄｙ１」というｓｔｒｕｃｔｕｒｅ属性が指定された「ｄａｔａ」タグに加えて、「ｉｍａｇｅ１」というｓｔｕｃｔｕｒｅ属性が指定された「ｄａｔａ」タグが記載されている。この点が図９に示すものと異なる。これ以後は図１０に示す例は図９に示す例と同じである。
【００４２】
図９に示すレイアウトデータを用いて図３及び図４に示す構造化データをレイアウトした場合、図９に示す例では図６に示すような結果が得られる。それに対し、図１０に示すレイアウトデータを用いると、図６に示す例と異なり、領域３１２には問題文と図６において領域３１４に表示されている図とが共に表示され、領域３１４には何も表示されないことになる。本実施の形態に係るレイアウト生成装置６０によれば、このように同じ構造化データから異なるレイアウトデータを生成することが容易に行なえる。
【００４３】
［操作の具体例］
最初に、本実施の形態に係るレイアウト生成装置６０では、ユーザがどのような操作をするか、ユーザがどのような操作をすると表示がどのように変わるか、その結果、レイアウトデータがどのようにして生成されるか、について概略を説明する。その後、そのような機能を実現するために制御部１４０が実行するプログラムの制御構造について説明する。
【００４４】
図１１（Ａ）を参照して、最初に空白のレイアウト対象領域４４０が表示パネル７２に表示される。表示パネル７２には図示しないポインタ（描画位置を指示するマーク）が表示される。ユーザがタブレット７８の表面上又はその近傍でペン８０を移動させると、ペン８０の移動に伴ってポインタが移動し、図１１（Ｂ）に示すようなストローク４４２が表示される。レイアウト生成装置６０は、予め準備されたジェスチャ情報データと、ストローク４４２とを比較し、特定の形がストローク４４２内にあればそれをジェスチャとして検出する。ここでは、輪になった部分がジェスチャとして検出されるものとする。ストローク４４２の中に、円形部分４４４が検出されると、レイアウト生成装置６０はその和となった部分の大きさと所定の関係を持った大きさの領域を定める。例えば、レイアウト生成装置６０は、円形部分４４４の上端及び下端をそれぞれ上辺及び下辺とし、左右の端部が予め定められたレイアウト可能な領域の左右端と一致するような矩形を定める。その結果、図１１（Ｃ）に示されるような矩形のレイアウト用の領域４４６が決定される。この領域には、構造化データのルートノードから分岐する最初の子ノードが割当てられる。図１１に示す例では、その子ノードのデータは「タイトル１」というテキストデータである。
【００４５】
図１１（Ｃ）に示すように、ユーザがさらにペン８０を操作してストローク４４２を伸ばし、新たな輪の部分４４８を形成したものとする。レイアウト生成装置６０はこの部分４４８もジェスチャとして検出し、図１１（Ｄ）に示すようにこの部分４４８により位置及び大きさが定められる新たな領域４５０を定める。この領域４５０には、構造化データにおいて、予め定められた順番にしたがって定められる次のノード（例えば直前に領域に割当てられたノードの子ノード又は兄弟ノード）が割当てられる。図１１（Ｄ）に示す例では、この領域４５０には「本文」というテキストデータを持つノードが割当てられる。
【００４６】
以後、同様にしてユーザが一筆書きの要領でストローク４４２を伸ばし、和となる部分４５２，４５４及び４５６をこの順番で描いて描画を停止したものとする。すると、図１１（Ｅ）に示すように、これら部分４５２，４５４及び４５６から、それらの位置及び大きさにしたがって予め定められたアルゴリズムにより領域４５８，４６０及び４６２が決定される。これら領域４５８，４６０及び４６２には、それぞれ、予め定められた順番にしたがって、対応する構造化データから選ばれたノードが割当てられ、それらノードに割当てられていたテキストデータ及び画像データ等がそれら領域に表示される。
【００４７】
・構造化データ
図１２を参照して、図３に示す構造化データ２００をメモリにロードして得られる構造化データ５００は、各ノードに対応するノードデータ５１２，５１４及び５１６のような形式でメモリに格納される。例えばルートに対応するノードデータ５１２は、ノード識別子５２０と、このノードの親ノード５２２と、このノードの子ノード５２４と、このノードと同じ親ノードから分岐した同一階層のノードのうち、このノードの前に配置されている前ノード５２６と、このノードの後ろに配置されている後ノード５２８と、このノードに対応するノード名５３０とを含む。図１２に示すノードデータ５１２はルートノードに対応するものなので、親ノード５２２、前ノード５２６及び後ノード５２８は空欄である。またこのルートノードからは２つの子ノード（ノード１、及びノード４）が分岐していることも分かる。
【００４８】
他のノードデータについても、その構成は同様である。
【００４９】
・レイアウトデータ
図１３を参照して、メモリにロードされたレイアウトデータ５６０は、各々がレイアウト上の領域の位置、大きさ、及び構造データのうちの対応するノードを特定する領域データ５７０，５７２及び５７４を含む。これらはいずれも同様の構造を持つ。例えば領域データ５７０は、矩形領域の左上の頂点の座標である開始位置５８０と、矩形の右下の頂点の座標である終了位置５８２と、対応する構造データのノードの「要素」を示す構造５８４とを含む。図１３に示す例では、開始位置の座標は（ｘ１，ｙ１）であり、終了位置の座標は（ｘ４，ｙ２）である。領域データ５７０の「構造」は、図１２に示すノード１（ノードデータ５１４）の「要素」である「ｃａｐｔｉｏｎ１」である。以下、領域データ５７２及び５７４についても同様である。
【００５０】
・ストロークデータ
図１４を参照して、ストロークデータは、レイアウト対象領域６１０内を移動するポインタ６２２によって描かれるストローク６２０を示すデータである。詳細には、図１５に示すように、表示パネル７２の描画平面上に座標系６６０を想定する。この座標系６６０を用い、ポインタ６２２の所定時間ごとの位置（例えば位置６６２）でのポインタの座標を繰返し特定する。これら一連の点を順次線分により繰返し繋ぐことでパスが得られる。このパスにより、ストロークデータが表わされる。各座標は、単位時間ごとにポインタ６２２の位置を例えばタブレット７８から取得することにより得られる。具体的には、図１５に示すように、ある時間にポインタの位置６６２が座標（ｓｘ１、ｓｙ１）で表され、次の時間に座標（ｓｘ２、ｓｙ２）で表される場合、これらの２点を繋ぐ線分がこの時間帯に得られたストロークデータとなる。この操作を単位時間ごとに繰返すことで複雑なストロークを表現できる。
【００５１】
ポインタ６２２によるストロークの生成操作が完了した場合、ストロークデータの最後の点にストロークが完了したことを示す完了フラグが付加される。図１５においては、座標（ｓｘＮ、ｓｙＮ）の座標が白丸で示されており、この点でストロークが完了していることを示す。
【００５２】
図１６を参照して、メモリ上では、ストロークデータ７００は、ストロークデータ領域７０２を占める。ストロークデータ領域７０２は、上記したように繰返し得られる一連の座標７１０，７１２，…，７１４と、一連の座標の最後に付加されるフラグ７１６とを含む。ストロークが完了していない場合には、フラグ７１６は付与されない。
【００５３】
このように、ユーザの操作に基づいて、予め定められた時間におけるポインタ座標の集合を特定することにより、ストロークデータ７００が得られる。このストロークデータ７００を分析することにより、ユーザがタブレット７８等を用いて描画した図形が特定できる。このようなユーザの一連の操作は、構造化データ２００に対するレイアウト処理（レイアウトデータの生成処理）についてのユーザの意思表示となる。このような意思表示が、ジェスチャとして表わされる。
【００５４】
・ジェスチャ情報データ
図１７を参照して、ジェスチャ情報データ７５０は、ストロークの部分と対照されるジェスチャの情報（ジェスチャ内容データ７６０及びジェスチャイメージデータ７６２）と、ジェスチャによるレイアウトデータの生成の仕方を示すアクション情報データ７６４とを含む。ジェスチャ内容には、たとえば、円を描く、繰返し行き来する、等の内容がある。それぞれのジェスチャが識別できるように、ジェスチャイメージデータ７６２の図形データが保持されている。例えばストロークの一部にジェスチャ図形と類似した部分が検出されると、そのジェスチャ図形に対応したジェスチャが検出されることになり、対応したアクション情報データ７６４により定められるアクションが実行される。アクション情報データ７６４は、レイアウトデータの生成の仕方の情報を保持している。例えば、図１７の「円を描く」というジェスチャ内容が検出された場合に実行されるアクションは、「円に外接する矩形を領域とする。直前に処理したノードに子ノードがあれば先頭の子ノードをこの領域に割当てる。子ノードがなければ兄弟ノードをこの領域に割当てる。」という内容を持つ。なお、レイアウトのための領域を決定する際には、ジェスチャが検出された領域を左右に、又は上下に、又はその両方について拡大しなければならない場合がある。アクション情報データ７６４には、そのような領域の補正に関する情報も含まれている。
【００５５】
図１８を参照して、メモリにロードされた時のジェスチャ情報データ８００は、各ジェスチャ情報８１０、８１２のように複数のジェスチャ情報を持つ。これらはメモリ上に別々に配置され、いずれも同じ構造を持つ。例えばジェスチャ情報８１０は、図１７のジェスチャ内容データ７６０に対応するジェスチャ内容データ８２０と、ジェスチャイメージデータ７６２に対応するジェスチャイメージデータ８２２と、アクション情報データ７６４に対応するアクション情報データ８２４とを含む。
【００５６】
［レイアウト生成装置で実行されるソフトウェア構造］
本実施の形態に係るレイアウト生成装置６０の制御部１４０は、記憶部１４２に記憶されているソフトウェア（プログラム）を実行することにより、各種の処理を実現する。すなわち、制御部１４０がソフトウェアを実行し、ソフトウェアの制御にしたがってコンピュータのハードウェア各部を制御することにより、構造化データに対するレイアウトデータが生成される。
【００５７】
・レイアウト生成処理プログラムの概要（メインフローチャート）
図１９を参照して、構造化データからレイアウトデータを生成するためのプログラムは、構造化データをハードディスク等からメモリに読込むステップ８５０、ユーザによるポインタの操作を検出しポインタの軌跡（ストローク）を形成するステップ８５２、ステップ８５２で生成されたストロークとジェスチャデータとを照合してジェスチャを検出するステップ８５４、ステップ８５４でストロークからジェスチャが検出されたか否かを判定するステップ８５６、ステップ８５６の判定が肯定的であるときに、検出されたジェスチャのアクション情報を用い、ジェスチャが検出された部分にレイアウトのための領域を生成するステップ８５８、並びに、ステップ８５６の判定が否定的であったとき、及び、ステップ８５６の判定が肯定的であってかつステップ８５８の処理が終了した後に行なわれ、ステップ８５２で生成されたストロークデータの末尾に完了フラグが付されているか否かを判定し、判定が肯定的であれば処理を終了するステップ８６０を含む。ステップ８６０の判定が否定的であれば、制御はステップ８５２に戻る。
【００５８】
図１９のステップ８５２で行われる処理（「操作検出処理」と呼ぶ。）の詳細を図２０に示す。図２０を参照して、操作検出処理を実現するプログラムは、予め定められている規定時間が経過したか否かを判定するステップ９００と、ステップ９００の判定が否定的であるときに、ユーザによりタブレット７８等の操作が行われたか否かを判定するステップ９０２とを含む。ステップ９０２の判定が否定的な場合、制御はステップ９００に戻る。ステップ９０２で検出されるユーザ操作は、例えばユーザがタブレット７８の描画面上でペン８０を移動させる操作、及び、ユーザがマウス７６のボタンを押しながらマウス７６を移動させる操作である。この処理はさらに、ステップ９０２の判定が肯定的であるときに、ユーザにより入力されているストロークが継続しているか否かを判定するステップ９０４と、ステップ９０４の判定が肯定的であるときに、検出されたストロークデータを追加し、蓄積して制御をステップ９００に戻すステップ９０６とを含む。
【００５９】
この処理はさらに、ステップ９０４の判定が否定的であるときに、これまでに蓄積されていたストロークデータに完了フラグを付加するステップ９１０と、ステップ９１０の後、この処理で生成されたストロークデータを親ルーチン（図１９参照）に返し、制御を親ルーチンに戻すステップ９１２とを含む。
【００６０】
この処理はさらに、ステップ９００の判定が肯定的であるときに、ユーザにより入力されたストロークデータがあるか否かを判定し、判定が否定的であれば制御をステップ９００に、肯定的であれば制御をステップ９１２に、それぞれ分岐させるステップ９０８を含む。
【００６１】
図２１を参照して、図１９のステップ８５４で実行される処理（「ジェスチャ特定処理」と呼ぶ。）は、ステップ８５２で生成されたストロークデータを取得するステップ９５０と、ジェスチャ情報データを全てハードディスクなどからメモリに読出すステップ９５２と、ステップ９５０で取得されたストロークデータを解析し、ストロークデータの一部からジェスチャと解釈できるような部分を抽出するステップ９５４とを含む。抽出された部分を、以後の処理でジェスチャ情報データ内のジェスチャイメージと比較することにより、所定のジェスチャを検出する。
【００６２】
すなわち、このプログラムは、ステップ９５４の後、ステップ９５４で抽出された部分のストロークからなる図形を全てのジェスチャ情報データのジェスチャイメージと比較したか否かを判定するステップ９５６と、ステップ９５６の判定が否定的であるときに、ジェスチャ情報データのうち、まだ比較が済んでいないデータを取得するステップ９５８と、ステップ９５８で取得されたジェスチャ情報データのジェスチャイメージと、処理対象となっている図形とが一致するか否かを判定し、判定が否定的であれば制御をステップ９５６に戻すステップ９６０とを含む。
【００６３】
このプログラムはさらに、ステップ９６２の判定が肯定的であるときに、一致が検出されたジェスチャ情報データを親ルーチンに返して制御を親ルーチンに戻すステップ９６２と、ステップ９５６の判定が否定的であるときに、ジェスチャが検出されていないことを示す情報を親ルーチンに介して制御を親ルーチンに戻すステップ９６４とを含む。
【００６４】
図１９のステップ８５８は、ステップ８５４で、ストロークデータと一致するジェスチャが検出されたときに実行される。図２２を参照して、この処理は、ステップ８５４で検出されたジェスチャのジェスチャ情報データを取得するステップ１０００と、ユーザが入力したストロークを示すストロークデータを取得するステップ１００２と、ステップ１００２で取得されたストロークデータから、ジェスチャが検出された部分の領域を特定する座標を取得するステップ１００４と、ステップ１００６で取得されたジェスチャ情報データから、アクション情報データを取得するステップ１００６とを含む。
【００６５】
このプログラムはさらに、ステップ１００６で検出されたアクション情報データに基づき、レイアウト領域を決定するためにステップ１００４で取得された座標を補正する必要があるか否かを判定するステップ１００８と、ステップ１００８の判定が肯定的であるときに、アクション情報データに基づいて、ジェスチャが検出された領域の座標を補正し、レイアウト用の領域を生成（座標を特定）するステップ１０１０と、ステップ１００８の判定が否定的である場合、及びステップ１００８の判定が肯定的でかつステップ１０１０の処理が完了したときに実行され、検出されたジェスチャのジェスチャ情報データ内のアクション情報データに基づき、レイアウトのために生成された領域と構造化データ内のノードとの対応情報を生成し、そのレイアウトの領域に、構造化データ内で対応するノードのデータを表示して制御を親ルーチンに戻すステップ１０１２とを含む。
【００６６】
［動作］
このレイアウト生成装置６０は以下のように動作する。
【００６７】
図１９に制御構造を示すプログラムが起動されると、ステップ８５０において、制御部１４０は、ユーザにより指定された構造化データをハードディスクからメモリに読み出す。続いてステップ８５２において、ユーザの操作を検出する。
【００６８】
図２０を参照して、ユーザが何も操作していない場合には、制御はステップ９００、９０２という経路を経てステップ９００に戻る処理を繰返す。そのまま規定時間が経過すると、ステップ９００からステップ９０８の処理が実行され、再度ステップ９００に戻って前と同じステップ９００及び９０２を繰返す処理が実行される。
【００６９】
ユーザがタブレット７８等を操作してストロークを形成する処理を開始すると、ステップ９０２の判定がＹＥＳとなるため、制御はステップ９００，９０２，９０４、及び９０６を経てストロークデータが蓄積される。ユーザがストロークを形成する処理を継続すると、上記した処理が繰返し実行され、ストロークデータが蓄積されていく。規定時間が経過するごとに、ステップ９００の判定が肯定的となり、さらにステップ９０８の判定も肯定的となって、ステップ９１２の処理が実行され、ストロークデータが親ルーチンに戻され、図２０に示す処理は一旦終了する。
【００７０】
再び図１９を参照して、このストロークデータに対し、ステップ８５４のジェスチャ特定処理が実行される。
【００７１】
図２１を参照して、ステップ９５０，９５２，９５４の経路により、ストロークデータ中でジェスチャである可能性のある図形（対象図形）が抽出され、ステップ９５６、９５８及び９６０の処理により、ジェスチャ情報データとして準備されているジェスチャのいずれかと一致するか否かが判定される。対象図形がジェスチャと一致しなければ、ステップ９６４の処理が実行されてジェスチャが検出されなかったという情報が親ルーチンに返され、制御は親ルーチンに戻る。
【００７２】
図１９を参照して、この場合、ステップ８５６の判定がＮＯとなり、制御はステップ８５６からステップ８６０に移動する。この時点ではまだストロークには完了フラグが付されていないため、ステップ８６０の判定は否定的となり、制御はステップ８５２に戻ることになる。
【００７３】
ユーザが引き続きストロークを描き続けると、制御部１４０は上のような処理を繰返す。ユーザが描くストロークデータの中に、ジェスチャのいずれかと一致するような図形が描かれたものとする。例えば、図２３に示すように、レイアウト対象領域１０５４の中に、ストローク１０５６によって円形の図形１０５８が描かれたものとする。すると、図１９のステップ８５４のジェスチャ特定処理において、この図形に基づいてジェスチャが検出される。具体的には、図２１のステップ９６０の判定が肯定的となるようなジェスチャ情報データが特定される。ステップ９６２の処理が実行され、特定されたジェスチャ情報データに対応するジェスチャが検出されたという情報が親ルーチンに戻される。図１９を参照して、この場合にはステップ８５６の判定が肯定的となる。その結果、ステップ８５８のレイアウト生成処理が実行される。
【００７４】
図２２を参照して、制御部１４０は、ステップ１０００及び１００２の処理を経て、検出されたジェスチャの図形が検出された領域の座標を取得する。さらに、ステップ１００６でジェスチャ情報データからアクション情報データを取得し、このアクション情報データにより、ステップ１００４で取得した領域の座標を補正する必要があるか否かを判定する。アクション情報データの内容に基づき、補正が必要ならステップ１０１０で領域の座標が補正される。最後に、ステップ１０１２で、アクション情報データに応じて、構造化データとの対応情報が生成される。具体的には、構造化データのうちで、現在の対象となっているノードに対して所定の関係にあるノードをこの領域に対応するノードとして割当て、その「要素」をこの領域の「構造」（図１３を参照）に割当てる。処理は構造化データ（図３参照）のツリーのノード「ｒｏｏｔ」が対象ノードとなっているので、最初に検出されたジェスチャから生成された領域には、図２４に示すように、例えば「ｒｏｏｔ」ノード２１０の子ノードのうちの最初のノード２１２が割当てられる。
【００７５】
ここでは、まだレイアウトデータが生成されていないので新たなレイアウトデータが生成される。新たなレイアウトデータは、＜ｌａｙｏｕｔ＞タグにとその終了タグのみを含むデータである。その後、図２５に示すように、新たなレイアウトの領域に対応する記述１０９２が＜ｌａｙｏｕｔ＞タグと終了タグとの間に記述される。この結果に対応して、図２６に示すように、ジェスチャが検出された領域３１０に、ノード２１２のテキスト「問題１  面積」という文字が表示される。
【００７６】
以後も同様である。例えばユーザの操作により、図２７に示すようにストローク１０５６がさらに延長され、新たな円形図形１０６０が形成されると、この図形がジェスチャとして検出され、円形図形１０６０が形成された領域から新たなレイアウト用の領域が生成される。このレイアウト用の領域には、アクション情報データにしたがって、構造化データの別のノードが割当てられる。ここでは例えば、アクション情報により対象ノードの子ノードのうち、最初のノードが割当てられるものとする。現在の対象ノードはノード２１２であるから、図２８に示すように、新たなレイアウト用の領域には、ノード２１４が割当てられる。これに応じて、図２９に示すように、新たな領域の位置及び大きさと、新たな領域とノード２１４との対応付けとを含む記述１０９４がレイアウトデータ１０９０に追加される。この結果、図３０に示すように、レイアウト対象領域１０５４の中に新たなレイアウト用の領域３１２が定められ、構造化データのノード２１４に付されたテキストデータが表示される。
【００７７】
同様に、図３１に示すようにストローク１０５６により新たな図形１０６２，１０６４及び１０６６が描かれると、それらがいずれもジェスチャとして検出される。その結果、これらの図形の領域により新たなレイアウト用の領域（図３２の領域３１４，３１６，及び３１８）が定められる。さらに、検出されたジェスチャ情報データのアクション情報データに基づいて、図３３において太線で示すように、それらレイアウト用の領域に構造化データのノード２１６，２１８及び２２０がそれぞれ割当てられる。そして、図３２に示すように、新たなレイアウト用の領域に、対応するノードに付された画像又はテキストデータが表示される。図３４に示すように、これら新たなレイアウト用の領域の各々の位置及び大きさを示す座標データと、それら領域と構造化データのノードとの関係に関する記述１０９６，１０９８及び１１００が生成され、レイアウトデータ１０９０に追加される。
【００７８】
このような作業の後、ユーザがストロークの形成を終わると、図１９のステップ８５２で実行される、図２０のステップ９０４の判定が否定的となる。ステップ９１０において、ストロークデータの末尾に完了フラグが付加される。図１９を参照して、ステップ８５２の後、ステップ８５４、８５６及び８５８、又は、ステップ８５４及び８５６の処理がされた後、ステップ８６０で判定が肯定的となる。この結果、上に説明した処理で生成されたレイアウトデータが保存され、プログラムの実行が終了する。
【００７９】
以上のようにこの実施の形態に係るレイアウト生成装置６０によれば、ユーザがタブレット７８等を用いて一筆書きのストロークを描き、かつその途中で構造化データの中のデータを配置したいと思う箇所で所定の図形を描くだけで、構造化データの各要素を配置したレイアウトデータが生成される。生成の過程でレイアウト用の領域に構造化データの中のノードが割当てられるたびに、その領域にそのノードに付されたテキストデータ又は画像データなどが表示される。そのため、レイアウト途中で最終的なレイアウトがどのようになるかを容易に予測できる。さらに、アクション情報データの記述を様々に変えることにより、レイアウト領域の形状、大きさ等の補正を行なったり、構造化データの各ノードとの対応関係をどのようにして定めるかを定義したりすることができる。そのため、簡単な操作で、構造化データと関係付けられた複雑なレイアウトデータを生成できる。
【００８０】
＜アクション情報の相違による動作の変化＞
既に述べたように、構造化データ内の各ノードのうち、レイアウト用の領域が決まったときにその領域と関係付けられるノードの決め方は、アクション情報データの記載により変化する。構造化データ内の上記実施の形態で具体的に述べた例では、ルートノード直下の兄弟ノードだけではなく、それらの子ノードまで見てノードとレイアウト用の領域とを対応付けている。
【００８１】
例えば、図３５（Ａ１）を参照して、レイアウトの対象となる構造化データ１１３０が、ルートノード１１４０と、ルートノード１１４０の子ノードであるノード１１４２及び１１５０と、それぞれノード１１４２とノード１１５０との子ノードであるノード１１４４及び１１５２を含むものとする。上記実施の形態では、あるノード（処理対象ノード）をあるレイアウト用の領域に関係付けることが決まった後、次の処理対象ノードは、現在の処理対象ノードの子ノードとされている。図（Ａ２）を参照して、レイアウト対象領域１１９０にストローク１１９２が描かれ、円１１９４及び１１９８が描かれたものとする。これら円１１９４及び１１９８に対応して、それぞれレイアウト用の領域１１９６及び１２００が定められるが、これらにはノード１１４２及び１１４４が割当てられる。これは、「円」のジェスチャのアクション情報デーが、ノード１１４２及び１１５０のように兄弟ノードを優先するのではなく、子ノードを優先することを指定しているためである。しかし、アクション情報データを変えることにより、このような動作と異なる動作を実現できる。
【００８２】
図３５（Ｂ１）に示すように、図３５（Ａ１）と全く同じ構造化データ１１３０の各ノードをレイアウト用の領域と対応付けるにあたり、「円」のジェスチャのアクション情報データにより、兄弟ノードを優先するようにしてもよい。この場合、例えば図３５（Ｂ２）に示されるように、図３５（Ａ２）と同じストローク１１９２を描いたとしても、レイアウト用の領域１１９６及び１２００には、それぞれノード１１２及び１１５０が割当てられる。このようにしてレイアウトする場合には、兄弟ノードの子ノードはレイアウトの対象から外すことが望ましい。
【００８３】
もちろん、次に処理対象のノードを決める方法として、デフォルトの方法を定めておき、アクション情報データにノードの指定が規定されていないときには、デフォルトの方法にしたがって定めるようにしてもよい。
【００８４】
さらに、レイアウト用の領域に構造化データのノードを割当てる際には、ノードの中で特定の属性を持つものだけを対象としたり、特定の属性を持つものを排除したりするようにしてもよい。アクション情報データにおいて、選択の対象となるノードの属性を指定することもできる。
【００８５】
＜変形例１＞
上記実施の形態では、レイアウト用の領域の大きさは、基本的にはジェスチャの領域によってきまる。すなわち、図３６（Ａ）に示すように、レイアウト対象領域１２４０にストローク１２４２が描かれ、ジェスチャ１２４４が検出されたものとする。このジェスチャは、図１７に示したように、ペンを上下又は左右に行き来させる操作を繰返した場合、新たなレイアウト用の領域を定め、そのペンの繰返し方向の大きさ（上下であれば高さ、左右であれば幅）を、レイアウト対象領域１２４０内でレイアウト可能な領域全体の大きさにあわせるというジェスチャである。この場合、他方向の大きさ（ペンを上下に繰返し行き来させた場合には領域の幅、左右に繰返し行き来させた場合には領域の高さ）については、上記実施の形態ではジェスチャの領域の大きさによって基本的に定められる。
【００８６】
しかし、本発明はそのような実施の形態に限定されるわけではなく、領域の一方向の大きさが定められた後、他方の大きさをデータによって定めても良い。テキストデータの場合であれば、テキストに含まれる文字数、フォントの大きさ、領域として確保できる大きさ、レイアウト対象の媒体等により、できるだけ見やすくそのテキストを表示できるように、領域の大きさを変更するということである。この変形例の場合、領域の大きさに限らず、領域の一般的な属性を変更することもできる。領域の属性とは、上記したように領域の大きさ以外に、その位置、内部に配置される文字のサイズ又は行間、図形の場合の倍率を含む。レイアウト媒体が電子的なものの場合には、さらに、領域に配置されるＵＩ要素の種類及びその属性を変更することができる。
【００８７】
例えば、図３６（Ａ）に示すように、レイアウト用の領域１２５２が定められ、その横方向の幅が決められたものとする。そしてこの領域１２５２には、ノード１２４６が対応付けられたものとする。ノード１２４６には、要素としてテキストデータ１２４８が付されているものとする。すると、領域１２５２の高さは、例えばテキストデータ１２４８が全て表示できるならそのために必要な最低限の大きさに定めることができる。テキストデータ１２４８が全て表示できるような高さが確保できないときには、領域１２５２をどのようにするかについて、予めルールを定めておき、そのルールにしたがって領域１２５２の属性を定める。ここでいう属性には、領域の大きさ、位置、領域に表示される要素の拡大／縮小率が含まれ、さらに、電子媒体であれば、領域に配置されるＵＩ要素の種類及びその属性などが含まれる。
【００８８】
例えば紙媒体上にテキストデータ１２４８をレイアウトするのであれば、テキストデータ１２４８の全体が表示できるよう、文字の大きさ、行間等を小さくすることが考えられる。これに対し、媒体が電子書籍等の場合には、より柔軟に対応できる。例えば、領域１２５２内に、スクロール可能なテキスト表示フィールドを配置し、そのフィールド内にテキストデータ１２４８を流し込むことができる。又は、領域１２５２にページ送り可能なテキスト表示フィールドを配置し、各ページにテキストデータ１２４８を順に流し込むことができる。図形等の場合も同様である。電子的な媒体で、ジェスチャにより指定された領域に図形をレイアウトする。図形の全体を表示できる大きさの領域が確保できないときには、必要に応じて縦方向又は横方向にスクロール可能なＵＩ要素（キャンバス等）をその領域に設定し、そのＵＩ要素に図形を描画できる。こうした処理は、ジェスチャにより指定された領域について、その属性を補正する処理ということができる。前述したとおり、この補正をどのように行なうかについては、レイアウト対象の媒体の種類、ジェスチャにより指定された領域の大きさ、周囲の領域の配置、利用可能なＵＩの種類等により判定するルールを予め作成しておく必要がある。そうしたルールを予め作成しておけば、個々の処理には既存の技術が利用できるため、上記した補正処理は比較的単純な判定処理により実現できる。図２２のフローチャートでいえば、ステップ１０１２の次に上記した処理を追加すればよい。
【００８９】
例えば図３６（Ｂ）に示すように、ノード１２４６に付されている要素であるテキストデータ１２６０が非常に長い場合を考える。レイアウト対象が紙媒体の場合、ジェスチャに対応して定められる領域１２７２の高さは、テキストデータ１２６０を全て表示できるようにするために、図３６（Ａ）に示す領域１２５２よりも大きくなる。レイアウト対象が電子媒体の場合には、領域１２７２の高さを図３６（Ａ）に示す領域１２５２と同じに保ちながら、領域１２７２にスクロール又はページ送りが可能なフィールドを設けることができる。
【００９０】
同様の考え方は、ノードに付された要素がテキストデータではなく画像である場合にも適用できる。図３７（Ａ）（Ｂ）を参照してレイアウト対象領域１３１０において、ユーザがストローク１３１２を描き、その途中でジェスチャ１３１４を描いたものとする。この場合のジェスチャは、ペン先を一箇所で小さく何回か回転させる操作に対応する。この結果、このジェスチャ１３１４を中心として、レイアウト用の領域が定義され、その領域と、構造化データ内のあるノードとが対応付けられる。領域の中心は、ジェスチャの座標との関係で決定され、その大きさは、基本的には対応付けられるノードに付された画像データの大きさにより決定される。
【００９１】
例えば、図３７（Ａ）の場合には、ノード１３２０が対応付けられ、ノード１３２０には２４０ピクセル×２４０ピクセルの画像データ１３２２が要素として付されているものとする。レイアウト対象が紙媒体の場合、可能であれば、レイアウト用の領域としては、画像データ１３２２を表示するために必要十分な大きさの領域１３３２が設定される。もしもそのような大きさの領域を確保できない場合には、図形の中心部のみをその領域に配置したり、図形を縮小してその領域内に配置したりしてもよい。レイアウト対象が電子媒体の場合には、この領域にスクロール可能なＵＩ要素を配置できる。一方、図３７（Ｂ）の場合には、このレイアウト用の領域にはノード１３４０が対応付けられ、ノード１３４０には４８０ピクセル×４８０ピクセルの画像データ１３４２が要素として付されているものとする。レイアウト対象が紙媒体の場合には、好ましくは、レイアウト用の領域１３５２は、画像データ１３４２を表示可能な大きさに拡大される。領域１３５２を十分に拡大できないときには、画像データ１３４２による画像の一部のみを領域１３５２に配置したり、画像データ１３４２による画像を縮小して領域１３５２に配置したりできる。画像の全体が表示できれば好ましいが、必ずしも全体が表示できなくてもよい。レイアウト対象が電子媒体の場合も同様で、領域１３５２は、画像データ１３４２を表示可能な大きさに拡大される。しかし電子媒体の場合、領域１３５２を十分に拡大できないときには、領域１３５２に横方向又は縦方向にスクロール可能なＵＩ要素を配置し、そのＵＩ要素に画像を描画することもできる。
【００９２】
このようにすることで、構造化データに含まれる画像を、ユーザのジェスチャに応答し、媒体の種類、領域の配置、及び表示すべきデータ等に基づいて簡単にレイアウトできる。なお、処理対象の媒体が予め定められている場合には、媒体の種類を判定する必要がないことは当然である。
【００９３】
＜第２の実施の形態＞
以下に、本発明の第２の実施の形態に係る生成装置について説明する。第１の実施の形態と同様に、本実施の形態に係る生成装置は、オブジェクトに対して構造化データを生成するのみならず、生成された構造化データを編集したり削除したりできる。本実施の形態に係る生成装置は、第１の実施の形態に係る生成装置において適用されたジェスチャ情報データとは異なるジェスチャ情報データを適用して、オブジェクトに対して構造化データを生成したり、編集したり、削除したりする。なお、生成装置のハードウェア構造（図１及び図２）及びフローチャート（図１８〜図２２）については、上述した第１の実施の形態と同じであるため、ここでの詳細な説明は繰返さない。
【００９４】
＜変形例２＞
上記実施の形態では、レイアウト用の領域に対して、構造化データの１つのノードを対応付ける例を記載しているが、もちろん、図１０のレイアウトデータ４１０の２つの＜ａｒｅａ＞タグにより示すように、１つの領域に２個のノードを対応付けることも可能である。この場合、領域の大きさを、割当てられたノードに付された要素の量に応じて調整することが必要になる。
【００９５】
図３８（Ａ）を参照して、処理対象の構造化データ１３９０が、ルートノード１３９２と、ルートノード１３９２の子ノード１３９４及び１３９８と、それぞれノード１３９４及び１３９８から分岐したノード１３９６及び１４００とを含むものとする。図３８（Ｂ１）及び（Ｂ２）に示すように、レイアウト対象領域１４１０にユーザがストローク１４１２を形成し、その途中でジェスチャ１４１４を描いたものとする。この結果、ジェスチャ１４１４の位置と所定の関係を持って、レイアウト用の領域の中心位置が決まる。
【００９６】
図３８（Ｂ１）に示す例では、この領域に対応付けられるノードはノード１３９４だけである。したがって、最終的な領域１４１６は、ノード１３９４に付された要素のテキスト（「本文１」）が表示できるのに必要十分な大きさが確保できればその大きさに調整される。そのような領域が確保できなければ、媒体の種類に応じ、文字サイズを小さくしたり、行間を小さくしたり、スクロール又はページ送り可能なＵＩ要素を採用したりすることができる。一方、図３８（Ｂ２）に示す例では、この領域に対応付けられるノードはノード１３９４とその子ノード１３９６の双方である。したがって、最終的な領域１４１８は、ノード１３９４に付された要素のテキストと、ノード１３９６に付された画像データ（「図１」）との双方を表示するための大きさに調整される。この場合にも、十分な大きさの領域が確保できなければ、媒体の種類に応じ、文字サイズを小さくしたり、行間を小さくしたり、スクロール又はページ送り可能なＵＩ要素を採用したりすることができる。
【００９７】
なお、図３８に示す例では、領域に割当てられるノードの要素を表示するために、レイアウト用の領域の大きさを調整したり、その領域に配置されるＵＩ要素の属性を選択したりしている。しかし本発明はそのような実施の形態には限定されない。例えば、逆にジェスチャにより領域の大きさを定め、その領域に表示できる限度で、その領域に対応付けるノードを１又は複数個選択するようにしてもよい。
【００９８】
＜変形例３＞
上記実施の形態及び変形例１及び２では、ジェスチャによってレイアウトデータを生成するようにしている。しかし、本発明はそのような実施の形態には限定されない。既に作成されたレイアウトデータの各領域に、構造化データの各ノードを割当てるような実施の形態も考えられる。この場合にも、基本的にはユーザが描く一筆書きのストロークによって、各領域とノードとの対応関係を決定する。その操作例を図３９に示す。
【００９９】
図３９（Ａ）を参照して、既にレイアウトデータが準備されているものとする。このレイアウトデータによると、レイアウト対象領域１４５０に、５つの領域１４５２，１４５４、１４５６，１４５８，及び１４６０が規定されている。ただし、これら各領域と構造化データのノードとの対応関係は付けられていない。ここで、ユーザが図３９（Ｂ）に示すように一筆書きのストローク１４７０を描いたものとする。このとき、ユーザは、ストローク１４７０が、各領域１４５２，１４５４，１４５６，１４６０、及び１４５８という順序で通過するようにストローク１４７０を描く。
【０１００】
この場合、この変形例に係る装置は、ストローク１４７０が各領域１４５２，１４５４，１４５６，１４６０，及び１４５８の領域に最初に入ったタイミング（図３９（Ｂ）の点１４７２，１４７４，１４７６，１４７８，及び１４８０）で、上記実施の形態と同様の方法で各領域と構造化データの各ノードとの対応関係を付け、新たなレイアウトデータを生成する。その本質的な部分は上記第１の実施の形態に係るレイアウト生成装置６０と同様であり、ジェスチャの検出及びレイアウト用の領域の生成を行なわない、という点が異なっている。
【０１０１】
＜変形例４＞
上記変形例３においては、各領域が既に作成されていることが前提で、各領域に構造化データの各ノードがユーザの一筆書き操作により対応付けられる。しかし本発明はそのような実施の形態には限定されない。例えば、既に領域がある場合であっても、ユーザのジェスチャに応じて各領域の位置及び大きさを更新するようにしてもよい。この例について図４０を参照して説明する。
【０１０２】
図４０を参照して、構造化データ１５４０に、既存のレイアウトを割当てる場合を考える。構造化データ１５４０は、図４０に示すように、ノード１５４２を含み、このノードの要素が比較的長いテキストデータ１５４４であるものとする。図４０の下左に示すように、レイアウト対象領域１５５０に、既に領域１５５４が設定されているものとする。この状態でユーザがストローク１５５２を描き、領域１５５４の内部までストロークが移動したものとする。すると、レイアウト生成装置は、領域１５５４にストローク１５５２が入った段階でこの領域１５５４をノード１５４２と対応付ける。さらに、ユーザが、この領域１５５４内で例えば「円」のジェスチャをしたものとする。レイアウト生成装置は、このジェスチャを検出すると、既に設定されていた領域１５５４の位置及び大きさを、この領域に対応付けられたノード１５４２の要素であるテキストデータ１５４４にあわせて設定しなおす。すなわち、ノード１５４２の要素であるテキストデータ１５４４が長い場合には、レイアウト生成装置は、もとの領域１５５４ではなく、図４０の右下に示すように、この領域１１５４を拡大又は縮小して、テキストデータ１５４４を表示するのに必要十分な大きさの新たな領域１５５６とし、この領域１５５６の内部に、ノード１５４２に付加されたテキストデータ１５４４を配置して表示する。又は、領域１５５６の大きさは変化させず、領域１５５６に配置されるＵＩ要素の属性をスクロール可能なＵＩ要素又はページ送り可能なＵＩ要素に変更する。
【０１０３】
以上のように、本実施の形態に係るレイアウト生成装置によると、レイアウト対象領域に一筆書きを描き、所望の領域でジェスチャ図形を描くという簡単な操作を行なうことにより、レイアウト用の領域の大きさ又はその属性を適切に規定できる。さらに、各領域を構造化データの１又は複数のノードと対応付けることができる。その対応付けは、アクション情報データにより、又はデフォルトの対応付けルールにより柔軟に行なえる。レイアウト対象領域は、レイアウトデータの生成処理の開始時には空白だが、新たな領域の定義がされるたびに、構造化データのうち、その領域と対応付けられたノードの要素が表示される。したがって、構造化データのレイアウト後の様子を容易に想像でき、レイアウトの操作が簡単に行なえる。
【０１０４】
このようにして得られたレイアウトデータは、構造化データのノードと関連付けられているので、異なる構造化データであっても、その構造が同じものであれば同じレイアウトデータを用いてレイアウトできる。その結果、構造化データの各ノードの要素を対応する領域に流しこむだけで、簡単に最終的なレイアウトを得ることができる。
【０１０５】
上記実施の形態では、ストロークを描くためにタブレット７８又はマウス７６を想定している。しかし本発明はそのような実施の形態には限定されない。例えばタッチパネルを用いても良いし、いわゆるタブレット型コンピュータを入力装置として用いても良い。また、ストロークを生成する際には、必ずしもペン、マウス、又は指先をドラッグする必要はない。例えば、ユーザがキーボード等の上に備えられた何らかのボタンを押しながら、入力面の所望位置をマウス等のポインティングデバイスで指定することで点を特定し、連続して指定された点を結ぶストロークを入力するようにしてもよい。
【０１０６】
今回開示された実施の形態は単に例示であって、本発明が上述した実施の形態のみに限定されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【符号の説明】
【０１０７】
６０  レイアウト生成装置
７０  コンピュータ
７２  表示パネル
７４  キーボード
７６  マウス
７８  タブレット
８０  ペン
１４０  制御部
１４２  記憶部
１４４  表示部
１４６  操作部
１４８  外部インターフェイス部
１５０  ネットワーク
２００，５００  構造化データ
２１０  ルートノード
２１２，２１４，２１６，２１８，２２０  ノード
２７０  ＸＭＬファイル
３５０，３８０，４１０，５６０，１０９０  レイアウトデータ
４４０，６１０，１０５４  レイアウト対象領域
４４２，６２０１０５６  ストローク
４４６，４５０，４５８，４６０，４６２  レイアウト用の領域
７００  ストロークデータ
７５０，８００  ジェスチャ情報データ
７６０，８２０  ジェスチャ内容データ
７６２，８２２  ジェスチャイメージデータ
７６４，８２４  アクション情報データ
【図１】
2013148995.tif 000003
【図２】
2013148995.tif 000004
【図３】
2013148995.tif 000005
【図４】
2013148995.tif 000006
【図５】
2013148995.tif 000007
【図６】
2013148995.tif 000008
【図７】
2013148995.tif 000009
【図８】
2013148995.tif 000010
【図９】
2013148995.tif 000011
【図１０】
2013148995.tif 000012
【図１１】
2013148995.tif 000013
【図１２】
2013148995.tif 000014
【図１３】
2013148995.tif 000015
【図１４】
2013148995.tif 000016
【図１５】
2013148995.tif 000017
【図１６】
2013148995.tif 000018
【図１７】
2013148995.tif 000019
【図１８】
2013148995.tif 000020
【図１９】
2013148995.tif 000021
【図２０】
2013148995.tif 000022
【図２１】
2013148995.tif 000023
【図２２】
2013148995.tif 000024
【図２３】
2013148995.tif 000025
【図２４】
2013148995.tif 000026
【図２５】
2013148995.tif 000027
【図２６】
2013148995.tif 000028
【図２７】
2013148995.tif 000029
【図２８】
2013148995.tif 000030
【図２９】
2013148995.tif 000031
【図３０】
2013148995.tif 000032
【図３１】
2013148995.tif 000033
【図３２】
2013148995.tif 000034
【図３３】
2013148995.tif 000035
【図３４】
2013148995.tif 000036
【図３５】
2013148995.tif 000037
【図３６】
2013148995.tif 000038
【図３７】
2013148995.tif 000039
【図３８】
2013148995.tif 000040
【図３９】
2013148995.tif 000041
【図４０】
2013148995.tif 000042