//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// CommonHelpers satellite library | Author: Sergei Y.Kitáev
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System;

namespace CommonHelpers {

//**************************************************************************************************
partial class HConsole {
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

public const int
   MinNormalWidth  = 10,
   MinNormalHeight = 10;

//==================================================================================================

/// <exception cref="ArgumentOutOfRangeException" />
public int NormalWidth
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _NormalWidth_;
   }
   set
   {
      if ( value < MinNormalWidth )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _NormalWidth_ = value;
   }
}

/// <exception cref="ArgumentOutOfRangeException" />
public int NormalHeight
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _NormalHeight_;
   }
   set
   {
      if ( value < MinNormalHeight )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _NormalHeight_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

public int LongDashLength
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _LongDashLength_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _LongDashLength_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

public int ArrowedCaptionDashMinLength
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _ArrowedCaptionDashMinLength_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _ArrowedCaptionDashMinLength_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

/// <exception cref="ArgumentOutOfRangeException" />
public int HeaderFooterPaddingWidth
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _HeaderFooterPaddingWidth_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _HeaderFooterPaddingWidth_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

/// <exception cref="ArgumentOutOfRangeException" />
public int InputArrowDashMinLength
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _InputArrowDashMinLength_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _InputArrowDashMinLength_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

/// <exception cref="ArgumentOutOfRangeException" />
public int WaitInputPollingPause
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return _WaitInputPollingPause_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         _WaitInputPollingPause_ = value;
   }
}

//--------------------------------------------------------------------------------------------------

/// <exception cref="ArgumentOutOfRangeException" />
public static int InputIdlePollingDefaultInterval
{
   get
   {
      lock ( _StaticSyncRoot_ )
         return _InputIdlePollingDefaultInterval_;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _StaticSyncRoot_ )
         _InputIdlePollingDefaultInterval_ = value;
   }
}

//--------------------------------------------------------------------------------------------------
/*
/// <exception cref="ArgumentOutOfRangeException" />
public int 
{
   get
   {
      lock ( _InstanceSyncRoot_ )
         return __;
   }
   set
   {
      if ( value <= 0 )
         throw new ArgumentOutOfRangeException();
      lock ( _InstanceSyncRoot_ )
         __ = value;
   }
}
*/
//==================================================================================================

int
   _NormalWidth_                       = 100,
   _NormalHeight_                      = 50,
   _LongDashLength_                    = 2,
   _ArrowedCaptionDashMinLength_       = 2,
   _HeaderFooterPaddingWidth_          = 2,
   _InputArrowDashMinLength_           = 2,
   _WaitInputPollingPause_             = 10;
static int
   _InputIdlePollingDefaultInterval_   = 100;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
} // HConsole
//**************************************************************************************************

} // CommonHelpers
