目次 - SDL 3.0 API(機能別) - クリップボード

クリップボード

概要

他のプロセスからの情報の読み取りと, 自身の情報の公開の両方を行えるようにするため, SDLはシステムクリップボードへのアクセスを提供している.

テキストのみでなく, SDLアプリケーションはMIMEタイプ(メディアタイプ)でデータへのアクセスと公開を行える.

基本的な使用(テキスト)

単純なテキストのクリップボードからの獲得と公開は, それぞれSDL_GetClipboardText()とSDL_SetClipboardText()を呼べば簡単に行える. この場合はUTF-8でエンコードされたCスタイルの文字列を扱う. データの変換とコードの変換はSDLが完全に管理している.

クリップボードコールバック (テキスト以外のデータ)

クリップボードにテキスト以外のデータがある場合はより複雑になる. システムクリップボードのデータの種類が様々であるだけでなく, 同じデータでも形式が異なる場合もある. 例えば, 画像編集アプリケーションはユーザがグラフィックをクリップボードにコピーし, それを他のアプリケーションが使用するために.BMPや.JPG, .PNG形式で提供することができる.

クリップボードデータの獲得(「貼り付け」)は, 要求するデータのMIMEタイプを伝えてSDL_GetClipboardData()を呼ぶだけである. しかし, 可能な形式はどうすればわかるか? 特定のMIMEタイプのデータがクリップボードにあるかはSDL_HasClipboardData()でわかる. そしてSDL_GetClipboardMimeTypes()でMIMEタイプの一覧が得られる. これでアプリケーションはデータの扱い方や, どの形式に対応できるかを決めることができる.

あらゆるデータのクリップボードへの設定(「コピー」)はSDL_SetClipboardDataで行える. アプリケーションは, この関数の呼び出しではデータではなくMIMEタイプとコールバック関数を指定する. アプリケーションはコールバックでデータを生成する. この方法により, データが実際に要求される前にデータをコピーすることなくクリップボードに巨大なデータを設定することができる. さらに, アプリケーションは複数の形式のコピーを事前に提供しないで複数の形式のデータを提供することができる. もしアプリケーションにPNGまたはJPG形式で提供したい画像があるとき, 貼り付けられない限りは, そして貼り付けられるまではどちらにもエンコードする必要はない.

プライマリセレクション

X11とWaylandには, 通常のクリップボードに加えて「プライマリセレクション」という概念がある. これは通常様々なアプリケーションで選択された(しかし実際にはコピーしなかった)テキストである. SDLはこれに関するAPI SDL_GetPrimarySelectionText()とSDL_SetPrimarySelectionText()を提供している. SDLはこの概念のない環境でもこれらのAPIを提供しているが, アプリケーションが後で復帰させるためにセットした文字列のコピーを保持するだけである. プライマリセレクションに対応していない場合, オペレーティングシステムが外部からこの文字列を変更することはない.

関数

  1. SDL_ClearClipboardData
  2. SDL_GetClipboardData
  3. SDL_GetClipboardMimeTypes
  4. SDL_GetClipboardText
  5. SDL_GetPrimarySelectionText
  6. SDL_HasClipboardData
  7. SDL_HasClipboardText
  8. SDL_HasPrimarySelectionText
  9. SDL_SetClipboardData
  10. SDL_SetClipboardText
  11. SDL_SetPrimarySelectionText

  1. SDL_ClipboardCleanupCallback
  2. SDL_ClipboardDataCallback

SDL Wikiへのリンク

SDL3/CategoryClipboard - SDL Wiki