スクリプト概要

画像バッファへのアクセス

グラフィックツールなんですから、何はともあれ画像へのアクセスが必須になります。現在、

  • オフスクリーン画像
  • レイヤ画像

の二種類の画像バッファにアクセスできます。画像操作を行う際には、"mdi_img32_xxxxxxx" などの、mdi_img32から始まるAPIを呼び出す事になります。これらのAPIには、画像バッファへのインデックス情報が必要になります。インデックスを取得するには、

  • local imgIndex = mdi_img_layer( layerImgIndex )
  • local imgIndex = mdi_img_offscreen( offscreenImgIndex )

というAPIを呼び出す必要があります。mdi_img_layerの場合、取得したいアクティブなドキュメントのレイヤ番号を指定します。アクティブなレイヤを指定するなら、mdi_layer_active() で取得した値を渡すことになります。

オフスクリーン画像バッファを確保したい場合は、mdi_img_offscreenを呼び出してください。画像バッファの数は有限個なので、無茶な数は指定しないようにお願いします(笑)。

画像バッファについて

  • オフスクリーン画像バッファは、スクリプト終了の際に破棄されます。
  • 実際に描画処理を行うまで、メモリは殆ど食わない仕様になっています。
  • オフスクリーン画像は、現状1024個作成する事ができます。

アンドゥ対応

既存のドキュメントに対して画像操作を行う場合、アンドゥ命令を発行しなければいけません。アンドゥ命令には、

  • mdi_undo_layer()
  • mdi_undo_all()

があり、前者の場合、アクティブなレイヤの編集を保護し、アンドゥで復帰できるようになります。後者の場合、アクティブなレイヤ以外、何処のレイヤが編集されてもアンドゥで復帰する事ができます。編集したにも関わらず、アンドゥ命令を発行しないと、ドキュメントが破綻する場合があります。

頂点命令について

  • mdi_vertex_add( x, y )
  • mdi_vertex_clear()

命令を組み合わせて、頂点情報を使った描画が行えます。頂点バッファは一つだけです。頂点バッファにpushされている情報を使って、

  • mdi_img32_polygon
  • mdi_img32_blob
  • mdi_img32_stroke

などの命令を使った描画が行えます。詳しくはAPIの仕様をご覧ください。

形状の回転描画について

  • mdi_img32_rect
  • mdi_img32_ellipse

は、あらかじめ回転角を設定しておく事で、回転描画が行えます。回転角の指定には、以下のAPIを用います。

  • mdi_shape_setrad( rad )
  • mdi_shape_setdeg( deg )