PrintOMatic を使用する

PrintOMatic Xtra には2通りの使い方があります。1つ目の最もシンプルな使い方はグローバルな print コマンドを使う方法です。印刷したい Director オブジェクトをパラメータとして渡します。
print member "illustration" of castLib 1
print "Some example text for printing"
print sprite 1, sprite 5
print castLib "documentation"
手早く簡単に印刷したいだけならここで読むのを止めてもいいでしょう。 これで事足ります。


PrintOMatic Xtra のインスタンスを作成する

PrintOMatic の2つ目の使い方は、new コマンドを使って Xtra のインスタンスを作成する方法です。グローバルな print コマンドを使うシンプルな方法よりも断然パワフルでカスタマイズも可能です。
set doc = new(xtra "PrintOMatic")
if not objectP(doc) then exit
PrintOMatic Xtra のインスタンスは「 ドキュメントオブジェクト 」 と呼ばれます。以下「ドキュメント」 と呼ぶ場合もあります。 ドキュメントオブジェクトを作成した後は、必ず objectP( ) ファンクションを使ってオブジェクトが有効であることをチェックしてください(上記サンプル参照)。いったん ドキュメント を作成すると名前やマージン、印刷方向といった属性の変更が可能です。
setDocumentName doc, "My Document"
setMargins doc, Rect(36,36,36,36)
setLandscapeMode doc, TRUE
マスターページ

ドキュメントの0(ゼロ)ページは、そのドキュメントの「マスターページ」になります。マスターページの内容はドキュメントのすべての本文ページの下に描かれます。 新規にドキュメントを作成したときは新しいページをつくるまで(後述の ページを追加する を参照)マスターページがデフォルトのページになります。newPage コマンドを一度も実行していない状態で追加したアイテムはドキュメントのマスターページに記載されます。

マスターページに置かれる一般的なアイテムはページ番号です。ドキュメントのすべてのページにページ番号を記載するには、マスターページのテキストアイテムと setPageNumSymbol コマンドを組み合わせて使います。
-- ページの右下にページ番号を配置する
set pgNumSym = numToChar(166) -- Macのパラグラフ記号
setPageNumSymbol doc, pgNumSym
setTextJust doc, "right"
drawText doc, Point(getPageWidth(doc),getPageHeight(doc)), "page"&&pgNumSym
ページを追加する

PrintOMatic ドキュメントを印刷するには、ドキュメントが少なくとも1ページなくてはなりません。 newPage コマンドを使ってドキュメントに新しいページを追加してください。newPage を使って追加されたページは「カレントページ」となり、そこに新たなグラフィックエレメントや「フレーム」、その他のアイテムが配置されます。以前に追加したページ(マスターページを含む)を「カレントページ」にしたいときは setPage コマンドを使ってください。
newPage doc -- 新しいページを追加する
setPage doc, 0 -- マスターページに戻る
PrintOMatic の座標系

PrintOMatic は Director のステージと同じ座標系を使っており、左上の座標が (0, 0) になります。座標の値はページの右下に向かって大きくなります。描画座標はすべてポイントで指定します。1インチは72ポイントになります。

PrintOMatic でオブジェクトに用いるすべての描画座標は、 setMargins コマンドで設定したページのマージンに対して相対的なものです。マージンによって決められた描画エリアはドキュメント全体に適用されます。

pageSetupsetLandscapeMode をコールしてページサイズを変更する場合は、それによって座標系が変わります。getPageWidthgetPageHeight で返される値も同様に変化します。 これらの値を Lingo の変数に記録している場合は、 pageSetupsetLandscapeMode の呼び出し後に再度取得するようにしてください。

フレームを作成する

PrintOMatic のページにテキストやグラフィックを配置する最も一般的な方法は、ページ上に1つあるいは複数の矩形の「フレーム」を作ることです。作成したフレームに append でコンテンツを追加します。複数の「リンクされた」フレーム内のコンテンツはフレームから次のフレームへ流れ込みます。

たとえば2段のレイアウトを作成するには、ページ上に2つのフレームを隣同士で作成し互いにリンクします。するとテキストとグラフィックはフレームから次のフレームに流れ込みます:
-- 新規ドキュメントを作成する
set doc = new(xtra "PrintOMatic")
-- 幅と高さを取得する
set w = getPageWidth(doc)
set h = getPageHeight(doc)
-- 新規ページを作成する
newPage doc
-- 最初の段を作成する
newFrame doc, Rect(0,0,(w/2)-18,h), FALSE
-- 2番目の段を最初の段とリンクさせて作成する
newFrame doc, Rect((w/2)+18,0,w,h), TRUE
newFrame コマンドの最後のパラメータは、新しいフレームが前のものとリンクするかどうかを指定します。

フレームに追加する

1つあるいは複数の「フレーム」を作れば、appendappendFile コマンドを使って ドキュメント にスプライトやキャストメンバーなどのアイテムを追加してゆくことができます:
append doc, member "title" of castLib 1, TRUE
append doc, sprite 1, TRUE
appendFile doc, the pathName&"myFile.eps", FALSE
appendappendFile の最後の「自動追加」パラメータは、コンテンツが挿入されるにつれてドキュメントにページを自動的に追加するかどうかを指定します。「自動追加」機能の詳細については append コマンドをご覧ください。

重要事項: フィールドキャストメンバーはフォントやスタイルを保って印刷されます。 ところがテキストキャストメンバーはビットマップとしてのみ印刷されます。これは Director のデータ保持の仕方によるものです。

テキスト 文字列 はもともとスタイルに関するデータを備えていません。setTextFontsetTextSizesetTextStyle を使えば、追加したテキスト文字列の属性を設定することができます。
setTextFont doc, "Helvetica"
setTextSize doc, 10
setTextStyle doc, "normal"
append doc, copyrightInfo
グラフィックエレメントを描画する

PrintOMatic のページにアイテムを配置する2つ目の手段は、アイテムを載せたい正確な位置にグラフィックエレメントとして明示的に配置する方法です。 この方法を使うとページに画像やシングルラインのテキスト、長方形、角丸長方形、ライン、楕円を配置できます。グラフィックエレメントを描画するコマンドの多くは、2番目のパラメータとして Lingo の Rect を使い位置やサイズを指定します。これらのコマンドの最後のパラメータはオブジェクトを塗りつぶすか (TRUE) 線画にするか (FALSE) を指定します:
drawRect doc, Rect(0,0,50,50), TRUE
drawRoundRect doc, Rect(0,0,50,50), 25, FALSE
drawOval doc, Rect(100,100,500,500), TRUE
drawLine コマンドはパラメータに開始ポイントと終了ポイントを指定します:
drawLine doc, Point(0,0), Point(500,0)
drawPicture コマンドはビットマップイメージを配置することができます。Point または Rect を使ってサイズと位置を指定します。 Point を使った場合、イメージはそのままのサイズ(キャストメンバーは 72dpi )で配置されます。左上のコーナーが指定したポイントとなります:
drawPicture doc, member "illustration", Point(0,100)
Rect を使って位置を指定した場合、イメージはその Rect 内にフィットする最大のスケールになります。その際イメージを歪めることはありません。指定した Rect がイメージと全く同じ比率でないときは、Rect 内に隙間ができることになります。:
drawPicture doc, member "illustration", Rect(0,0,500,300)
ステージの内容を描画する

Director のステージの内容は drawStagePicture コマンドを使ってページに配置することができます。 drawStagePicture のサイズや位置の規則は drawPicture と同じです:Point を指定した場合は、そこを左上のコーナーとしてステージ画像が置かれます;Rect を指定した場合は、Rect 内に歪まずにフィットするようスケーリングされます。
drawStagePicture doc, Point(0,0)
drawStagePicture doc, Rect(0,0,the width of the stage, the height of the stage)
drawStagePicture コマンドはステージの一部を切り抜いて印刷することができます。イメージのページ上の位置を指定した後キャプチャしたいエリアを指定します。
drawStagePicture doc, Rect(0,0,100,100), Rect(50,50,150,150)
最後に、Director のオフスクリーンバッファからステージ画像をキャプチャすることが可能です。前述した drawStagePicture の指定形式のいずれか最後に TRUE を追加します。オフスクリーンバッファからキャプチャすると、ステージの前面にあるウィンドウや MIAW の内容まで一緒にキャプチャされてしまうのを防ぐことができます。
drawStagePicture doc, Point(0,0), Rect(50,50,100,100), TRUE
印刷と印刷プレビュー

印刷したいエレメントをすべてドキュメントに追加したら、ユーザに印刷ダイアログを表示します。doJobSetup が TRUE を返した場合はドキュメントを印刷します。 ユーザに印刷ダイアログを見せたくない場合は doJobSetup のコールを省略します。
if doJobSetup(doc) then print doc
最後に ドキュメント の値をゼロにすることでインスタンスを破棄します。これで PrintOMatic ドキュメントに占められていたメモリがすべて解放されます。
set doc = 0
その他のコマンド

PrintOMatic には上記の他にもたくさんのコマンドがあります。PrintOMatic Xtra がサポートしているコマンドの全リストは メッセージリスト を参照してください。