summaryrefslogtreecommitdiff
path: root/poppler/PSOutputDev.cc
diff options
context:
space:
mode:
authorOliver Sander <oliver.sander@tu-dresden.de>2021-12-30 10:46:46 +0100
committerAlbert Astals Cid <tsdgeos@yahoo.es>2022-01-05 13:45:07 +0000
commit953c9c762f346236d856327833f3a550b993138a (patch)
tree0df8302ad04fb195c60837ddc068d301eeeffd67 /poppler/PSOutputDev.cc
parent9389df54ca8f9c182153aa13eb1109ea98fb307c (diff)
Let FoFiTrueType::make and ...::load return std::unique_ptr
Because these methods do release the object ownership.
Diffstat (limited to 'poppler/PSOutputDev.cc')
-rw-r--r--poppler/PSOutputDev.cc30
1 files changed, 9 insertions, 21 deletions
diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index d014f471..fb4af2e2 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -2405,7 +2405,6 @@ void PSOutputDev::setupEmbeddedOpenTypeT1CFont(GfxFont *font, Ref *id, GooString
{
char *fontBuf;
int fontLen;
- FoFiTrueType *ffTT;
int i;
// check if font is already embedded
@@ -2432,11 +2431,10 @@ void PSOutputDev::setupEmbeddedOpenTypeT1CFont(GfxFont *font, Ref *id, GooString
// convert it to a Type 1 font
if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
- if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf, fontLen)) {
if (ffTT->isOpenTypeCFF()) {
ffTT->convertToType1(psName->c_str(), nullptr, true, outputFunc, outputStream);
}
- delete ffTT;
}
gfree(fontBuf);
}
@@ -2449,7 +2447,6 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *p
{
char *fontBuf;
int fontLen;
- FoFiTrueType *ffTT;
int *codeToGID;
// beginning comment
@@ -2460,8 +2457,8 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *p
// convert it to a Type 42 font
if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
- if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) {
- codeToGID = ((Gfx8BitFont *)font)->getCodeToGIDMap(ffTT);
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf, fontLen)) {
+ codeToGID = ((Gfx8BitFont *)font)->getCodeToGIDMap(ffTT.get());
ffTT->convertToType42(psName->c_str(), ((Gfx8BitFont *)font)->getHasEncoding() ? ((Gfx8BitFont *)font)->getEncoding() : nullptr, codeToGID, outputFunc, outputStream);
if (codeToGID) {
if (font8InfoLen >= font8InfoSize) {
@@ -2472,7 +2469,6 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *p
font8Info[font8InfoLen].codeToGID = codeToGID;
++font8InfoLen;
}
- delete ffTT;
}
gfree(fontBuf);
}
@@ -2483,7 +2479,6 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *p
void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, const GooString *fileName, GooString *psName)
{
- FoFiTrueType *ffTT;
int *codeToGID;
// beginning comment
@@ -2493,8 +2488,8 @@ void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, const GooString *file
embFontList->append("\n");
// convert it to a Type 42 font
- if ((ffTT = FoFiTrueType::load(fileName->c_str()))) {
- codeToGID = ((Gfx8BitFont *)font)->getCodeToGIDMap(ffTT);
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::load(fileName->c_str())) {
+ codeToGID = ((Gfx8BitFont *)font)->getCodeToGIDMap(ffTT.get());
ffTT->convertToType42(psName->c_str(), ((Gfx8BitFont *)font)->getHasEncoding() ? ((Gfx8BitFont *)font)->getEncoding() : nullptr, codeToGID, outputFunc, outputStream);
if (codeToGID) {
if (font8InfoLen >= font8InfoSize) {
@@ -2505,7 +2500,6 @@ void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, const GooString *file
font8Info[font8InfoLen].codeToGID = codeToGID;
++font8InfoLen;
}
- delete ffTT;
}
// ending comment
@@ -2524,7 +2518,6 @@ void PSOutputDev::updateFontMaxValidGlyph(GfxFont *font, int maxValidGlyph)
void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, const GooString *fileName, GooString *psName, bool needVerticalMetrics)
{
- FoFiTrueType *ffTT;
int *codeToGID;
int codeToGIDLen;
@@ -2536,7 +2529,7 @@ void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, const GooString *f
// convert it to a Type 0 font
//~ this should use fontNum to load the correct font
- if ((ffTT = FoFiTrueType::load(fileName->c_str()))) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::load(fileName->c_str())) {
// check for embedding permission
if (ffTT->getEmbeddingRights() >= 1) {
@@ -2549,7 +2542,7 @@ void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, const GooString *f
memcpy(codeToGID, ((GfxCIDFont *)font)->getCIDToGID(), codeToGIDLen * sizeof(int));
}
} else {
- codeToGID = ((GfxCIDFont *)font)->getCodeToGIDMap(ffTT, &codeToGIDLen);
+ codeToGID = ((GfxCIDFont *)font)->getCodeToGIDMap(ffTT.get(), &codeToGIDLen);
}
if (ffTT->isOpenTypeCFF()) {
ffTT->convertToCIDType0(psName->c_str(), codeToGID, codeToGIDLen, outputFunc, outputStream);
@@ -2566,7 +2559,6 @@ void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, const GooString *f
} else {
error(errSyntaxError, -1, "TrueType font '{0:s}' does not allow embedding", font->getName() ? font->getName()->c_str() : "(unnamed)");
}
- delete ffTT;
}
// ending comment
@@ -2625,7 +2617,6 @@ void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString
{
char *fontBuf;
int fontLen;
- FoFiTrueType *ffTT;
// beginning comment
writePSFmt("%%BeginResource: font {0:t}\n", psName);
@@ -2635,7 +2626,7 @@ void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString
// convert it to a Type 0 font
if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
- if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf, fontLen)) {
if (level >= psLevel3) {
// Level 3: use a CID font
ffTT->convertToCIDType2(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), needVerticalMetrics, outputFunc, outputStream);
@@ -2645,7 +2636,6 @@ void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString
ffTT->convertToType0(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), needVerticalMetrics, &maxValidGlyph, outputFunc, outputStream);
updateFontMaxValidGlyph(font, maxValidGlyph);
}
- delete ffTT;
}
gfree(fontBuf);
}
@@ -2658,7 +2648,6 @@ void PSOutputDev::setupEmbeddedOpenTypeCFFFont(GfxFont *font, Ref *id, GooString
{
char *fontBuf;
int fontLen;
- FoFiTrueType *ffTT;
int i;
// check if font is already embedded
@@ -2685,7 +2674,7 @@ void PSOutputDev::setupEmbeddedOpenTypeCFFFont(GfxFont *font, Ref *id, GooString
// convert it to a Type 0 font
if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) {
- if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) {
+ if (std::unique_ptr<FoFiTrueType> ffTT = FoFiTrueType::make(fontBuf, fontLen)) {
if (ffTT->isOpenTypeCFF()) {
if (level >= psLevel3) {
// Level 3: use a CID font
@@ -2695,7 +2684,6 @@ void PSOutputDev::setupEmbeddedOpenTypeCFFFont(GfxFont *font, Ref *id, GooString
ffTT->convertToType0(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), outputFunc, outputStream);
}
}
- delete ffTT;
}
gfree(fontBuf);
}