Files
CPF/CPF/Controls/IScrollInfo.cs
2023-11-21 23:05:03 +08:00

152 lines
4.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace CPF.Controls
{
/// <summary>
/// It exposes scrolling properties, methods for logical scrolling, computing
/// which children are visible, and measuring/drawing/offsetting/clipping content.
/// </summary>
public interface IScrollInfo
{
#region Public Methods
/// <summary>
/// Scroll content by one line to the top.
/// </summary>
void LineUp();
/// <summary>
/// Scroll content by one line to the bottom.
/// </summary>
void LineDown();
/// <summary>
/// Scroll content by one line to the left.
/// </summary>
void LineLeft();
/// <summary>
/// Scroll content by one line to the right.
/// </summary>
void LineRight();
/// <summary>
/// Scroll content by one page to the top.
/// </summary>
void PageUp();
/// <summary>
/// Scroll content by one page to the bottom.
/// </summary>
void PageDown();
/// <summary>
/// Scroll content by one page to the left.
/// </summary>
void PageLeft();
/// <summary>
/// Scroll content by one page to the right.
/// </summary>
void PageRight();
/// <summary>
/// Scroll content by one page to the top.
/// </summary>
void MouseWheelUp();
/// <summary>
/// Scroll content by one page to the bottom.
/// </summary>
void MouseWheelDown();
/// <summary>
/// Scroll content by one page to the left.
/// </summary>
void MouseWheelLeft();
/// <summary>
/// Scroll content by one page to the right.
/// </summary>
void MouseWheelRight();
/// <summary>
/// Set the HorizontalOffset to the passed value.
/// An implementation may coerce this value into a valid range, typically inclusively between 0 and <see cref="ExtentWidth" /> less <see cref="ViewportWidth" />.
/// </summary>
void SetHorizontalOffset(float offset);
/// <summary>
/// Set the VerticalOffset to the passed value.
/// An implementation may coerce this value into a valid range, typically inclusively between 0 and <see cref="ExtentHeight" /> less <see cref="ViewportHeight" />.
/// </summary>
void SetVerticalOffset(float offset);
#endregion
//-------------------------------------------------------------------
//
// Public Properties
//
//-------------------------------------------------------------------
#region Public Properties
/// <summary>
/// This property indicates to the IScrollInfo whether or not it can scroll in the vertical given dimension.
/// </summary>
bool CanVerticallyScroll { get; set; }
/// <summary>
/// This property indicates to the IScrollInfo whether or not it can scroll in the horizontal given dimension.
/// </summary>
bool CanHorizontallyScroll { get; set; }
/// <summary>
/// ExtentWidth contains the full horizontal range of the scrolled content.
/// </summary>
float ExtentWidth { get; }
/// <summary>
/// ExtentHeight contains the full vertical range of the scrolled content.
/// </summary>
float ExtentHeight { get; }
/// <summary>
/// ViewportWidth contains the currently visible horizontal range of the scrolled content.
/// </summary>
float ViewportWidth { get; }
/// <summary>
/// ViewportHeight contains the currently visible vertical range of the scrolled content.
/// </summary>
float ViewportHeight { get; }
/// <summary>
/// HorizontalOffset is the horizontal offset into the scrolled content that represents the first unit visible.
/// </summary>
float HorizontalOffset { get; }
/// <summary>
/// VerticalOffset is the vertical offset into the scrolled content that represents the first unit visible.
/// </summary>
float VerticalOffset { get; }
/// <summary>
/// ScrollOwner is the container that controls any scrollbars, headers, etc... that are dependant
/// on this IScrollInfo's properties. Implementers of IScrollInfo should call InvalidateScrollInfo()
/// on this object when properties change.
/// </summary>
ScrollViewer ScrollOwner { get; set; }
#endregion
/// <summary>
/// 滚动或者视口变化
/// </summary>
event EventHandler ScrollChanged;
}
}