mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 03:06:59 +08:00
opt: RepaintBoundary (#1840)
* opt: RepaintBoundary * fix [skip ci] * opt time width * opt: video position * update --------- Co-authored-by: dom <githubaccount56556@proton.me>
This commit is contained in:
committed by
GitHub
parent
a63ca93762
commit
d7d9655f81
@@ -65,7 +65,4 @@ class RenderCustomHeightWidget extends RenderProxyBox {
|
||||
void paint(PaintingContext context, Offset offset) {
|
||||
context.paintChild(child!, offset + _offset);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,4 @@ class _RenderDecoratedBox extends RenderProxyBox {
|
||||
|
||||
@override
|
||||
bool hitTestSelf(Offset position) => true;
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
@@ -259,9 +259,6 @@ class _RenderToolTip extends RenderBox
|
||||
child = childParentData.nextSibling;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
class Triangle extends LeafRenderObjectWidget {
|
||||
@@ -328,14 +325,11 @@ class RenderTriangle extends RenderBox {
|
||||
..style = PaintingStyle.fill;
|
||||
|
||||
final path = Path()
|
||||
..moveTo(0, 0)
|
||||
..lineTo(size.width, 0)
|
||||
..lineTo(size.width / 2, size.height)
|
||||
..moveTo(offset.dx, offset.dy)
|
||||
..lineTo(offset.dx + size.width, offset.dy)
|
||||
..lineTo(offset.dx + size.width / 2, size.height + offset.dy)
|
||||
..close();
|
||||
|
||||
context.canvas.drawPath(path, paint);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ class RenderMaskedIcon extends RenderProxyBox {
|
||||
|
||||
final canvas = context.canvas;
|
||||
|
||||
var rectOffset = offset;
|
||||
Size size = this.size;
|
||||
final exceedWidth = size.width > _iconSize;
|
||||
final exceedHeight = size.height > _iconSize;
|
||||
@@ -128,14 +129,14 @@ class RenderMaskedIcon extends RenderProxyBox {
|
||||
final dx = exceedWidth ? (size.width - _iconSize) / 2.0 : 0.0;
|
||||
final dy = exceedHeight ? (size.height - _iconSize) / 2.0 : 0.0;
|
||||
size = Size.square(_iconSize);
|
||||
offset = Offset(dx, dy);
|
||||
rectOffset += Offset(dx, dy);
|
||||
} else if (size.width < _iconSize && size.height < _iconSize) {
|
||||
size = Size.square(_iconSize);
|
||||
}
|
||||
|
||||
final strokeWidth = size.width / 12;
|
||||
|
||||
var rect = offset & size;
|
||||
var rect = rectOffset & size;
|
||||
|
||||
final sqrt2Width = strokeWidth * sqrt2; // rotate pi / 4
|
||||
|
||||
@@ -155,7 +156,7 @@ class RenderMaskedIcon extends RenderProxyBox {
|
||||
canvas
|
||||
..save()
|
||||
..clipPath(path, doAntiAlias: false);
|
||||
super.paint(context, .zero);
|
||||
super.paint(context, offset);
|
||||
|
||||
canvas.restore();
|
||||
|
||||
@@ -174,7 +175,4 @@ class RenderMaskedIcon extends RenderProxyBox {
|
||||
linePaint,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
@@ -440,5 +440,5 @@ class RenderImageGrid extends RenderBox
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
bool get isRepaintBoundary => true; // gif repaint
|
||||
}
|
||||
|
||||
@@ -226,13 +226,14 @@ abstract class MarqueeRender extends RenderBox
|
||||
if (_distance > 0) {
|
||||
updateSize();
|
||||
_ticker.initIfNeeded(_onTick);
|
||||
markNeedsCompositingBitsUpdate();
|
||||
} else {
|
||||
_ticker.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
bool get isRepaintBoundary => _ticker._ticker != null;
|
||||
|
||||
void paintCenter(PaintingContext context, Offset offset) {
|
||||
if (_direction == Axis.horizontal) {
|
||||
|
||||
@@ -123,17 +123,17 @@ class RenderProgressBar extends BaseRenderProgressBar<Segment> {
|
||||
|
||||
for (final segment in segments) {
|
||||
paint.color = segment.color;
|
||||
final segmentStart = segment.start * size.width;
|
||||
final segmentEnd = segment.end * size.width;
|
||||
final segmentStart = offset.dx + segment.start * size.width;
|
||||
final segmentEnd = offset.dx + segment.end * size.width;
|
||||
|
||||
if (segmentEnd > segmentStart ||
|
||||
(segmentEnd == segmentStart && segmentStart > 0)) {
|
||||
canvas.drawRect(
|
||||
Rect.fromLTRB(
|
||||
segmentStart,
|
||||
0,
|
||||
offset.dy,
|
||||
segmentEnd == segmentStart ? segmentStart + 2 : segmentEnd,
|
||||
size.height,
|
||||
size.height + offset.dy,
|
||||
),
|
||||
paint,
|
||||
);
|
||||
@@ -225,6 +225,12 @@ class RenderViewPointProgressBar
|
||||
final canvas = context.canvas;
|
||||
final paint = Paint()..style = PaintingStyle.fill;
|
||||
|
||||
if (offset != .zero) {
|
||||
canvas
|
||||
..save()
|
||||
..translate(offset.dx, offset.dy);
|
||||
}
|
||||
|
||||
assert(segments.isSortedBy((i) => i.end));
|
||||
|
||||
canvas.drawRect(
|
||||
@@ -276,6 +282,7 @@ class RenderViewPointProgressBar
|
||||
}
|
||||
prevEnd = segmentEnd + _dividerWidth;
|
||||
}
|
||||
if (offset != .zero) canvas.restore();
|
||||
}
|
||||
|
||||
ValueSetter<Duration>? _onSeek;
|
||||
@@ -371,7 +378,4 @@ class BaseRenderProgressBar<T extends BaseSegment> extends RenderBox {
|
||||
void performLayout() {
|
||||
size = constraints.constrainDimensions(constraints.maxWidth, height);
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
@@ -119,7 +119,9 @@ class RenderProgressBar extends RenderBox {
|
||||
@override
|
||||
void paint(PaintingContext context, Offset offset) {
|
||||
final size = this.size;
|
||||
final canvas = context.canvas;
|
||||
final canvas = context.canvas
|
||||
..save()
|
||||
..translate(offset.dx, offset.dy);
|
||||
final paint = Paint()..style = .fill;
|
||||
|
||||
canvas.clipRect(
|
||||
@@ -147,8 +149,6 @@ class RenderProgressBar extends RenderBox {
|
||||
..drawRect(left, paint..color = _color)
|
||||
..drawRect(right, paint..color = _backgroundColor);
|
||||
}
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isRepaintBoundary => true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user