コンテンツにスキップ

RenderObject クラス

レイアウト、描画、ヒットテストに参加するレンダーツリーの基底クラスです。

名前空間: FloatSoda.RenderObjects
アセンブリ: FloatSoda.dll

public abstract class RenderObject : IHitTestTarget

object ← RenderObject

RenderBox, RenderView

IHitTestTarget

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

親子関係とパイプラインへの接続状態を保持し、レイアウトDirtyおよび描画Dirtyを必要な境界まで伝播します。 派生型はPerformLayout、Paint、HandleEventを実装します。

描画パイプラインへ接続されているかどうかを取得します。

public bool Attached { get; }

bool

直近のレイアウトに使用した制約を取得します。

public BoxConstraints Constraints { get; }

BoxConstraints

レンダーツリー内の深さを取得または設定します。

public int Depth { get; set; }

int

このRenderObjectが再描画境界かどうかを取得します。

public virtual bool IsRepaintBoundary { get; }

bool

このRenderObjectが保持する合成レイヤーを取得または設定します。

public ILayer? Layer { get; set; }

ILayer?

レイアウトの再実行が必要かどうかを取得または設定します。

public bool NeedsLayout { get; set; }

bool

描画の再実行が必要かどうかを取得または設定します。

public bool NeedsPaint { get; set; }

bool

このRenderObjectを管理する描画パイプラインを取得または設定します。

public RenderPipeline? Owner { get; set; }

RenderPipeline?

レンダーツリー上の親を取得または設定します。

public RenderObject? Parent { get; set; }

RenderObject?

親がこのRenderObjectへ割り当てた配置情報を取得または設定します。

public IParentData? ParentData { get; set; }

IParentData?

レイアウトDirtyの伝播が停止するRenderObjectを取得または設定します。

public RenderObject? RelayoutBoundary { get; set; }

RenderObject?

レイアウトで決定されたサイズを取得します。

public abstract SKSize Size { get; protected set; }

SKSize

親から渡された制約だけで自身のサイズを決定できるかどうかを取得します。

public virtual bool SizedByParent { get; }

bool

子をこのRenderObjectのレンダーツリーへ組み込みます。

public void AdoptChild(RenderObject child)

child RenderObject

組み込む子。別の親から事前に取り外されている必要があります。

子の親データを準備し、このRenderObjectへレイアウトDirtyを要求します。 接続中の場合は子を同じパイプラインへ接続し、子孫の深さも更新します。

このRenderObjectを指定した描画パイプラインへ接続します。

public virtual void Attach(RenderPipeline? owner)

owner RenderPipeline?

接続先のパイプライン。パイプラインを関連付けずに接続する場合はnullです。

接続前からレイアウトDirtyで再レイアウト境界が設定済みの場合は、境界へレイアウト要求を登録し直します。 描画Dirtyで既存レイヤーがある場合は、再描画境界へ描画要求を登録し直します。 派生型は保持する子にも接続を伝播します。

子孫が保持する無効な再レイアウト境界を消去します。

public void CleanChildRelayoutBoundary()

自身が再レイアウト境界でない場合、このRenderObjectをレイアウトDirtyにし、同じ処理を子孫へ伝播します。 自身が再レイアウト境界の場合は伝播を停止します。

このRenderObjectを描画パイプラインから切り離します。

public virtual void Detach()

接続先を解除します。子を保持する派生型は子にも切り離しを伝播します。

子をこのRenderObjectのレンダーツリーから取り外します。

public void DropChild(RenderObject child)

child RenderObject

取り外す子。

子の再レイアウト境界、親データ、親への参照を消去し、接続中の場合は子をデタッチします。 取り外し後はこのRenderObjectへレイアウトDirtyを要求します。

ヒットテストで選択されたこのRenderObjectへポインターイベントを配信します。

public abstract void HandleEvent(PointerEvent pointerEvent, HitTestEntry entry)

pointerEvent PointerEvent

配信するポインターイベント。

entry HitTestEntry

ヒットテスト時に生成された、このRenderObjectに対応する結果。

指定した制約でこのRenderObjectをレイアウトします。

public void Layout(BoxConstraints constraints, bool parentUseSize = false)

constraints BoxConstraints

サイズの有効範囲を定める制約。

parentUseSize bool

親がこのRenderObjectのSizeを使用する場合はtrueです。

制約もレイアウトDirty状態も変化していない場合はレイアウトしません。Flutter の RenderObject.layout に合わせています。 このとき再レイアウト境界だけが変化した場合は、新しい境界を子孫へ伝えます。 レイアウト後はこのRenderObjectのレイアウトDirtyを解除し、描画Dirtyを再描画境界まで伝播します。 再レイアウト境界が変化した場合は、境界に属していた子孫をレイアウトDirtyにします。

現在の制約を変更せずにレイアウトを再実行します。

public void LayoutWithoutResize()

RenderPipelineが登録済みのレイアウトDirtyを処理するときに使用します。 レイアウト後はこのRenderObjectのレイアウトDirtyを解除し、描画Dirtyを再描画境界まで伝播します。

レイアウトの再実行を要求します。

public void MarkNeedsLayout()

すでにレイアウトDirtyの場合は何もしません。 再レイアウト境界では自身をレイアウトDirtyとしてパイプラインへ登録し、表示更新を要求します。 境界でない場合は親方向へ伝播し、最初の再レイアウト境界で登録されます。

描画の再実行を要求します。

public void MarkNeedsPaint()

すでに描画Dirtyの場合は何もしません。 再描画境界では自身を描画Dirtyとしてパイプラインへ登録し、表示更新を要求します。 境界でない場合は親方向へ伝播し、最初の再描画境界で登録されます。

このRenderObjectと親へレイアウトの再実行を要求します。

public void MarkParentNeedsLayout()

このRenderObjectをレイアウトDirtyにし、親のMarkNeedsLayoutを通じて再レイアウト境界まで伝播します。 親が存在しない場合、このメソッドだけではパイプラインへ登録されません。

指定した位置を原点として、このRenderObjectを描画コンテキストへ記録します。

public abstract void Paint(PaintingContext context, Offset offset)

context PaintingContext

描画命令と合成レイヤーを記録するコンテキスト。

offset Offset

親の座標系における描画原点。

現在のConstraintsに従って自身と必要な子をレイアウトします。

public abstract void PerformLayout()

派生型は処理の完了前にSizeを確定します。

指定した子とその子孫の深さを必要に応じて更新します。

public void RedepthChild(RenderObject child)

child RenderObject

このRenderObjectの直下にある子。

子の深さがすでに親より大きい場合は何もしません。

直下の子を起点として子孫の深さを更新します。

public virtual void RedepthChildren()

子を保持する派生型がオーバーライドします。

指定した子が必要とする親データを準備します。

public virtual void SetupParentData(RenderObject child)

child RenderObject

このRenderObjectへ組み込む子。

親固有のIParentDataを使用する派生型がオーバーライドします。

直下の各子に処理を適用します。

public virtual void VisitChildren(Action<RenderObject> visitor)

visitor Action<RenderObject>

各子に一度ずつ適用する処理。

子を保持する派生型がオーバーライドします。