/*
 * Copyright (c) 2014 - 2022 t_saki@serenegiant.com 
 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Serenegiant.UVC
{

	/**
	 * UVC関係のイベントハンドリングインターフェース
	 */
	public interface IUVCDrawer
	{
		/**
		 * UVC機器が接続された
		 * @param manager 呼び出し元のUVCManager
		 * @param device 接続されたUVC機器情報
		 * @return true: UVC機器を使う, false: UVC機器を使わない
		 */
		bool OnUVCAttachEvent(UVCManager manager, UVCDevice device);
		/**
		 * UVC機器が取り外された
		 * @param manager 呼び出し元のUVCManager
		 * @param device 接続されたUVC機器情報
		 */
		void OnUVCDetachEvent(UVCManager manager, UVCDevice device);
		/**
		 * IUVCDrawerが指定したUVC機器の映像を描画できるかどうかを取得
		 * @param manager 呼び出し元のUVCManager
		 * @param device 接続されたUVC機器情報
		 */
		bool CanDraw(UVCManager manager, UVCDevice device);
		/**
		 * UVC機器からの映像取得を開始した
		 * @param manager 呼び出し元のUVCManager
		 * @param device 接続されたUVC機器情報
		 * @param tex UVC機器からの映像を受け取るTextureオブジェクト
		 */
		void OnUVCStartEvent(UVCManager manager, UVCDevice device, Texture tex);
		/**
		 * UVC機器からの映像取得を終了した
		 * @param manager 呼び出し元のUVCManager
		 * @param device 接続されたUVC機器情報
		 */
		void OnUVCStopEvent(UVCManager manager, UVCDevice device);

	}   // interface IUVCDrawer

}	// namespace Serenegiant.UVC
