RenderObject クラス
レイアウト、描画、ヒットテストに参加するレンダーツリーの基底クラスです。
名前空間: FloatSoda.RenderObjects
アセンブリ: FloatSoda.dll
public abstract class RenderObject : IHitTestTarget実装するインターフェイス
Section titled “実装するインターフェイス”継承したメンバー
Section titled “継承したメンバー”object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
親子関係とパイプラインへの接続状態を保持し、レイアウトDirtyおよび描画Dirtyを必要な境界まで伝播します。
派生型はPerformLayout、Paint、HandleEventを実装します。
Attached
Section titled “Attached”描画パイプラインへ接続されているかどうかを取得します。
public bool Attached { get; }プロパティの値
Section titled “プロパティの値”Constraints
Section titled “Constraints”直近のレイアウトに使用した制約を取得します。
public BoxConstraints Constraints { get; }プロパティの値
Section titled “プロパティの値”レンダーツリー内の深さを取得または設定します。
public int Depth { get; set; }プロパティの値
Section titled “プロパティの値”IsRepaintBoundary
Section titled “IsRepaintBoundary”このRenderObjectが再描画境界かどうかを取得します。
public virtual bool IsRepaintBoundary { get; }プロパティの値
Section titled “プロパティの値”このRenderObjectが保持する合成レイヤーを取得または設定します。
public ILayer? Layer { get; set; }プロパティの値
Section titled “プロパティの値”ILayer?
NeedsLayout
Section titled “NeedsLayout”レイアウトの再実行が必要かどうかを取得または設定します。
public bool NeedsLayout { get; set; }プロパティの値
Section titled “プロパティの値”NeedsPaint
Section titled “NeedsPaint”描画の再実行が必要かどうかを取得または設定します。
public bool NeedsPaint { get; set; }プロパティの値
Section titled “プロパティの値”このRenderObjectを管理する描画パイプラインを取得または設定します。
public RenderPipeline? Owner { get; set; }プロパティの値
Section titled “プロパティの値”Parent
Section titled “Parent”レンダーツリー上の親を取得または設定します。
public RenderObject? Parent { get; set; }プロパティの値
Section titled “プロパティの値”ParentData
Section titled “ParentData”親がこのRenderObjectへ割り当てた配置情報を取得または設定します。
public IParentData? ParentData { get; set; }プロパティの値
Section titled “プロパティの値”RelayoutBoundary
Section titled “RelayoutBoundary”レイアウトDirtyの伝播が停止するRenderObjectを取得または設定します。
public RenderObject? RelayoutBoundary { get; set; }プロパティの値
Section titled “プロパティの値”レイアウトで決定されたサイズを取得します。
public abstract SKSize Size { get; protected set; }プロパティの値
Section titled “プロパティの値”SizedByParent
Section titled “SizedByParent”親から渡された制約だけで自身のサイズを決定できるかどうかを取得します。
public virtual bool SizedByParent { get; }プロパティの値
Section titled “プロパティの値”AdoptChild(RenderObject)
Section titled “AdoptChild(RenderObject)”子をこのRenderObjectのレンダーツリーへ組み込みます。
public void AdoptChild(RenderObject child)パラメーター
Section titled “パラメーター”child RenderObject
組み込む子。別の親から事前に取り外されている必要があります。
子の親データを準備し、このRenderObjectへレイアウトDirtyを要求します。 接続中の場合は子を同じパイプラインへ接続し、子孫の深さも更新します。
Attach(RenderPipeline?)
Section titled “Attach(RenderPipeline?)”このRenderObjectを指定した描画パイプラインへ接続します。
public virtual void Attach(RenderPipeline? owner)パラメーター
Section titled “パラメーター”owner RenderPipeline?
接続先のパイプライン。パイプラインを関連付けずに接続する場合はnullです。
接続前からレイアウトDirtyで再レイアウト境界が設定済みの場合は、境界へレイアウト要求を登録し直します。 描画Dirtyで既存レイヤーがある場合は、再描画境界へ描画要求を登録し直します。 派生型は保持する子にも接続を伝播します。
CleanChildRelayoutBoundary()
Section titled “CleanChildRelayoutBoundary()”子孫が保持する無効な再レイアウト境界を消去します。
public void CleanChildRelayoutBoundary()自身が再レイアウト境界でない場合、このRenderObjectをレイアウトDirtyにし、同じ処理を子孫へ伝播します。 自身が再レイアウト境界の場合は伝播を停止します。
Detach()
Section titled “Detach()”このRenderObjectを描画パイプラインから切り離します。
public virtual void Detach()接続先を解除します。子を保持する派生型は子にも切り離しを伝播します。
DropChild(RenderObject)
Section titled “DropChild(RenderObject)”子をこのRenderObjectのレンダーツリーから取り外します。
public void DropChild(RenderObject child)パラメーター
Section titled “パラメーター”child RenderObject
取り外す子。
子の再レイアウト境界、親データ、親への参照を消去し、接続中の場合は子をデタッチします。 取り外し後はこのRenderObjectへレイアウトDirtyを要求します。
HandleEvent(PointerEvent, HitTestEntry)
Section titled “HandleEvent(PointerEvent, HitTestEntry)”ヒットテストで選択されたこのRenderObjectへポインターイベントを配信します。
public abstract void HandleEvent(PointerEvent pointerEvent, HitTestEntry entry)パラメーター
Section titled “パラメーター”pointerEvent PointerEvent
配信するポインターイベント。
entry HitTestEntry
ヒットテスト時に生成された、このRenderObjectに対応する結果。
Layout(BoxConstraints, bool)
Section titled “Layout(BoxConstraints, bool)”指定した制約でこのRenderObjectをレイアウトします。
public void Layout(BoxConstraints constraints, bool parentUseSize = false)パラメーター
Section titled “パラメーター”constraints BoxConstraints
サイズの有効範囲を定める制約。
parentUseSize bool
親がこのRenderObjectのSizeを使用する場合はtrueです。
制約もレイアウトDirty状態も変化していない場合はレイアウトしません。Flutter の RenderObject.layout に合わせています。
このとき再レイアウト境界だけが変化した場合は、新しい境界を子孫へ伝えます。
レイアウト後はこのRenderObjectのレイアウトDirtyを解除し、描画Dirtyを再描画境界まで伝播します。
再レイアウト境界が変化した場合は、境界に属していた子孫をレイアウトDirtyにします。
LayoutWithoutResize()
Section titled “LayoutWithoutResize()”現在の制約を変更せずにレイアウトを再実行します。
public void LayoutWithoutResize()RenderPipelineが登録済みのレイアウトDirtyを処理するときに使用します。 レイアウト後はこのRenderObjectのレイアウトDirtyを解除し、描画Dirtyを再描画境界まで伝播します。
MarkNeedsLayout()
Section titled “MarkNeedsLayout()”レイアウトの再実行を要求します。
public void MarkNeedsLayout()すでにレイアウトDirtyの場合は何もしません。 再レイアウト境界では自身をレイアウトDirtyとしてパイプラインへ登録し、表示更新を要求します。 境界でない場合は親方向へ伝播し、最初の再レイアウト境界で登録されます。
MarkNeedsPaint()
Section titled “MarkNeedsPaint()”描画の再実行を要求します。
public void MarkNeedsPaint()すでに描画Dirtyの場合は何もしません。 再描画境界では自身を描画Dirtyとしてパイプラインへ登録し、表示更新を要求します。 境界でない場合は親方向へ伝播し、最初の再描画境界で登録されます。
MarkParentNeedsLayout()
Section titled “MarkParentNeedsLayout()”このRenderObjectと親へレイアウトの再実行を要求します。
public void MarkParentNeedsLayout()このRenderObjectをレイアウトDirtyにし、親のMarkNeedsLayoutを通じて再レイアウト境界まで伝播します。 親が存在しない場合、このメソッドだけではパイプラインへ登録されません。
Paint(PaintingContext, Offset)
Section titled “Paint(PaintingContext, Offset)”指定した位置を原点として、このRenderObjectを描画コンテキストへ記録します。
public abstract void Paint(PaintingContext context, Offset offset)パラメーター
Section titled “パラメーター”context PaintingContext
描画命令と合成レイヤーを記録するコンテキスト。
offset Offset
親の座標系における描画原点。
PerformLayout()
Section titled “PerformLayout()”現在のConstraintsに従って自身と必要な子をレイアウトします。
public abstract void PerformLayout()派生型は処理の完了前にSizeを確定します。
RedepthChild(RenderObject)
Section titled “RedepthChild(RenderObject)”指定した子とその子孫の深さを必要に応じて更新します。
public void RedepthChild(RenderObject child)パラメーター
Section titled “パラメーター”child RenderObject
このRenderObjectの直下にある子。
子の深さがすでに親より大きい場合は何もしません。
RedepthChildren()
Section titled “RedepthChildren()”直下の子を起点として子孫の深さを更新します。
public virtual void RedepthChildren()子を保持する派生型がオーバーライドします。
SetupParentData(RenderObject)
Section titled “SetupParentData(RenderObject)”指定した子が必要とする親データを準備します。
public virtual void SetupParentData(RenderObject child)パラメーター
Section titled “パラメーター”child RenderObject
このRenderObjectへ組み込む子。
親固有のIParentDataを使用する派生型がオーバーライドします。
VisitChildren(Action<RenderObject>)
Section titled “VisitChildren(Action<RenderObject>)”直下の各子に処理を適用します。
public virtual void VisitChildren(Action<RenderObject> visitor)パラメーター
Section titled “パラメーター”visitor Action<RenderObject>
各子に一度ずつ適用する処理。
子を保持する派生型がオーバーライドします。