画像ファイルによっては、複数の画像が含まれている場合があります。このような画像を、複数の「フレーム」を持つと言います。現在、EmacsはGIF、TIFF、WebP、およびDJVMなどの特定のImageMagickフォーマットにおいて、複数フレームをサポートしています。
フレームは、複数のページを表現するため(例えばマルチフレームTIFFファイルなどが一般的です)、あるいはアニメーションを作成するため(通常はマルチフレームGIFファイルなどが該当します)に使用できます。
マルチフレーム画像にはプロパティ :index
があり、その値は(0から始まる)整数で、どのフレームが表示されているかを指定します。
この関数は、image に複数のフレームが含まれている場合、nil 以外の値を返します。実際の戻り値はコンス (nimages . delay) であり、nimages はフレーム数、delay
はフレーム間の遅延時間(秒)、または画像に遅延が指定されていない場合は nil
となります。アニメーションを想定した画像では通常フレーム遅延が指定されますが、複数のページとして扱うことを想定した画像では指定されません。
この関数は、image の現在のフレーム番号を 0 から数えて返します。
この関数は、imageをフレーム番号nに切り替えます。nocheckがnilでない限り、有効範囲外のフレーム番号を範囲の末尾の番号に置き換えます。imageに指定された番号のフレームが含まれていない場合、画像は中抜きのボックスとして表示されます。
この関数は image をアニメーションさせます。オプションの整数 index は、開始フレームを指定します(デフォルトは 0)。オプション引数 limit はアニメーションの長さを制御します。省略するか nil を指定した場合、画像は1回のみアニメーションします。t を指定した場合は無限にループし、数値を指定した場合はその秒数が経過した後にアニメーションが停止します。
アニメーションはタイマーによって動作します。なお、Emacsでは最小フレーム遅延として0.01 (image-minimum-frame-delay)
秒が設定されています。画像自体に遅延の指定がない場合は、Emacsはimage-default-frame-delayを使用します。
この関数は、image のアニメーションを担当するタイマーが存在する場合、それを返します。