Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linphone-desktop
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
linphone-desktop
Commits
6c8a198c
Commit
6c8a198c
authored
Jun 19, 2017
by
Ronan Abhamon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(App): svg parser in progress
parent
323dcb16
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
7 deletions
+45
-7
ImageProvider.cpp
src/app/providers/ImageProvider.cpp
+45
-5
ImageProvider.hpp
src/app/providers/ImageProvider.hpp
+0
-2
No files found.
src/app/providers/ImageProvider.cpp
View file @
6c8a198c
...
...
@@ -20,9 +20,12 @@
* Author: Ronan Abhamon
*/
#include <QFile>
#include <QImage>
#include <QPainter>
#include <QSvgRenderer>
#include <QXmlStreamReader>
#include <QtDebug>
#include "ImageProvider.hpp"
...
...
@@ -38,19 +41,56 @@ ImageProvider::ImageProvider () : QQuickImageProvider(
QImage
ImageProvider
::
requestImage
(
const
QString
&
id
,
QSize
*
,
const
QSize
&
)
{
const
QString
path
=
QStringLiteral
(
":/assets/images/%1"
).
arg
(
id
);
// 1. Build svg renderer.
QSvgRenderer
renderer
(
path
);
// 1. Read and update XML content.
QFile
file
(
path
);
if
(
!
file
.
open
(
QIODevice
::
ReadOnly
))
return
QImage
();
// Invalid file.
QString
content
;
QXmlStreamReader
reader
(
&
file
);
bool
soFarSoGood
=
true
;
while
(
soFarSoGood
&&
!
reader
.
atEnd
())
switch
(
reader
.
readNext
())
{
case
QXmlStreamReader
:
:
NoToken
:
case
QXmlStreamReader
:
:
Invalid
:
break
;
case
QXmlStreamReader
:
:
StartDocument
:
case
QXmlStreamReader
:
:
EndDocument
:
case
QXmlStreamReader
:
:
StartElement
:
{
QXmlStreamAttributes
attributes
=
reader
.
attributes
();
}
break
;
case
QXmlStreamReader
:
:
EndElement
:
content
.
append
(
QStringLiteral
(
"</%1>"
).
arg
(
reader
.
name
().
toString
()));
break
;
case
QXmlStreamReader
:
:
Characters
:
case
QXmlStreamReader
:
:
Comment
:
case
QXmlStreamReader
:
:
DTD
:
case
QXmlStreamReader
:
:
EntityReference
:
case
QXmlStreamReader
:
:
ProcessingInstruction
:
break
;
}
qDebug
()
<<
content
;
if
(
!
soFarSoGood
||
reader
.
hasError
())
return
QImage
();
// Invalid file.
// 2. Build svg renderer.
QSvgRenderer
renderer
(
&
reader
);
if
(
!
renderer
.
isValid
())
return
QImage
(
path
);
// Not a svg file
?
return
QImage
(
path
);
// Not a svg file
.
//
2
. Create en empty image.
//
3
. Create en empty image.
const
QRectF
viewBox
=
renderer
.
viewBoxF
();
QImage
image
(
static_cast
<
int
>
(
viewBox
.
width
()),
static_cast
<
int
>
(
viewBox
.
height
()),
QImage
::
Format_ARGB32
);
if
(
image
.
isNull
())
return
QImage
();
// Memory cannot be allocated.
image
.
fill
(
0x00000000
);
//
3
. Paint!
//
4
. Paint!
QPainter
painter
(
&
image
);
renderer
.
render
(
&
painter
);
...
...
src/app/providers/ImageProvider.hpp
View file @
6c8a198c
...
...
@@ -35,8 +35,6 @@ public:
QImage
requestImage
(
const
QString
&
id
,
QSize
*
size
,
const
QSize
&
requestedSize
)
override
;
static
const
QString
PROVIDER_ID
;
private:
};
#endif // IMAGE_PROVIDER_H_
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment