您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
156 行
4.3 KiB
156 行
4.3 KiB
using System;
|
|
using UIWidgets.foundation;
|
|
using UIWidgets.painting;
|
|
using UIWidgets.ui.txt;
|
|
using UnityEngine;
|
|
|
|
namespace UIWidgets.ui {
|
|
public interface Canvas {
|
|
void drawPloygon4(Offset[] points, Paint paint = null);
|
|
|
|
void drawRect(Rect rect, BorderWidth borderWidth = null, BorderRadius borderRadius = null, Paint paint = null);
|
|
|
|
void drawRectShadow(Rect rect, Paint paint = null);
|
|
|
|
void drawPicture(Picture picture);
|
|
|
|
void drawImageRect(Image image, Rect dest, Rect src = null, Paint paint = null);
|
|
|
|
void drawLine(Offset from, Offset to, Paint paint = null);
|
|
|
|
void concat(Matrix4x4 transform);
|
|
|
|
void setMatrix(Matrix4x4 matrix);
|
|
|
|
Matrix4x4 getMatrix();
|
|
|
|
void save();
|
|
|
|
void saveLayer(Rect rect, Paint paint = null);
|
|
|
|
void restore();
|
|
|
|
int getSaveCount();
|
|
|
|
void clipRect(Rect rect, bool doAntiAlias = true);
|
|
|
|
void clipRRect(RRect rrect, bool doAntiAlias = true);
|
|
|
|
void drawTextBlob(TextBlob textBlob, Offset offset);
|
|
}
|
|
|
|
public class RecorderCanvas : Canvas {
|
|
public RecorderCanvas(PictureRecorder recorder) {
|
|
this._recorder = recorder;
|
|
}
|
|
|
|
readonly PictureRecorder _recorder;
|
|
|
|
int _saveCount = 1;
|
|
|
|
public void drawPloygon4(Offset[] points, Paint paint) {
|
|
this._recorder.addDrawCmd(new DrawPloygon4 {
|
|
points = points,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void drawRect(Rect rect, BorderWidth borderWidth, BorderRadius borderRadius, Paint paint) {
|
|
this._recorder.addDrawCmd(new DrawRect {
|
|
rect = rect,
|
|
borderWidth = borderWidth,
|
|
borderRadius = borderRadius,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void drawRectShadow(Rect rect, Paint paint) {
|
|
this._recorder.addDrawCmd(new DrawRectShadow {
|
|
rect = rect,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void drawPicture(Picture picture) {
|
|
this._recorder.addDrawCmd(new DrawPicture {
|
|
picture = picture,
|
|
});
|
|
}
|
|
|
|
public void drawImageRect(Image image, Rect dest, Rect src, Paint paint) {
|
|
this._recorder.addDrawCmd(new DrawImageRect {
|
|
image = image,
|
|
dest = dest,
|
|
src = src,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void drawLine(Offset from, Offset to, Paint paint) {
|
|
this._recorder.addDrawCmd(new DrawLine {
|
|
from = from,
|
|
to = to,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void concat(Matrix4x4 transform) {
|
|
this._recorder.addDrawCmd(new DrawConcat {
|
|
transform = transform,
|
|
});
|
|
}
|
|
|
|
public void setMatrix(Matrix4x4 matrix) {
|
|
this._recorder.addDrawCmd(new DrawSetMatrix {
|
|
matrix = matrix,
|
|
});
|
|
}
|
|
|
|
public Matrix4x4 getMatrix() {
|
|
throw new Exception("not available in recorder");
|
|
}
|
|
|
|
public void save() {
|
|
this._saveCount++;
|
|
this._recorder.addDrawCmd(new DrawSave {
|
|
});
|
|
}
|
|
|
|
public void saveLayer(Rect rect, Paint paint) {
|
|
this._saveCount++;
|
|
this._recorder.addDrawCmd(new DrawSaveLayer {
|
|
rect = rect,
|
|
paint = paint,
|
|
});
|
|
}
|
|
|
|
public void restore() {
|
|
this._saveCount--;
|
|
this._recorder.addDrawCmd(new DrawRestore {
|
|
});
|
|
}
|
|
|
|
public int getSaveCount() {
|
|
return this._saveCount;
|
|
}
|
|
|
|
public void clipRect(Rect rect, bool doAntiAlias = true) {
|
|
this._recorder.addDrawCmd(new DrawClipRect {
|
|
rect = rect,
|
|
});
|
|
}
|
|
|
|
public void clipRRect(RRect rrect, bool doAntiAlias = true) {
|
|
this._recorder.addDrawCmd(new DrawClipRRect {
|
|
rrect = rrect,
|
|
});
|
|
}
|
|
|
|
public void drawTextBlob(TextBlob textBlob, Offset offset) {
|
|
this._recorder.addDrawCmd(new DrawTextBlob {
|
|
textBlob = textBlob,
|
|
offset = offset
|
|
});
|
|
}
|
|
}
|
|
}
|