//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================

#ifndef LOGPREVIEW_H
#define LOGPREVIEW_H
#ifdef _WIN32
#pragma once
#endif

#include "datamodel/dmehandle.h"

class CDmElement;
class CDmeClip;
class CDmeFilmClip;
class CDmeChannel;

enum LogPreviewChannelType_t
{
	LOG_PREVIEW_VALUE = 0,
	LOG_PREVIEW_BALANCE,
	LOG_PREVIEW_MULTILEVEL,
	LOG_PREVIEW_FLEX_CHANNEL_COUNT,

	LOG_PREVIEW_POSITION = 0,
	LOG_PREVIEW_ORIENTATION,
	LOG_PREVIEW_TRANSFORM_CHANNEL_COUNT,

	LOG_PREVIEW_MAX_CHANNEL_COUNT = 3,
};

struct LogPreview_t
{
	LogPreview_t() :
		m_bDragging( false ),
		m_bActiveLog( false ),
		m_bSelected( false )
	{
	}

	bool IsEqual( const LogPreview_t& other )
	{
		if ( m_hControl != other.m_hControl )
			return false;
		for ( int i = 0; i < LOG_PREVIEW_MAX_CHANNEL_COUNT; ++i )
		{
			if ( m_hChannels[ i ] != other.m_hChannels[ i ] )
				return false;
		}
		if ( m_hOwner != other.m_hOwner )
			return false;
		if ( m_hShot != other.m_hShot )
			return false;
		if ( m_bDragging != other.m_bDragging )
			return false;
		if ( m_bActiveLog != other.m_bActiveLog )
			return false;
		if ( m_bSelected != other.m_bSelected )
			return false;

		return true;
	}

	CDmeHandle< CDmElement >		m_hControl;  // The animation set control
	CDmeHandle< CDmeChannel >		m_hChannels[ LOG_PREVIEW_MAX_CHANNEL_COUNT ];
	CDmeHandle< CDmeClip >			m_hOwner;
	CDmeHandle< CDmeFilmClip >		m_hShot;

	bool							m_bDragging : 1;
	bool							m_bActiveLog : 1;
	bool							m_bSelected : 1;
};
#endif // LOGPREVIEW_H