Showing
4 changed files
with
34 additions
and
23 deletions
| @@ -126,9 +126,9 @@ class Transform extends SingleChildWidget { | @@ -126,9 +126,9 @@ class Transform extends SingleChildWidget { | ||
| 126 | @required this.transform, | 126 | @required this.transform, |
| 127 | this.origin, | 127 | this.origin, |
| 128 | this.alignment, | 128 | this.alignment, |
| 129 | + this.adjustLayout = false, | ||
| 129 | Widget child, | 130 | Widget child, |
| 130 | }) : assert(transform != null), | 131 | }) : assert(transform != null), |
| 131 | - _relayout = false, | ||
| 132 | super(child: child); | 132 | super(child: child); |
| 133 | 133 | ||
| 134 | /// Creates a widget that transforms its child using a rotation around the | 134 | /// Creates a widget that transforms its child using a rotation around the |
| @@ -139,7 +139,7 @@ class Transform extends SingleChildWidget { | @@ -139,7 +139,7 @@ class Transform extends SingleChildWidget { | ||
| 139 | this.alignment = Alignment.center, | 139 | this.alignment = Alignment.center, |
| 140 | Widget child, | 140 | Widget child, |
| 141 | }) : transform = Matrix4.rotationZ(angle), | 141 | }) : transform = Matrix4.rotationZ(angle), |
| 142 | - _relayout = false, | 142 | + adjustLayout = false, |
| 143 | super(child: child); | 143 | super(child: child); |
| 144 | 144 | ||
| 145 | /// Creates a widget that transforms its child using a rotation around the | 145 | /// Creates a widget that transforms its child using a rotation around the |
| @@ -148,7 +148,7 @@ class Transform extends SingleChildWidget { | @@ -148,7 +148,7 @@ class Transform extends SingleChildWidget { | ||
| 148 | @required double angle, | 148 | @required double angle, |
| 149 | Widget child, | 149 | Widget child, |
| 150 | }) : transform = Matrix4.rotationZ(angle), | 150 | }) : transform = Matrix4.rotationZ(angle), |
| 151 | - _relayout = true, | 151 | + adjustLayout = true, |
| 152 | alignment = null, | 152 | alignment = null, |
| 153 | origin = null, | 153 | origin = null, |
| 154 | super(child: child); | 154 | super(child: child); |
| @@ -160,7 +160,7 @@ class Transform extends SingleChildWidget { | @@ -160,7 +160,7 @@ class Transform extends SingleChildWidget { | ||
| 160 | }) : transform = Matrix4.translationValues(offset.x, offset.y, 0), | 160 | }) : transform = Matrix4.translationValues(offset.x, offset.y, 0), |
| 161 | origin = null, | 161 | origin = null, |
| 162 | alignment = null, | 162 | alignment = null, |
| 163 | - _relayout = false, | 163 | + adjustLayout = false, |
| 164 | super(child: child); | 164 | super(child: child); |
| 165 | 165 | ||
| 166 | /// Creates a widget that scales its child uniformly. | 166 | /// Creates a widget that scales its child uniformly. |
| @@ -170,7 +170,7 @@ class Transform extends SingleChildWidget { | @@ -170,7 +170,7 @@ class Transform extends SingleChildWidget { | ||
| 170 | this.alignment = Alignment.center, | 170 | this.alignment = Alignment.center, |
| 171 | Widget child, | 171 | Widget child, |
| 172 | }) : transform = Matrix4.diagonal3Values(scale, scale, 1), | 172 | }) : transform = Matrix4.diagonal3Values(scale, scale, 1), |
| 173 | - _relayout = false, | 173 | + adjustLayout = false, |
| 174 | super(child: child); | 174 | super(child: child); |
| 175 | 175 | ||
| 176 | /// The matrix to transform the child by during painting. | 176 | /// The matrix to transform the child by during painting. |
| @@ -182,7 +182,7 @@ class Transform extends SingleChildWidget { | @@ -182,7 +182,7 @@ class Transform extends SingleChildWidget { | ||
| 182 | /// The alignment of the origin, relative to the size of the box. | 182 | /// The alignment of the origin, relative to the size of the box. |
| 183 | final Alignment alignment; | 183 | final Alignment alignment; |
| 184 | 184 | ||
| 185 | - final bool _relayout; | 185 | + final bool adjustLayout; |
| 186 | 186 | ||
| 187 | Matrix4 get _effectiveTransform { | 187 | Matrix4 get _effectiveTransform { |
| 188 | final Matrix4 result = Matrix4.identity(); | 188 | final Matrix4 result = Matrix4.identity(); |
| @@ -208,14 +208,13 @@ class Transform extends SingleChildWidget { | @@ -208,14 +208,13 @@ class Transform extends SingleChildWidget { | ||
| 208 | @override | 208 | @override |
| 209 | void layout(Context context, BoxConstraints constraints, | 209 | void layout(Context context, BoxConstraints constraints, |
| 210 | {bool parentUsesSize = false}) { | 210 | {bool parentUsesSize = false}) { |
| 211 | - if (!_relayout) { | 211 | + if (!adjustLayout) { |
| 212 | return super.layout(context, constraints, parentUsesSize: parentUsesSize); | 212 | return super.layout(context, constraints, parentUsesSize: parentUsesSize); |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | if (child != null) { | 215 | if (child != null) { |
| 216 | child.layout(context, constraints, parentUsesSize: parentUsesSize); | 216 | child.layout(context, constraints, parentUsesSize: parentUsesSize); |
| 217 | assert(child.box != null); | 217 | assert(child.box != null); |
| 218 | - box = child.box; | ||
| 219 | 218 | ||
| 220 | final Matrix4 mat = transform; | 219 | final Matrix4 mat = transform; |
| 221 | final List<double> values = mat.applyToVector3Array(<double>[ | 220 | final List<double> values = mat.applyToVector3Array(<double>[ |
| @@ -233,17 +232,23 @@ class Transform extends SingleChildWidget { | @@ -233,17 +232,23 @@ class Transform extends SingleChildWidget { | ||
| 233 | 0, | 232 | 0, |
| 234 | ]); | 233 | ]); |
| 235 | 234 | ||
| 235 | + final double dx = -math.min( | ||
| 236 | + math.min(math.min(values[0], values[3]), values[6]), values[9]); | ||
| 237 | + final double dy = -math.min( | ||
| 238 | + math.min(math.min(values[1], values[4]), values[7]), values[10]); | ||
| 239 | + | ||
| 236 | box = PdfRect.fromLTRB( | 240 | box = PdfRect.fromLTRB( |
| 237 | - math.min( | ||
| 238 | - math.min(math.min(values[0], values[3]), values[6]), values[9]), | ||
| 239 | - math.min( | ||
| 240 | - math.min(math.min(values[1], values[4]), values[7]), values[10]), | ||
| 241 | - math.max( | ||
| 242 | - math.max(math.max(values[0], values[3]), values[6]), values[9]), | ||
| 243 | - math.max( | ||
| 244 | - math.max(math.max(values[1], values[4]), values[7]), values[10]), | 241 | + 0, |
| 242 | + 0, | ||
| 243 | + math.max(math.max(math.max(values[0], values[3]), values[6]), | ||
| 244 | + values[9]) + | ||
| 245 | + dx, | ||
| 246 | + math.max(math.max(math.max(values[1], values[4]), values[7]), | ||
| 247 | + values[10]) + | ||
| 248 | + dy, | ||
| 245 | ); | 249 | ); |
| 246 | - transform.leftTranslate(-box.x, -box.y); | 250 | + |
| 251 | + transform.leftTranslate(dx, dy); | ||
| 247 | } else { | 252 | } else { |
| 248 | box = PdfRect.fromPoints(PdfPoint.zero, constraints.smallest); | 253 | box = PdfRect.fromPoints(PdfPoint.zero, constraints.smallest); |
| 249 | } | 254 | } |
| @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl | @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl | ||
| 4 | homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf | 4 | homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf |
| 5 | repository: https://github.com/DavBfr/dart_pdf | 5 | repository: https://github.com/DavBfr/dart_pdf |
| 6 | issue_tracker: https://github.com/DavBfr/dart_pdf/issues | 6 | issue_tracker: https://github.com/DavBfr/dart_pdf/issues |
| 7 | -version: 1.3.19 | 7 | +version: 1.3.20 |
| 8 | 8 | ||
| 9 | environment: | 9 | environment: |
| 10 | sdk: ">=2.1.0 <3.0.0" | 10 | sdk: ">=2.1.0 <3.0.0" |
| @@ -80,11 +80,13 @@ void main() { | @@ -80,11 +80,13 @@ void main() { | ||
| 80 | padding: const EdgeInsets.only(left: 30, top: 20), | 80 | padding: const EdgeInsets.only(left: 30, top: 20), |
| 81 | child: Lorem(textAlign: TextAlign.justify)), | 81 | child: Lorem(textAlign: TextAlign.justify)), |
| 82 | Expanded( | 82 | Expanded( |
| 83 | - child: Transform.scale( | ||
| 84 | - child: Transform.rotate( | ||
| 85 | - child: FittedBox(child: Text('Expanded')), | ||
| 86 | - angle: 0.2), | ||
| 87 | - scale: 0.9)), | 83 | + child: FittedBox( |
| 84 | + child: Transform.rotateBox( | ||
| 85 | + angle: 0.2, | ||
| 86 | + child: Text('Expanded'), | ||
| 87 | + ), | ||
| 88 | + ), | ||
| 89 | + ), | ||
| 88 | Container( | 90 | Container( |
| 89 | padding: const EdgeInsets.only(top: 5), | 91 | padding: const EdgeInsets.only(top: 5), |
| 90 | decoration: const BoxDecoration( | 92 | decoration: const BoxDecoration( |
-
Please register or login to post a comment