您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

180 行
4.8 KiB

using System;
using Unity.UIWidgets.flow;
using Unity.UIWidgets.foundation;
using UnityEngine;
namespace Unity.UIWidgets.uiOld{
public class SceneBuilder {
ContainerLayer _rootLayer;
ContainerLayer _currentLayer;
public SceneBuilder() {
}
public Scene build() {
return new Scene(_rootLayer);
}
void _pushLayer(ContainerLayer layer) {
if (_rootLayer == null) {
_rootLayer = layer;
_currentLayer = layer;
return;
}
if (_currentLayer == null) {
return;
}
_currentLayer.add(layer);
_currentLayer = layer;
}
public Layer pushTransform(Matrix3 matrix) {
var layer = new TransformLayer();
layer.transform = matrix;
_pushLayer(layer);
return layer;
}
public Layer pushOffset(float dx, float dy) {
var layer = new TransformLayer();
layer.transform = Matrix3.makeTrans(dx, dy);
_pushLayer(layer);
return layer;
}
public Layer pushClipRect(Rect clipRect) {
var layer = new ClipRectLayer();
layer.clipRect = clipRect;
_pushLayer(layer);
return layer;
}
public Layer pushClipRRect(RRect clipRRect) {
var layer = new ClipRRectLayer();
layer.clipRRect = clipRRect;
_pushLayer(layer);
return layer;
}
public Layer pushClipPath(Path clipPath) {
var layer = new ClipPathLayer();
layer.clipPath = clipPath;
_pushLayer(layer);
return layer;
}
public Layer pushOpacity(int alpha, Offset offset = null) {
offset = offset ?? Offset.zero;
var layer = new OpacityLayer();
layer.alpha = alpha;
layer.offset = offset;
_pushLayer(layer);
return layer;
}
public Layer pushBackdropFilter(ImageFilter filter) {
var layer = new BackdropFilterLayer();
layer.filter = filter;
_pushLayer(layer);
return layer;
}
public void addRetained(Layer layer) {
if (_currentLayer == null) {
return;
}
_currentLayer.add(layer);
}
public void pop() {
if (_currentLayer == null) {
return;
}
_currentLayer = _currentLayer.parent;
}
public void addPicture(Offset offset, Picture picture,
bool isComplexHint = false, bool willChangeHint = false) {
D.assert(offset != null);
D.assert(picture != null);
if (_currentLayer == null) {
return;
}
var layer = new PictureLayer();
layer.offset = offset;
layer.picture = picture;
layer.isComplex = isComplexHint;
layer.willChange = willChangeHint;
_currentLayer.add(layer);
}
public void addTexture(
Texture texture,
Offset offset,
float width,
float height,
bool freeze) {
if (_currentLayer == null) {
return;
}
var layer = new TextureLayer();
layer.offset = offset;
layer.size = new Size(width, height);
layer.texture = texture;
layer.freeze = freeze;
_currentLayer.add(layer);
}
public void addPerformanceOverlay(int enabledOptions, Rect bounds) {
if (_currentLayer == null) {
return;
}
var layer = new PerformanceOverlayLayer(enabledOptions);
layer.paintBounds = Rect.fromLTRB(
bounds.left,
bounds.top,
bounds.right,
bounds.bottom
);
_currentLayer.add(layer);
}
public Layer pushPhysicalShape(Path path, float elevation, Color color, Color shadowColor, Clip clipBehavior) {
var layer = new PhysicalShapeLayer(clipBehavior);
layer.path = path;
layer.elevation = elevation;
layer.color = color;
layer.shadowColor = shadowColor;
layer.devicePixelRatio = Window.instance.devicePixelRatio;
_pushLayer(layer);
return layer;
}
}
public class Scene : IDisposable {
public Scene(Layer rootLayer) {
_layerTree = new LayerTree();
_layerTree.rootLayer = rootLayer;
}
readonly LayerTree _layerTree;
public LayerTree takeLayerTree() {
return _layerTree;
}
public void Dispose() {
}
}
}