JP2003511748A - テキスト・グラフィック・オブジェクトのレイアウト処理 - Google Patents

テキスト・グラフィック・オブジェクトのレイアウト処理

Info

Publication number
JP2003511748A
JP2003511748A JP2001514375A JP2001514375A JP2003511748A JP 2003511748 A JP2003511748 A JP 2003511748A JP 2001514375 A JP2001514375 A JP 2001514375A JP 2001514375 A JP2001514375 A JP 2001514375A JP 2003511748 A JP2003511748 A JP 2003511748A
Authority
JP
Japan
Prior art keywords
compression
text
degree
expansion
order
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001514375A
Other languages
English (en)
Inventor
ホーリングズワース・デイビッド・イー
ハルステッド・ロバート・エイチ・ジュニア
Original Assignee
カール・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by カール・コーポレイション filed Critical カール・コーポレイション
Publication of JP2003511748A publication Critical patent/JP2003511748A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Processing Or Creating Images (AREA)
  • Document Processing Apparatus (AREA)
  • Digital Computer Display Output (AREA)

Abstract

(57)【要約】 グラフィック・オブジェクトのレイアウトを処理するために、グラフィック・オブジェクトに対し弾性データ構造を設定して、最小かつ望ましいサイズ、伸長特性、および圧縮特性を定義する。弾性の1 つの用途は、テキスト・ブロックに対するものであり、この場合には、各テキスト・ブロックの望ましい幅と圧縮度は、そのテキスト・ブロックのテキスト量の関数になる。複合のグラフィック・オブジェクトは、コンポーネントの相対的弾力性に依存する加算および最大オペレーションを通して、それらのコンポーネントから計算される弾性特性を含む。グラフィック・オブジェクト内の原点の位置は、2 次元の各々のペアの弾性により定義される。グラフィック・オブジェクトのデフォルトの幅または高さの基本設定値はオーバライドできる。オーバライド弾性は、特定の表示関係を維持しながら、グラフィック・オブジェクト内の表示特性を変化させるための実効的なメカニズムである。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
近年、インターネットを利用するユーザ数は指数関数的に増加してきた。この
人気の増大につれ、" オンライン利用" を強化するツールに対する需要も増加し
てきた。この要望に答えるために、Java(登録商標)のようなオブジェクト志向
の新しいコンピュータ・プログラム言語が開発されてきた。これらの言語は従来
技術を通して進歩したものであるが、改良の余地は残っている。詳細には、可変
サイズ・ウインドウ内のグラフィック・オブジェクトの複雑な構造のレイアウト
を効率的に変更する能力において改良の余地がある。これらの言語を使用して、
Web サイト上で高品質、リアルタイムのグラフィックスを実現することは困難で
ある。
【0002】 Javaにより、グラフィック・オブジェクトに対し最小と最大サイズを指定でき
、これら最小と最大サイズとの差が大きい場合、これらの値を利用してオブジェ
クトにさらに伸縮性を持たせることができる。
【0003】 インターネット用途向けに特定して開発された言語は、MIT Curl Language で
あり、これはM. Hostetterらによる、"Curl:A Gentle Slope Language for the
Web,"WorldwideWeb Journal, Vol 2, Issue 2, O'Reilly & Associates, Spling
1997 に記載されている。本発明の実施形態はCurl言語を拡張している(本発明
の実施形態の言語は、"Curl"と呼ばれ、以前の"MIT Curl"言語と区別されている
)。MIT Curlはスリー・パス・レイアウト・ネゴシエーション方法(three pass
layout negotiation )を使用しており、オブジェクトを、最小サイズと伸張係
数に関してそれらのサイズの基本設定値(size preference) を記述できた。
【0004】 TeX はテキスト・フォーマット・プログラムであり、広く使用されている。こ
のプログラムは、Donald E. Knuth のThe TeXBook, Addison-Wesley, Reading,
MA, 1984により開発された。TeX は、" グルー(glue)" として知られるコンセ
プトを利用してフィル・オブジェクトの寸法基本設定値を表わし、また異なる伸
張および圧縮オーダーを組み込んでおり、このオーダーを使用して異なる種類の
フィル・オブジェクトを記述できる。全体レイアウトが変化するとき、個々のフ
ィル・オブジェクトの寸法はこれらオブジェクトの望ましいサイズと伸張度に依
存して変化する。
【0005】 Stk と呼ばれるRobert Haistead により開発されたグラフィックス・ツール・
キットは、" グルー(glue)" として知られる弾性のコンセプトを取り入れてお
り、容積を持つグラフィック・オブジェクトに関する最小サイズ、伸張度係数、
および伸張オーダーの機能を有する。このキットは、弾性追加、最大化および分
割オペレーションに関して、グラフィック・オブジェクトの水平および垂直ボッ
クスのレイアウト計算を公式化している。Stk は一般には知られておらず、また
使用されていない。Stk のレイアウト・メカニズムはSwatに組み込まれている。
Swatは、MIT において、Harold Abelson、James MillerおよびNatalya Cohen に
より開発されたグラフィックス・ツールである。
【0006】
【発明の概要】
本発明によれば、複数のテキスト・ブロックを処理してテキストをレイアウト
するのを容易にするシステム、方法、およびデータ構造が提供される。各テキス
ト・ブロックの望ましい幅と圧縮度は、テキスト・ブロック内のテキストの量の
関数として定義される。テキスト・ブロックの幅と圧縮度が処理されて、テキス
ト・ブロックの全体レイアウトが決定される。
【0007】 テキスト・ブロックを決定する望ましいデータ構造は、テキスト・データと、
テキスト・データの望ましい幅と、テキスト・データの幅に対する圧縮度特性と
を含む。
【0008】 好ましくは、各テキスト・ブロックの伸張度は圧縮度とは別個に決定され、ま
たテキストの伸張度は、それの圧縮度より実質的に大きい。伸張度は伸張オーダ
ーと慎重度係数により決定でき、また圧縮度は圧縮オーダーと圧縮度係数により
決定できる、さらにテキストの伸張オーダーは圧縮度オーダーよりも大きい。
【0009】 好ましくは、テキスト・データ構造はさらに、各テキスト・ブロックの望まし
いサイズを含み、それによりテキストを最小のライン数でレイアウトする。圧縮
度係数は、テキスト長さ、特にテキスト・ブロック内の最長パラグラフの長さに
比例するように決定される。
【0010】 好ましい実施形態では、グラフィック・オブジェクトのオリジナル・レイアウ
トの弾性をオーバーライド(更新)する方法は、そのグラフィック・オブジェク
トの寸法の新しいレイアウト弾性を受け取るステップを含む。このとき、この新
しいレイアウト弾性が格納される。得られたレイアウト弾性は、新しいレイアウ
ト弾性とオリジナル・レイアウト弾性とから決定されている。最後に、得られた
レイアウト弾性は戻される。
【0011】 本発明の前述およびその他の目的、特徴および利点は、添付図面に示す本発明
の好ましい実施形態の以下の詳細な説明で明らかになるであろう。図面では、同
一参照符号は異なる図面においても同一部品を指す。図面は必ずしも縮尺通りで
なく、本発明の原理を示すことに重点が置かれている。
【0012】
【発明の実施の形態】
2 Dグラフィックス・システムに要求されるジョブの1 つは、表示されるオブ
ジェクトのレイアウト(位置とサイズ)を計算することである。Curlプログラム
言語のグラフィック表示の構成では、要素の" リ−フ・グラフィックス(leaf g
raphics )" をグループ化して大きいアセンブリにし、それらをBox として知ら
れるグラフィック・コンテナ内に置く。Box は次々に他のBox 内に置くことがで
き、この方法により、複雑なグラフィック表示を任意に構成できる。
【0013】 リ−フ・グラフィックスはいくつかの種類のグラフィック・オブジェクトを含
むことができる。 1 .矩形および楕円のような簡単な幾何形状は、プログラムで指定されるように
、そのサイズを、Curlプログラム内で指定するか、またはレイアウト時に計算す
るかのどちらでも可能である。ラベルのような簡単な文字列も、このカテゴリに
入る。 2 .イメージおよび他のグラフィックスは拡大縮小できるが、アスペクト・レシ
オ(幅と高さの比率)を維持する必要がある。 3 .フォーマットされたテキスト・ブロック、幅と高さは拡大縮小できるが、そ
れらは相互にほぼ反比例関係にあることが必要である(幅が縮小すると、高さが
拡大する)。
【0014】 図1は、多数のグラフィック・オブジェクトを含む典型的なCurlウィンドウを
示しており、リ−フ・グラフィックスとBox の両方を含んでいる。図2は、図1
に表れているグラフィック・オブジェクトの構成を示し、部分的に展開されたア
ウトライン・フォームで示されている。各グラフィック・オブジェクトは、Box
またはリ−フ・グラフィックスのどちらであっても、図2において、" {VBox
74}" などのような名前を持つ単一ライン上に示されている。{VBox 74 }は、
オブジェクト(VBox)のタイプを示し、またダイヤグラムのこのラインに関連す
る特定オブジェクトを指定する固有数(74)を含む。各Box は、Box ネームの左
の三角形アイコンを含むライン上に示され、一方、各リ−フ・グラフィックスは
グラフィック・ネームの隣りに四角形アイコンにより示されている。{VBox 74
}または{HBox 63 }のように、Box に対応する三角形アイコンを押すと、その
三角形をBox の子オブジェクトとして直接含まれている各オブジェクトのアイコ
ンにリンクしている、三角形の底に接続されたラインによって、そのBox 内に含
まれるグラフィックスが後続のライン上に示される。{CdeButton 64}または{
HBox 70 }のように、Box の三角形が右を指示すると、そのBox は子オブジェク
トを持つことができる(簡単化のため図示していない)。しかし、実際は、右方
向指示の三角形で示される全てのBox が子オブジェクトを持つとは限らない。例
えば、{CastTextFlowBox 60}は子オブジェクトを持たない。
【0015】 図1のトップ・レベルのオブジェクトを示す図2のダイヤグラムは、{CdePan
eView 1 }であり、その下に、単一グラフィック子として、{VBox 70 }を有す
る。{VBox 70 }は、その下に、いくつかの子オブジェクトを有し、その各々は
その区画を水平に満たし、さらに上から下に配列されている。{MenuBar 75}は
メニュー・バー・オブジェクトであり、図1のメニュー・バー75を定義し、ワー
ド"File"、"Edit"等を含む。{HBox 72 }はツールバー・オブジェクトであり、
これらワードの真下にある。図2は、拡張されたこのHBoxを示しており、"Print
" 、"Window"等の名称の付けられたツールボタンに対応している別個のCdeButtu
m オブジェクトを示す。{CdeButton 62}は"Print" ツールボタンであり、その
下に展開されて、Frame オブジェクト{Frame 61}を含む。{Frame 61}は、そ
の下に{VBox 59 }を含む。最後に、{VBox 59 }はプリンタ・アイコン{Pict
ure 44}と、{CastTextFlowBox 60}内に含まれるワード"Print" をスタックし
ているエンティティティである。図1に示される他のオブジェクトは同様にグル
ープ化される。特に、{PageViewPane 77 }はワード"Welcome to Curl" と、関
連テキストおよびグラフィックスを含む大きい領域に対応し、一方、{Stretchy
TextDisplay 78}は、スクリーンの一番下のブランク・ステータス区画に対応し
ており、時々、実行中のアプリケーション・プログラムを示すメッセージを表示
する。
【0016】 Curlはこれらの種類のグラフィックスを全てサポートし、さらにそれらの組合
せの全てをBox 内に一緒に置くことを可能にするため、Curlは、レイアウト・シ
ステムにより提供される、以下の基本的問題の解決策を必要とする。
【0017】 1 .簡単なリ−フ・グラフィックスまたは合成グラフィックス(すなわちBox )
のどちらかである、グラフィック・オブジェクトのサイズ基本設定を表示する。
この表示は、Box が、それらのサイズ基本設定に対しそのコンポーネント・グラ
フィックスに問合せでき、それらの結果を結合してBox 自体のサイズ基本設定の
表示に入れるものとする必要がある。この表示は、多くの簡単なグラフィックス
のような剛性オブジェクトと、イメージおよびフォーマットされたテキストのよ
うな伸縮性のあるオブジェクトの両方のサイズ基本設定をコード化できるものと
する必要がある。 Curlでは、この役割は"elastics (弾性値)" により表示される。以下に詳し
く述べるように、弾性値は個々のグラフィック・オブジェクトの高さと幅に対し
決定される。合成グラフィック・オブジェクトに対する弾性値はそれらのコンポ
ーネントの弾性値から計算される。 2 .剛性および伸縮性オブジェクト両方のサイズ基本設定を考慮に入れた方法で
、グラフィック・レイアウトを計算する。例えば一定アスペクト・レシオのイメ
ージと、フォーマットされたテキストとの両方のような、高さと幅の関係を守る
伸縮性オブジェクトの存在は、この問題をさらに複雑にする。
【0018】 Curlでは、この役割は、幅優先(wide-first)および高さ優先(height-first
)の2つの方式を有するスリー・パス・レイアウト・ネゴシエーション・アルゴ
リズムにより表示される。幅優先アルゴリズムは、グラフィック・オブジェクト
・トリー(tree)を通る第1 パスの幅基本設定を収集し、幅割当てを計算し、第2
パスの高さ基本設定を収集し、第3パスの高さ割当てを計算する。高さ優先アル
ゴリズムも同様であるが、高さと幅の役割が交代する。幅割当てが決められた後
(または、高さ優先レイアウトの場合は逆)、高さ基本設定を収集することによ
り、このアルゴリズムは、高さおよび幅基本設定が相互に独立でないオブジェク
トを収納する。
【0019】弾性の一般コンセプト レイアウト内のグラフィック・オブジェクトは望ましい寸法を有することがで
きる。例えば、図3では、2つの並んだグラフィック・オブジェクトAとBは望
ましい幅PAとPBを有することができる。しかし、ユーザがグラフィック・オブジ
ェクトAとBを含むウィンドウを拡大または縮小する場合に、表示器のハードウ
ェア表示寸法またはウィンドウ寸法に一致させるには、AとBの幅が順に変化し
て、スペースを満たすか、または視野から周辺部が欠けるのを避ける必要がある
。例えば、2つのオブジェクトAとBが幅W1を満たす場合、2つのオブジェクト
は、図3B に示される得られた幅WAとWBに比例して拡大できる。図3B の結果は
、2つのグラフィック・オブジェクトが拡大に対し同一弾性を持つ(つまり、同
一伸縮性を持つ)と仮定している。しかし、各グラフィック・オブジェクトに対
し弾性を決定することにより、1つのオブジェクトが他方に対し優先的に伸張す
るようにできる。例えば、オブジェクトBがオブジェクトAに対しより大きい伸
張性を持つように決定される場合、オブジェクトAは望ましい幅PAに留まり、図
3C に示されるように、全拡大はオブジェクトBにより発生する全幅W1によって
もたらされる。同様に、合成オブジェクトが、縮小した幅W2に減少する必要があ
る場合、2つのオブジェクトは、図3D に示されるように、比例して圧縮される
。その一方で、図3E に示されるように、オブジェクトAを大きい圧縮性を有す
るように決定して、オブジェクトAにより圧縮の大きい配分が発生するようにで
きる。
【0020】 弾性表示は、機械的ばねと同様に作用する。ばねと同様に、弾性体は、変形さ
せる力が作用しないときの長さである" 望ましいサイズ" を有する。ばねと同様
、弾性体を望ましい長さよりも小さいサイズに圧縮すると、その弾性体は、圧縮
と反対の力を作用させると考えられる。この力は圧縮度合いが増加すると共に増
加するが、簡単な機械的ばねと異なり、弾性体は一般に、弾性変形の大きさに対
する力の大きさまたは力の変化率の不連続な変化を示す。
【0021】 圧縮の代わりに、弾性体が望ましいサイズよりも長く伸ばされる場合、弾性体
は、圧縮力と同じく、変形の大きさと共に増加する力でその伸びに対抗している
と考えられる。
【0022】 ばねの場合と同様、異なる弾性体は異なる割合の伸張度と圧縮度を有すること
ができる。伸張度と圧縮度の最大割合は、所定の変形に対抗する最小力を表わす
弾性に関係する。
【0023】 機械的ばねと異なり、弾性体は異なる" オーダー" の伸張度と圧縮度を有する
こともできる。大きい伸張(または圧縮)オーダーを持つ弾性体は、小さい伸張
(または圧縮)オーダーを有する弾性体に比べ無限に伸張(または圧縮)できる
。異なる伸張オーダーを持つ2つの弾性体を直列に置き、そのアセンブリを伸張
すると、小さい伸張オーダーを持つ弾性体はそれの望ましいサイズに留まり、余
分の距離の全ては、大きい伸張オーダーを持つ弾性体を伸張することにより占有
される。
【0024】 しかし、上の状態での2つの弾性体が同一伸張オーダーを有する場合、それら
は両方共伸張される。各弾性体は、2つの弾性体の伸張に対抗する力が等しくな
る長さにまで伸張される。実際、これは、弾性体の1つが他方に比べN倍伸張さ
れた場合、その弾性体がそれの望ましいサイズを超えて伸張する量は、他方の弾
性体に配分される伸張量に比べN倍に大きくなることを意味する。
【0025】 伸張の代わりに、2つの弾性体のアセンブリがそれの望ましいサイズよりも小
さく圧縮される場合、その挙動は、伸張が圧縮に置き換わることを除いて、前記
の内容と類似している。
【0026】 グラフィック・レイアウトを実行するためには、弾性を使用してグラフィック
・オブジェクトの高さと幅の基本設定を表わす。したがって、以下のことを可能
とする必要がある。
【0027】 1 .Box 内でグラフィックスを表現する弾性(体)を組合せて、Box 自体の高さ
と幅の基本設定を表現する弾性(体)を作成する。 2 .全体として、Box の高さまたは幅の割当てを仮定し、およびそのBox 内のグ
ラフィックスの高さまたは幅弾性(体)を仮定して、それらグラフィックスの各
々に対し高さまたは幅の割当てを計算する。
【0028】 これらの必要事項をサポートするため、弾性体は特定の基本的オペレーション
をサポートする必要がある。 1 ." 加算" オペレーションは2つの弾性体を直列に置くことに相当する。例え
ば、このオペレーションを使用して、図3のように、水平並びに配列された2つ
またはそれ以上のグラフィックスを含むBox の幅弾性を計算できる。 2 ." 最大" オペレーションは2つの弾性体を並列に並べることに相当する。例
えば、このオペレーションを使用して、水平並びに配列されたいくつかのグラフ
ィックスを含むBox の高さ弾性(体)を計算できる。 3 ." 分割" オペレーションは2つの弾性と長さに適用される。このオペレーシ
ョンは、2つの弾性体が直列に置かれ、さらにそのアセンブリが特定の長さにな
るように伸張または圧縮される場合、各弾性体に割当てされる長さの部分を計算
する。 例えば、このオペレーションを使用して、図3のように水平並びに配列された
2つのグラフィックスを含むBox により、そのBox に対し特定の幅割当てを仮定
して、各グラフに対する幅割当てを計算できる。以下に述べるように、このオペ
レーションを加算オペレーションと合わせて使用し、特定の幅または高さを、対
象の寸法に沿って順に配列される任意の数のオブジェクトに配分できる。 これらの基本的オペレーションに加えて、弾性のCurlの使用を計算に入れたそ
の他のいくつかのオペレーションがある。
【0029】 4 ." スケール" オペレーションは、弾性体をN(>0 )倍する。Nが整数の場
合、その結果は、加算オペレーションを使用して直列の弾性体をN回コピーする
ことにより得られるものと同一である。Nが整数でない場合、その結果はNに最
も近い2つの整数に相当する結果の間の、途中に補間される。 5 .2つの弾性体の" 同等" オペレーションは、2つの弾性体が全サイズにおい
て同一力を作用させる場合、本来の形に戻る。 6 ." サイズの平等" オペレーションは2つの弾性と特定の長さに適用する。こ
のオペレーションは、2つの弾性体が所定の長さに変形するときに、同一力を作
用させる場合、成立する。
【0030】 また、" 減算" のような他のオペレーションは想像できるであろう。
【0031】Curl言語の弾性付与 前述の弾性の一般的コンセプトはレイアウト計算の高性能化に基本を置くが、
最も一般的な形式での実行にはコストが高くなる。さらに、Curlは前述の一般的
弾性コンセプトに対する近似を実行する。Curlの近似は以下の特性を持つ。 1 .伸張度(および伸張オーダー)が圧縮度(および圧縮オーダー)と異なる弾
性の表示が可能である。 2." 最小サイズ" の概念を組み込んでいる。Curl弾性は最小サイズよりも小さ
いサイズにまで圧縮することが極めて難しい。 3.前述の加算、最大、および他のオペレーションが実行されるとき、弾性の表
示を拡大できる能力に関して限界がある。この特性を持つ弾性の表示は、可能な
弾性オペレーションの全てに対しては正確な結果を導き出せない。したがって、
Curlは、結果のサイズを拡大させない必要がある場合、加算、最大、および他の
オペレーションに対し近似結果を導き出す。 4.一般的な弾性値の発生のいくつかに対しコンパクト表示の機能がある。例え
ば、伸張度と圧縮度が等しい弾性は、この同一性が維持されない一般弾性に比べ
さらにコンパクトに表示できる。
【0032】 まとめると、標準Curl弾性は6つのフィールドを有する。 1 .最小サイズ(浮動小数点数) 2 .望ましいサイズ(浮動小数点数) 3 .圧縮度係数(浮動小数点数) 4 .圧縮オーダー(整数) 5 .伸張度係数(浮動小数点数) 6 .伸張オーダー(整数)
【0033】 弾性を表わすCurlオブジェクトは、タイプ・コード(type code )(全Curlオ
ブジェクトで同様)と、前述の値を含むフィールドとを有する。特殊な例の弾性
のコンパクト表示は、異なるタイプ・コードと前記フィールドのサブセットとを
有する。欠落フィールドの関連する値は、タイプ・コードと、コンパクト表示で
適用されるフィールドとを参照して計算される。例えば、タイプ・コードStretc
hyElastic は、前述のリストからのフィールド(1) −(4) を含むオブジェクトに
関連している。フィールド(5) または(6) に対応する値が必要なとき、それらは
フィールド(3) と(4) からそれぞれ、値を提供して適用される。
【0034】 コンパクト弾性表示の別の例は、RigidElasticであり、これは望ましいサイズ
・フィールドだけを有する。他のフィールドに対応する値が必要なとき、それら
の値を計算して、最小サイズが望ましいサイズに等しく、さらにフィールド(3)
−(6) が標準の" 剛性" オブジェクトに関連する値を持つようにする。
【0035】Curl言語での基本的弾性オペレーションの実行 基本的弾性オペレーションのCurlでの実行は、以下の、標準の6つの弾性フィ
ールドによって記述できる。
【0036】 加算オペレーションは、以下のフィールドを持つ結果を生成する。 1 .最小サイズは、そのオペランドの最小サイズの総和である。 2 .望ましいサイズは、そのオペランドの望ましいサイズの総和である。 3 .圧縮度係数は、両方のオペランドが同一圧縮オーダーを有する場合、そのオ
ペランドの圧縮度係数の総和である。その他の場合は、結果の圧縮度係数は、よ
りも大きい圧縮オーダーを有するオペランドの圧縮度係数に等しくなる。 4 .圧縮オーダーはそのオペランドの圧縮オーダーの大きい方に等しくなる。 5 .両方のオペランドが同一伸張オーダーを持つ場合、伸張度係数はそのオペラ
ンドの伸張度係数の総和である。その他の場合は、結果の伸張度係数は、よりも
大きい伸張オーダーを有するオペランドの伸張度係数に等しくなる。 6 .伸張オーダーはそのオペランドの伸張オーダーの大きい方に等しくなる。
【0037】 このルールに従って作成される弾性体は、加算オペレーションの理想結果の近
似値だけになることがある。例えば、小さい望ましいサイズと大きい圧縮オーダ
ーとを持つ弾性体Aが、大きい望ましいサイズと小さい圧縮オーダーとを持つ弾
性体Bに加算される場合、得られる弾性体Cの圧縮オーダーはAと等しくなり、
Cの望ましいサイズはAとBのそれらの望ましいサイズの和になる。したがって
、Cは容易に圧縮できる弾性体となり、サイズがBだけの望ましいサイズよりも
小さくなった後でも、容易に圧縮できる状態を維持する。この挙動はばねの機械
的システムの挙動とは異なる。機械的システムでは、高度に圧縮可能な弾性体A
は長さゼロに圧縮されると、Aのそれ以上の圧縮は不可能であり、このとき、B
の圧縮オーダーに対応して、弾性体Cは圧縮が極めて困難になる。
【0038】 ここに述べる加算オペレーションは単に近似であるが、その結果を、固定され
たスペース量に表示できる長所を持つ。弾性加算オペレーションから理想結果を
作成する全ての方法は、加算オペレーションの結果自体が別の加算オペレーショ
ンに対するオペランドとして提供されるため、スペース量の増加を必要とし、結
果の忠実度の向上とバランスする必要があるスペースと時間の費用の増加につな
がる。前述の近似は効率的に計算でき、また実際に良好な結果を与える。
【0039】 2つの弾性体AとBの最大オペレーションは、以下のフィールドを持つ結果を
生成する。 1 .最小サイズは、そのオペランドの最小サイズの大きい方である。 2 .望ましいサイズは、他の望ましいサイズに対して最小弾性(体)である弾性
(体)の望ましいサイズに近い。弾性値(elasticity)は最初にオーダーが決定さ
れる。オーダーが等しい場合は、係数を比較する。一方の弾性体を伸張して他方
に一致させ、同時に他方を圧縮して最初の弾性体に一致させる必要があるために
、弾性値比較は伸張度と圧縮度の比較である。詳細には、望ましいサイズは、以
下(a)または(b)の場合には、Aの望ましいサイズに等しい。 (a)Aの望ましいサイズがBのそれよりも大きく、かつ次のどちらかである。
(i)Aの圧縮オーダーがBの伸縮オーダーよりも小さいか、または (ii)Aの圧縮オーダーがBの伸縮オーダーに等しく、かつAの圧縮度係数がB
の伸縮度係数以下である。 (b)Aの望ましいサイズがBのそれよりも小さく、かつ次のどちらかである。
(i)Aの伸縮オーダーがBの圧縮オーダーよりも小さいか、または (ii)Aの伸縮オーダーがBの圧縮オーダーに等しく、かつAの伸張度係数がB
の圧縮度係数よりも小さい。 その他の場合は、結果の望ましいサイズは、Bの望ましいサイズに等しい。
【0040】 3 .圧縮度係数は、望ましいサイズ・フィールド(2) の値に対し選択された望ま
しいサイズの弾性(体)の圧縮度係数である。両方のオペランドが同一の望まし
いサイズを有する場合、そのオペランドが異なる圧縮オーダーを持つと、より小
さい圧縮オーダーに関連する圧縮度係数が使用され、そうでないときは、2つの
圧縮度係数の小さい方が使用される。 4 .圧縮オーダーは、フィールド(3) に対し選択された圧縮度係数に関連する圧
縮オーダーである。 5 .伸張度係数は、フィールド(2) の値に対し選択された望ましいサイズの弾性
の伸張度係数である。両方のオペランドが同一の望ましいサイズを有する場合、
そのオペランドが異なる伸張オーダーを持つと、より小さい伸張オーダーに関連
する伸張度係数が使用され、そうでないときは、2つの伸張度係数の小さい方が
使用される。 6 .伸張オーダーは、フィールド(5) に対し選択された伸張度係数に関連する伸
張オーダーである。
【0041】 前述の加算の実行と同様に、最大オペレーションのこの実行は、状態によって
は近似結果を生成するだけである。例えば、弾性体Aが小さい望ましいサイズと
小さい圧縮オーダーとを有し、一方、弾性体Bが大きい望ましいサイズと大きい
圧縮オーダーとを有すると仮定する。AとBの伸張オーダーがBの圧縮オーダー
よりも大きい場合、AとBの大きいほうである弾性体Cの望ましいサイズは、B
の望ましいサイズに等しくなる。同様に、Cの圧縮度と圧縮オーダーはBのそれ
らと等しくなり、この場合、Cは容易に圧縮できる。機械的ばねと同様に、Aの
望ましいサイズが達成されると、Cは圧縮がさらに困難になると推定される。し
かし、弾性体Cが前述のアウトラインに従って計算されると、このような状態が
発生しない。
【0042】 加算オペレーションの場合と同様に、最大オペレーションの全体忠実度は、結
果を計算するのに必要なスペースと時間を制限しないことを条件とする。前述の
近似が使用されるのは、それが効率的計算を可能にし、かつ実際に良好な結果を
与えるからである。2つの弾性体AおよびBと、長さxに関する分割オペレーシ
ョンは、分割(A,B、x )と記述され、弾性体Aを有するオブジェクトの長さ
を生成する。分割オペレーションは次のように実行される。
【0043】 1 .x が2つの弾性(体)の最小サイズの和よりも小さい場合、長さx は弾性(
体)の最小サイズに比例して分割される。したがって、分割オペレーションの結
果は以下のようになる。 (x*A.最小サイズ)/(A.最上サイズ+B.最小サイズ) 2.一方、余剰(または不足)eは、x から2つの望ましいサイズの和を減算し
て計算される。eは、以下のように、2つの弾性(体)に配分される。 a.eが余剰で、かつ2つの弾性(体)が等しい伸張オーダーを有する場合、e
は2つの弾性(体)の伸張度係数に比例して分割される。したがって、弾性体A
の配分される余剰分は以下のようになる。 (e*A.伸張度)/(A.伸張度+B.伸張度) b.eが不足で、かつ2つの弾性(体)が等しい圧縮オーダーを有する場合、e
は2つの弾性(体)の圧縮度係数に比例して分割する。 c.eが余剰で、かつ2つの弾性(体)が異なる伸張オーダーを有する場合、全
てのeをより大きい伸張オーダーを持つ弾性(体)に配分する。 d.eが不足で、かつ2つの弾性(体)が異なる圧縮オーダーを有する場合、全
てのeをより大きい圧縮オーダーを持つ弾性(体)に配分する。
【0044】 次に、分割オペレーションの結果は、Aの望ましいサイズとAに対し配分され
たeの部分との和になる。ただし、AまたはBのどちらかに、それの最小サイズ
よりも小さいサイズを割当てることを避けるために、必要に応じて、この結果が
調整されている場合は除く。
【0045】 スケール・オペレーションは、弾性体Aにスケール・ファクタ(倍率)f を適
用する。得られる弾性のパラメータは、以下のように、Aのスケール・ファクタ
から計算される。 1 .最小サイズは、Aの最小サイズのf倍である。 2 .望ましいサイズは、Aの望ましいサイズのf倍である。 3 .圧縮度係数は、Aの圧縮度係数のf倍である。 4 .圧縮オーダーは、Aの圧縮オーダーに等しい。 5 .伸張度係数は、Aの伸張度係数のf倍である。 6.伸張オーダーは、Aの伸張オーダーに等しい。 他の弾性オペレーションは同様の方法で実行される。
【0046】グラフィック原点と寸法 前述と同様に、Curlは弾性を使用して、グラフィック・オブジェクトのサイズ
基本設定を記述する。このようなオブジェクトの各々は幅と高さを持ち、またオ
ブジェクト内のどこかにある" 原点" を有する。原点は、例えば、ベースライン
から上下に突出するテキストのラインのベースラインの位置を表示するのに有効
な方法である。また、原点は垂直位置合わせに有効であり、例えば、数字が、テ
キスト列内に入り、かつテキスト列の原点が前記数字の小数点の位置にある場合
、1つの列の数字の小数点を、前記原点に位置合わせして、簡単に整列させるこ
とができる。
【0047】 原点を考慮することにより、図4に示されるように、弾性を使用して記述され
る4つのサイズ基本設定が存在する。 1 .オブジェクトの原点とその上部までの距離(オブジェクトの" 上側部" ) 2 .オブジェクトの原点とその底部までの距離(オブジェクトの" 下側部" ) 3 .オブジェクトの原点とその左端までの距離(オブジェクトの" 左範囲" ) 4 .オブジェクトの原点とその右端までの距離(オブジェクトの" 右範囲" )
【0048】 垂直寸法のサイズ基本設定を記述する単一ユニット内への上側部と下側部に対
し、サイズ基本設定を記述する弾性体を一緒に束ねることは有利である。同様に
、オブジェクトの左と右範囲に対する基本設定を記述する弾性体を一緒に束ねる
ことは有利である。したがって、Curl実行は、原点の両側にサイズ基本設定を記
述するペアの弾性オブジェクトを含むクラスOriginalErastic を提供する。
【0049】 図形や矩形のような簡単なグラフィックスは、適正な弾性体を簡単に合成して
、例えば図形のピクセル数のような内部パラメータを基にして、それらのサイズ
基本設定を記述する。一方、グラフィック・コンテナは、前述の弾性オペレーシ
ョンを使用して、それらコンテナのコンポーネント・グラフィックスの弾性体を
組み合わせて弾性体を生成する。
【0050】HBoxとVboxによる弾性の使用 例えば、Curlは、グラフィックスの集積を水平並びで置いた、HBoxとして知ら
れるコンテナを有する。HBoxはいくつかのオプションを有し、そのオプションに
より、HBoxのコンポーネントをそれらの原点、底部、上部、または中心に位置合
わせするように指定できる。そのコンポーネントの原点に位置合わせされている
HBoxを考慮する場合、HBox自体の原点は、HBox内の第1(最も左)オブジェクト
の原点に配置され、HBox内の他のコンポーネントの全ての原点はHBox自体の原点
と同一ライン上に位置合わせされる。
【0051】 図5は3つのオブジェクト、すなわちCastTextGFlowBox、Rectangle (矩形)
、および別のCastTextGFlowBoxを含む。図6はそのHBoxのグラフィック階層を示
す。この特定のHBoxは、コンポーネント・オブジェクトの垂直原点に整列するよ
うに配置されている。Rectangle は、原点が矩形の左下コーナーであることを必
要とする弾性体を生成する、一方、テキストは、原点がテキストの左端であるこ
とを必要とする弾性体を生成する、このように、これら3 つのオブジェクトは
このHBox内に表示されるとき、Rectangle の底部はテキストのベースラインに位
置合わせされるが、これは一般に希望する配列である。各テキスト・ブロックの
底部がそのテキスト・ブロックのベースラインより下(テキスト・ブロック内の
下方文字"y" と"g" の位置により示されるように)であっても、原点の使用によ
りこの配列が可能になる。
【0052】 図7は、オブジェクトの水平原点に位置されたいくつかのオブジェクトを含む
VBoxを示す。図で示されるように、小数点を数字の1つの列に整列させることは
、水平原点を位置合わせするのに便利である。図8は、図7に対応するグラフィ
ックス階層を示しており、図7に表れる全オブジェクトが図8に明らかに示され
るように完全に展開されている。Curlでは、原点が小数点を表わしている全テキ
スト列に対し小数点のすぐ左に置かれたテキストを含む、グラフィック・オブジ
ェクトを作成することができる。しかし、このようなオブジェクトはCirl内に組
み込まれないため、数字の各列は2つのテキスト・ブロックを含むHBoxとして構
成される。すなわち、第1ブロックは小数点の左に数字を含み、第2ブロックは
小数点を含み、存在する場合は、その右に数字を含む。各HBoxは、第1テキスト
・ブロックの右端の原点を置くように構成されている。Ruleオブジェクトは、"
33.333" の真下に水平ラインを表示する機能を持つ。Ruleオブジェクトは、1/72
インチ(0.35mm)の固定高さを持つが、幅は伸張でき、それによりその幅がVBox
の幅に自動的に一致する。
【0053】 図5のような場合には、HBoxの左の範囲の弾性は、単に第1コンポーネントの
左の範囲の弾性である。HBoxの右の範囲の弾性は、弾性加算オペレーションを使
用して計算され、第1 コンポーネントの右の範囲の弾性を、残りのコンポーネン
ト全ての左右の範囲の弾性に結合する。HBoxの上側部弾性は、弾性最大オペレー
ションを使用して計算され、HBoxコンポーネントの全ての上側部弾性を結合する
。HBoxの下側部弾性は、同様に、弾性最大オペレーションを使用して計算され、
HBoxコンポーネントの全ての下側部弾性を結合する。
【0054】 前述の説明は、HBoxのサイズ基本設定を記述する弾性を、HBoxのグラフィック
の子オブジェクトのサイズ基本設定を描く弾性から計算する方法を説明している
。図5の他の部分は、これらの弾性を使用してレイアウト決定を行う方法である
。幅優先レイアウト・ネゴシエーションでは、HBoxがその幅弾性を計算後、HBox
のグラフィックの親オブジェクトが、HBoxの左右範囲の数値を最終的に決定し、
これらの値をHBoxに通信する。HBoxはこの情報を使用して、HBoxのグラフィック
の子から前に得られた幅弾性と組合せて、HBoxのグラフィックの子の各々に対し
、左右範囲および水平原点位置を計算する。
【0055】 HBoxの第1の子オブジェクトに左範囲は、それがHBox自体の左範囲に等しいた
め、容易に計算される。しかし、HBoxの子オブジェクトの残りの左右範囲の計算
は、複雑な作業である。図9に示されるように、3つのグラフィックの子A、B
、Cを持つ場合を考える。各オブジェクトの原点は"*" で記されている。
【0056】 A、B、Cの左範囲はal、bl、clでそれぞれ表わされ、A、B、Cの右範囲は
ar、br、crでそれぞれ表わされている。記号AL、AR等は、範囲を計算するのに使
用されたA、B、Cの基本設定を描く対応する弾性を意味する。
【0057】 前述のように、alは全体としてはHBoxの左範囲に等しいが、和ar+bl+cl+cr
はHBoxの右範囲に等しくする必要がある。これらの値を計算するいくつかの方法
がある。簡単な方法は、弾性分割オペレーションを連続的に適用して、右から左
に進める。第1のこのような分割オペレーションは、以下の式を計算する。 cr=divide(CR,AR+BL+BR+CL,r ) ここで、r はHBoxの右範囲であり、AR+BL+BR+CLは4つの弾性体AR 、BL、
BR、CLの弾性和である。第2の分割オペレーションは、以下の式を計算する。 cl =divide(CL,AR+BL+BR,r-cr) 第3の分割オペレーションは、以下の式を計算する。 br=divide(BR,AR+BL,r-cr-cl ) この方法で計算を進行し、必要な範囲の全てが計算され終るまで続ける。この手
順は、おおよそ3つのグラフィックの子を持つHBoxに対し一般化したものである
【0058】 代替方法はこの方法と異なるが、同一結果を導き出す。代替方法は、以下のよ
うに、第1にcl+crを計算する。 cl+cr=divide(CL+CR,AR+BL+BR+CL,r ) 次にこの結果を、以下のように、コンポーネントclとcrに分解する。 cl=divide(CL,CR,cl+cr) cr=(cl+cr)−cl
【0059】 同一方法をさらに繰返して、blとbrから求められるbl+brを算出するなどする
。後述するように、この方法は、HBox内に含まれる比較的剛性のグラフィック・
オブジェクトのまわりに、必要に応じて挿入されるパディング(padding) の量を
、HBoxが計算するときの計算をわずかに簡単化する。
【0060】 さらに別の手順の計算が可能である。例えば、図18のフローチャートは、範
囲を左から右に計算する方法を示す。
【0061】 Curlはまた、VBoxとし知られるコンテナを有する。VBoxは、HBoxと全く同一に
機能するが、水平寸法と垂直寸法が入れ代わっている。
【0062】HBoxとVBoxの弾性計算が正確に機能する理由 弾性加算および分割オペレーションを決定する目的は、HBox内のコンポーネン
ト・オブジェクトの水平範囲を計算するための前述のポリシーから導くことがで
きる。1つの例に対し、前述の例の弾性体AR、BL、BR、CRの5つが等しい場合を
考える。このとき、範囲ar、bl、cl、crの5つ全てが等しいことが望ましいこと
は直感的に分かる。これが成立するためには、以下のオペレーションがr の値の
1/5 となる結果を導く必要がある。 cr =divide(CR,AR+BL+BR+CL,r ) さらに、同様に、以下のオペレーションがr の値の2/5 となる結果を導く必
要がある。 cl+cr=divide (CL+CR,AR+BL+BR,r) 実際、これらの望ましい値は、加算オペレーションから得られる弾性の3つの主
要特性により、上で与えられた加算と分割の決定により得られる。
【0063】 1.結果の望ましいサイズは、オペランドの望ましいサイズの総和である。 2.オペランドの伸張オーダーが等しいとき、その結果の伸張度係数はオペラン
ドの伸張度係数の総和に等しい。 3.オペランドの圧縮度オーダーが等しいとき、その結果の圧縮度係数はオペラ
ンドの圧縮度係数の総和に等しい。
【0064】 このように、N個の等しい弾性の総和では、総和の望ましいサイズ、伸張度係
数、および圧縮度係数は、オペランドの弾性の対応特性の値の各N倍である。分
割オペレーションのdivide(A ,B ,r )の値r がAとBの望ましいサイズの和
よりも大きく、かつAとBの伸張オーダーが等しい場合、分割オペレーションは
、AとBの間の余剰s −r をそれらの伸張度係数に比例して配分する。分割オペ
レーションが等しい圧縮オーダーを持つ2つの弾性間のスペースの不足を配分す
るときにも、相似配分は維持する。分割オペレーションのこれらの配分特性は、
加算オペレーションが望ましいサイズ、伸張度係数、および圧縮度係数を計算す
る方法と結合して、前述の計算が、確実に直感的にも分かる希望する結果を生成
することを保証する。弾性(体)が伸張度係数または圧縮度係数を持たない場合
、これらの結果は生成できない。なぜなら、総和AR+BL+BR+CLが、その間にス
ペースの配分を必要とする4つのユニットを含むのに対して、総和AR+BL+BRは
3つだけを含むことを、分割オペレーションが認識する一般的方法が存在しない
からである。
【0065】 別の例として、問題とする弾性体の全てが等しい場合(CLが他の全てに比べて
大きい伸張オーダーを有することを除いて)を考える。さらに、この例における
距離rがAR+BL+BR+CL+CRの望ましいサイズよりも大きいと仮定すると、配分
するための余剰のスペースができる。直感的に分かるように、余剰スペースの全
てがCLに割当てられることが望ましい。なぜなら、CLが他の全ての弾性体よりも
大きい伸張を有するからである。この場合、CLを含む全ての弾性体(例えばCL−
CRまたはAR+BL+BR+CL)の総和が、CLと同一伸張オーダーを有し、かつCLと等
しい伸張度係数を有することが、弾性加算オペレーションの定義から理解できる
。その一方で、CLを含まない(例えばAR+BL+BRのような)弾性の和は、前述の
ように、小さい伸張オーダーと、加算される弾性に比例する伸張度係数とを有す
る。この場合、右側のオペランドにCLを含む、以下のような分割オペレーション cr=divide(CR,AR+BL+BR+CL,r ) は、余剰スペースを全て右側のオペランドに割当てるので、crはCRの望ましいサ
イズに等しくなる。しかし、左側のオペランドにCLを含む、以下のような分割オ
ペレーション cl=divide(CL,AR+BL+BR,r −cr) は、余剰スペースを全て左側のオペランドに割当てるので、clはCRの望ましいサ
イズと、割当てられた余剰スペースの量との和に等しくなる。最後に、どちらの
オペランドにもCLを含まない、以下のような分割オペレーション br=divide(BR,AR+BL,r-cr-cl ) は、前述のとおりに機能する。以下の論理により、加算と分割オペレーションの
機能が同時に作用することにより、加算される弾性の間に距離を割当てるために
使用される分割オペレーションの順番にかかわらず、CLに対し余剰スペース全て
を割当てる直感的に分かる望ましい結果が得られる。例えば、第1ステップが、 cr=divide(CR,AR+BL+BR+CL,r ) または、 cl+cr=divide(CL−CR,AR+BL+BR,r ) のどちらでも、望ましい結果が得られる。
【0066】 同一結論が、この特性の多くの他の例からも導かれる。
【0067】グリッドとテーブル 複雑なグラフィック・レイアウトは、HBoxとVBoxを相互に内部にネスティング
(組み入れる)することにより作成できる。Curlもまたグリットと表コンテナを
有し、それらを使用して、図10のようなレイアウトを作成できる。この場合の
図10では、AとC(およびBとD)の垂直配置、ならびにAとB(およびCと
D)の水平配置が維持される必要がある。このようなレイアウトは、HBoxとVBox
を単にネスティングするだけでは作成できない。グリッドとテーブルは、HBoxと
VBoxに比べて幾何的制約をより多くもたらすが、基本的弾性オペレーションを連
続的に適用して、多くのそれらの幾何形状を計算できる。
【0068】フィル・オブジェクト グラフィック・レイアウトの作成において、フィル・オブジェクト(伸縮可能
なオブジェクト)を使用することは極めて有効である。このフィル・オブジェク
トは描画オペレーションを実行しないが、高さと幅の基本設定を有し、スペース
も取る。剛性のフィル・オブジェクトをHBoxとVBoxの内部で使用し、他のグラフ
ィック・オブジェクトまわりにパディングおよび/またはインデントを置くこと
ができる。伸張フィル・オブジェクトを使用して、位置合わせと中心合わせがで
きる。例えば、1つの要望をサポートして、以下のようなコンテンツ(内容)の
テーブルを作成する。 真夏の夜の夢 5 テンペスト 89 ベローナの2人の紳士 173
【0069】 Curlでは、このレイアウトを、コンテンツのテーブルの各ラインに対し1つの
オブジェクトを含むVBoxとして指定できる。これに対し、各ラインはHBoxであり
、HBoxには、3つのオブジェクト、すなわち、タイトルを含むテキスト・オブジ
ェクトと、幅の基本設定がテキスト・オブジェクトよりも大きい伸張オーダーを
有するフィル・オブジェクトと、ページ・ナンバーを含むテキスト・オブジェク
トとを含む。VBoxはその子オブジェクトの全てに同一幅を割当てるが、これに対
し、各HBoxはタイトルの左揃えとページ・ナンバーの右揃えを行い、余剰幅全て
をフィル・オブジェクトに割当てる。この理由は、その幅基本設定の伸張オーダ
ーが、HBoxのグラフィックの子オブジェクト全ての幅伸張オーダーよりも大きい
からである。
【0070】 伸張フィル・オブジェクトを使用して、中心合わせされるグラフィック・オブ
ジェクトよりも大きいグラフィック・コンテナ内のグラフィック・オブジェクト
を中心に置くことができる。この場合、1つの伸張オブジェクトは、以下のCurl
の表示のように、中心に置かれたオブジェクトの各側面に置かれる。 {HBox{Fill},object,{Fill}}
【0071】 フィル・オブジェクトは他のオブジェクトよりも大きい伸張オーダーを持つた
め、全ての余剰幅はフィル・オブジェクトに割当てられる。2つのフィル・オブ
ジェクトが同一伸張オーダーと伸張度係数を有する場合、余剰幅はそれらに等し
く割当てされる。結果的に、各フィル・オブジェクトは同一幅を有し、グラフィ
ック・オブジェクトはHBoxにより占められるスペース内で中心合わせされる。2
つのフィル・オブジェクトが同一伸張オーダーを持つが、同一伸張度係数でない
場合、余剰スペースはそれらの伸張度係数に比例して割当てられ、オブジェクト
の左に割当てされたスペースが、それの右に割当てられたスペースの幅の半分で
あるような、可能な他のレイアウトを形成する。
【0072】 Curl弾性が、伸張オーダーおよび伸張度係数を有する事実は、前述の方法の好
結果を得るには極めて重要である。伸張オーダーが存在しない場合、全ての余剰
幅をフィル・オブジェクトに割当てる方法が存在しなくなり、必然的に、余剰幅
の一部分が中心合わせされたか、または位置調整されたオブジェクトに割り当て
られ、少なくともそれらにわずかな変形を与える。
【0073】パディング弾性 特定のオブジェクトが" 剛性" であると直感的に考えられるのは、そのオブジ
ェクトが、最も過酷な環境に置かれた場合を除いては、伸張または圧縮されない
ことを意味する。例えば、図11はHBox内に含まれる異なる高さの3つの矩形を
示す。HBoxの高さは最も高い矩形の高さに等しい、しかし、この状態は、他の矩
形を伸張してHBoxの高さに一致させることが望ましくない場合に生じる。なぜな
ら、矩形は通常は剛性オブジェクトと考えられるからである。他方で、フィル・
オブジェクトのような弾性オブジェクトが同一HBox内に含まれる場合、その弾性
オブジェクトはHBoxの全高さに伸張するのが望ましい。
【0074】 これらの目的は、パディング弾性を使用して、剛性オブジェクトが伸張されな
い領域を満たすことにより、Curl内で達成される。例えば、パディング弾性は、
図11の各矩形の上方で使用される。
【0075】 パディング弾性は、その値が" パディングしきい値伸張オーダー" として知ら
れる、伸張オーダーを有する。したがって、伸張オーダーが" パディングしきい
値伸張オーダー" よりも小さい値を有する全てのオブジェクトが、剛性と考えら
れる。なぜなら、パディングは伸張に優先してそのオブジェクトを伸張するから
である。したがって、HBoxの幅と高さの基本設定は、HBoxの子オブジェクトの基
本設定を正確に表わし、パディング弾性はHBoxの幅と高さの基本設定の計算には
使用されない。しかし、HBoxの子オブジェクト間でHBoxの指定された幅と高さを
割当てされる場合は、パディング弾性をデバイスとして使用して、剛性オブジェ
クトの伸張を避ける。
【0076】 図11の例は、オブジェクトを底部で位置合わせされている。したがって、パ
ディング弾性はオブジェクトの上方だけに必要になる。図12のような他の例で
は、オブジェクトは中心で位置合わせされ、パディングは各オブジェクトの上方
と下方の両方で必要とされる。
【0077】 同様のパディング方法は、VBoxと、剛性オブジェクトを伸張する可能性を有す
る他のコンテナとにより使用される。Curlのグラフィック・コンテナによっては
、剛性オブジェクトの伸張は希望するが初期設定によりパディングを使用すると
いう特定の状態では、パディングの使用を無効にできるオプションを有するもの
がある。
【0078】TextFlowBoxes による弾性の使用 CurlのTextFlowBox コンテナは一種の輸送手段であり、所定長さのライン上に
フォーマットされたテキストのパラグラフを表示する。単一のTextFlowBox はテ
キストの複数のパラグラフを含むことができるが、単一パラグラフを含むTextFl
owBox は重要な特定の事例である。なぜなら、テーブルのような多くのグラフィ
ック・ディスプレイは、単一パラグラフとして扱えるテキスト・ブロックを含む
からである。TextFlowBox の幅と高さの基本設定を描くのに使用する弾性(体)
を選択することにより、以下の3つの目的が達成される。
【0079】 1.他の制約が存在しない場合、パラグラフの各々を単一ライン上に表わすこと
ができるように、TextFlowBox を水平に十分拡大する必要がある。 2.いくつかのTextFlowBox は、HBoxまたは同様のコンテナ(テーブルの行など
)に含まれ、かつ、それら全てを(1) のように表わすための十分な利用スペース
がない場合、その利用スペースは、それらの高さをほぼ同一にする方法でTextFl
owBox 間で配分される必要がある。 3.いくつかのTextFlowBox は、VBoxまたは同様のコンテナ(テーブルの列など
)に含まれ、VBoxの幅の基本設定は、上記(1) のように表わすときに最大幅にな
るように、TextFlowBox により管理される必要がある。
【0080】 VBoxが2つのTextFlowBox を含み、その1つが長いパラグラフを含み、他の1
つが極めて短いパラグラフ(2つのワードのような)を含むと仮定する。この原
則が述べていることは、他の制約が存在しない場合、短いパラグラフが、長いパ
ラグラフを数ラインのテキストとして表わすようにする方法で、VBoxの水平範囲
を" 引込み" しないことである。
【0081】 これら機能の目的は、TextFlowBox の幅弾性(体)を以下のように計算するこ
とにより達成される。(TextFlowBox の幅基本設定は、TextFlowBox の原点がそ
れの左端に置かれることを必要とし、それによりTextFlowBox の左範囲の弾性体
が、望ましいサイズが0である高剛性の弾性体を持つことになる。したがって、
以下に述べる幅弾性は、TextFlowBox の右範囲に対応する弾性である。) 1.最小サイズは最長の分割できないテキスト・エレメントの幅である(一般に
、1 ワードのテキスト)。 2.望ましいサイズは、TextFlowBox 内の最長パラグラフが、単一ラインのテキ
ストとしてレイアウトできるのに必要な幅であり、それにより、目的(1) を達成
する。 3.圧縮度係数は、TextFlowBox の最長パラグラフ内のテキストの総量に比例す
る。言いかえると、全ての固定された左または右の、マージンその他の目的のイ
ンデントを含まない最長パラグラフの長さに比例する。 4.圧縮オーダーは、" テキスト・フロー圧縮オーダー" として知られる標準値
である。 5.伸張度尾係数は圧縮度係数に等しい。 6.伸張オーダーは、" テキスト・フロー伸張オーダー" として知られる標準値
である。重要なことは、" テキスト・フロー伸張オーダー" は" テキスト・フロ
ー圧縮オーダー" よりも大きく、" パディングしきい値伸張オーダーよりも小さ
いことである。
【0082】 " テキスト・フロー伸張オーダー" が" テキスト・フロー圧縮オーダー" より
も大きいという事実により、目的(3) を達成する。2つまたはそれ以上の異なる
サイズのTextFlowBox が、目的(3) の記述で特定されたように、VBoxまたは同様
にコンテナに含まれる場合を考える。弾性最大オペレーションは、これらのText
FlowBox の幅弾性(体)上で実行される。各TextFlowBox の伸張度が、TextFlow
Box (複数)のどの圧縮度よりもはるかに大きいため(なぜなら、それらの伸張
オーダーはそれらの圧縮オーダーよりも大きい)、弾性最大オペレーションに対
するルールでは、その結果が最大の望ましいサイズ(最長パラグラフを含むText
FlowBox のサイズ)を持つ幅弾性に等しいことを要求する。
【0083】 "TextFlowBox伸張オーダー" が、" パディングしきい値伸張オーダー" よりも
小さいという事実は、TextFlowBox がパディング弾性の記述の前述の意味の剛性
オブジェクトとして作用することを意味する。したがって、TextFlowBox が、Te
xtFlowBox の望ましい幅よりさらに大きいスペースが利用できる状況で出現する
場合、パディングの使用が無効にならない限り、このTextFlowBox は水平には伸
張されない。この方法は、テキストの扱い方の通常概念に一致する、ただし、こ
の方法は、必要に応じて、TextFlowBox に" パディングしきい値伸張オーダー"
よりも大きい伸張を持つ幅弾性を与えることにより変更できる。
【0084】 TextFlowBox の幅弾性の圧縮度係数は、前述の目的(2) を満足できるパラメー
タである。使用者が対象を選択する特定の事例は、使用中のTextFlowBox の各々
がテキストの単一パラグラフから構成されている事例である。この事例が対象に
される理由は、特にこのようなTextFlowBox がテーブルのコンポーネントとして
現われるとき、隣接するTextFlowBox の高さが等しいことが望ましい実際の状況
で最も頻繁に発生する事例であるためである。
【0085】 この圧縮度係数は、所定のテキスト・ブロックが表示器上の一定領域を占有す
る(言いかえると、幅が減少すると高さが増加して(またはその逆)、幅と高さ
の積をほぼ一定にする)と仮定することを基にして導かれる。テキストがこのモ
デルに正確には従わないいくつかの理由があるが、このモデルはかなり有益な近
似である。このモデルに従う2 つのテキスト・ブロックPとQを考える。この場
合、Pの望ましい幅はpであり、Qの望ましい幅はqである。さらに、これら2
つのテキスト・ブロックが全幅W(ただし、W<p+q)のスペース内に水平に
レイアウトされる必要があると考える。不足d=(p+q)を、PとQの高さが
等しくなるように、PとQの間に配分する必要がある。PとQの望ましい幅はそ
れらの面積に比例するとき――これは、PとQの各々がテキストの単一パラグラ
フを含む場合を考慮する事例で生じる――、この望ましい配分は、この不足dを
PとQの間に、それらの面積に比例して割当てる。例えば、Pの面積がQよりも
大きい場合、不足dの比例的に大きい割当てがPに配分される。
【0086】 現在のCurl実行による目的(2) の満足度は、図14、15、16で示される。
これらの図は、階層が3つの異なる幅の各々に対し制約されるときの、図13に
示す構造を有するグラフィックな階層の表示状態を示す。図13に示されるよう
に、図14〜16に示される構造は3つのTextFlowBox を含むHBoxであり、それ
の各1つが異なる長さの単一パラグラフを有する。望ましい幅でレイアウトされ
ると、その結果の表現は図14に示すようになる。各TextFlowBox は、単一パラ
グラフを含むTextFlowBox の望ましい表現である単一ライン上に、それを表わす
のに必要なスペースを正確に与えられる。利用できる幅が減少すると、その減少
は構成要素のTextFlowBox の間で、それらの圧縮度係数に比例して(すなわち、
それらの中に含まれるテキストの長さに比例して)配分される。図15は幅減少
が調整されたときの結果の状態を表わし、各TextFlowBox に対するこの幅減少の
配分が望ましいレイアウトを実現しており、3つのBox 全てが同等の高さを有す
ることを示す。図16は幅減少がさらに大きいときの結果を示し、TextFlowBox
の高さを等しく維持するための減少の配分の方法を再度示している。
【0087】 ワードの長さが変化し、またライン分割がワード間(またはハイフンで結ばれ
たワードの特定位置)でだけ発生するため、この方法ではTextFlowBox の高さが
常に正確に等しくはならない。この方法は、1つのTextFlowBox がテキストの追
加ラインに対しわずかに拡大し、一方で、他のTextFlowBox が拡大しないマージ
ン状態を発生することが多い。また、TextFlowBox の幅がその最長ワード(また
は他の分割できないオブジェクト)の幅以下に減少すると、理想的な挙動からの
ずれがさらに多く発生する。それにもかかわらず、広範囲の状態に渡り、ここで
述べるTextFlowBox の幅弾性が、TextFlowBox の高さを等しく維持するのに役立
つ。
【0088】 幅優先のレイアウト・ネゴシエーションでは、TextFlowBox の望ましい高さを
設定することが、つまり高さ基本設定を表現することが、明快な方法である。な
ぜなら、高さ基本設定を計算する以前に、テキストの幅は既に既知だからである
。その結果、TextFlowBox の高さ基本設定は、最小および望ましいサイズの両方
共が、全テキストを表示するのに実際に必要とされる高さに等しい剛性弾性とな
る。
【0089】 前述の目的(2) は、高さ優先のレイアウト・ネゴシエーションを使用するとき
に満足な結果を得るのが困難である。したがって、この場合は、TextFlowBox の
サイズ基本設定の計算は、前述の目的(1) の記述のように、単に、オブジェクト
が含まれるテキストをレイアウトするのに必要となる寸法の剛性オブジェクトで
あると仮定して、計算される。
【0090】簡単な剛性オブジェクト TextFlowBox は、幅と高さが相互にほぼ反比例するグラフィック・オブジェク
トの1つの例であるが、多角形および楕円のようなさらに簡単なグラフィック・
オブジェクトが存在し、それらは単に特定の自然サイズを有し、通常変形されな
い。これら剛性オブジェクトの幅と高さの基本設定は以下の特性の弾性により表
わされる。 1.最小サイズはそのオブジェクトの自然サイズ(適宜に、幅または高さ)であ
る。 2.望ましいサイズは最小サイズに等しい。 3.圧縮度係数は1のような標準値である。 4.圧縮オーダーは" 最小化伸張オーダー" として知られる標準値であり、" 最
小化伸張オーダー" は" テキスト・フロー圧縮オーダー" よりも小さく、かつ望
ましいサイズと最小サイズが等しい場合に、全弾性(体)の圧縮オーダーとして
使用される。実際に、どの程度の圧縮オーダーまたは圧縮度係数をこのような弾
性(体)に使用するかはほとんど問題にならない。なぜなら、弾性分割オペレー
ションは、最大の条件において、単に弾性(体)をその最小サイズよりも小さい
スペースに割当てるだけであり、圧縮オーダーまたは圧縮度係数の大きさは問題
にならないからである。 5.伸張度係数は1 のような標準値である。 6.伸張オーダーは" テキスト・フロー伸張オーダー" に等しい。
【0091】 この弾性(体)の主要特性は以下のとおりである。 1.オブジェクトの自然サイズにおける圧縮は極めて困難である。 2.伸張オーダーが" パディングしきい値伸張オーダー" よりも小さいため、パ
ディング弾性を使用するHBoxまたはVBoxなどのコンテナ内に置かれるとき、その
自然サイズ以上に伸張されない。 3.剛性オブジェクトの伸張オーダーがTextFlowBox の圧縮オーダーよりも大き
い(および同様に、TextFlowBox の伸張オーダーが剛性オブジェクトの圧縮オー
ダーよりも大きい)ため、VBoxがTextFlowBox と剛性オブジェクトの特定の組合
せを含む場合、VBox内に含まれるどのオブジェクトも、VBox内の他のすべてのオ
ブジェクトを望ましい幅よりも小さく圧縮させることがない。
【0092】 幅優先レイアウト・ネゴシエーションの間、TextFlowBox に対し幅を割当てら
れたと仮定して、TextFlowBox の高さ基本設定は、自然サイズがTextFlowBox 内
に含まれるテキストのレイアウトに必要とされる高さを持つ剛性弾性として圧縮
される。
【0093】一定アスペクト・レシオのオブジェクト 第3の一連のオブジェクトはイメージのようなグラフィックスを含む。このよ
うなグラフィックスは異なるサイズであるが、良好な表示のために、特定の" ア
スペクト・レシオ" (高さと幅の比)で表わされる。望ましい高さと幅が既知の
場合、このようなオブジェクトは剛性オブジェクトと同じに扱うことができる。
しかし、場合により、高さと幅を可変にしてオブジェクト・サイズがその周辺に
適合できるようにするのが便利である。これは、第1レイアウト・ネゴシエーシ
ョン・パスの間、伸張弾性を提供することにより(すなわち、幅優先レイアウト
・ネゴシエーションの間、幅基本設定として伸張弾性を提供することにより)、
Curlレイアウト・システムで達成できる。この伸張弾性により、パラメータを問
わず、周囲のグラフィックスに適合する望ましいレベルを得ることができる。第
2レイアウト・ネゴシエーション・パスの間、第1レイアウト・ネゴシエーショ
ン・パスの間に割り当てられたサイズ(すなわち、幅優先レイアウト・ネゴシエ
ーションの場合における幅)が既知になる。したがって、第2レイアウト・ネゴ
シエーション・パスの間に戻されるサイズ基本設定は剛性弾性であり、この剛性
弾性は、それの自然サイズがオブジェクトのアスペクト・レシオと、第1レイア
ウト・ネゴシエーション・パスの間に割り当てられたサイズとを使用して計算さ
れる。
【0094】弾性のオーバライド 場合により、グラフィック・オブジェクトのデフォールトの幅または高さの基
本設定をオーバライド(更新ないし上書き)することは有益である。更新された
新しい値を使用できるのは、グラフィック・オブジェクトがそれ自体の有する基
本設定を親オブジェクトにレポートする時であり、それにより、オーバライドが
形成したグラフィック関係を、親のグラフィック・オブジェクトに通信する。Cu
rlのオーバライドは、" 幅" と" 高さ" オプションにより、以下のようにして、
簡単に実行できる。 {Fill width=2cm,height=1cm }
【0095】 これらオプションで指定された値は、上の例の"2cm" のような直線測定値また
は他の弾性値のどちらでも良い。供給された幅または高さ値がOriginElastic で
ある場合、これを代替値として直接使用して、別の場合にはグラフィック・オブ
ジェクトにより提供される幅または高さの基本設定とする。しかし、供給される
値がOriginElastic でない場合は、供給される値を、オブジェクトにより戻され
るOriginElastic を変更する際のガイドとして使用し、そのオブジェクトのグラ
フィックの親オブジェクト(例えば、HBoxコンテナ)によりレイアウト目的で実
際に使用されるオーバライドOriginElastic を計算する必要がある。
【0096】 供給される幅と高さが2cm のような直線測定値である場合、その値は、自然サ
イズが直線測定値に等しい剛性弾性(前の" 単純剛性オブジェクト" の項で述べ
たように)に変換される。したがって、グラフィック・オブジェクトに対しオー
バライドOriginElastic を決定するときは、2つの場合だけが存在する。 1.オーバライド幅または高さ値がOriginElastic として供給される、前述の場
合。 2.供給される値が弾性である場合。
【0097】 前者の場合には、グラフィック・オブジェクトは供給されたオーバライドOrig
inElastic を格納し、そのOriginElastic を要求されたときに、それを単に戻す
だけである。
【0098】 後者の場合には、次の2つの特性を持つオーバライドOriginElastic を計算す
るのが望ましい。 1.オーバライドOriginElastic の2 つのコンポーネント弾性の和(弾性加算オ
ペレーションを使用)が供給された幅または高さ値に等しい。 2.制約(1) を条件として、オーバライドOriginElastic の2つのコンポーネン
ト弾性間の関係が、幅と高さの基本設定を表わすオブジェクトにより供給される
オリジナルOriginElastic の2 つのコンポーネント弾性間の関係に可能な限り近
くなる。
【0099】 図23は2つのテキスト・ボックスの水平配置と、それらに対応する弾性を示
す。2つのテキスト・ボックスXとYは、グラフィック・オブジェクトHBox内に
含まれる。この例の目的に対し、テキスト・ボックス(XとY)の構成が、HBox
の原点が2つのテキスト・ボックス(XとY)を分離するライン上にあるように
構成されていると仮定する。戻されるオリジナルOriginElastic は、AとBを含
むラインにより表わされる。オリジナルOriginElastic が戻されるのは、幅値が
取り消されたときである。Tは、幅値が取り消された場合の状態を表わす。前述
のように、オーバライド値はオプション値(剛性弾性で表わされることが多い)
またはOriginElastic である。オーバライド値がOriginElastic である場合、オ
ーバライドOriginElastic を戻すための計算を実行する必要はなく、供給された
OriginElastic を単に戻すだけである。オーバライド値が供給されない場合、オ
ーバライドOriginElastic を計算する必要がある。
【0100】 特に、特性(2) が多少主観的な基準であるため、これらの特性を有すると言わ
れているオーバライドOriginElastic を計算するいくつかの異なる方法が存在す
る。以下に概要を述べる方法は、Curl実行において実際に使用される方法であり
、実際の用途での妥当な値を計算することが立証されている。以下の説明では、
AとB(図23)はOriginElastic の" 第1”と" 最後" のコンポーネントを表
わす。Tは幅オプション値として供給される弾性を表わす。AAとBBはその結果得
られるオーバライドOriginElastic の第1と最後のコンポーネントを表わす。こ
の方法は、Curlプログラミング表記法を用いて記述される。コードは2つの手順
(サブルーチン)、すなわちコンポーネントへの伸張分散と第1への伸張分散と
を使用する。" |" の垂直バーで始まるラインはコメントを含む。
【0101】
【数1】
【0102】
【数2】
【0103】
【数3】
【0104】
【数4】
【0105】
【数5】
【0106】
【数6】
【0107】
【数7】
【0108】
【数8】
【0109】
【数9】
【0110】 図24は図23に示されるグラフィック・オブジェクトの階層を示す。グラフ
ィック・コンテナ・オブジェクトHBox 150はグラフィック・オブジェクトXとY
156 を含む階層のルートである。各グラフィック・オブジェクトは関連するレイ
アウト・オブジェクト154 を有し、レイアウト・オブジェクトは表示されるオブ
ジェクトの位置とサイズを記述する。オーバライド152 は、Elastic またはOrig
inalElastic のどちらかで、グラフィック階層に格納される。
【0111】 図25は、弾性を用いて定義(決定)されたグラフィック・オブジェクトにオ
ーバライドを提供する方法のフローチャートを示す。このプロセスはステップ16
0 で始まる。まず、オリジナルのOriginalElastic がグラフィック・オブジェク
トから決定される(ステップ162 )。オリジナルのOriginalElastic は、合成グ
ラフィック・オブジェクトに対し計算され、さらに,グラフィック・オブジェク
ト用に単に格納される。オーバライドがグラフィック・オブジェクトに関連しな
い場合(ステップ164 )、オリジナルのOriginalElastic は、オーバライドによ
り得られたOriginalElastic に単にコピーされるだけである(ステップ166 )。
オーバライドが存在する場合、オリジナルのOriginalElastic と格納されたオー
バライド弾性とから、オーバライドされた新しいOriginalElastic が計算される
(前述のCurlプログラミング表記法を使用して記述される方法を参照)(ステッ
プ168 )。次に、新しいOriginalElastic (ステップ166 〜168 )がステップ17
0 で戻される。このプロセスはステップ172 で終了する。
【0112】 弾性をオーバライドするのは、特定の表示関係を保存しながら、グラフィック
・オブジェクトの表示特性を変更する有効なメカニズムである。特に、オーバラ
イドされた新しいOriginalElastic 内の2つのコンポーネント弾性の間の関係は
、オリジナルのOriginalElastic 内の2つのコンポーネント弾性間の関係に近い
【0113】Curlのスリー・パス・レイアウト・ネゴシエーション・アルゴリズム 前に説明したように、Cuelは2つのネゴシエーション命令の、幅優先と高さ優
先とをサポートする。これの適用に対しては、テキストが最初に水平ラインにフ
ォーマットされ(例えば、西欧言語を使用するとき)、TextFlowBox に対する幅
基本設定の前述の説明に示したように、一般に幅優先ネゴシエーションは良好な
結果を導き出す。以下の説明は幅優先レイアウト・ネゴシエーションを記述する
。高さ優先ネゴシエーションの詳細は、幅と高さが入れ替わることを除いて、完
全に類似する。
【0114】 オブジェクトgを持つ幅優先レイアウト・ネゴシエーションは、オブジェクト
の親がgのget-width-preference method (幅基本設定取得方法)を呼び出すと
きに開始される。この方法は、ペアの弾性(または、ペアの弾性に変換できる情
報)を戻すための役割を果たし、左右の範囲に割当てされるスペースの量に対す
るgの基本設定を記述する。GがBox の場合、この情報は一般に、gのグラフィ
ックの子オブジェクト各々の幅基本設定取得方法を呼び出し、その結果を適正な
方法で組合せることにより、導き出される。
【0115】 gを持つ幅優先レイアウト・ネゴシエーション次のステップは、g の制約幅方
法が呼び出されるときに発生する。この方法は引数として、g 用に計算された左
右範囲値を取り、ペアの弾性(または、ペアの弾性に変換できる情報)を戻す役
割を果たし、上側部と下側部に割当てされたスペース量に対するg の基本設定を
記述する。g がBox である場合、この方法は一般に、g の各グラフィックの子に
対する左右範囲を計算し、その後、各子オブジェクトのconstrain-width (幅制
約)方法を呼び出して各子の高さ基本設定を得る。次に、これらの高さ基本設定
を適正な方法で組み合せて、g の高さ基本設定を導き出す。
【0116】 レイアウト・ネゴシエーションの最終ステップは、g の設定サイズ方法が呼び
出されるときに発生する。この方法は引数として、g に割当てられた左右範囲お
よび上側部と下側部の記述を受け取る。g は将来の参照用にこの情報の記述を作
成する。g がBox である場合、適正な引数を持つグラフィックの子の各々に関す
る設定サイズ方法を呼び出すことが予想される。
【0117】 このレイアウト・ネゴシエーション方法は、幅決定がなされるまで、高さ基本
設定に関する情報を必要としないため、それらの幅割当てが既知になるまで、テ
キスト・ブロックと図形のようなオブジェクトがそれらの高さ基本設定を決定す
るのを引き延ばす機会を提供する。この方法により、ワード・ラップ(word wra
p )を持つパラグラフと、一定アスペクト・レシオを持つ図形の両方を、さらに
高度にフォーマットできる。
【0118】 図17、18、19は、代表的グラフィック・コンテナのHBoxがレイアウトを
処理する方法を説明するフローチャートを表わす。各フローチャートは、スリー
・パス幅優先レイアウト・ネゴシエーションの3つのパスの1つにおけるHBoxの
機能を示す。高さ優先レイアウト・ネゴシエーションにおける機能も同様である
が、動作の詳細シーケンスは異なる。
【0119】 スリー・フェーズのレイアウト・ネゴシエーションの間に、HBoxを呼び出す方法
は以下のようである。 第1パス:{HBox,get-width-preference } 第2パス:{HBox,constrain-width lextent:float,rextent:float} 第3パス:{HBox,set-size bounds:GRect}
【0120】 HBox.get-width-preference method(幅基本設定取得法)はHBoxの幅基本設定
を表わすOriginElastic を戻し、HBox.constrain-width(幅制約方法)はHBoxの
高さ基本設定を表わすOriginElastic を戻す。HBox. constrain-width (幅制約
)に対するlextent およびrextent 引数は、HBoxの高さ基本設定を計算する目的
のために仮定される左右の範囲を与える。HBox.set-size (サイズ設定)に対す
る引数として供給されるGRect オブジェクトは、HBoxに割当てられた矩形領域を
表わす左右の範囲と、上側部および下側部値を示す4つの浮動小数点数とを含む
【0121】 次に17、18、19のフローチャートを説明する。グラフィック・レイアウ
トは複雑なトリー(tree)であり、各オブジェクトは多数の子コンポーネントを持
つ親オブジェクトであってもよく、それら子コンポーネントはそれ自体がその子
に対する親であることができ、こうしてトリーの葉にまでつらなる。図17〜1
9のフローチャートの各々は、対応するルーチンがその親により呼び出されたと
きの、子コンポーネント内のプロセスを表わす。各ルーチン内で、子はその子の
各々に対し同一呼び出しを行う。このようにして、呼び出しはトリーのルートか
ら葉に通過し、それらのそれぞれの結果をトリー・ルートを通して戻す。
【0122】 フローチャートが制限される場合とは、HBoxがそれに含まれるオブジェクトの
原点に位置合わせされ、底部、上部、または中心を位置合わせするのに必要なロ
ジックを含まない場合である。これらの追加機能を持つHBoxに対するロジックを
指定することにより、明瞭な実行が可能になる。フローチャートは図9の簡単な
例に関して記述され、ここでは呼び出しはHBoxに対し実行されれ、順次その3つ
の子A、B、Cへの呼び出しを行う。
【0123】 計算は、HBoxで専用に理解されるいくつかの変数を使用して記述される。これ
には以下を含む。 A、D、R:内部計算に使用される弾性。 P:パディングに使用される弾性。 C:現在対象としている子グラフィック・オブジェクトに対するポインタ。 i:整数インデックス変数。 CWE :子オブジェクトから受け取られた幅基本設定を格納するOriginElasticsの
アレイ。 CHE :子オブジェクトから受け取られた高さ基本設定を格納するOriginElastics
のアレイ。 RR:HBoxの幅基本設定を累積するのに使用される弾性のアレイ。 letent、rextent 、ascent、descent 、casc、cdese 、cp、after 、cspace:グ
ラフィック・オブジェクトのサイズと位置を割当てるのに使用される数。 CLEXおよびCREX:子オブジェクトに対し計算される、左右の範囲それぞれのアレ
イ。 XPOS:子オブジェクトの原点のx座標のアレイ。 CBOUNDS :GRect オブジェクト。
【0124】 HBoxに対する親が、get-width-preference(幅基本設定取得)を呼び出すとき
(図17)、この例のHBoxは左右の弾性(体)LとRから構成される幅弾性WEを戻
す。HBoxの左弾性は、オブジェクトAの左弾性であり、右弾性は図20に示され
る残りの弾性AR、BL、CL、CRの総和である。最後に、HBox自体は、その
子A、B、Cの各々に対しget-width-preference(幅子本設定取得)呼び出しを
実行し、それぞれの左右弾性を得る。詳細には、102 で、HBoxの左右の弾性が最
初にゼロに設定され、HBoxの子i の数が3に設定される。104 では、iが最初3
に設定され、従ってゼロよりも大きく、その結果システムは106 に続く。106 で
は、HBoxはその子C(i =3 )に対しget-width-preference(幅基本設定取得)
呼び出しを実行し、CLとCRを受け取る。右弾性は、ゼロに留まり、後続の方法の
参照のためにR[3]で格納される。子Cの全体幅基本設定も、後続の方法の参照の
ためにCWE[3]に格納される。子Cの右コンポーネントCRは値R に加算され、HBox
の右弾性の累積として役立つ。(フローチャートにおいて、最終コンポーネント
/第1コンポーネントの用語は、右範囲/左範囲および下側部/上側部をそれぞ
れ表わし、幅優先または高さ優先プロセスが実行されるかどうかに依存する。こ
の例では、最終/第1 は右/左に一致する)。
【0125】 さらに子Cを処理するため、108 ではi =3 とし、子Cの左コンポーネントCL
を、110 で、HBoxの右コンポーネントR に加える。インデックスi は112 で減少
され、104 でゼロと比較される。次のループでは、BRとBLが同様に106 と110 で
R に加算され、値RR[2] が保存される。詳細には、RR[2] は子Cの左右の弾性の
和である。
【0126】 この例の最終ループでは、子Aが処理される。値RR[1] は子BとCの左右の弾
性の和である。右弾性ARは106 でHBoxの右弾性R に加算されるが、108 では、シ
ステムは114 に進行する。したがって、最終の子Aの左弾性ALはHBoxの左弾性に
なる。最後に、112 でゼロに減少されたiを用いて、左右の弾性LとRがOrigin
alElastic WEを形成する。HBoxに対するOriginalElastic はその親に戻される。
その値は、トリーのルートに対する親のget-width-preference(幅基本設定取得
)ルーチンを通り、トリーにまで戻る。
【0127】 次に、幅制約がconstrain-width (幅制約)呼び出し(図18)を通し下方の
トリーにまで通過し、HBoxを計算された上側部と下側部から構成されるOriginal
Elastic HEに戻す。
【0128】 constrain-width (幅制約)呼び出しを受け取ると、HBoxは図18の方法を実
行する。図17の方法で計算された左右弾性とHBoxに対するパディング弾性とを
基に、118 で、パディングを分割オペレーションを通して、lextent とrextent
(親呼び出しに含まれる左右範囲の距離)から取除く。上側部と下側部は、カー
ソル位置の値cpと同様に、ゼロに初期化される。constrain-width (幅制約)プ
ロセスは子を左から右に処理し、cpが割当てられた隣りの領域の左端を決定し、
HBoxの原点から右をカウントする。子インデックスi は、左から右への処理に対
し1 に設定される。値の"after(後)" は子の間で分割される距離であり、最初
はrextent に設定される(図21A)。
【0129】 120 では、i はHBoxの子の数3よりも小さく、システムは122 に続く。122 で
は、子Aの左右の弾性hがLとRに格納される。124 では、第1子Aに対しi=
1となり、システムは126 に進行する。126 では、HBoxはlextent CLEX[1] とre
xtent CREX[1] とを計算して、constraint-width(幅制限)呼び出しで子Aに送
られる。第1子Aに送られるlextent はHBoxで受け取られるlextent である。CL
EX[1] に割り当てられたlextent を用いて、cpをlextent で増加する。子Aに送
られるrextent は、分割オペレーションで計算された値を除く値である。図21
Aに示されるように、"after( 後)"距離は、この方法でのこの点において受け取
られるrextent に等しく、子Aの右弾性Rと、第1パス内の子BおよびCの累積
された幅基本設定RR[1] との間で分割される必要がある。弾性Rに割当てられた
"after( 後)"の部分は、値cspaceである。
【0130】 次に、値cspaceが、制約されたrexentとして子Aに送られる。、上側部と下側
部弾性AとDを決定する子の高さOrigonalElastic が子Aから戻される。HBoxの
原点に対する子の原点までの距離を設定する値XPOS[1] が、子Aをゼロに設定す
る。この理由は、HBoxの原点が一番左の子の原点と同一であると定義されている
からである。
【0131】 128 では、カーソル・ポインタcpがcspaceによりA の左端まで増加され、子イ
ンデックスが1づつ増加される。割当てられる状態にある距離"after(後)" が
、図21Aの"after" から図21Aのcspaceを減算して、図21Bに示されるよ
うに、BとCの左右の範囲の間に割当てられる距離を提供することにより計算さ
れる。
【0132】 120 から、この方法は122 に戻り、第2の子を処理する。図17の方法で計算
された子Bに対する左右の弾性がLとRを決定する(図21B)。第1子は既に
処理されているため、この方法は124 から130 まで処理する。次に、割当てられ
るcspaceが、L+RとRR[2] との間に距離"after" を分割して計算される。次に
、子Bの左右の弾性LとRに従って値cspaceを分割して、CLEX[2] を決定し、cs
paceとCLEX[2] との差がCREX[2] を決定する。子BXPOS[2] の原点の位置が、CL
EX[2] をcpで決定された子Bの左端に加えることにより決定される。またHBoxは
子B にconstrain-width (幅制約)呼び出しを提供して、子Bを計算されたCLEX
[2] とCREX[2] に制約し、子B からその上側部と下側部の弾性を受け取る。次に
、HBoxに対する上側部と下側部の弾性A,Dが、HBoxの現在の上側部と下側部の
値A,Dと、子Bから戻された上側部と下側部の値とに適用される最大オペレー
ションを通して決定される。
【0133】 次のループでは、この方法は、ステップ122 と130 で、第3の子を同様に処理
する。次に、HBoxが、3 つの子のA 、B 、C に対し最大上側部と最大下側部であ
るその高さOriginElastic を戻す。
【0134】 図19はset-size(サイズ設定)方法を示しおり、この方法により、HBoxがそ
の左範囲、右範囲、上側部および下側部を備え、またHBoxが適正な値をその子の
各々まで通過させる。134 では、HBoxに対する適正なパディングがPで格納され
る。上側部および下側部が、親からの呼び出し内で提供されるコンポーネントか
ら取られ、子インデックスが1に設定される。第1子に対し、この方法は決定プ
ロセス136 から138 を通過する。138 では、子A に対する上側部および下側部の
弾性AとDが、図18の計算から外れている、子の高さ弾性(体)の対応するコ
ンポーネントにより決定される。次に、子の上側部と下側部のcascとcdesc が、
上側部、下側部、およびパディング弾性に従って制限された上側部および下側部
を分割する分割オペレーションにより計算される( 図22) 。次に子の境界が、
constraint-width(幅制約)方法(図18)で前に制約された範囲と、ここで計
算された上側部と下側部とから、子に対し決定される。次にこれらの境界は、se
t-size(サイズ設定)呼び出しを通して子に提供され、子インデックスが1づつ
増加される。各子の境界が決定されると、この方法は決定136 から親に戻る。
【0135】 本発明を好ましい実施形態により詳細に図示し、説明してきたが、当業者には
、添付の特許請求項に限定された本発明の精神と範囲から逸脱することなく、形
状または細部の各種の変更が実行可能であることは理解されるであろう。
【図面の簡単な説明】
【図1】 本発明の利用を示す、多数のグラフィック・オブジェクトを含む表示ウィンド
ウの例を示す。
【図2】 図1のウィンドウで表示されるグラフィック・オブジェクトの階層の部分図であ
る。
【図3】 弾性のコンセプトを示しており、図では、2つのグラフィック・オブジェクト
のサイズが変化して、可変ウィンドウ幅を満たしている。
【図4】 グラフィック・オブジェクトのオリジナルに対する左右の範囲、上側部と下側
部を示す。
【図5】 垂直原点を使用して、グラフィック・オブジェクトを1行のテキストのベース
ラインに位置合わせしている図である。
【図6】 図5で表示されるグラフィック・オブジェクトの階層を示している。
【図7】 水平原点を使用して、グラフィック・オブジェクトを数字の列に位置合わせし
ている図である。
【図8】 図7で表示されるグラフィック・オブジェクトの階層を示している。
【図9】 Hboxの3つのグラフィック・オブジェクトの左右の範囲と、対応する弾性体と
を示す。
【図10】 4つのグラフィック・オブジェクトのグリッドを示す。
【図11】 高さの異なる3つの矩形を含むHBoxのパディングの使用を示す。
【図12】 高さの異なる矩形の中心を合わせたHBoxのパディングの使用を示す。
【図13】 3つのテキスト・ボックスの水平配置のグラフィック階層を示す。
【図14】 望ましい幅が与えられたときの、図13の3つのテキスト・ボックスの水平配
置を示す。
【図15】 望ましい幅より多少狭い幅が与えられたときの、図14の3つのテキスト・ボ
ックスの水平配置を示す。
【図16】 望ましい幅よりかなり狭い幅が与えられたときの、図14と15の3つのテキ
スト・ボックスの水平配置を示す。
【図17】 HBoxのプロセスに対するスリー・パス法の第1パスを示すフローチャートであ
る。
【図18】 HBoxのプロセスに対するスリー・パス法の第2パスを示すフローチャートであ
る。
【図19】 HBoxのプロセスに対するスリー・パス法の第3パスを示すフローチャートであ
る。
【図20】 図17の方法を説明するのに使用される3つのグラフィック・オブジェクトの
HBoxを示す。
【図21A】 図18の方法の一例を示す。
【図21B】 図18の方法の他の例を示す。
【図22】 図19の方法を示す。
【図23】 2つのテキスト・ボックスの水平配置と、それらに対応する、オーバライドを
含む弾性値を示す。
【図24】 図23で表示されるグラフィック・オブジェクトの階層を示す。
【図25】 弾性のオーバライドを提供する方法を示すフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,MZ,SD,SL,SZ,TZ,UG ,ZW),EA(AM,AZ,BY,KG,KZ,MD, RU,TJ,TM),AE,AG,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,BZ,C A,CH,CN,CR,CU,CZ,DE,DK,DM ,DZ,EE,ES,FI,GB,GD,GE,GH, GM,HR,HU,ID,IL,IN,IS,JP,K E,KG,KP,KR,KZ,LC,LK,LR,LS ,LT,LU,LV,MA,MD,MG,MK,MN, MW,MX,MZ,NO,NZ,PL,PT,RO,R U,SD,SE,SG,SI,SK,SL,TJ,TM ,TR,TT,TZ,UA,UG,UZ,VN,YU, ZA,ZW Fターム(参考) 5B069 AA01 BA03 BB16 FA02 5E501 AA02 BA03 BA20 CA03 CB02 CB09 FA13 FA44 FB25

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 複数のテキスト・ブロックを処理してテキストをレイアウト
    する方法であって、 各テキスト・ブロックの望ましい幅と圧縮度を、そのテキスト・ブロックのテ
    キストの量の関数として決定するステップと、 前記テキスト・ブロックの前記幅と圧縮度を処理して、そのテキスト・ブロック
    の全体レイアウトを決定するステップと、 を含む方法。
  2. 【請求項2】 請求項1において、さらに、前記圧縮度とは異なる各テキス
    ト・ブロックの伸張度を決定するステップを含む方法。
  3. 【請求項3】 請求項2において、テキストの前記伸張度が、それの圧縮度
    より実質的に大きい方法。
  4. 【請求項4】 請求項3において、伸張度が伸張オーダーと伸張度係数とに
    より決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さらにテ
    キストの前記伸張オーダーが前記圧縮度オーダーよりも大きい方法。
  5. 【請求項5】 請求項1において、さらに、テキストを最小ライン数でレイ
    アウトするように、各テキスト・ブロックの望ましいサイズを決定する方法。
  6. 【請求項6】 請求項5において、圧縮度係数がテキスト長さに比例して決
    定されている方法。
  7. 【請求項7】 請求項6において、テキストの前記伸張度が、それの圧縮度
    より実質的に大きい方法。
  8. 【請求項8】 請求項7において、伸張度が伸張オーダーと伸張度係数とに
    より決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さらにテ
    キストの前記伸張オーダーが前記圧縮度オーダーよりも大きい方法。
  9. 【請求項9】 テキスト・ブロックを決定しているデータ処理システムのデ
    ータ構造であって、 テキスト・データと、 前記テキスト・データの望ましい幅と、 前記テキスト・データの前記幅に対する圧縮度係数と、 を含むデータ構造。
  10. 【請求項10】 請求項9において、さらに、前記圧縮度特性とは異なる、
    前記テキスト・データの幅に対する伸張度特性を含むデータ構造。
  11. 【請求項11】 請求項10において、テキストの前記伸張度が、それの圧
    縮度より実質的に大きいデータ構造。
  12. 【請求項12】 請求項11において、伸張度が伸張オーダーと伸張度係数
    とにより決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さら
    にテキストの前記伸張オーダーが前記圧縮度オーダーよりも大きいデータ構造。
  13. 【請求項13】 請求項9において、さらに、テキストを最小ライン数でレ
    イアウトするように、各テキスト・ブロックの望ましいサイズを決定しているデ
    ータ構造。
  14. 【請求項14】 請求項13において、圧縮度係数がテキスト長さに比例し
    て決定されているデータ構造。
  15. 【請求項15】 請求項14において、テキストの前記伸張度が、それの圧
    縮度より実質的に大きいデータ構造。
  16. 【請求項16】 請求項15において、伸張度が伸張オーダーと伸張度係数
    とにより決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さら
    にテキストの前記伸張オーダーが前記圧縮度オーダーよりも大きいデータ構造。
  17. 【請求項17】 データ処理システムであって、 複数のテキスト・ブロックの各々の望ましい幅と圧縮度を、各テキスト・ブロ
    ックのテキストの量の関数として決定する手段と、 テキスト・ブロックの前記幅と圧縮度を処理して、そのテキスト・ブロックの
    全体レイアウトを決定する手段と、 を含むシステム。
  18. 【請求項18】 請求項17において、各テキスト・ブロックに対する伸張
    度が、圧縮度とは別に決定されているシステム。
  19. 【請求項19】 請求項18において、テキストの前記伸張度が、それの圧
    縮度より実質的に大きい方法。
  20. 【請求項20】 請求項20において、伸張度が伸張オーダーと伸張度係数
    とにより決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さら
    にテキストの前記伸張オーダーが前記圧縮度オーダーよりも大きいシステム。
  21. 【請求項21】 請求項17において、各テキスト・ブロックの望ましいサ
    イズが、前記テキストを最小ライン数でレイアウトするように決定されているシ
    ステム。
  22. 【請求項22】 請求項21において、圧縮度係数がテキスト長さに比例し
    て決定されているシステム。
  23. 【請求項23】 請求項22において、テキストの前記伸張度が、それの圧
    縮度より実質的に大きいシステム。
  24. 【請求項24】 請求項23において、伸張度が伸張オーダーと伸張度係数
    とにより決定され、圧縮度が圧縮オーダーと圧縮度係数とにより決定され、さら
    にテキストの前記伸張オーダーが前記圧縮度オーダーよりも大きいシステム。
JP2001514375A 1999-07-30 2000-07-20 テキスト・グラフィック・オブジェクトのレイアウト処理 Pending JP2003511748A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/365,057 US6504544B1 (en) 1999-07-30 1999-07-30 Processing layout of text graphical objects
US09/365,057 1999-07-30
PCT/US2000/019999 WO2001009832A2 (en) 1999-07-30 2000-07-20 Processing layout of text graphical objects

Publications (1)

Publication Number Publication Date
JP2003511748A true JP2003511748A (ja) 2003-03-25

Family

ID=23437301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001514375A Pending JP2003511748A (ja) 1999-07-30 2000-07-20 テキスト・グラフィック・オブジェクトのレイアウト処理

Country Status (6)

Country Link
US (1) US6504544B1 (ja)
EP (1) EP1218853A1 (ja)
JP (1) JP2003511748A (ja)
AU (1) AU6231700A (ja)
CA (1) CA2380691A1 (ja)
WO (1) WO2001009832A2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986103B1 (en) * 1999-12-07 2006-01-10 Microsoft Corporation Document formatting based on optimized formatting values
US6639611B1 (en) * 1999-12-15 2003-10-28 Sun Microsystems, Inc. System and method for efficient layout of a display table
US6993709B1 (en) 2000-02-12 2006-01-31 Adobe Systems Incorporated Smart corner move snapping
US7305617B2 (en) * 2000-02-12 2007-12-04 Adobe Systems Incorporated Method for aligning text to baseline grids and to CJK character grids
JP5465819B2 (ja) * 2000-02-12 2014-04-09 アドビ システムズ, インコーポレイテッド テキストグリッド作成ツール
US7071941B2 (en) * 2000-02-12 2006-07-04 Adobe Systems Incorporated Method for calculating CJK emboxes in fonts
JP4112200B2 (ja) * 2000-09-25 2008-07-02 アドビ システムズ, インコーポレイテッド 文字組空き量設定装置、文字組空き量設定プログラム及びそれを記録した記録媒体
JP3795784B2 (ja) * 2000-09-25 2006-07-12 アドビ システムズ, インコーポレイテッド アイコン表示付き文字組空き量設定装置、文字組空き量設定プログラム及びそれを記録した記録媒体
JP4101491B2 (ja) * 2000-09-25 2008-06-18 アドビ システムズ, インコーポレイテッド 合成フォント編集装置、合成フォント編集プログラム及びそれを記録した記録媒体
US20020111969A1 (en) * 2000-09-28 2002-08-15 Halstead Robert H. System and method for processing graphical objects for layout using an elastic difference operation
US6919890B2 (en) * 2000-09-28 2005-07-19 Curl Corporation Grid and table layout using elastics
US7296227B2 (en) 2001-02-12 2007-11-13 Adobe Systems Incorporated Determining line leading in accordance with traditional Japanese practices
US7167274B2 (en) * 2001-09-28 2007-01-23 Adobe Systems Incorporated Line leading from an arbitrary point
US7039862B2 (en) 2002-05-10 2006-05-02 Adobe Systems Incorporated Text spacing adjustment
US7120622B2 (en) * 2002-06-10 2006-10-10 Xerox Corporation Authoring tools, including content-driven treetables, for fluid text
US7123261B2 (en) * 2002-12-26 2006-10-17 Adobe Systems Incorporated Coordinating grid tracking and mojikumi spacing of Japanese text
US20040125107A1 (en) * 2002-12-26 2004-07-01 Mccully Nathaniel M. Coordinating grid tracking and mojikumi spacing of Japanese text
JP2004354767A (ja) * 2003-05-29 2004-12-16 Sharp Corp 文字図形表示装置、文字図形表示方法、プログラムおよび記録媒体
JP2005038263A (ja) * 2003-07-16 2005-02-10 Canon Inc 画像処理装置、画像処理方法、記録媒体及びプログラム
US7594171B2 (en) 2004-10-01 2009-09-22 Adobe Systems Incorporated Rule-based text layout
US20060224558A1 (en) * 2005-03-24 2006-10-05 Flora John R Associating multiple categories with single payee or payor in financial software application
US20060218086A1 (en) * 2005-03-24 2006-09-28 Heather Campbell Payee aliasing
US20060218087A1 (en) * 2005-03-24 2006-09-28 Zimmerman Jeffrey P Automated aggregation and comparison of individual spending relative to population of similar users
US20060218088A1 (en) * 2005-03-24 2006-09-28 Flora John R Intelligent auto-fill transaction data
US7779362B1 (en) * 2005-09-02 2010-08-17 Adobe Systems Inc. Methods and apparatus for selecting objects by state
US20070118795A1 (en) * 2005-11-23 2007-05-24 Peter Noyes A Method of Processing Annotations Using an Editable Multi-Dimensional Catalog
US20070162844A1 (en) * 2006-01-12 2007-07-12 Microsoft Corporation Automatic layout of objects
US8177121B2 (en) * 2006-01-13 2012-05-15 Intuit Inc. Automated aggregation and comparison of business spending relative to similar businesses
US7656404B1 (en) 2006-03-21 2010-02-02 Intuit Inc. Line trimming and arrow head placement algorithm
US8185453B1 (en) 2006-03-21 2012-05-22 Intuit Inc. Contextual access to workflow functionality
US7861148B2 (en) * 2006-07-31 2010-12-28 Nicolas Bissantz Method for defining a base line
AU2007201652B2 (en) * 2007-04-13 2010-09-02 Canon Kabushiki Kaisha Laying out graphical elements on a page
US8473467B2 (en) * 2009-01-02 2013-06-25 Apple Inc. Content profiling to dynamically configure content processing
US8549399B2 (en) 2011-01-18 2013-10-01 Apple Inc. Identifying a selection of content in a structured document
US8442998B2 (en) 2011-01-18 2013-05-14 Apple Inc. Storage of a document using multiple representations
US8963959B2 (en) 2011-01-18 2015-02-24 Apple Inc. Adaptive graphic objects
US9223591B2 (en) * 2012-08-30 2015-12-29 International Business Machines Corporation Sizing a pane of a window presented on a display
US9971334B2 (en) 2015-04-09 2018-05-15 Kwik Mark, Inc. Inscription positioning apparatuses, systems, and methods of making and using the same

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4608664A (en) * 1983-02-23 1986-08-26 International Business Machines Corporation Automatically balancing and vertically justifying a plurality of text/graphics-columns
US4799172A (en) 1986-04-30 1989-01-17 Gerber Scientific Products, Inc. Apparatus and method for automatic layout of sign text
US5208906A (en) 1988-12-30 1993-05-04 Chipsoft Ca, Corp. Method and apparatus for representing bordered areas of a generic form with records
US5148520A (en) * 1988-12-30 1992-09-15 Chipsoft Ca, Corp. Determining the locations of the contents of bordered areas of a generic form
US5953735A (en) * 1991-03-20 1999-09-14 Forcier; Mitchell D. Script character processing method and system with bit-mapped document editing
US5649216A (en) * 1991-05-17 1997-07-15 Joseph S. Sieber Method and apparatus for automated layout of text and graphic elements
US5335290A (en) * 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image
US5721848A (en) * 1994-02-04 1998-02-24 Oracle Corporation Method and apparatus for building efficient and flexible geometry management widget classes
US5754873A (en) * 1995-06-01 1998-05-19 Adobe Systems, Inc. Method and apparatus for scaling a selected block of text to a preferred absolute text height and scaling the remainder of the text proportionately
US6125385A (en) * 1996-08-01 2000-09-26 Immersion Corporation Force feedback implementation in web pages
US5796401A (en) * 1996-08-09 1998-08-18 Winer; Peter W. System for designing dynamic layouts adaptable to various display screen sizes and resolutions
US5765176A (en) * 1996-09-06 1998-06-09 Xerox Corporation Performing document image management tasks using an iconic image having embedded encoded information
US6144974A (en) 1996-12-13 2000-11-07 Adobe Systems Incorporated Automated layout of content in a page framework
US6154757A (en) * 1997-01-29 2000-11-28 Krause; Philip R. Electronic text reading environment enhancement method and apparatus
US5973692A (en) * 1997-03-10 1999-10-26 Knowlton; Kenneth Charles System for the capture and indexing of graphical representations of files, information sources and the like
US6380940B1 (en) * 1999-07-30 2002-04-30 Curl Corporation Processing graphical objects having origins defined with elasticity
US6356279B1 (en) * 1999-07-30 2002-03-12 Curl Corporation Processing of graphical objects with minimum and preferred sizes

Also Published As

Publication number Publication date
WO2001009832A3 (en) 2002-07-18
CA2380691A1 (en) 2001-02-08
EP1218853A1 (en) 2002-07-03
US6504544B1 (en) 2003-01-07
AU6231700A (en) 2001-02-19
WO2001009832A2 (en) 2001-02-08

Similar Documents

Publication Publication Date Title
JP2003511748A (ja) テキスト・グラフィック・オブジェクトのレイアウト処理
JP2003506769A (ja) 弾性を有するグラフィック・オブジェクトのマルチプル・パス・レイアウト
JP2003506768A (ja) 最小サイズおよび望ましいサイズを有するグラフィック・オブジェクト
US6380940B1 (en) Processing graphical objects having origins defined with elasticity
EP1200934B1 (en) Graphical objects with stretch and compression properties
US8180690B2 (en) System and method for interacting with item catalogs
EP0447095B1 (en) Workspace displays
US6486898B1 (en) Device and method for a lattice display
US5923573A (en) Three-dimensional CAD system for producing a three-dimensional model
EP0412924B1 (en) Method of controlling construction of variable window on a display screen
US20050240865A1 (en) Method for assigning graphical images to pages
US7747947B2 (en) Document creation system and related methods
GB2392595A (en) Page composition
JPH11120348A (ja) 曲線平滑化
US20040189709A1 (en) Overriding elastic values for graphical objects
CN106201838A (zh) 视频下载进度显示方法及装置
Dong et al. An advanced pre-positioning method for the force-directed graph visualization based on pagerank algorithm
JP2947984B2 (ja) マルチプロセッサシステムにおける図形描画方式
GB2422704A (en) Document creation

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20040928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040929