Table of Contents

Class SkiaScrollLooped

Namespace
DrawnUi.Draw
Assembly
DrawnUi.Maui.dll

Cycles content, so the scroll never ands but cycles from the start

public class SkiaScrollLooped : SkiaScroll, INotifyPropertyChanged, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IVisualElementController, IElementController, IView, ITransform, IElement, IVisualTreeElement, IContainer, IList<IView>, ICollection<IView>, IEnumerable<IView>, IEnumerable, IHasAfterEffects, ISkiaControl, IDrawnBase, ICanBeUpdatedWithContext, ICanBeUpdated, ISkiaDisposable, IDisposable, ISkiaGestureListener, IDefinesViewport, IWithContent
Inheritance
SkiaScrollLooped
Implements
Inherited Members
Extension Methods

Constructors

SkiaScrollLooped()

public SkiaScrollLooped()

Fields

CycleSpaceProperty

public static readonly BindableProperty CycleSpaceProperty

Field Value

BindableProperty

Debug

public static bool Debug

Field Value

bool

IsBannerProperty

public static readonly BindableProperty IsBannerProperty

Field Value

BindableProperty

Properties

CycleSpace

Space between cycles, pixels

public double CycleSpace { get; set; }

Property Value

double

IsBanner

Whether this should look like an infinite scrolling text banner. So then the END doesn't glue with START directly, new START appears only when when previous END gows out of the screen.

public bool IsBanner { get; set; }

Property Value

bool

ShouldInvalidateByChildren

public override bool ShouldInvalidateByChildren { get; }

Property Value

bool

Methods

CalculateVisibleIndex(RelativePositionType)

Calculates CurrentIndex

public override ContainsPointResult CalculateVisibleIndex(RelativePositionType option = RelativePositionType.Start)

Parameters

option RelativePositionType

Returns

ContainsPointResult

ClampOffset(float, float, SKRect, bool)

public override Vector2 ClampOffset(float x, float y, SKRect contentOffsetBounds, bool strict = false)

Parameters

x float
y float
contentOffsetBounds SKRect
strict bool

Returns

Vector2

GetItemIndex(SkiaLayout, float, float, RelativePositionType)

public override ContainsPointResult GetItemIndex(SkiaLayout layout, float pixelsOffsetX, float pixelsOffsetY, RelativePositionType option)

Parameters

layout SkiaLayout
pixelsOffsetX float
pixelsOffsetY float
option RelativePositionType

Returns

ContainsPointResult

InitializeScroller(float)

protected override void InitializeScroller(float scale)

Parameters

scale float

ModifyViewportOffset(SKRect, SKPoint, float)

protected virtual SKPoint ModifyViewportOffset(SKRect destination, SKPoint offsetPixels, float scale)

Parameters

destination SKRect
offsetPixels SKPoint
scale float

Returns

SKPoint

OffsetOk(Vector2)

Whether the scrolling offset in inside scrollable bounds or not

protected override bool OffsetOk(Vector2 offset)

Parameters

offset Vector2

Returns

bool

OnDrawn(DrawingContext)

protected override void OnDrawn(DrawingContext context)

Parameters

context DrawingContext

PositionViewport(SKRect, SKPoint, float, float, bool)

Input offset parameters in PIXELS. This is called inside Draw, only if need reposition viewport. Here we can construct anything according current offset before painting. Creates a valid ViewportRect inside.

protected override bool PositionViewport(SKRect destination, SKPoint offsetPixels, float viewportScale, float scale, bool forceSyncOffsets)

Parameters

destination SKRect
offsetPixels SKPoint
viewportScale float
scale float
forceSyncOffsets bool

Returns

bool

Whether we changed viewport and cache changed

Snap(float)

public override void Snap(float maxTimeSecs)

Parameters

maxTimeSecs float

UpdateVisibleIndex()

public override void UpdateVisibleIndex()