(57)【要約】  サーバ上にホストされ、画像を含む、共同ワークスペースの表現を送信することと、画像の画像部分を選択する、複数の座標に対応するユーザ入力を検出することと、オペレーティング・システム又はアプリケーションとインターフェースするように構成されたアプリケーション・プログラミング・インターフェースを備える透明層に、座標を送信することと、座標に少なくとも部分的に基づいて、画像部分をキャプチャすることと、選択された画像部分をロケーションにドラッグするための第２のユーザ入力を検出することと、画像を共同ワークスペースから除去させ、ロケーションに少なくとも部分的に基づいて、画像部分を共同ワークスペースに挿入させるように構成された複数のコマンドをサーバに送信することとを含む、ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるためのシステム、方法、及びコンピュータ可読媒体。
2021523484.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるための方法であって、
ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を通じて複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信するステップであって、前記共同ワークスペースが１つ又は複数の画像を含む、ステップと、
前記ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールによって、前記１つ又は複数の画像中の画像の画像部分を選択するユーザ入力を検出するステップであって、前記ユーザ入力が複数の座標に対応する、ステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する透明層に前記複数の座標を送信するステップであって、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された１つ又は複数のアプリケーションのうちの１つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を備える、ステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャするステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内のロケーションにドラッグするための第２のユーザ入力を検出するステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信するステップであって、前記複数のコマンドが、前記画像を前記共同ワークスペースから除去させ、さらに、前記ロケーションに少なくとも部分的に基づいて、前記画像部分を前記共同ワークスペースに挿入させるように構成される、ステップと
を含む方法。
【請求項２】
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャするステップが、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記ローカル・コンピューティング・デバイス上で実行するアプリケーションのうちの１つ又は複数に対する、前記複数の座標により定義された前記画像部分のスクリーン・キャプチャのための要求を送信するステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標により定義された前記画像部分の前記スクリーン・キャプチャを受信するステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記ローカル・コンピューティング・デバイスのランダム・アクセス・メモリに前記画像部分を記憶させるステップと
を含む、請求項１に記載の方法。
【請求項３】
前記複数のコマンドが前記ウェブ・ソケット接続を通じて送信される、請求項１に記載の方法。
【請求項４】
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための第２のユーザ入力を検出するステップが、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための前記第２のユーザ入力を検出するステップと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する前記透明層に前記新しい位置を送信するステップと
を含む、請求項１に記載の方法。
【請求項５】
前記ロケーションが、編集インターフェースに関連付けられたロケーションに対応し、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信するステップが、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信するステップであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、ステップと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信するステップであって、前記第２のコマンドが、前記ロケーションにおいて前記編集ワークスペースに前記画像部分を挿入させるように構成される、ステップと
を含む、請求項１に記載の方法。
【請求項６】
前記画像部分が、前記透明層によってランダム・アクセス・メモリに記憶され、前記第２のコマンドが、前記ランダム・アクセス・メモリにおける前記画像部分のストレージ・ロケーションを含む、請求項５に記載の方法。
【請求項７】
前記ロケーションが、ツールバー・インターフェースに関連付けられたロケーションに対応し、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信するステップが、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信するステップであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、ステップと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信するステップであって、前記第２のコマンドが、前記ツールバー・インターフェースに関連付けられたツールバーに前記画像部分を記憶させるように構成される、ステップと
を含む、請求項１に記載の方法。
【請求項８】
ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるためのローカル・コンピューティング・デバイスであって、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサのうちの少なくとも１つに動作可能に結合され、前記１つ又は複数のプロセッサのうちの少なくとも１つによって実行されたとき、前記１つ又は複数のプロセッサのうちの少なくとも１つに、
前記ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を通じて複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信することであって、前記共同ワークスペースが１つ又は複数の画像を含む、送信することと、
前記ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールによって、前記１つ又は複数の画像中の画像の画像部分を選択するユーザ入力を検出することであって、前記ユーザ入力が複数の座標に対応する、検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する透明層に前記複数の座標を送信することであって、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された１つ又は複数のアプリケーションのうちの１つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を備える、送信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャすることと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内のロケーションにドラッグするための第２のユーザ入力を検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することであって、前記複数のコマンドが、前記画像を前記共同ワークスペースから除去させ、さらに、前記ロケーションに少なくとも部分的に基づいて、前記画像部分を前記共同ワークスペースに挿入させるように構成される、送信することと
を行わせる命令を記憶した、１つ又は複数のメモリと
を備える、ローカル・コンピューティング・デバイス。
【請求項９】
前記１つ又は複数のプロセッサのうちの少なくとも１つによって実行されたとき、前記１つ又は複数のプロセッサのうちの少なくとも１つに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャすることを行わせる前記命令が、前記１つ又は複数のプロセッサのうちの少なくとも１つに、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記ローカル・コンピューティング・デバイス上で実行するアプリケーションのうちの１つ又は複数に対する、前記複数の座標により定義された前記画像部分のスクリーン・キャプチャのための要求を送信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標により定義された前記画像部分の前記スクリーン・キャプチャを受信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記ローカル・コンピューティング・デバイスのランダム・アクセス・メモリに前記画像部分を記憶させることと
をさらに行わせる、請求項８に記載のローカル・コンピューティング・デバイス。
【請求項１０】
前記複数のコマンドが前記ウェブ・ソケット接続を通じて送信される、請求項８に記載のローカル・コンピューティング・デバイス。
【請求項１１】
前記１つ又は複数のプロセッサのうちの少なくとも１つによって実行されたとき、前記１つ又は複数のプロセッサのうちの少なくとも１つに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための第２のユーザ入力を検出することを行わせる前記命令が、前記１つ又は複数のプロセッサのうちの少なくとも１つに、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための前記第２のユーザ入力を検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する前記透明層に前記新しい位置を送信することと
をさらに行わせる、請求項８に記載のローカル・コンピューティング・デバイス。
【請求項１２】
前記ロケーションが、編集インターフェースに関連付けられたロケーションに対応し、
前記１つ又は複数のプロセッサのうちの少なくとも１つによって実行されたとき、前記１つ又は複数のプロセッサのうちの少なくとも１つに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することを行わせる前記命令が、前記１つ又は複数のプロセッサのうちの少なくとも１つに、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信することであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、送信することと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信することであって、前記第２のコマンドが、前記ロケーションにおいて前記編集ワークスペースに前記画像部分を挿入させるように構成される、送信することと
をさらに行わせる、請求項８に記載のローカル・コンピューティング・デバイス。
【請求項１３】
前記画像部分が、前記透明層によってランダム・アクセス・メモリに記憶され、前記第２のコマンドが、前記ランダム・アクセス・メモリにおける前記画像部分のストレージ・ロケーションを含む、請求項１２に記載のローカル・コンピューティング・デバイス。
【請求項１４】
前記ロケーションが、ツールバー・インターフェースに関連付けられたロケーションに対応し、
前記１つ又は複数のプロセッサのうちの少なくとも１つによって実行されたとき、前記１つ又は複数のプロセッサのうちの少なくとも１つに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することを行わせる前記命令が、前記１つ又は複数のプロセッサのうちの少なくとも１つに、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信することであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、送信することと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信することであって、前記第２のコマンドが、前記ツールバー・インターフェースに関連付けられたツールバーに前記画像部分を記憶させるように構成される、送信することと
をさらに行わせる、請求項８に記載のローカル・コンピューティング・デバイス。
【請求項１５】
ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、
前記ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を通じて複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信することであって、前記共同ワークスペースが１つ又は複数の画像を含む、送信することと、
前記ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールによって、前記１つ又は複数の画像中の画像の画像部分を選択するユーザ入力を検出することであって、前記ユーザ入力が複数の座標に対応する、検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する透明層に前記複数の座標を送信することであって、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された１つ又は複数のアプリケーションのうちの１つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を備える、送信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャすることと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内のロケーションにドラッグするための第２のユーザ入力を検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することであって、前記複数のコマンドが、前記画像を前記共同ワークスペースから除去させ、さらに、前記ロケーションに少なくとも部分的に基づいて、前記画像部分を前記共同ワークスペースに挿入させるように構成される、送信することと
を行わせるコンピュータ可読命令を記憶する、少なくとも１つの非一時的コンピュータ可読媒体。
【請求項１６】
前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標に少なくとも部分的に基づいて、前記画像部分をキャプチャすることを行わせる前記命令が、前記ローカル・コンピューティング・デバイスに、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記ローカル・コンピューティング・デバイス上で実行するアプリケーションのうちの１つ又は複数に対する、前記複数の座標により定義された前記画像部分のスクリーン・キャプチャのための要求を送信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記複数の座標により定義された前記画像部分の前記スクリーン・キャプチャを受信することと、
前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記ローカル・コンピューティング・デバイスのランダム・アクセス・メモリに前記画像部分を記憶させることと
をさらに行わせる、請求項１５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項１７】
前記複数のコマンドが前記ウェブ・ソケット接続を通じて送信される、請求項１５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項１８】
前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための第２のユーザ入力を検出することを行わせる前記命令が、前記ローカル・コンピューティング・デバイスに、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記選択された画像部分を前記共同ワークスペース内の新しい位置にドラッグするための前記第２のユーザ入力を検出することと、
前記ローカル・コンピューティング・デバイス上で実行する前記クロッピング・ツールによって、前記ローカル・コンピューティング・デバイス上で実行する前記透明層に前記新しい位置を送信することと
をさらに行わせる、請求項１５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項１９】
前記ロケーションが、編集インターフェースに関連付けられたロケーションに対応し、
前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することを行わせる命令が、前記ローカル・コンピューティング・デバイスに、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信することであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、送信することと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信することであって、前記第２のコマンドが、前記ロケーションにおいて前記編集ワークスペースに前記画像部分を挿入させるように構成される、送信することと
をさらに行わせる、請求項１５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２０】
前記画像部分が、前記透明層によってランダム・アクセス・メモリに記憶され、前記第２のコマンドが、前記ランダム・アクセス・メモリにおける前記画像部分のストレージ・ロケーションを含む、請求項１９に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２１】
前記ロケーションが、ツールバー・インターフェースに関連付けられたロケーションに対応し、
前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記共同ワークスペースをホストする前記サーバに複数のコマンドを送信することを行わせる前記命令が、前記ローカル・コンピューティング・デバイスに、
前記透明層から前記共同ワークスペースをホストする前記サーバに第１のコマンドを送信することであって、前記第１のコマンドが、前記画像を前記共同ワークスペースから除去させるように構成される、送信することと、
前記透明層から前記共同ワークスペースをホストする前記サーバに第２のコマンドを送信することであって、前記第２のコマンドが、前記ツールバー・インターフェースに関連付けられたツールバーに前記画像部分を記憶させるように構成される、送信することと
をさらに行わせる、請求項１５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
オペレーティング・システム及びオペレーティング・システム内で実行するアプリケーションは、ユーザがプログラムに入力を与えることと、ユーザに出力を与えることとを可能にするために、外部ハードウェア・デバイスを頻繁に利用する。外部ハードウェア・デバイスの一般的な実例は、キーボード、コンピュータ・マウス、マイクロフォン、及び外部スピーカーを含む。これらの外部ハードウェア・デバイスは、ドライバの使用によってオペレーティング・システムとインターフェースする。ドライバは、特定のハードウェア・デバイスによって使用されるハードウェア・コマンドとオペレーティング・システムとの間をインターフェースするように構成された専用ソフトウェア・プログラムである。
【０００２】
アプリケーションは、あるハードウェア・デバイスとインターフェースするように設計されることがある。例えば、音声テキスト・ワード・プロセッシング・アプリケーションが、マイクロフォンを含むオーディオ・ヘッドセットとインターフェースするように設計され得る。この場合、アプリケーションは、特に、音声コマンドを受信し、音声認識を実施し、認識されたワードをテキスト・コンテンツに変換し、テキスト・コンテンツを文書に出力するように構成されなければならない。この機能性は、一般に、様々なソフトウェア・コンポーネント間の通信の定義された方法のセットである、アプリケーションのアプリケーション・プログラミング・インターフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）において実施されることになる。音声認識アプリケーションの実例では、ＡＰＩは、アプリケーション・プログラムとドライバ上のソフトウェアとの間のインターフェースを含むことができ、ドライバは、ハードウェア・デバイス（マイクロフォン）自体とインターフェースする役割を果たす。
【０００３】
専用ハードウェア・デバイスを利用する既存のソフトウェアの１つの問題は、アプリケーション又はオペレーティング・システム・ソフトウェア自体が、ハードウェア・デバイスを利用するために、カスタマイズされ、特別に設計されなければならないことである。このカスタマイゼーションは、ハードウェア・デバイスが、アプリケーションによって、そのために定義された範囲を超えることができず、それが使用されるように設計された特定のアプリケーション以外のコンテキストのために利用され得ないことを意味する。例えば、音声テキスト・ワード・プロセッシング・アプリケーションのユーザは、オペレーティング・システム内の他のアプリケーション・プログラム又は他のコンポーネントを、それらの他のアプリケーション・プログラム又はオペレーティング・システムが、マイクロフォンを通じて受信される音声コマンドを利用するように特別に設計されない限り、音声コマンドを使用して操作することができない。
【０００４】
図１は、ユーザ入力のために、結合されたハードウェア・デバイスを利用するシステムの既存のアーキテクチャの一実例を示す。図１のオペレーティング・システム１００Ａは、実行アプリケーション１０１Ａ及び１０２Ａを含み、それらの各々は、それぞれ、それら自体のＡＰＩ１０１Ｂ及び１０２Ｂを有する。オペレーティング・システム１００Ａはまた、それ自体のＡＰＩ１００Ｂ、並びにハードウェア・デバイス１００Ｄ、１０１Ｄ、及び１０２Ｄとインターフェースするように構成された専用ドライバ１００Ｃ、１０１Ｃ、及び１０２Ｃを有する。
【０００５】
図１に示すように、アプリケーションＡＰＩ１０１Ｂは、ドライバ１０１Ｃとインターフェースするように構成され、ドライバ１０１Ｃ自体は、ハードウェア・デバイス１０１Ｄとインターフェースする。同様に、アプリケーションＡＰＩ１０２Ｂは、ドライバ１０２Ｃとインターフェースするように構成され、ドライバ１０２Ｃ自体は、ハードウェア・デバイス１０２Ｄとインターフェースする。オペレーティング・システム・レベルにおいて、オペレーティング・システムＡＰＩ１００Ｂは、ドライバ１００Ｃとインターフェースするように構成され、ドライバ１００Ｃ自体は、ハードウェア・デバイス１００Ｄとインターフェースする。
【０００６】
図１に示すシステムのアーキテクチャは、あるアプリケーション又はオペレーティング・システム・コンテキスト外でハードウェア・デバイスを利用するユーザの能力を限定する。例えば、ユーザは、アプリケーション１０２Ａに入力を与えるためにハードウェア・デバイス１０１Ｄを利用することができず、アプリケーション１０１Ａに又はオペレーティング・システム１００Ａに入力を与えるためにハードウェア・デバイス１０２Ｄを利用することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、複数のソフトウェア・コンテキストにおけるハードウェア・デバイスの利用を可能にする、ハードウェア・ソフトウェア・インターフェースの改良が必要である。
【図面の簡単な説明】
【０００８】
【図１】ユーザ入力のために、結合されたハードウェア・デバイスを利用するシステムの既存のアーキテクチャの一実例を示す図である。
【図２】例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースを利用するシステムのアーキテクチャを示す図である。
【図３】例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のためのフローチャートである。
【図４】例示的な実施例による、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスによってキャプチャされた情報が１つ又は複数の画像を含むときの、１つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。
【図５Ａ】例示的な実施例による、オブジェクト認識の一実例を示す図である。
【図５Ｂ】例示的な実施例による、入力ロケーション座標を決定することの一実例を示す図である。
【図６】例示的な実施例による、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスによってキャプチャされた情報が音情報であるときの、キャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。
【図７】例示的な実施例による、透明層の一部であり得るツール・インターフェースを示す図である。
【図８】例示的な実施例による、システムの一部であり得るスタイラスの一実例を示す図である。
【図９】例示的な実施例による、ユーザ入力に対応するコンテキストを識別するためのフローチャートである。
【図１０】例示的な実施例による、コンテキストを決定するために入力座標を使用することの一実例を示す図である。
【図１１】例示的な実施例による、ユーザ入力を透明層コマンドに変換するためのフローチャートである。
【図１２Ａ】例示的な実施例による、選択モードがトグルされるときの、入力座標を受信することの一実例を示す図である。
【図１２Ｂ】例示的な実施例による、ポインティング・モードがトグルされるときの、入力座標を受信することの一実例を示す図である。
【図１２Ｃ】例示的な実施例による、描画モードがトグルされるときの、入力座標を受信することの一実例を示す図である。
【図１３】例示的な実施例による、入力音声データ中で識別された１つ又は複数のワードに基づいて決定される透明層コマンドの一実例を示す図である。
【図１４】例示的な実施例による、入力音声データ中で識別された１つ又は複数のワードに基づいて決定される透明層コマンドの別の実例を示す図である。
【図１５】例示的な実施例による、透明層上で１つ又は複数の透明層コマンドを実行するためのフローチャートである。
【図１６】例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するための例示的なインターフェースを示す図である。
【図１７】例示的な実施例による、描画インターフェース及び描画モードの様々なコンポーネント及びオプションを示す図である。
【図１８】例示的な実施例による、オブジェクトを認識するために使用され、ユーザがタッチ及びジェスチャを使用して入力を与えることを可能にする、ビデオ・カメラ・ハードウェア・デバイスのための較正及び設定インターフェースを示す図である。
【図１９】例示的な実施例による、ユーザが、インターフェースの様々な態様をカスタマイズし、入力モードをトグルし、他の変更を行うことを可能にする、一般的な設定インターフェースを示す図である。
【図２０】例示的な実施例による、ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるためのフローチャートである。
【図２１Ａ】例示的な実施例による、共同ワークスペースをホストし、送信するために使用されるネットワーク・アーキテクチャを示す図である。
【図２１Ｂ】例示的な実施例による、ネットワーク内で共同ワークスペースに対する編集を伝えるためのプロセスを示す図である。
【図２２】例示的な実施例による、共同ワークスペースの複数の表現を示す図である。
【図２３Ａ】例示的な実施例による、クロッピング入力検出の一実例を示す図である。
【図２３Ｂ】例示的な実施例による、クロッピング入力検出の一実例を示す図である。
【図２３Ｃ】例示的な実施例による、クロッピング入力検出の一実例を示す図である。
【図２４】例示的な実施例による、座標を透明層に送信し、画像部分をキャプチャするためのプロセス・フローの一実例を示す図である。
【図２５】例示的な実施例による、ユーザが画像部分を共同ワークスペース内のロケーションにドラッグすることの一実例を示す図である。
【図２６】例示的な実施例による、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信するためのフローチャートである。
【図２７Ａ】例示的な実施例による、２つの異なるコンテキストについての、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信するためのフローチャートである。
【図２７Ｂ】例示的な実施例による、２つの異なるコンテキストについての、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信するためのフローチャートである。
【図２８Ａ】例示的な実施例による、ユーザが画像部分を共同ワークスペースの編集インターフェースにドラッグすること及び画像部分を編集インターフェースにドラッグした結果の一実例を示す図である。
【図２８Ｂ】例示的な実施例による、ユーザが画像部分を共同ワークスペースの編集インターフェースにドラッグすること及び画像部分を編集インターフェースにドラッグした結果の一実例を示す図である。
【図２８Ｃ】例示的な実施例による、ユーザが画像部分を共同ワークスペースの編集インターフェースにドラッグすること及び画像部分を編集インターフェースにドラッグした結果の一実例を示す図である。
【図２９Ａ】例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【図２９Ｂ】例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【図２９Ｃ】例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【図２９Ｄ】例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【図２９Ｅ】例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【図３０】開示される方法を行うように構成された例示的なコンピューティング環境を示す図である。
【発明を実施するための形態】
【０００９】
方法、装置、及びコンピュータ可読媒体は、実例及び実施例として本明細書で説明されるが、当業者は、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のための方法、装置、及びコンピュータ可読媒体が、説明される実施例又は図面に限定されないことを認識する。図面及び説明は、開示される特定の形式に限定されるものではないことを理解されたい。むしろ、意図は、添付の特許請求の範囲の趣旨及び範囲内に入るすべての修正、等価物及び代替をカバーすることである。本明細書で使用されるいかなる見出しも編成のためのものであるにすぎず、本明細書の範囲又は特許請求の範囲を限定するものではない。本明細書で使用される「することができる（ｃａｎ）」という単語は、強制的な意味（すなわち、しなければならない（ｍｕｓｔ）という意味）ではなく許容的な意味（すなわち、可能性を有するという意味）において使用される。同様に、「含む（ｉｎｃｌｕｄｅ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「含む（ｉｎｃｌｕｄｅｓ）」という単語は、含むことを意味するが、それに限定されない。
【００１０】
出願人は、ハードウェア・デバイスのために使用される、以前のハードウェア・ソフトウェア・インターフェースに関連する問題を解決する方法、装置、及びコンピュータ可読媒体を発見した。特に、出願人は、ユーザが、様々なソフトウェア・コンテキストにおいて通信可能に結合されたハードウェア・デバイスを利用することを可能にするユニバーサル・ハードウェア・ソフトウェア・インターフェースを開発した。開示される実装形態は、以下でより詳細に説明するように、専用仮想ドライバ及び対応する透明層の使用によって、アプリケーション又はオペレーティング・システムが特定のハードウェア・デバイスとインターフェースするように特注設計される必要を取り除く。
【００１１】
図２は、例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースを利用するシステムのアーキテクチャを示す。図２に示すように、オペレーティング・システム２００Ａは、仮想ドライバ２０４と通信する透明層２０３を含む。以下でより詳細に説明するように、透明層２０３は、仮想ドライバとオペレーティング・システム及び／又はオペレーティング・システム上で実行する（１つ又は複数の）アプリケーションとの間をインターフェースするように構成されたＡＰＩである。この実例では、透明層２０３は、仮想ドライバ２０４と、アプリケーション２０１ＡのＡＰＩ２０１Ｂ、アプリケーション２０２ＡのＡＰＩ２０２Ｂ、及びオペレーティング・システム２００Ａのオペレーティング・システムＡＰＩ２００Ｂとの間をインターフェースする。
【００１２】
透明層２０３は、オペレーティング・システム上で動作するソフトウェア・プロセスの一部であり得、下位ユーザ・インターフェースの上に重ね合わせられた透明ユーザ・インターフェース（ＵＩ）及び／又はユーザが対話することが可能な可視ＵＩ要素を含む、透明層２０３自体のＵＩ要素を有することができる。
【００１３】
仮想ドライバ２０４は、ドライバ２０５Ａ及び２０５Ｂをエミュレートするように構成され、ドライバ２０５Ａ及び２０５Ｂは、それぞれ、ハードウェア・デバイス２０６Ａ及び２０６Ｂとインターフェースする。仮想ドライバは、どの仮想ドライバをエミュレートすべきかについて仮想ドライバに命令する、例えば、音声コマンド、ユーザ・インターフェース上で行われる選択、及び／又は結合されたウェブ・カメラの前でユーザによって行われるジェスチャの形式の、ユーザ入力を受信することができる。例えば、接続されたハードウェア・デバイスの各々は、「リスニング」モードにおいて動作することができ、仮想ドライバ２０４におけるエミュレートされるドライバの各々は、特定のエミュレーション・モードに切り替えるための仮想ドライバに対する信号として働く初期化信号を検出するように構成され得る。例えば、ユーザが「音声コマンド開始」と述べることは、新しい音声コマンドを受信するためのマイクロフォンに対応するドライバをアクティブにすることができる。同様に、ユーザがあるジェスチャを与えることは、ジェスチャ入力又はタッチ入力を受信するためのウェブ・カメラに対応するドライバをアクティブにすることができる。
【００１４】
仮想ドライバは、ネイティブ・ドライバ２０５Ｃなどのネイティブ・ドライバとインターフェースするようにも構成され得、ネイティブ・ドライバ２０５Ｃ自体は、ハードウェア・デバイス２０６Ｃと通信する。一実例では、ハードウェア・デバイス２０６Ｃは、キーボード又はマウスなどの標準入力デバイスであり得、標準入力デバイスは、オペレーティング・システムによってネイティブにサポートされる。
【００１５】
図２に示すシステムは、ユーザが、特定のアプリケーション又はオペレーティング・システムなどの様々なコンテキストにおいて任意の結合されたハードウェア・デバイスを、そのアプリケーション又はオペレーティング・システムがハードウェア・デバイスとインターフェースするようにカスタマイズされることを必要とすることなしに、利用することができるユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装を可能にする。
【００１６】
例えば、ハードウェア・デバイス２０６Ａは、情報をキャプチャすることができ、その情報は、次いで、ドライバ２０５Ａをエミュレートする仮想ドライバ２０４によって受信される。仮想ドライバ２０４は、キャプチャされた情報に基づいて、ユーザ入力を決定することができる。例えば、その情報が、ユーザが手を動かす一連の画像である場合、仮想ドライバは、ユーザがジェスチャを実施したと決定することができる。
【００１７】
（特定のアプリケーション又はオペレーティング・システムなどの）識別されたコンテキストに基づいて、ユーザ入力は、実行のために透明層コマンドに変換され、透明層２０３に送信され得る。透明層コマンドは、識別されたコンテキストにおけるネイティブ・コマンドを含むことができる。例えば、識別されたコンテキストがアプリケーション２０１Ａである場合、ネイティブ・コマンドは、アプリケーション２０１ＡのアプリケーションＡＰＩ２０１Ｂに適合するフォーマットのものであろう。次いで、透明層コマンドの実行が、識別されたコンテキストにおける１つ又は複数のネイティブ・コマンドの実行を引き起こすように構成され得る。これは、透明層２０３が、オペレーティング・システム２００Ａ上で実行するアプリケーションのＡＰＩの各々及びオペレーティング・システムＡＰＩ２００Ｂとインターフェースすることによって、達成される。例えば、ネイティブ・コマンドが、新しいプログラムを起動するためのコマンドなどのオペレーティング・システム・コマンドである場合、透明層２０３は、実行のためにオペレーティング・システムＡＰＩ２００Ｂにそのネイティブ・コマンドを与えることができる。
【００１８】
図２に示すように、示されているコンポーネントのすべての間で双方向通信がある。これは、例えば、透明層２０３における透明層コマンドの実行が、仮想ドライバ２０４への情報の送信及び接続されたハードウェア・デバイスのうちの１つ上への情報の送信を生じることがあることを意味する。例えば、音声コマンドが入力として認識され、ネイティブ・コマンドを含む透明層コマンドに変換され、透明層によって実行された（識別されたコンテキストにおけるネイティブ・コマンドの実行を生じた）後に、音出力「コマンドが受信されました」を送信するために、信号が（仮想ドライバを介して）透明層からスピーカーに送られ得る。
【００１９】
当然、図２に示すアーキテクチャは、説明のためのものにすぎず、実行するアプリケーションの数、接続されたハードウェア・デバイスの数及びタイプ、ドライバ及びエミュレートされたドライバの数は変動することがあることを理解されたい。
【００２０】
図３は、例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のためのフローチャートである。
【００２１】
ステップ３０１において、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいて、ユーザ入力が決定される。本明細書で使用されるシステムは、方法のステップを実行する１つ又は複数のコンピューティング・デバイス、方法のステップを実行する１つ又は複数のプロセッサと１つ又は複数のメモリとを備える装置、又は任意の他のコンピューティング・システムを指すことがある。
【００２２】
ユーザ入力は、システム上で実行する仮想ドライバによって決定され得る。前述したように、仮想ドライバは、エミュレーション・モードにおいて動作していることがあり、エミュレーション・モードにおいて、仮想ドライバは、他のハードウェア・ドライバをエミュレートしており、それにより、ハードウェア・デバイスから、キャプチャされた情報を受信するか、又は場合により、特定のハードウェア・デバイスとインターフェースするように構成された１つ又は複数の他のハードウェア・ドライバから、キャプチャされた情報を受信することができる。
【００２３】
カメラ、ビデオ・カメラ、マイクロフォン、双方向通信を有するヘッドセット、マウス、タッチパッド、トラックパッド、コントローラ、ゲーム・パッド、ジョイスティック、タッチ・スクリーン、加速度計及び／又はチルト・センサを含む動きキャプチャ・デバイス、遠隔制御装置、スタイラス、或いはこれらのデバイスの任意の組合せなどの様々なハードウェア・デバイスが利用され得る。当然、ハードウェア・デバイスのこのリストは、単に実例として与えられ、音声、画像、ビデオ、又はタッチ情報を検出するために利用され得る任意のハードウェア・デバイスが利用され得る。
【００２４】
ハードウェア・デバイスとシステムとの間の通信結合は、様々な形式をとることができる。例えば、ハードウェア・デバイスは、無線ネットワーク、Ｂｌｕｅｔｏｏｔｈプロトコル、無線周波数、赤外線信号を介して、及び／又はユニバーサル・シリアル・バス（ＵＳＢ）接続などの物理接続によってシステムと通信することができる。通信は、無線通信と有線通信との両方をも含むことができる。例えば、ハードウェア・デバイスは、２つのコンポーネントを含むことができ、そのうちの１つが、第２のコンポーネントに（Ｂｌｕｅｔｏｏｔｈを通じてなど）無線で信号を送信し、第２のコンポーネント自体は、（ＵＳＢなどの）有線接続を介してシステムに接続する。様々な通信技法が本明細書に記載のシステムに従って利用され得、これらの実例は、限定するものではない。
【００２５】
１つ又は複数のハードウェア・デバイスによってキャプチャされる情報は、１つ又は複数の画像を含む画像情報、ビデオのフレーム、音情報、及び／又はタッチ情報などの任意のタイプの情報であり得る。キャプチャされた情報は、音情報のための．ｗａｖ又は．ｍｐ３ファイル、画像のための．ｊｐｅｇファイル、タッチ情報のための数値座標などの任意の好適なフォーマットのものであり得る。
【００２６】
本明細書に記載の技法は、任意のディスプレイ・デバイスが、タッチ信号又はタッチ・ベースのジェスチャを検出するためのハードウェアを含まない場合でも、任意のコンテキストにおいて「タッチ」スクリーン・デバイスとして事実上機能することを可能にすることができる。これは、以下でより詳細に説明され、カメラ又はビデオ・カメラによってキャプチャされた画像の分析を通して達成され得る。
【００２７】
図４は、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスによってキャプチャされた情報が１つ又は複数の画像を含むときの、１つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。
【００２８】
ステップ４０１において、１つ又は複数の画像が受信される。これらの画像は、前述したように、カメラ又はビデオ・カメラなどのハードウェア・デバイスによってキャプチャされ得、仮想ドライバによって受信され得る。
【００２９】
ステップ４０２において、１つ又は複数の画像中のオブジェクトが認識される。オブジェクトは、例えば、ユーザの手、指、又は他の身体部位であり得る。オブジェクトはまた、スタイラス又はペンなどの専用デバイス、或いはシステムに通信可能に結合され、加速度計及び／又はチルト・センサを含んでいる動き追跡スタイラス／遠隔制御装置などの専用ハードウェア・デバイスであり得る。オブジェクト認識は、仮想ドライバによって実施され得、オブジェクトを使用して動作される較正ルーチンを通してなど、以前のトレーニングに基づき得る。
【００３０】
図５Ａは、例示的な実施例による、オブジェクト認識の一実例を示す。図５Ａに示すように、画像５０１は、オブジェクト５０２として認識されたユーザの手を含む。認識アルゴリズムは、当然、指などの異なるオブジェクトを認識するように構成され得る。
【００３１】
図４に戻ると、ステップ４０３において、認識されたオブジェクトの１つ又は複数の配向と１つ又は複数の位置とが決定される。これは、様々なやり方で達成され得る。オブジェクトがハードウェア・デバイスではなく、代わりに、手又は指などの身体部位である場合、オブジェクトは、オブジェクトの３次元座標と、Ｘ軸、Ｙ軸、及びＺ軸に対する様々な角度とを決定するために、カメラの既知のロケーションを基準点として使用する３次元座標系においてマッピングされ得る。オブジェクトがハードウェア・デバイスであり、加速度計及び／又はチルト・センサなどの動き追跡ハードウェアを含む場合、画像情報は、オブジェクトの位置及び配向を決定するための加速度計及び／又はチルト・センサによって示された情報とともに使用され得る。
【００３２】
ステップ４０４において、ユーザ入力は、認識されたオブジェクトの１つ又は複数の配向と１つ又は複数の位置とに少なくとも部分的に基づいて決定される。これは、１つ又は複数の配向と１つ又は複数の位置とに少なくとも部分的に基づいて、透明層の透明ユーザ・インターフェース（ＵＩ）上のロケーション座標を決定することを含むことができる。透明ＵＩは、透明層の一部であり、オペレーティとング・システム及び／又はオペレーティング・システム上で実行する任意のアプリケーションに対応する下位ＵＩの上に重ね合わせられる。
【００３３】
図５Ｂは、オブジェクトがユーザの指であるときの、このステップの一実例を示す。図５Ｂに示すように、ディスプレイ・デバイス５０３は、下位ＵＩ５０６と、下位ＵＩ５０６上に重ね合わせられた透明ＵＩ５０７とを含む。明確にするために、透明ＵＩ５０７はドット・シェーディングで示されているが、実際には、透明ＵＩは、ユーザにとって可視でない透明層であることを理解されたい。さらに、透明ＵＩ５０７は、下位ＵＩ５０６よりもわずかに小さいものとして示されているが、実際には、透明ＵＩは、下位ＵＩと同じスクリーン・エリアをカバーすることになることを理解されたい。
【００３４】
図５Ｂに示すように、オブジェクト（ユーザの指）の位置及び配向情報は、ディスプレイ・デバイス５０３の平面上にラインを投影し、交差点５０５を決定するために使用される。カメラ５０４によってキャプチャされた画像情報及びカメラの下のディスプレイ・デバイス５０３の既知の位置が、この投影を助けるために使用され得る。図５Ｂに示すように、ユーザ入力は、交差点５０５における入力座標であると決定される。
【００３５】
以下でさらに説明するように、この入力に基づいて生成される実際の透明層コマンドは、ユーザ設定及び／又は識別されたコンテキストに基づき得る。例えば、コマンドは、点５０５の座標におけるオブジェクトが選択され、及び／又は開かれるべきであることを示すタッチ・コマンドであり得る。コマンドは、（マウス・ポインタなどの）ポインタが点５０５の座標に移動されるべきであることを示すポインティング・コマンドでもあり得る。さらに、コマンドは、（インターフェースにアノテーションを付けるか又は要素を描画するためになど）ロケーションにおけるグラフィカル出力を修正する編集コマンドであり得る。
【００３６】
図５Ｂは、ディスプレイ・デバイス５０３からいくらかの距離にあるものとして、認識されたオブジェクト５０２を示しているが、距離にかかわらずタッチ入力が検出され得る。例えば、ユーザがディスプレイ・デバイス５０３に物理的にタッチする場合、前述した技法は、依然として入力座標を決定することになる。その場合、オブジェクト５０２と交差点との間の投影ラインは、より短くなるにすぎないであろう。
【００３７】
当然、タッチ入力は、キャプチャされた画像から決定され得るユーザ入力の唯一のタイプではない。認識されたオブジェクトの１つ又は複数の配向と１つ又は複数の位置とに少なくとも部分的に基づいてユーザ入力を決定するステップは、ジェスチャ入力を決定することを含むことができる。特に、複数の画像にわたる認識されたオブジェクトの位置及び配向が、スワイプ・ジェスチャ、ピンチ・ジェスチャ、及び／或いは任意の既知の又はカスタマイズされたジェスチャなどの対応するジェスチャを決定するために分析され得る。ユーザは、特定のコンテキスト及びそれらのコンテキスト内のコマンドにマッピングされるカスタム・ジェスチャを認識するように仮想ドライバを較正することができる。例えば、ユーザは、オペレーティング・システム・コンテキストにマッピングされ、特定のアプリケーションを起動するネイティブ・オペレーティング・システム・コマンドの実行を生じる、カスタム・ジェスチャを作成することができる。
【００３８】
前述したように、図３のステップ３０１において１つ又は複数のハードウェア・デバイスによってキャプチャされた情報は、マイクロフォンによってキャプチャされた音情報をも含むことができる。図６は、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスによってキャプチャされた情報が音情報であるときの、キャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。以下で説明するように、ユーザ入力に対応する１つ又は複数のワードを識別するために、音情報に対して音声認識が実施される。
【００３９】
ステップ６０１において、音データが受信される。音データは、前述したように、マイクロフォンなどのハードウェア・デバイスによってキャプチャされ、仮想ドライバによって受信され得る。ステップ６０２において、受信された音データは、音辞書と比較され得る。音辞書は、コマンド・ワード又はコマンド・モディファイアなどの１つ又は複数の認識されたワードの音シグネチャを含むことができる。ステップ６０３において、音データ中の１つ又は複数のワードが、比較に基づいて、ユーザ入力として識別される。次いで、識別された１つ又は複数のワードは、透明層コマンドに変換され、透明層に渡され得る。
【００４０】
前述したように、仮想ドライバによってエミュレートされるドライバ、ユーザ入力の予想されるタイプ、及びユーザ入力に基づいて生成されるコマンドは、すべて、１つ又は複数の設定又は前のユーザ入力に少なくとも部分的に基づいて決定され得る。
【００４１】
図７は、透明層の一部でもあり得るツール・インターフェース７０１を示す。透明ＵＩとは異なり、ツール・インターフェース７０１は、ユーザにとって可視であり、仮想ドライバのエミュレーション・モード、ユーザ入力に基づいて生成されるネイティブ・コマンドを変更する異なるオプション間で選択するか、又は追加の機能を実施するために、使用され得る。
【００４２】
ボタン７０１Ａは、ユーザ入力が入力座標（ユーザが手又はスタイラス／遠隔制御装置を用いてスクリーンにタッチすることに基づく座標など）であるとき、ユーザが、ユーザ・インターフェースをグラフィカルに修正するために使用される描画ツールのタイプを選択することを可能にする。様々な描画ツールは、異なるブラシ、色、ペン、ハイライタなどを含むことができる。これらのツールは、変動するスタイル、厚さ、色などのグラフィカルな変更を生じることがある。
【００４３】
ボタン７０１Ｂは、入力座標がユーザ入力として受信されるとき、ユーザが、選択モード、ポインティング・モード、又は描画モードの間で切り替えることを可能にする。選択モードでは、入力座標は、「タッチ」として処理され、入力座標におけるオブジェクトの選択又はオブジェクトを開くことを生じ得る。ポインティング・モードでは、座標は、（マウス・ポインタなどの）ポインタ位置として処理され得、ユーザがマウスをエミュレートすることを効果的に可能にする。描画モードでは、座標は、ユーザ・インターフェース上に描画又は書込みの外観を提示するために、ユーザ・インターフェースのグラフィカル出力を変更するためのロケーションとして処理され得る。変更の性質は、ボタン７０１Ａに関して説明したように、選択された描画ツールに依存することがある。ボタン７０１Ｂはまた、（動き追跡デバイスが使用される場合）画像入力及び／又は動き入力を予想し、それに応じて適切なドライバをエミュレートするように仮想ドライバにアラートすることができる。
【００４４】
ボタン７０１Ｃは、音声コマンドを予想するように仮想ドライバにアラートする。これは、図６に関して説明したように、仮想ドライバが、音声入力を受信し、音声入力をパースするための結合されたマイクロフォンに対応するドライバをエミュレートすることを引き起こすことができる。
【００４５】
ボタン７０１Ｄは、透明層の一部であり得、オペレーティング・システム内のアプリケーションを起動するために又はアプリケーション内の特定のコマンドを起動するために使用され得る、ローンチャ・アプリケーションを開く。ローンチャは、ユーザ入力に関連付けられたアプリケーションのためのカスタム音声コマンド、カスタム・ジェスチャ、カスタム・ネイティブ・コマンドなどの、透明層におけるオプションをカスタマイズするために、並びに／或いは（音声較正、動きキャプチャ・デバイス較正、及び／又はオブジェクト認識較正などの）ハードウェア・デバイス及びユーザ入力を較正するためにも使用され得る。
【００４６】
ボタン７０１Ｅは、ユーザ・インターフェースのスクリーンショットをキャプチャするために、及び画像としてスクリーンショットをエクスポートするために使用され得る。これは、ボタン７０１Ｂの描画モード及び７０１Ａの描画ツールとともに使用され得る。ユーザが特定のユーザ・インターフェースをマーク・アップした後に、マーク・アップされたバージョンが画像としてエクスポートされ得とる。
【００４７】
また、ボタン７０１Ｆは、グラフィカルな編集を可能にし、ユーザがユーザ・インターフェース上に作成している描画の色又は描画の態様を変更するために使用され得る。ボタン７０１Ｂの描画モードと同様に、このボタンは、入力座標におけるグラフィカルな変更の性質を変更する。
【００４８】
ボタン７０１Ｇは、ユーザ・インターフェース上の描画を消去する。このボタンの選択は、ユーザ・インターフェース上のすべてのグラフィカル・マーキングを除去し、下位ＵＩを、ユーザが描画を作成するより前にそうであった状態にリセットすることができる。
【００４９】
ボタン７０１Ｈは、ユーザが仮想ホワイトボード上に描画モードを使用して描画又は書込みを作成することを可能にする、ホワイトボード・アプリケーションを起動するために使用され得る。
【００５０】
ボタン７０１Ｉは、オペレーティング・システムＵＩ又はアプリケーションＵＩにおいて示されるオブジェクトなどのオブジェクトにテキスト・ノートを追加するために使用され得る。テキスト・ノートは、音声信号から解釈されるか、又はキーボードを使用してユーザによってタイピングされ得る。
【００５１】
ボタン７０１Ｊは、ツール・インターフェース７０１を開くか又は閉じるために使用され得る。閉じられたとき、ツール・インターフェースは、最小化されるか又は下位ユーザ・インターフェースから完全に除去され得る。
【００５２】
前述したように、スタイラス又はリモート・ハードウェア・デバイスが、カメラ又はビデオ・カメラなどの他のハードウェア・デバイスとともに、本システムとともに使用され得る。図８は、本システムとともに使用され得るスタイラス８０１の一実例を示す。スタイラス８０１は、Ｂｌｕｅｔｏｏｔｈなどを通じて、ハードウェア受信機８０２と通信することができる。ハードウェア受信機は、ＵＳＢ８０２Ｂなどを介して、コンピュータ・システムに接続することができ、ハードウェア受信機を介してコンピュータ・システムに渡されたスタイラスからの信号は、図７に示されているツール・インターフェースと同様であるメニュー８０３を制御し、それと対話するために使用され得る。
【００５３】
図８に示すように、スタイラス８０１は、物理ボタン８０１Ａを含むことができる。これらの物理ボタン８０１は、スタイラスを電源投入し、メニュー８０３をナビゲートし、選択を行うために使用され得る。さらに、スタイラス８０１は、カメラによる画像においてキャプチャされ、仮想ドライバによって認識される、特徴的な先端８０１Ｂを含むことができる。これは、スタイラス８０１が、描画モードにあるとき、描画及び編集のために使用されることを可能にすることができる。スタイラス８０１は、入力座標又はジェスチャを与えるために使用されるとき、位置検出を助けるための加速度計及び／又はチルト・センサなどの動き追跡ハードウェアをも含むことができる。さらに、ハードウェア受信機８０２は、較正ボタン８０２Ａを含むことができ、較正ボタン８０２Ａは、押下されたとき、ユーザ・インターフェースにおいて較正ユーティリティを起動することができる。これは、スタイラスの較正を可能にする。
【００５４】
図３に戻ると、ステップ３０２において、ユーザ入力に対応するコンテキストが識別される。識別されたコンテキストは、オペレーティング・システム又はオペレーティング・システム上で実行するアプリケーションのうちの１つを備える。
【００５５】
図９は、例示的な実施例による、ユーザ入力に対応するコンテキストを識別するためのフローチャートである。図９に示すように、オペレーティング・システム・データ９０１、アプリケーション・データ９０２、及びユーザ入力データ９０３が、すべて、コンテキスト９０４を決定するために使用され得る。
【００５６】
オペレーティング・システム・データ９０１は、例えば、オペレーティング・システムにおけるアクティブ・ウィンドウに関する情報を含むことができる。例えば、アクティブ・ウィンドウが計算器ウィンドウである場合、コンテキストが計算器アプリケーションであると決定され得る。同様に、アクティブ・ウィンドウがＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄウィンドウである場合、コンテキストがＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄアプリケーションであると決定され得る。一方、アクティブ・ウィンドウがファイル・フォルダである場合、アクティブ・コンテキストがオペレーティング・システムであると決定され得る。オペレーティング・システム・データは、どのアプリケーションが現在実行中であるか、最後に起動されたアプリケーション、及びコンテキストを決定するために使用され得る任意の他のオペレーティング・システム情報などの追加情報をも含むことができる。
【００５７】
アプリケーション・データ９０２は、例えば、実行している１つ又は複数のアプリケーションに関する情報及び／又は特定のアプリケーションをあるタイプのユーザ入力にマッピングする情報を含むことができる。例えば、音声コマンドが受信されるときはいつでも、コンテキストが第１のアプリケーションであると自動的に決定されるように、第１のアプリケーションが音声入力にマッピングされ得る。別の実例では、特定のジェスチャが入力として受信されたとき、第２のアプリケーションが、起動されるか又は閉じられるか、或いは第２のアプリケーション内の何らかのアクションが実施されるように、そのジェスチャが第２のアプリケーションに関連付けられ得る。
【００５８】
ユーザ入力９０３は、様々なやり方でコンテキストを決定するためにも使用され得る。前述したように、あるタイプのユーザ入力が、あるアプリケーションにマッピングされ得る。上記の実例では、音声入力が第１のアプリケーションのコンテキストに関連付けられる。さらに、ユーザ入力の属性も、コンテキストを決定するために使用され得る。ジェスチャ又は動きが、アプリケーションに又はオペレーティング・システムにマッピングされ得る。音声コマンド中の特定のワードも、アプリケーションに又はオペレーティング・システムにマッピングされ得る。入力座標も、コンテキストを決定するために使用され得る。例えば、入力座標の位置にあるユーザ・インターフェースにおけるウィンドウが決定され得、そのウィンドウに対応するアプリケーションがコンテキストとして決定され得る。
【００５９】
図１０は、コンテキストを決定するために入力座標を使用することの一実例を示す。図１０に示すように、ディスプレイ・デバイス１００１がユーザ・インターフェース１００２を表示している。また、カメラ１００４と、下位ユーザ・インターフェース１００３上に重ね合わされた透明層１００３とが示されている。ユーザは、ユーザ・インターフェース１００２におけるロケーション１００５を指すためにスタイラス１０００を利用する。ロケーション１００５は、アプリケーション１に対応するアプリケーション・ウィンドウ内にあるので、アプリケーション１は、アプリケーション２、アプリケーション３、又はオペレーティング・システムとは対照的に、ユーザ入力のためのコンテキストであると決定され得る。
【００６０】
図３に戻ると、ステップ３０３において、ユーザ入力は、識別されたコンテキストに少なくとも部分的に基づいて、１つ又は複数の透明層コマンドに変換される。前述したように、透明層は、仮想ドライバとオペレーティング・システム及び／又はオペレーティング・システム上で実行するアプリケーションとの間をインターフェースするように構成されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を備える。
【００６１】
図１１は、ユーザ入力を透明層コマンドに変換するためのフローチャートである。図１１のステップ１１０４に示されているように、透明層コマンドは、識別されたコンテキスト１１０２及びユーザ入力１１０３に少なくとも部分的に基づいて決定され得る。透明層コマンドは、１つ又は複数の対応するコンテキストにおいて実行するように構成された１つ又は複数のネイティブ・コマンドを含むことができる。透明層コマンドは、仮想ドライバに及び（１つ又は複数の）ハードウェア・デバイス上に送信されるべき応答出力をも含むことができる。
【００６２】
識別されたコンテキスト１１０２は、どの透明層コマンドがユーザ入力にマッピングされるべきであるかを決定するために使用され得る。例えば、識別されたコンテキストが「オペレーティング・システム」である場合、スワイプ・ジェスチャ入力が、ユーザ・インターフェースが（１つの開いているウィンドウを最小化し、次の開いているウィンドウを最大化することによって）オペレーティング・システム内の現在開いているウィンドウをスクロールすることを生じる透明層コマンドにマッピングされ得る。代替的に、識別されたコンテキストが「ウェブ・ブラウザ・アプリケーション」である場合、同じスワイプ・ジェスチャ入力が、ウェブ・ページがスクロールされることを生じる透明層コマンドにマッピングされ得る。
【００６３】
ユーザ入力１１０３は、ユーザ入力が１つ又は複数のコンテキスト内のあるネイティブ・コマンドに明確にマッピングされ、これらのネイティブ・コマンドが透明層コマンドの一部であるので、透明層コマンドをも決定する。例えば、音声コマンド「電子メールを開いて」が、電子メール・アプリケーションＯｕｔｌｏｏｋを起動するための特定のオペレーティング・システム・ネイティブ・コマンドにマッピングされ得る。認識されたワード「電子メールを開いて」を含む音声入力が受信されたとき、これは、Ｏｕｔｌｏｏｋを起動するためのネイティブ・コマンドを含む透明層コマンドが決定されることを生じる。
【００６４】
図１１に示すように、透明層コマンドはまた、１つ又は複数のユーザ設定１１０１及びＡＰＩライブラリ１１０４に基づいて決定され得る。ＡＰＩライブラリ１１０４は、識別されたコンテキスト及び特定のユーザ入力に対応するネイティブ・コマンドをルックアップするために使用され得る。スワイプ・ジェスチャ及びウェブ・ブラウザ・アプリケーション・コンテキストの実例では、ウェブ・ブラウザ・アプリケーションに対応するＡＰＩライブラリは、ウェブ・ページのスクロールを引き起こすために、適切なＡＰＩ呼出しについて問い合わせられ得る。代替的に、ＡＰＩライブラリ１１０４は、省略され得、ネイティブ・コマンドが、特定のユーザ入力及び識別されたコンテキストに向けてマッピングされ得る。
【００６５】
ユーザ入力が入力座標であると決定される状況では、透明層コマンドは、入力ロケーション座標及び識別されたコンテキストに少なくとも部分的に基づいて決定される。この場合、透明層コマンドは、識別されたコンテキストにおける少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、下位ＵＩ内の対応するロケーション座標におけるアクションを実施するように構成される。
【００６６】
特定のコンテキスト及びユーザ入力にマッピングされる２つ以上の可能なアクションがあるとき、設定１１０１は、対応する透明層コマンドを決定するために使用され得る。例えば、図７のボタン７０１Ｂは、入力座標がユーザ入力として受信されるとき、ユーザが、選択モード、ポインティング・モード、又は描画モードの間で選択することを可能にする。この設定は、透明層コマンドを決定するために、並びにひいては、どのネイティブ・コマンドが実施されるか及びどのアクションが実施されるかを決定するために使用され得る。この場合、可能なネイティブ・コマンドは、下位ＵＩ内の対応するロケーション座標に関連付けられたオブジェクトを選択するように構成された選択コマンド、ポインタを下位ＵＩ内の対応するロケーション座標に移動するように構成されたポインタ・コマンド、及び下位ＵＩ内の対応するロケーション座標におけるディスプレイ出力を変更するように構成されたグラフィカル・コマンドを含むことができる。
【００６７】
図１２Ａは、選択モードがトグルされるときの、入力座標を受信することの一実例を示す。図１２Ａに示すように、ユーザは、ディスプレイ・デバイス１２０１上の（重ね合わせられた透明ＵＩ１２０３を有する）オペレーティング・システムＵＩ１２０２においてスタイラス１２００をポイントした。前の実例と同様に、カメラ１２０４は、スタイラス１２００についての位置及び配向情報並びに入力座標を決定するために使用され得る。選択モードがトグルされ、スタイラス１２００がオペレーティング・システムＵＩ１２０２内のフォルダ１２０５においてポイントされるので、決定された透明層コマンドは、入力座標に関連付けられたオブジェクト（この場合、フォルダ１２０５である）を選択するためのネイティブ・オペレーティング・システム・コマンドを含むことができる。別の実例では、ウィンドウが入力座標に位置する場合、これは、ウィンドウ全体の選択を生じるであろう。
【００６８】
図１２Ｂは、ポインティング・モードがトグルされるときの、入力座標を受信することの一実例を示す。この場合、決定された透明層コマンドは、マウス・ポインタ１２０６を入力座標のロケーションに移動するためのネイティブ・オペレーティング・システム・コマンドを含むことができる。
【００６９】
図１２Ｃは、描画モードがトグルされ、ユーザが複数の入力座標にわたってスタイラス１２００をスイープしたときの、入力座標を受信することの一実例を示す。この場合、決定された透明層コマンドは、入力座標の各々のロケーションにおけるディスプレイ出力を変更するためのネイティブ・オペレーティング・システム・コマンドを含むことができ、ユーザ・インターフェース１２０２上のユーザの描画ライン１２０７を生じる。描画モードにおいてもたらされた修正されたグラフィカル出力は、透明層１２０３の一部として、例えば、入力座標の経路に関係するメタデータとして記憶され得る。ユーザは、次いで、変更されたディスプレイ出力を画像としてエクスポートするためのオプションを選択することができる。
【００７０】
ユーザ入力がジェスチャとして識別される状況では、識別されたコンテキストに少なくとも部分的に基づいてユーザ入力を１つ又は複数の透明層コマンドに変換することは、識別されたジェスチャ及び識別されたコンテキストに少なくとも部分的に基づいて透明層コマンドを決定することを含むことができる。透明層コマンドは、識別されたコンテキストにおける少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、識別されたコンテキストにおける識別されたジェスチャに関連付けられたアクションを実施するように構成される。これの一実例は、ウェブ・ブラウザにおけるスクロール・アクションを実施するように構成されたネイティブ・コマンドを生じる、スワイプ・ジェスチャ及びウェブ・ブラウザ・アプリケーション・コンテキストに関して前述した。
【００７１】
（音声認識を使用することによってなど）ユーザ入力が１つ又は複数のワードとして識別される状況では、識別されたものに少なくとも部分的に基づいてユーザ入力を１つ又は複数の透明層コマンドに変換することは、識別された１つ又は複数のワード及び識別されたコンテキストに少なくとも部分的に基づいて透明層コマンドを決定することを含むことができる。透明層コマンドは、識別されたコンテキストにおける少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、識別されたコンテキストにおける識別された１つ又は複数のワードに関連付けられたアクションを実施するように構成される。
【００７２】
図１３は、入力音声データ中で識別された１つ又は複数のワードに基づいて決定される透明層コマンド１３００の一実例を示す。識別されたワード１３０１は、「ホワイトボード」という句又は「ブランク・ページ」という句のうちの１つを含む。透明層コマンド１３００は、コマンドの説明１３０２と、透明層コマンドの実行時に透明層によって仮想ドライバに及びハードウェア出力デバイスに送られた出力命令である応答命令１３０３とをも含む。さらに、透明層コマンド１３００は、ホワイトボード機能を呼び出すために使用される実際のネイティブ・コマンド１３０４を含む。
【００７３】
図１４は、例示的な実施例による、入力音声データ中で識別された１つ又は複数のワードに基づいて決定される透明層コマンド１４００の別の実例を示す。この実例では、１つ又は複数のワードは、「電子メールを開いて」である。図１４に示すように、透明層コマンド１４００は、ネイティブ・コマンド「ｏｕｔｌｏｏｋ．ｅｘｅ」を含み、これは、ｏｕｔｌｏｏｋアプリケーションを起動する特定の実行ファイルを動作させるようにとの命令である。透明層コマンド１４００は、音声コマンドを受信したことに応答して出力される「電子メールを開きました」という音声応答をも含む。
【００７４】
図３に戻ると、ステップ３０４において、１つ又は複数の透明層コマンドが透明層上で実行される。１つ又は複数の透明層コマンドの実行が、識別されたコンテキストにおける１つ又は複数のネイティブ・コマンドの実行を引き起こすように構成される。
【００７５】
図１５は、例示的な実施例による、透明層上で１つ又は複数の透明層コマンドを実行するためのフローチャートである。ステップ１５０１において、透明層コマンドにおける少なくとも１つのネイティブ・コマンドが識別される。ネイティブ・コマンドは、例えば、透明層コマンドの構造内のネイティブ・コマンドとして指定され得、識別を可能にする。
【００７６】
ステップ１５０２において、少なくとも１つのネイティブ・コマンドが、識別されたコンテキストにおいて実行される。このステップは、そのコンテキストについて識別されたＡＰＩを介して、識別されたコンテキストに少なくとも１つのネイティブ・コマンドを渡すことと、識別されたコンテキスト内でネイティブ・コマンドを実行することとを含むことができる。例えば、識別されたコンテキストがオペレーティング・システムである場合、ネイティブ・コマンドは、オペレーティング・システムＡＰＩを介して実行のためにオペレーティング・システムに渡され得る。さらに、識別されたコンテキストがアプリケーションである場合、ネイティブ・コマンドは、アプリケーションＡＰＩを介して実行のためにアプリケーションに渡され得る。
【００７７】
場合により、ステップ１５０３において、応答が（１つ又は複数の）ハードウェア・デバイスに送信され得る。前述したように、この応答は、透明層から仮想ドライバに及びハードウェア・デバイス上にルーティングされ得る。
【００７８】
図１６〜図１９は、本明細書で開示されるシステムの追加の特徴を示す。図１６は、例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するための例示的なインターフェースを示す。インターフェース１６００におけるダッシュボードが、すでに追加され、所定のユーザ入力及びハードウェア・デバイス（例えば、音声コマンド）を使用して起動され得る、アプリケーション１６０１のアイコンを含む。ダッシュボードは、アプリケーション固有であり、あるユーザ入力にマッピングされる、他のコマンドをも示すことができる。追加ボタン１６０２の選択は、追加コマンド・メニュー１６０３を開く。このメニューは、ユーザが以下のオプション間で選択することを可能にする：アイテム・タイプ：下部バー・メニュー上に追加するための固定アイテム／ドラッグ・メニュー中に追加するための通常アイテム、アイコン：画像アイコンを選択する、背景：背景アイコン色を選択する、色：アイコン色を選択する、名前：新しいアイテム名を設定する、音声コマンド：新しいアプリケーションを開くための音声アクティベーション・コマンドを設定する、フィードバック応答：アプリケーション音声応答フィードバックを設定する、コマンド：起動すべきアプリケーション・タイプ又はカスタム・コマンド・タイプを選択する（例えば、アプリケーション・コマンドを起動する、アプリケーション・コマンド内のアクションを実施する、アプリケーション・コマンドを閉じるなど）、プロセス開始：新しいプロセス又はアプリケーションを起動する場合、プロセス又はアプリケーションの名前、及びパラメータ：新しいプロセス又はアプリケーションに渡すべき任意のパラメータ。
【００７９】
図１７は、例示的な実施例による、描画インターフェース１７００及び描画モードの様々なコンポーネント及びオプションを示す。図１８は、オブジェクトを認識するために使用され、ユーザがタッチ及びジェスチャを使用して入力を与えることを可能にする、ビデオ・カメラ・ハードウェア・デバイスのための較正及び設定インターフェース１８００を示す。図１９は、ユーザが、インターフェースの様々な態様をカスタマイズし、入力モードをトグルし、他の変更を行うことを可能にする、一般的な設定インターフェース１９００を示す。インターフェース１９００に示されているように、ユーザは、（「マジック・スタイラス」と呼ばれる）ハードウェア・スタイラスのための設定を較正及び調整するための設定ページにもアクセスすることができる。
【００８０】
本明細書で開示されるシステムは、複数のネットワーク化されたコンピューティング・デバイス上で実装され、ネットワーク化された共同セッションを行うことを助けるために使用され得る。例えば、前述したホワイトボード機能性は、複数のコンピューティング・デバイス上の複数のユーザ間の共有ホワイトボードであり得る。
【００８１】
ホワイトボード及び共同空間は、議論の主題又は特定の会議の主題である画像を頻繁に含む。共同ワークスペース内の画像を編集し、それと対話することが何度も必要になる。例えば、グラフィック設計チームは、特定の設計を編集し、同僚に見直しを示唆することを望む場合がある。既存のホワイトボード又は他の共有共同スペースの問題のうちの１つは、その場で、すなわち、リアルタイムで、且つ共同ワークスペース内の他の参加者に変更が自動的に伝えられるやり方で、共同ワークスペースにおいて画像をクリップし、編集し、又は別の方法で見直すやり方が現在ないことである。例えば、画像を変更及びクリップするプロセスは、ユーザが、画像を他のアプリケーションに取り込んで編集及び修正し、次いでその画像を共同プログラムに再インポートしなければならないため、困難である。このプロセスは、特定のユーザが画像を編集プログラムにエクスポートし、必要な編集を行い、次いで画像を再インポートするのに時間がかかるなど、編集を実施する会議において生産性の損失を生じる。さらに、多くのユーザは、これらのタイプの動作を実施することに精通又は熟練していない。その上、画像をエクスポート及び再インポートするプロセスは、画像をエクスポート及びインポートするのに必要なリソース、エクスポートされた画像を記憶するのに必要なリソース、編集ソフトウェアを起動及び使用するのに必要なリソース、並びに編集された画像を記憶するのに必要なリソースなどのコンピューティング・リソースを浪費する。これは、共同セッション自体のために使用され得るコンピューテーショナル・リソースに加えて、ローカル・コンピューティング・デバイスに負担をかけている。
【００８２】
ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のための前述した方法及びシステムに加えて、出願人は、ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えることを可能にする方法、装置、及びコンピュータ可読媒体をさらに発見した。
【００８３】
図２０は、例示的な実施例による、ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるためのフローチャートである。図２０に示すステップのすべてが、サーバに接続されたクライアント・デバイスなどのローカル・コンピューティング・デバイス上で実施され得、複数のコンピューティング・デバイスを必要としない。
【００８４】
ステップ２００１において、サーバ上にホストされた共同ワークスペースの表現が、ローカル・コンピューティング・デバイスのユーザ・インターフェース上で送信される。共同ワークスペースは、ウェブ・ソケット接続を通じて、複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能である。共同ワークスペースの表現は、共同セッションで議論又は利用されている画像などの１つ又は複数の画像を含むことができる。
【００８５】
図２１Ａは、例示的な実施例による、共同ワークスペースをホストし、送信するために使用されるネットワーク・アーキテクチャを示す。図２１Ａに示すように、サーバ２１００は、コンピューティング・デバイス２１０１Ａ〜２１０１Ｆに接続される。サーバ２１００とコンピューティング・デバイス２１０１Ａ〜２１０１Ｆとは、コンピューティング・デバイス２１０１Ａ〜２１０１Ｆ（クライアント）とサーバ２１００との間の双方向通信を可能にする、ウェブ・ソケット接続などのネットワーク接続を介して接続され得る。図２１Ａに示すように、コンピューティング・デバイスは、ラップトップ、デスクトップ、スマートフォン、又は他のモバイル・デバイスなどの任意のタイプのコンピューティング・デバイスであり得る。
【００８６】
共同ワークスペースは、例えば、ウェブ・ソケット接続を通じて複数の参加者中の任意の参加者からの他の参加者に編集を伝えるように構成されたデジタル・ホワイトボードであり得る。図２１Ｂは、例示的な実施例による、ネットワーク内で共同ワークスペースに対する編集を伝えるためのプロセスを示す。図２１Ｂに示すように、コンピューティング・デバイス２１０１Ｂにおけるユーザが共同ワークスペースに対する編集又は変更を行う場合、この編集又は変更２１０２Ｂは、サーバ２１００に送られ、ワークスペースのホストされたバージョンを更新するために使用される。編集又は変更は、次いで、サーバ２１００によって、更新２１０２Ａ、２１０２Ｃ、２１０２Ｄ、２１０２Ｅ、及び２１０２Ｆとして、他の接続されたコンピューティング・デバイス２１０１Ａ、２１０１Ｃ、２１０１Ｄ、２１０１Ｅ、及び２１０１Ｆに伝えられる。
【００８７】
共同ワークスペースの各表現は、ローカル参加者に対してカスタマイズされた共同ワークスペースのバージョンであり得る。例えば、前述したように、共同ワークスペースの各表現は、サーバに接続された１つ又は複数のリモート・コンピューティング・デバイスに対応する１つ又は複数のリモート参加者オブジェクトを含むことができる。
【００８８】
図２２は、例示的な実施例による、共同ワークスペースの複数の表現を示す。図２２に示すように、サーバ２２００は、画像２２０２を含む共同ワークスペース２２０１をホストする。サーバ上にホストされた共同ワークスペースのバージョンが、前述したように、接続されたデバイスに伝えられる。図２２は、３つの接続されたユーザ、ユーザ１、ユーザ２、及びユーザ３のための共同ワークスペースの表現をも示す。図示するように、各表現は、共同ワークスペース内のすべてのオブジェクト及び編集を含む。例えば、表現２２０１Ａ、２２０１Ｂ、及び２２０１Ｃはすべて、画像２２０２の表現を含む。
【００８９】
図２０に戻ると、ステップ２００２において、ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールが、共同ワークスペース内に示される１つ又は複数の画像中の画像の画像部分を選択するユーザ入力を検出する。このユーザ入力は、複数の座標に対応する。
【００９０】
図２３Ａ〜図２３Ｃは、例示的な実施例による、この検出プロセスの一実例を示す。図２３Ａに示すように、ユーザ・インターフェース２３０１は、画像２３０６を含む共同ワークスペース２３０２の表現を含む。ユーザ・インターフェース２３０１は、共同ワークスペースをホストするサーバに接続されたローカル・コンピューティング・デバイスのユーザ・インターフェースに対応し得る。
【００９１】
ユーザ・インターフェース２３０１は、クロッピング・ツール・インターフェース２３０３をも含む。図示するように、クロッピング・ツール・インターフェース２３０３は、選択可能な複数の異なるクロッピング・ツールに対応するインジケータ又はアイコンを表示することができる。選択可能なクロッピング・ツール・インターフェースは、例えば、正方形、円形、矩形引用ボックス、楕円形引用ボックス、マニュアル・フリーハンド・クロッピング・ツール（はさみのアイコンで示されている）、又はマニュアル罫線クロッピング・ツール（鉛筆及び定規のアイコンで示されている）などの特定のクロッピング形状に対応するクロッピング・ツールを含むことができる。当然、様々な異なるクロッピング形状が利用可能であり、これらの実例は限定するものではない。
【００９２】
クロッピング・ツール・インターフェース２３０３は、共同ワークスペース・インターフェース２３０２の表現とは別個のインターフェースとして示されているが、クロッピング・ツール・インターフェースは、共同ワークスペースの各ユーザの表現がクロッピング・ツールのインターフェースを含むように、共同ワークスペース表現に統合され得ることを理解されたい。同様に、クロッピング・ツールは、共同ワークスペースに対応するプログラム（及び、インターネット・ブラウザ、ワード・プロセッシング・プログラム、グラフィカル編集プログラムなどの追加のプログラム）とインターフェースするように構成された別個のプログラムであり得るが、クロッピング・ツールは、共同ワークスペース・プログラムのモジュール又はコンポーネントとしても実装され得る。
【００９３】
図２３Ｂは、ユーザによる、クロッピング・ツール・インターフェース２３０３内の特定のクロッピング形状の選択を示す。図示するように、ユーザは、円形形状２３０４をクロッピング形状として選択した。選択は、図でマウス・ポインタにより示されるように、マウスなどのポインティング・デバイスを使用して行うことができる。選択は、前述したように、手のジェスチャ又はスタイラスを使用して行うこともできる。仮想ドライバ及び／又は透明層を伴う前述した技法を使用して、選択を検出することができる。
【００９４】
図２３Ｃは、円形クロッピング形状２３０４の選択後、及びユーザがクロップすべき領域を選択した後のユーザ・インターフェース２３０１を示す。ユーザは、例えば、クロッピング形状をインターフェース２３０１内の特定のロケーションにドラッグ・アンド・ドロップすることによって、クロッピングのための領域を選択し得る。クロッピング形状の選択はまた、ユーザがインターフェース２３０１内の特定のロケーションに移動する又はドラッグ・アンド・ドロップすることのできる、選択された形状のクロッピング・エリアの輪郭をブリング・アップすることができる。ユーザは、マウスを使用して、ドラッグ・アンド・ドロップすることができる。ユーザはまた、前述したように、手のジェスチャ又はスタイラスを使用して、ドラッグ・アンド・ドロップすることができる。仮想ドライバ及び／又は透明なものを伴う前述した技法を使用して、ドラッグ・アンド・ドロップの動きを検出することができる。
【００９５】
図２３Ｃに示すように、ユーザは、クロッピング・ツールの円形クロッピング形状を使用して、画像２３０６内の円形エリア２３０５を選択した。前述したように、選択は、ポインティング・デバイスからのユーザ入力を使用して行うことができる。選択が行われると、クロッピング・ツールは、入力及びクロッピング選択に対応する複数の座標を検出する。これらの座標は、ユーザ・インターフェース２３０１の横軸（Ｘ）及び縦軸（Ｙ）を使用して定義され得る。さらに、複数の座標は、選択されたクロッピング・エリアに対応することになる。図２３Ｃに示す実例において、複数の座標は円形に対応する。座標自体は、ローカル・コンピューティング・デバイスのオペレーティング・システムからクロッピング・ツールによって取得され得る。例えば、クロッピング・ツール・アプリケーション（又は、クロッピング・ツールが共同ワークスペース・アプリケーションの一部である場合、共同ワークスペース・アプリケーション）は、破線の円２３０５の各点に対応する座標を要求するために、ＡＰＩを介してオペレーティング・システムに問い合わせることができる。代替的に、クロッピング・ツールは、選択が行われたときのポインタのロケーションに基づいて複数の座標を決定するための機能性を含むことができる。例えば、クロッピング形状が円で、円の中心が、選択が行われたときのポインティング・デバイスのロケーションに対応する場合、クロッピング・アプリケーションは、（ポインタのロケーションについてオペレーティング・システムに問い合わせることなどにより）円の中心のスクリーン座標を決定することができ、それらの中心座標を使用して、クロッピング形状に対応する複数の座標を計算することができる。この場合、計算は、円の半径を使用して、中心点から外方へ３６０度、等しい長さのラインを投影し、結果として生じるラインの各々の端点を複数の座標として記録することができる。
【００９６】
図２０に戻ると、ステップ２００３において、ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールは、クロッピング画像部分の境界に対応する複数の座標を、前述した透明層に送信する。前述したように、透明層は、ローカル・コンピューティング・デバイス上で実行し、オペレーティング・システム又はオペレーティング・システム上で実行するように構成された１つ又は複数のアプリケーションのうちの１つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース（ＡＰＩ）を備える。この場合、透明層は、クロッピング・ツール・アプリケーションとインターフェースするように構成される。しかしながら、クロッピング・ツールが共同ワークスペース・アプリケーションの一部である場合、ローカル・コンピューティング・デバイス上で実行する共同ワークスペース・アプリケーションのローカル・インスタンスは、複数の座標を透明層に送信することもできる。
【００９７】
ステップ２００４において、ローカル・コンピューティング・デバイス上で実行する透明層は、受信した複数の座標の少なくとも一部に基づいて、画像部分をキャプチャする。ステップ２００４は、ローカル・コンピューティング・デバイス上で実行する透明層によって、オペレーティング・システム又はローカル・コンピューティング・デバイス上で実行するアプリケーションのうちの１つ又は複数に対する、複数の座標により定義された画像部分のスクリーン・キャプチャのための要求を送信すること、ローカル・コンピューティング・デバイス上で実行する透明層によって、複数の座標により定義された画像部分のスクリーン・キャプチャを受信すること、及びローカル・コンピューティング・デバイス上で実行する透明層によって、ローカル・コンピューティング・デバイスのランダム・アクセス・メモリなどのメモリに画像部分を記憶させることを含むことができる。ステップ２００４は、当然、他のやり方で実施され得る。例えば、ステップ２００４は、ローカル・コンピューティング・デバイス上で実行する透明層によって、オペレーティング・システム又はローカル・コンピューティング・デバイス上で実行するアプリケーションのうちの１つ又は複数に対する、（「スクリーン印刷」コマンドをオペレーティング・システムに送ることなどによる）スクリーン全体のスクリーン・キャプチャのための要求を送信すること、透明層の一部である機能を使用して、複数の座標の少なくとも一部に基づいて、スクリーン・キャプチャから画像部分を抽出すること、及び、次いでローカル・コンピューティング・デバイスのランダム・アクセス・メモリなどのメモリに画像部分を記憶させることによって実施され得る。
【００９８】
図２４は、図２０のステップ２００３及び２００４のプロセス・フローの一実例を示す。図示するように、ユーザは、ユーザ・インターフェース２４００内の共同ワークスペース２４０１内に表示されている、画像２４０６内の境界２４０２によって定義された画像部分をキャプチャした。簡略化するために、クロッピング・ツール・インターフェースはこの図には示されていないが、クロッピング・ツール・インターフェースもユーザ・インターフェース２４００に表示されることを理解されたい。クロッピング・ツール・アプリケーション２４０３は、クロッピング境界（円２４０２に対応する）の座標を検出し、それらの座標を透明層２４０４に送る。次いで、透明層２４０４は、複数の座標を使用して、クロップされた画像部分をキャプチャし、結果として生じる画像部分をストレージ２４０５（例えば、ランダム・アクセス・メモリであり得る）に記憶させる。
【００９９】
図２０に戻ると、ステップ２００５において、ローカル・コンピューティング・デバイス上で実行する透明層は、選択された画像部分を共同ワークスペース内のロケーションにドラッグするための第２のユーザ入力を検出する。この第２のユーザ入力は、ドラッグ・アンド・ドロップの動きであり得、ポインティング・デバイスを使用する入力、或いは前述した手のジェスチャ又はスタイラスを使用する入力であり得る。仮想ドライバ及び／又は透明なものを伴う前述した技法を使用して、ドラッグ・アンド・ドロップの動きを検出することもできる。
【０１００】
以下で説明するように、共同ワークスペース内のロケーションは、「ホワイトボード」又は他の共有ディスプレイ及び編集エリア内の空間を含むことができ、共同ワークスペースの一部である任意のインターフェース又はツールバーをも含むことができる。
【０１０１】
ステップ２００５は、ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールによって、選択された画像部分を共同ワークスペース内の新しい位置にドラッグするための第２のユーザ入力を検出することを含むことができる。新しい位置は、例えば、第２のユーザ入力が検出されたときにオペレーティング・システムに問い合わせることによって決定され得る。ステップ２００５はまた、ローカル・コンピューティング・デバイス上で実行するクロッピング・ツールによって、ローカル・コンピューティング・デバイス上で実行する透明層に新しい位置を送信する（それにより、透明層を第２の入力及び第２の入力のロケーションに変更する）ことを含むことができる。
【０１０２】
代替的に、検出は、座標が透明層に送信されたときにクロッピング・ツールから送信された変数又は値に基づいて、透明層により直接実施され得る。例えば、クロッピング・ツールが座標を透明層に送信すると、透明層は、次の入力と次の入力のロケーションとの両方（この場合、画像部分をドラッグした後にユーザにより実施される「ドロップ」入力）を検出するように透明層に命令するフラグを設定することができる。透明層は、例えば、第２の入力が検出されたときにオペレーティング・システムに問い合わせることによって、ロケーションを決定することができる。
【０１０３】
図２５は、ユーザが画像部分を共同ワークスペース内のロケーションにドラッグすることの一実例を示す。インターフェース２５０１に示すように、ユーザは、クロッピング・ツール・インターフェース２５０３の円形クロッピング・ツールを使用して、画像２３０２の画像部分２３０５を共同ワークスペース２５０２内の新しいロケーションにドラッグした。インターフェース２５０１は、ユーザが画像部分をドラッグした後であるが、ユーザが画像部分の最終位置を選択する（すなわち、「ドラッグ・アンド・ドロップ」の「ドロップ」部分を完了することによる）前のインターフェース２５０１を示す。したがって、図２５は、第２の入力の受信前であるが第１の入力後のインターフェース２５０１を示す。ユーザがドロップ入力を完了することによって画像部分をリリースすれば、画像部分２３０５に対応する現在のロケーションが、透明層により（直接又はクロッピング・ツールを介して）検出されることになる。このロケーションは、画像がリリースされた（すなわち、ドロップされた）瞬間のポインタのロケーションに対応する点によって表され得る。
【０１０４】
図２０に戻ると、ステップ２００６において、ローカル・コンピューティング・デバイス上で実行する透明層は、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信する。複数のコマンドは、画像（すなわち、オリジナル画像の残りの部分）を共同ワークスペースから除去させ、さらに、ステップ２００５において検出された第２の入力のロケーションに少なくとも部分的に基づいて、画像部分を共同ワークスペースに挿入させるように構成される。共同ワークスペースはウェブ・ソケット接続を通じてローカル・コンピューティング・デバイスと通信するため、透明層は、ウェブ・ソケット接続を通じて複数のコマンドを送信することができる。
【０１０５】
図２６は、例示的な実施例による、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信するためのフローチャートである。図２６に示すステップは、第２の入力を検出した後に、透明層によって実施される。
【０１０６】
ステップ２６０１において、第１のコマンドが、透明層から共同ワークスペースをホストするサーバに送信され、第１のコマンドは、画像を共同ワークスペースから除去させるように構成される。画像を除去させるために使用される特定の命令は、共同ワークスペースの構成及びパラメータに依存し得る。第１のコマンドは、例えば、画像に対応する共同ワークスペース内のオブジェクトを参照し、そのオブジェクトを削除するように共同ワークスペースに命令することができる。共同ワークスペースが画像をオブジェクトとして記憶していない場合には、透明層は、スクリーン・キャプチャから（第１の入力に基づいて）画像の境界検出を実施して、画像の境界を定義する座標を決定し、コマンドを共同ワークスペースに送信して、（座標により特定されたように）境界により定義されたエリアをホワイトスペースに置き換えることができる。多くの変形形態が可能であり、これらの実例は限定するものではない。
【０１０７】
ステップ２６０２において、透明層は、第２の入力のロケーションに関連付けられたコンテキストを決定する。前述したように、共同ワークスペースは、様々なツールバー及び／又はインターフェース・セクションを含むことができる。したがって、コンテキストは、例えば、すべてのユーザに対して表示される情報を入力するために使用される、ワークスペースの編集インターフェース、又はすべてのユーザにとってアクセス可能な（且つ、場合により、各ユーザに対してローカルにカスタマイズされた）ツールバー・インターフェースであり得る。
【０１０８】
ステップ２６０３において、第２のコマンドは、透明層から共同ワークスペースをホストするサーバに送信され、第２のコマンドは、第２の入力のロケーションに関連付けられたコンテキストに基づく。第２のコマンドは、ロケーションが共同ワークスペースの編集エリア内にあるかどうか、又はロケーションが共同ワークスペースのツールバーに関連付けられたロケーションであるかどうかなどのコンテキストに依存し得る。
【０１０９】
図２７Ａ、図２７Ｂは、例示的な実施例による、２つの異なるコンテキストについての、サーバ上にホストされた共同ワークスペースに複数のコマンドを送信するためのフローチャートである。
【０１１０】
図２７Ａのフローチャートは、第２の入力のロケーションが編集インターフェースに関連付けられたロケーション（図２５に示すホワイトボード・インターフェース２５０２など）に対応するときの、編集インターフェースのコンテキストに対応する。ステップ２７０１において、第１のコマンドは、透明層から共同ワークスペースをホストするサーバに送信され、第１のコマンドは、画像を共同ワークスペースから除去させるように構成される。ステップ２７０２において、第２のコマンドは、透明層から共同ワークスペースをホストするサーバに送信され、第２のコマンドは、ロケーションにおいて共同ワークスペースに画像部分を挿入させるように構成される。画像部分がランダム・アクセス・メモリなどのメモリに記憶されているとき、透明層は、画像部分をメモリから取得し、画像部分を、ロケーションにおける挿入のためにサーバに送信することができる。代替的に、透明層は、画像部分のメモリ・ロケーションを第２のコマンドの一部としてサーバに送信することができ、サーバは、メモリ・ロケーションを使用して、ローカル・コンピューティング・デバイスから画像部分を取得することができる。
【０１１１】
図２７Ｂのフローチャートは、第２の入力のロケーションが編集インターフェースに関連付けられたロケーションに対応するときの、ツールバー・インターフェースのコンテキストに対応する。ステップ２７０３において、第１のコマンドが、透明層から共同ワークスペースをホストするサーバに送信され、第１のコマンドは、画像を共同ワークスペースから除去させるように構成される。ステップ２７０４において、第２のコマンドは、透明層から共同ワークスペースをホストするサーバに送信され、第２のコマンドは、ツールバー・インターフェースに関連付けられたツールバーに画像部分を記憶させるように構成される。ツールバーが共同ワークスペースに接続された各ユーザに対してカスタマイズされているとき、ローカル・コンピューティング・デバイス上のツールバーのローカル・バージョンが画像部分を記憶することができる。この場合、サーバは、画像部分をローカル・メモリにローカルに記憶させるように、ローカル・コンピューティング・デバイスに命令することができる。代替的に、ツールバーが各ユーザに対してカスタマイズされておらず、共同ワークスペース内のすべてのユーザにわたって均一である場合、サーバは画像部分をサーバのメモリに記憶させることができ、共同ワークスペース内のすべてのユーザが、ツールバー・インターフェースを使用して、ウェブ・ソケット接続を介して画像部分にアクセス可能である。
【０１１２】
図２８Ａ〜図２８Ｃは、例示的な実施例による、ユーザが画像部分を共同ワークスペースの編集インターフェースにドラッグすること及び画像部分を編集インターフェースにドラッグした結果の一実例を示す。
【０１１３】
図２８Ａに示すように、ユーザは、共同ワークスペースの編集インターフェース２８０１内の画像２８０２の円形クロッピング２８０３を選択した。クロッピング・ツールはこの図には示されていないが、ユーザ・インターフェースはクロッピング・ツールを含むであろうことを理解されたい。さらに、この実例において、共同ワークスペースは編集インターフェース２８０１のみを含むものとして示されているが、前述したように、共同ワークスペースは追加のインターフェース及びツールバーを含むことができる。
【０１１４】
図２８Ｂは、ユーザが画像部分２８０３を共同ワークスペースの編集インターフェース２８０１内のロケーションにドラッグした後であるが、ユーザがリリースする（画像部分をドロップする）前の編集インターフェース２８０１を示す。残りの画像２８０２とごみ箱のアイコン２８０４との間の破線の矢印は、ユーザがドラッグ・アンド・ドロップを完了したとき（すなわち、第２の入力が検出されたとき）、前述したように、残りの画像２８０２が共同ワークスペースから削除されることになることを示す。ごみ箱のアイコン２８０４は、ユーザ・インターフェース又は共同ワークスペースの一部ではなく、ユーザによる画像部分２８０３のドラッグ・アンド・ドロップの結果を示すために図に提示されている。
【０１１５】
図２８Ｃは、ユーザがドラッグ・アンド・ドロップの動きを完了した後（すなわち、第２の入力が検出された後）の共同ワークスペースの編集インターフェース２８０１を示す。図示するように、画像部分２８０３は、ドロップ・ロケーションにおいて共同ワークスペースの編集インターフェース２８０１に挿入され、オリジナル画像の残り（図２８Ｂの２８０２）は、共同ワークスペースの編集インターフェース２８０１から除去されている。
【０１１６】
図２８Ｃに示す共同ワークスペースの編集インターフェースに対する変更が、共同ワークスペースに接続されたすべてのユーザのための共同ワークスペースのすべてのインスタンスにわたって伝えられることに留意することが重要である。言い換えると、共同ワークスペースに対する変更は、ローカル・デバイス又は共同ワークスペース・アプリケーションのローカル・インスタンスで生じるだけでなく、遠隔ユーザにより使用されている遠隔デバイス上の共同ワークスペースのインスタンスでも生じる。前述したように、これは、透明層が、オリジナル画像を除去して画像部分をロケーションにおいて挿入するためのコマンドを、ウェブ・ソケット接続を通じて、共同ワークスペースをホストするサーバに送り、次いで、サーバが、これらの変更を、ウェブ・ソケット接続を通じて、すべての接続されたデバイスに伝えるからである。
【０１１７】
図２９Ａ〜図２９Ｅは、例示的な実施例による、ユーザが画像部分を共同ワークスペースのツールバー・インターフェースにドラッグすること及び画像部分をツールバー・インターフェースにドラッグした結果の一実例を示す図である。
【０１１８】
図２９Ａに示すように、ユーザは、共同ワークスペースの編集インターフェース２９０１内の画像２９０２の円形クロッピング２９０３を選択した。クロッピング・ツールはこの図には示されていないが、ユーザ・インターフェースはクロッピング・ツールを含むであろうことを理解されたい。編集インターフェース２９０１に加えて、共同ワークスペースはツールバー・インターフェース２９０４を含む。ツールバー・インターフェース２９０４は、編集インターフェース２９０４内のコンテンツを編集又はマーク・アップするためにユーザがアクセス可能な様々なツールを含むことができる。以下で説明するように、ツールバー・インターフェースは、再使用のために画像を記憶する機能性をも含むことができる。
【０１１９】
図２９Ｂは、ユーザが画像部分２９０３を共同ワークスペースのツールバー・インターフェース２９０４に関連付けられたロケーションにドラッグした後であるが、ユーザがリリースする（画像部分をドロップする）前の共同ワークスペースを示す。残りの画像２９０２とごみ箱のアイコン２９０６との間の破線の矢印は、ユーザがドラッグ・アンド・ドロップを完了したとき（すなわち、第２の入力が検出されたとき）、前述したように、残りの画像２９０２が共同ワークスペースから削除されることになることを示す。ごみ箱のアイコン２９０４は、ユーザ・インターフェース又は共同ワークスペースの一部ではなく、ユーザによる画像部分２９０３のドラッグ・アンド・ドロップの結果を示すために図に提示されている。
【０１２０】
図２９Ｂは、ユーザがツールバー・インターフェース２９０４を通じて画像部分２９０３をドラッグしたときに、ツールバー・インターフェース２９０４内に出現し得る新しいアイコン２９０５をさらに示す。アイコン２９０５（「Ｓ」として示される）は、画像部分をツールバー・インターフェース上にドロップすることにより、ユーザによるその後の再使用のために画像がツールバーに保存されることを、ユーザに示すことができる。
【０１２１】
図２９Ｃは、ユーザがドラッグ・アンド・ドロップの動きを完了した後（すなわち、第２の入力が検出された後）の共同ワークスペースを示す。図示するように、画像部分（図２９Ｂの２９０３）も残りの画像（図２９Ｂの２９０２）も共同ワークスペースに出現していない。これは、透明層が、オリジナル画像を共同ワークスペースから除去するようにサーバ上の共同アプリケーションに命令する第１のコマンドを、共同ワークスペースをホストするサーバに送り、ツールバー・インターフェース２９０４に関連付けられたツールバー内に画像部分を記憶させるように共同アプリケーションに命令する第２のコマンドを、共同ワークスペースをホストするサーバに送ったことの結果である。ツールバー・インターフェース２９０４は、記憶された画像がツールバーに保存され、ツールバー・インターフェース２９０４を通してアクセス可能であることをユーザにアラートするアイコン２９０５の存在によって、これを示す。
【０１２２】
図２９Ｃに示す共同ワークスペースに対する変更が、共同ワークスペースに接続されたすべてのユーザのための共同ワークスペースのすべてのインスタンスにわたって伝えられ得る。言い換えると、共同ワークスペースに対する変更は、すべてのユーザのための共同ワークスペースのすべてのインスタンスで生じ得る。前述したように、これは、透明層が、オリジナル画像を除去して画像部分をロケーションにおいて挿入するためのコマンドを、ウェブ・ソケット接続を通じて、共同ワークスペースをホストするサーバに送り、次いで、サーバが、これらの変更を、ウェブ・ソケット接続を通じて、すべての接続されたデバイスに伝えるからである。この場合、記憶された画像は、次いでサーバに記憶又はホストされ、共同ワークスペースに接続されたすべてのユーザにより、ツールバー・インターフェース（ウェブ・ソケット接続を通じて画像部分を取得することができる）のそれぞれのインスタンスを通してアクセスされ得る。代替的に、サーバは、画像部分をローカル・メモリにローカルに記憶させるようにローカル・コンピューティング・デバイスに命令して、ローカル・コンピューティング・デバイスのみが画像部分にアクセス可能であるようにすることができる。
【０１２３】
図２９Ｄは、前に記憶した画像部分を取得するためのツールバー・インターフェース２９０４の使用を示す。図２９Ｄに示すように、ユーザがツールバー・インターフェース内のアイコン２９０５を選択したことにより、記憶画像インターフェース２９０７がユーザに提示されている。記憶画像インターフェース２９０７は、前に保存したすべての画像又は画像部分の表現を表示することができる。例えば、表現２９０８は図２９Ｂの画像部分２９０３に対応する。
【０１２４】
図２９Ｅは、前に保存した画像を挿入するためのツールバー・インターフェースの使用を示す。図２９Ｅに示すように、ユーザが表現２９０８を記憶画像インターフェースから編集インターフェース２９０１上にドラッグしたことにより、画像部分２９０３が共同ワークスペースの編集インターフェース２９０１に再挿入されている。
【０１２５】
前述した技法のうちの１つ又は複数が、１つ又は複数のコンピュータ・システムにおいて実装されるか、又は１つ又は複数のコンピュータ・システムを伴い得る。図３０は、専用コンピューティング環境３０００の一実例を示す。コンピューティング環境３０００は、説明される（１つ又は複数の）実施例の使用又は機能性の範囲に関するいかなる限定をも示唆するものではない。
【０１２６】
図３０を参照すると、コンピューティング環境３０００は、少なくとも１つの処理ユニット３０１０と、メモリ３０２０とを含む。処理ユニット３０１０は、コンピュータ実行可能命令を実行し、現実プロセッサ又は仮想プロセッサであり得る。多重処理システムでは、処理能力を増加させるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ３０２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリなど）、又はその２つの何らかの組合せであり得る。メモリ３０２０は、説明される技法を実装するソフトウェア３０８０を記憶することができる。
【０１２７】
コンピューティング環境は、追加の特徴を有することができる。例えば、コンピューティング環境３０００は、ストレージ３０４０と、１つ又は複数の入力デバイス３０５０と、１つ又は複数の出力デバイス３０６０と、１つ又は複数の通信接続３０９０とを含む。バス、コントローラ、又はネットワークなどの相互接続機構３０７０が、コンピューティング環境３２００のコンポーネントを相互接続する。一般に、オペレーティング・システム・ソフトウェア又はファームウェア（図示せず）が、コンピューティング環境３０００において実行する他のソフトウェアのための動作環境を提供し、コンピューティング環境３０００のコンポーネントのアクティビティを協調させる。
【０１２８】
ストレージ３０４０は、リムーバブル又は非リムーバブルであり得、磁気ディスク、磁気テープ又はカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、或いは情報を記憶するために使用され得、コンピューティング環境３０００内でアクセスされ得る任意の他の媒体を含む。ストレージ３０４０は、ソフトウェア３０８０のための命令を記憶することができる。
【０１２９】
（１つ又は複数の）入力デバイス３０５０は、キーボード、マウス、ペン、トラックボール、タッチ・スクリーン、又はゲーム・コントローラなどのタッチ入力デバイス、音声入力デバイス、走査デバイス、デジタル・カメラ、遠隔制御装置、或いはコンピューティング環境３０００への入力を与える別のデバイスであり得る。（１つ又は複数の）出力デバイス３０６０は、ディスプレイ、テレビジョン、モニタ、プリンタ、スピーカー、又はコンピューティング環境３０００からの出力を与える別のデバイスであり得る。
【０１３０】
（１つ又は複数の）通信接続３０９０は、通信媒体を通じた別のコンピューティング・エンティティへの通信を可能にする。通信媒体は、変調されたデータ信号中で、コンピュータ実行可能命令、オーディオ又はビデオ情報、或いは他のデータなどの情報を伝達する。変調されたデータ信号は、信号の特性のうちの１つ又は複数が、信号中の情報を符号化するような様式で設定又は変更された信号である。限定ではなく実例として、通信媒体は、電気、光、ＲＦ、赤外線、音響、又は他のキャリアを用いて実装される有線又は無線技法を含む。
【０１３１】
実装形態が、コンピュータ可読媒体のコンテキストにおいて説明され得る。コンピュータ可読媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な媒体である。限定ではなく実例として、コンピューティング環境３０００内で、コンピュータ可読媒体は、メモリ３０２０、ストレージ３０４０、通信媒体、及び上記のいずれかの組合せを含む。
【０１３２】
当然、図３０は、単に識別しやすいように、別個のデバイスとして、コンピューティング環境３０００、ディスプレイ・デバイス３０６０、及び入力デバイス３０５０を示す。コンピューティング環境３０００、ディスプレイ・デバイス３０６０、及び入力デバイス３０５０は、別個のデバイス（例えば、ワイヤによってモニタ及びマウスに接続されたパーソナル・コンピュータ）であり得、単一のデバイス（例えば、スマートフォン又はタブレットなどのタッチ・ディスプレイをもつモバイル・デバイス）、或いはデバイスの任意の組合せ（例えば、タッチスクリーン・ディスプレイ・デバイスに動作可能に結合されたコンピューティング・デバイス、単一のディスプレイ・デバイス及び入力デバイスに取り付けられた複数のコンピューティング・デバイスなど）に統合され得る。コンピューティング環境３０００は、セットトップ・ボックス、パーソナル・コンピュータ、或いは１つ又は複数のサーバ、例えば、ネットワーク化されたサーバのファーム、クラスタリングされたサーバ環境、又はコンピューティング・デバイスのクラウド・ネットワークであり得る。
【０１３３】
説明される実施例に関して本発明の原理を説明及び図示したが、説明される実施例は、そのような原理から逸脱することなく構成及び詳細において修正され得ることを認識されよう。ソフトウェアにおいて示されている説明される実施例の要素は、ハードウェアにおいて実装され得、その逆も同様である。
【０１３４】
本発明の原理が適用され得る多くの可能な実施例に鑑みて、本発明として、以下の特許請求の範囲及びその等価物の範囲及び趣旨内に入り得るようなすべての実施例を主張する。
【図１】
2021523484.tif 000003
【図２】
2021523484.tif 000004
【図３】
2021523484.tif 000005
【図４】
2021523484.tif 000006
【図５Ａ】
2021523484.tif 000007
【図５Ｂ】
2021523484.tif 000008
【図６】
2021523484.tif 000009
【図７】
2021523484.tif 000010
【図８】
2021523484.tif 000011
【図９】
2021523484.tif 000012
【図１０】
2021523484.tif 000013
【図１１】
2021523484.tif 000014
【図１２Ａ】
2021523484.tif 000015
【図１２Ｂ】
2021523484.tif 000016
【図１２Ｃ】
2021523484.tif 000017
【図１３】
2021523484.tif 000018
【図１４】
2021523484.tif 000019
【図１５】
2021523484.tif 000020
【図１６】
2021523484.tif 000021
【図１７】
2021523484.tif 000022
【図１８】
2021523484.tif 000023
【図１９】
2021523484.tif 000024
【図２０】
2021523484.tif 000025
【図２１Ａ】
2021523484.tif 000026
【図２１Ｂ】
2021523484.tif 000027
【図２２】
2021523484.tif 000028
【図２３Ａ】
2021523484.tif 000029
【図２３Ｂ】
2021523484.tif 000030
【図２３Ｃ】
2021523484.tif 000031
【図２４】
2021523484.tif 000032
【図２５】
2021523484.tif 000033
【図２６】
2021523484.tif 000034
【図２７Ａ】
2021523484.tif 000035
【図２７Ｂ】
2021523484.tif 000036
【図２８Ａ】
2021523484.tif 000037
【図２８Ｂ】
2021523484.tif 000038
【図２８Ｃ】
2021523484.tif 000039
【図２９Ａ】
2021523484.tif 000040
【図２９Ｂ】
2021523484.tif 000041
【図２９Ｃ】
2021523484.tif 000042
【図２９Ｄ】
2021523484.tif 000043
【図２９Ｅ】
2021523484.tif 000044
【図３０】
2021523484.tif 000045
【国際調査報告】
2021523484.tif 000046
2021523484.tif 000047