Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David PHAM-VAN
2021-04-02 13:35:57 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ee6a23b754c449b7e50aef2d0012f4b694d641e4
ee6a23b7
1 parent
ef6944ac
Add SVG Color filter
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
37 additions
and
9 deletions
pdf/CHANGELOG.md
pdf/lib/src/svg/color.dart
pdf/lib/src/svg/painter.dart
pdf/lib/src/svg/parser.dart
pdf/lib/src/widgets/svg.dart
pdf/CHANGELOG.md
View file @
ee6a23b
...
...
@@ -5,6 +5,7 @@
-
Fix documentation
-
Add Positioned.fill()
-
Improve GraphicState
-
Add SVG Color filter
## 3.1.0
...
...
pdf/lib/src/svg/color.dart
View file @
ee6a23b
...
...
@@ -38,6 +38,10 @@ class SvgColor {
return
none
;
}
if
(
painter
.
parser
.
colorFilter
!=
null
)
{
return
SvgColor
(
color:
painter
.
parser
.
colorFilter
);
}
if
(
svgColors
.
containsKey
(
color
))
{
return
SvgColor
(
color:
svgColors
[
color
]);
}
...
...
pdf/lib/src/svg/painter.dart
View file @
ee6a23b
...
...
@@ -15,6 +15,7 @@
*/
import
'package:pdf/pdf.dart'
;
import
'package:pdf/src/svg/color.dart'
;
import
'package:pdf/widgets.dart'
;
import
'brush.dart'
;
...
...
@@ -38,11 +39,12 @@ class SvgPainter {
final
PdfRect
boundingBox
;
void
paint
()
{
SvgGroup
.
fromXml
(
parser
.
root
,
this
,
SvgBrush
.
defaultContext
,
).
paint
(
_canvas
!);
final
brush
=
parser
.
colorFilter
==
null
?
SvgBrush
.
defaultContext
:
SvgBrush
.
defaultContext
.
copyWith
(
fill:
SvgColor
(
color:
parser
.
colorFilter
));
SvgGroup
.
fromXml
(
parser
.
root
,
this
,
brush
).
paint
(
_canvas
!);
}
final
_fontCache
=
<
String
,
Font
>{};
...
...
pdf/lib/src/svg/parser.dart
View file @
ee6a23b
...
...
@@ -22,7 +22,10 @@ import 'brush.dart';
class
SvgParser
{
/// Create an SVG parser
factory
SvgParser
({
required
XmlDocument
xml
})
{
factory
SvgParser
({
required
XmlDocument
xml
,
PdfColor
?
colorFilter
,
})
{
final
root
=
xml
.
rootElement
;
final
vbattr
=
root
.
getAttribute
(
'viewBox'
);
...
...
@@ -45,10 +48,22 @@ class SvgParser {
final
viewBox
=
PdfRect
(
fvb
[
0
],
fvb
[
1
],
fvb
[
2
],
fvb
[
3
]);
return
SvgParser
.
_
(
width
,
height
,
viewBox
,
root
);
return
SvgParser
.
_
(
width
,
height
,
viewBox
,
root
,
colorFilter
,
);
}
SvgParser
.
_
(
this
.
width
,
this
.
height
,
this
.
viewBox
,
this
.
root
);
SvgParser
.
_
(
this
.
width
,
this
.
height
,
this
.
viewBox
,
this
.
root
,
this
.
colorFilter
,
);
final
PdfRect
viewBox
;
...
...
@@ -58,6 +73,8 @@ class SvgParser {
final
XmlElement
root
;
final
PdfColor
?
colorFilter
;
static
final
_transformParameterRegExp
=
RegExp
(
r'[\w.-]+(px|pt|em|cm|mm|in|%|)'
);
...
...
pdf/lib/src/widgets/svg.dart
View file @
ee6a23b
...
...
@@ -31,9 +31,13 @@ class SvgImage extends Widget {
bool
clip
=
true
,
double
?
width
,
double
?
height
,
PdfColor
?
colorFilter
,
})
{
final
xml
=
XmlDocument
.
parse
(
svg
);
final
parser
=
SvgParser
(
xml:
xml
);
final
parser
=
SvgParser
(
xml:
xml
,
colorFilter:
colorFilter
,
);
return
SvgImage
.
_fromParser
(
parser
,
...
...
Please
register
or
login
to post a comment