Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
lifo
Nicolas Ollinger
OpenBoard
Commits
e755b5f0
Commit
e755b5f0
authored
Sep 02, 2011
by
Isa Kindov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modifier render to avoid to take big amount of memory
parent
60eacbf1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
4 additions
and
48 deletions
+4
-48
XPDFRenderer.cpp
src/pdf/XPDFRenderer.cpp
+3
-41
XPDFRenderer.h
src/pdf/XPDFRenderer.h
+1
-7
No files found.
src/pdf/XPDFRenderer.cpp
View file @
e755b5f0
...
@@ -28,33 +28,23 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile)
...
@@ -28,33 +28,23 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile)
,
mpSplashBitmap
(
0
)
,
mpSplashBitmap
(
0
)
,
mSplash
(
0
)
,
mSplash
(
0
)
{
{
Q_UNUSED
(
importingFile
);
if
(
!
globalParams
)
if
(
!
globalParams
)
{
{
// globalParams must be allocated once and never be deleted
// globalParams must be allocated once and never be deleted
// note that this is *not* an instance variable of this XPDFRenderer class
// note that this is *not* an instance variable of this XPDFRenderer class
globalParams
=
new
GlobalParams
(
0
);
globalParams
=
new
GlobalParams
(
0
);
globalParams
->
setupBaseFonts
(
QFile
::
encodeName
(
UBPlatformUtils
::
applicationResourcesDirectory
()
+
"/"
+
"fonts"
).
data
());
globalParams
->
setupBaseFonts
(
QFile
::
encodeName
(
UBPlatformUtils
::
applicationResourcesDirectory
()
+
"/"
+
"fonts"
).
data
());
//globalParams->setPrintCommands(gTrue);
}
}
mDocument
=
new
PDFDoc
(
new
GString
(
filename
.
toUtf8
().
data
()),
0
,
0
,
0
);
// the filename GString is deleted on PDFDoc desctruction
mDocument
=
new
PDFDoc
(
new
GString
(
filename
.
toUtf8
().
data
()),
0
,
0
,
0
);
// the filename GString is deleted on PDFDoc desctruction
sInstancesCount
.
ref
();
sInstancesCount
.
ref
();
bThumbGenerated
=
!
importingFile
;
mPagesMap
.
clear
();
mThumbs
.
clear
();
mThumbMap
.
clear
();
mScaleX
=
0.0
;
mScaleX
=
0.0
;
mScaleY
=
0.0
;
mScaleY
=
0.0
;
}
}
XPDFRenderer
::~
XPDFRenderer
()
XPDFRenderer
::~
XPDFRenderer
()
{
{
qDeleteAll
(
mThumbs
);
mThumbs
.
clear
();
qDeleteAll
(
mNumPageToPageMap
);
mNumPageToPageMap
.
clear
();
if
(
mSplash
){
if
(
mSplash
){
delete
mSplash
;
delete
mSplash
;
mSplash
=
NULL
;
mSplash
=
NULL
;
...
@@ -161,40 +151,12 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds)
...
@@ -161,40 +151,12 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds)
bZoomChanged
=
true
;
bZoomChanged
=
true
;
}
}
QImage
*
pdfImage
;
QImage
*
pdfImage
=
createPDFImage
(
pageNumber
,
xscale
,
yscale
,
bounds
);
// First verify if the thumbnails and the pages are generated
if
(
!
bThumbGenerated
)
{
if
(
!
mThumbMap
[
pageNumber
-
1
])
{
// Generate the thumbnail
mThumbs
<<
createPDFImage
(
pageNumber
,
xscale
,
yscale
,
bounds
);
mThumbMap
[
pageNumber
-
1
]
=
true
;
pdfImage
=
mThumbs
.
at
(
pageNumber
-
1
);
if
(
pageNumber
==
mDocument
->
getNumPages
())
{
bThumbGenerated
=
true
;
}
}
}
else
{
if
(
!
mPagesMap
[
pageNumber
-
1
]
||
bZoomChanged
)
{
// Generate the page
if
(
mPagesMap
[
pageNumber
-
1
])
delete
mNumPageToPageMap
[
pageNumber
];
mNumPageToPageMap
[
pageNumber
]
=
createPDFImage
(
pageNumber
,
xscale
,
yscale
,
bounds
);
mPagesMap
[
pageNumber
-
1
]
=
true
;
pdfImage
=
mNumPageToPageMap
[
pageNumber
];
}
}
QTransform
savedTransform
=
p
->
worldTransform
();
QTransform
savedTransform
=
p
->
worldTransform
();
p
->
resetTransform
();
p
->
resetTransform
();
p
->
drawImage
(
QPointF
(
savedTransform
.
dx
()
+
mSliceX
,
savedTransform
.
dy
()
+
mSliceY
),
*
pdfImage
);
p
->
drawImage
(
QPointF
(
savedTransform
.
dx
()
+
mSliceX
,
savedTransform
.
dy
()
+
mSliceY
),
*
pdfImage
);
p
->
setWorldTransform
(
savedTransform
);
p
->
setWorldTransform
(
savedTransform
);
delete
pdfImage
;
}
}
}
}
...
...
src/pdf/XPDFRenderer.h
View file @
e755b5f0
...
@@ -51,16 +51,10 @@ class XPDFRenderer : public PDFRenderer
...
@@ -51,16 +51,10 @@ class XPDFRenderer : public PDFRenderer
QImage
*
createPDFImage
(
int
pageNumber
,
const
qreal
xscale
=
0
.
5
,
const
qreal
yscale
=
0
.
5
,
const
QRectF
&
bounds
=
QRectF
());
QImage
*
createPDFImage
(
int
pageNumber
,
const
qreal
xscale
=
0
.
5
,
const
qreal
yscale
=
0
.
5
,
const
QRectF
&
bounds
=
QRectF
());
PDFDoc
*
mDocument
;
PDFDoc
*
mDocument
;
QList
<
QImage
*>
mThumbs
;
QMap
<
int
,
bool
>
mPagesMap
;
QMap
<
int
,
bool
>
mThumbMap
;
QMap
<
int
,
QImage
*>
mNumPageToPageMap
;
static
QAtomicInt
sInstancesCount
;
static
QAtomicInt
sInstancesCount
;
qreal
mSliceX
;
qreal
mSliceX
;
qreal
mSliceY
;
qreal
mSliceY
;
int
bPD
;
bool
bThumbGenerated
;
bool
bPagesGenerated
;
SplashBitmap
*
mpSplashBitmap
;
SplashBitmap
*
mpSplashBitmap
;
SplashOutputDev
*
mSplash
;
SplashOutputDev
*
mSplash
;
qreal
mScaleX
;
qreal
mScaleX
;
...
...
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