summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2016-04-21 16:05:49 -0700
committerCommit bot <commit-bot@chromium.org>2016-04-21 16:05:49 -0700
commit00124c928e7513530901a3c7b0a0b928efb9d628 (patch)
treefdc14a4d71d8d08852a2112f7a7d3b955304e14c /core
parent6f5325e538f31a37bb97a6a71f5c8cd64c6f7639 (diff)
downloadpdfium-00124c928e7513530901a3c7b0a0b928efb9d628.tar.xz
Remove more CFX_ArrayTemplate from fpdf_edit_doc.cpp
Review URL: https://codereview.chromium.org/1909213002
Diffstat (limited to 'core')
-rw-r--r--core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp74
1 files changed, 27 insertions, 47 deletions
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
index c3d4ca621a..61bbf67853 100644
--- a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
@@ -6,6 +6,8 @@
#include <limits.h>
+#include <vector>
+
#include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
#include "core/fpdfapi/fpdf_font/include/cpdf_fontencoding.h"
#include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
@@ -16,6 +18,7 @@
#include "core/fpdfapi/fpdf_parser/include/cpdf_reference.h"
#include "core/fpdfapi/include/cpdf_modulemgr.h"
#include "core/fpdfapi/ipdf_rendermodule.h"
+#include "third_party/base/stl_util.h"
CPDF_Document::CPDF_Document() : CPDF_IndirectObjectHolder(NULL) {
m_pRootDict = NULL;
@@ -176,10 +179,12 @@ static const uint16_t g_FX_CP1257Unicodes[128] = {
0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C,
0x017E, 0x02D9,
};
-typedef struct {
+
+struct FX_CharsetUnicodes {
uint8_t m_Charset;
const uint16_t* m_pUnicodes;
-} FX_CharsetUnicodes;
+};
+
const FX_CharsetUnicodes g_FX_CharsetUnicodes[] = {
{FXFONT_THAI_CHARSET, g_FX_CP874Unicodes},
{FXFONT_EASTEUROPE_CHARSET, g_FX_CP1250Unicodes},
@@ -190,6 +195,7 @@ const FX_CharsetUnicodes g_FX_CharsetUnicodes[] = {
{FXFONT_ARABIC_CHARSET, g_FX_CP1256Unicodes},
{FXFONT_BALTIC_CHARSET, g_FX_CP1257Unicodes},
};
+
#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_)
static void _InsertWidthArray(HDC hDC,
int start,
@@ -500,20 +506,16 @@ static void _CFString2CFXByteString(CFStringRef src, CFX_ByteString& dest) {
dest = (FX_CHAR*)pBuffer;
free(pBuffer);
}
-FX_BOOL IsHasCharSet(CFArrayRef languages,
- const CFX_ArrayTemplate<uint32_t>& charSets) {
- int iCount = charSets.GetSize();
+static bool IsHasCharSet(CFArrayRef languages,
+ const std::vector<uint32_t>& charSets) {
for (int i = 0; i < CFArrayGetCount(languages); ++i) {
CFStringRef language = (CFStringRef)CFArrayGetValueAtIndex(languages, i);
uint32_t CharSet = FX_GetCharsetFromLang(
CFStringGetCStringPtr(language, kCFStringEncodingMacRoman), -1);
- for (int j = 0; j < iCount; ++j) {
- if (CharSet == charSets[j]) {
- return TRUE;
- }
- }
+ if (pdfium::ContainsValue(charSets, CharSet))
+ return true;
}
- return FALSE;
+ return false;
}
void FX_GetCharWidth(CTFontRef font, UniChar start, UniChar end, int* width) {
CGFloat size = CTFontGetSize(font);
@@ -562,7 +564,6 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
return NULL;
}
CFX_ByteString basefont;
- FX_BOOL bCJK = FALSE;
int flags = 0, italicangle = 0, ascend = 0, descend = 0, capheight = 0,
bbox[4];
FXSYS_memset(bbox, 0, sizeof(int) * 4);
@@ -572,14 +573,10 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
CFRelease(descriptor);
return NULL;
}
- CFX_ArrayTemplate<uint32_t> charSets;
- charSets.Add(FXFONT_CHINESEBIG5_CHARSET);
- charSets.Add(FXFONT_GB2312_CHARSET);
- charSets.Add(FXFONT_HANGEUL_CHARSET);
- charSets.Add(FXFONT_SHIFTJIS_CHARSET);
- if (IsHasCharSet(languages, charSets)) {
- bCJK = TRUE;
- }
+
+ bool bCJK = IsHasCharSet(languages,
+ {FXFONT_CHINESEBIG5_CHARSET, FXFONT_GB2312_CHARSET,
+ FXFONT_HANGEUL_CHARSET, FXFONT_SHIFTJIS_CHARSET});
CFRelease(descriptor);
CFDictionaryRef traits = (CFDictionaryRef)CTFontCopyTraits(font);
if (!traits) {
@@ -629,14 +626,9 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
CPDF_Dictionary* pFontDict = pBaseDict;
if (!bCJK) {
- charSets.RemoveAll();
- charSets.Add(FXFONT_ANSI_CHARSET);
- charSets.Add(FXFONT_DEFAULT_CHARSET);
- charSets.Add(FXFONT_SYMBOL_CHARSET);
- if (IsHasCharSet(languages, charSets)) {
- charSets.RemoveAll();
- charSets.Add(FXFONT_SYMBOL_CHARSET);
- if (IsHasCharSet(languages, charSets)) {
+ if (IsHasCharSet(languages, {FXFONT_ANSI_CHARSET, FXFONT_DEFAULT_CHARSET,
+ FXFONT_SYMBOL_CHARSET})) {
+ if (IsHasCharSet(languages, {FXFONT_SYMBOL_CHARSET})) {
flags |= PDFFONT_SYMBOLIC;
} else {
flags |= PDFFONT_NONSYMBOLIC;
@@ -645,15 +637,11 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
} else {
flags |= PDFFONT_NONSYMBOLIC;
size_t i;
- for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes);
- i++) {
- charSets.RemoveAll();
- charSets.Add(g_FX_CharsetUnicodes[i].m_Charset);
- if (IsHasCharSet(languages, charSets)) {
+ for (i = 0; i < FX_ArraySize(g_FX_CharsetUnicodes); ++i) {
+ if (IsHasCharSet(languages, {g_FX_CharsetUnicodes[i].m_Charset}))
break;
- }
}
- if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) {
+ if (i < FX_ArraySize(g_FX_CharsetUnicodes)) {
CPDF_Dictionary* pEncoding = new CPDF_Dictionary;
pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding");
CPDF_Array* pArray = new CPDF_Array;
@@ -699,9 +687,7 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
int supplement;
FX_BOOL bFound = FALSE;
CPDF_Array* pWidthArray = new CPDF_Array;
- charSets.RemoveAll();
- charSets.Add(FXFONT_CHINESEBIG5_CHARSET);
- if (IsHasCharSet(languages, charSets)) {
+ if (IsHasCharSet(languages, {FXFONT_CHINESEBIG5_CHARSET})) {
cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H";
ordering = "CNS1";
supplement = 4;
@@ -709,9 +695,7 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
_InsertWidthArray(font, 0x20, 0x7e, pWidthArray);
bFound = TRUE;
}
- charSets.RemoveAll();
- charSets.Add(FXFONT_GB2312_CHARSET);
- if (!bFound && IsHasCharSet(languages, charSets)) {
+ if (!bFound && IsHasCharSet(languages, {FXFONT_GB2312_CHARSET})) {
cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
ordering = "GB1", supplement = 2;
pWidthArray->AddInteger(7716);
@@ -720,9 +704,7 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
_InsertWidthArray(font, 0x21, 0x7e, pWidthArray);
bFound = TRUE;
}
- charSets.RemoveAll();
- charSets.Add(FXFONT_HANGEUL_CHARSET);
- if (!bFound && IsHasCharSet(languages, charSets)) {
+ if (!bFound && IsHasCharSet(languages, {FXFONT_HANGEUL_CHARSET})) {
cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
ordering = "Korea1";
supplement = 2;
@@ -730,9 +712,7 @@ CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
_InsertWidthArray(font, 0x20, 0x7e, pWidthArray);
bFound = TRUE;
}
- charSets.RemoveAll();
- charSets.Add(FXFONT_SHIFTJIS_CHARSET);
- if (!bFound && IsHasCharSet(languages, charSets)) {
+ if (!bFound && IsHasCharSet(languages, {FXFONT_SHIFTJIS_CHARSET})) {
cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
ordering = "Japan1";
supplement = 5;