Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: xfa/fxfa/parser/xfa_localemgr.cpp

Issue 2241863002: Clean up XFA locale and locale manager (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: small fix Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/xfa_localemgr.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/parser/xfa_localemgr.h" 7 #include "xfa/fxfa/parser/xfa_localemgr.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 0x1A, 0xA6, 0xA8, 0x62, 0xAA, 0x19, 0x8C, 0x59, 0x95, 0x54, 0x31, 0x5A, 1026 0x1A, 0xA6, 0xA8, 0x62, 0xAA, 0x19, 0x8C, 0x59, 0x95, 0x54, 0x31, 0x5A,
1027 0xD2, 0xFE, 0x4A, 0x59, 0xC0, 0x55, 0x8A, 0xB7, 0x72, 0x29, 0xB3, 0x54, 1027 0xD2, 0xFE, 0x4A, 0x59, 0xC0, 0x55, 0x8A, 0xB7, 0x72, 0x29, 0xB3, 0x54,
1028 0xAE, 0xC2, 0x23, 0x96, 0x47, 0x59, 0xAE, 0xCB, 0x5A, 0x06, 0x61, 0x91, 1028 0xAE, 0xC2, 0x23, 0x96, 0x47, 0x59, 0xAE, 0xCB, 0x5A, 0x06, 0x61, 0x91,
1029 0xD8, 0xD6, 0x86, 0x8C, 0xE6, 0x89, 0x59, 0xD7, 0x14, 0x9E, 0xD3, 0xD4, 1029 0xD8, 0xD6, 0x86, 0x8C, 0xE6, 0x89, 0x59, 0xD7, 0x14, 0x9E, 0xD3, 0xD4,
1030 0xB3, 0xC7, 0x48, 0xCA, 0x27, 0x43, 0x01, 0x94, 0x3A, 0x09, 0xC8, 0xE5, 1030 0xB3, 0xC7, 0x48, 0xCA, 0x27, 0x43, 0x01, 0x94, 0x3A, 0x09, 0xC8, 0xE5,
1031 0xDC, 0xA3, 0x81, 0x5B, 0xE3, 0x59, 0xA2, 0x27, 0xB9, 0xB4, 0x0A, 0x19, 1031 0xDC, 0xA3, 0x81, 0x5B, 0xE3, 0x59, 0xA2, 0x27, 0xB9, 0xB4, 0x0A, 0x19,
1032 0x89, 0x26, 0xB5, 0x2C, 0xA3, 0xB6, 0x4E, 0x5C, 0xA6, 0x17, 0xA4, 0x7B, 1032 0x89, 0x26, 0xB5, 0x2C, 0xA3, 0xB6, 0x4E, 0x5C, 0xA6, 0x17, 0xA4, 0x7B,
1033 0xB3, 0x85, 0xFA, 0x59, 0x2A, 0x7A, 0xFF, 0x3D, 0xC4, 0x3F, 0xDE, 0xCB, 1033 0xB3, 0x85, 0xFA, 0x59, 0x2A, 0x7A, 0xFF, 0x3D, 0xC4, 0x3F, 0xDE, 0xCB,
1034 0x8B, 0xC4}; 1034 0x8B, 0xC4};
1035 1035
1036 // TODO(weili): Change this function to return std::unique_ptr type. 1036 static std::unique_ptr<IFX_Locale> XFA_GetLocaleFromBuffer(const uint8_t* pBuf,
1037 static IFX_Locale* XFA_GetLocaleFromBuffer(const uint8_t* pBuf, int nBufLen) { 1037 int nBufLen) {
1038 if (!pBuf || nBufLen <= 0) { 1038 if (!pBuf || nBufLen <= 0)
1039 return nullptr; 1039 return nullptr;
1040 }
1041 CFX_GEModule* pGeModule = CFX_GEModule::Get(); 1040 CFX_GEModule* pGeModule = CFX_GEModule::Get();
1042 if (!pGeModule) { 1041 if (!pGeModule)
1043 return nullptr; 1042 return nullptr;
1044 } 1043
1045 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule(); 1044 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule();
1046 if (!pCodecMgr) { 1045 if (!pCodecMgr)
1047 return nullptr; 1046 return nullptr;
1048 } 1047
1049 std::unique_ptr<CXML_Element> pLocale; 1048 std::unique_ptr<CXML_Element> pLocale;
1050 uint8_t* pOut = nullptr; 1049 uint8_t* pOut = nullptr;
1051 uint32_t dwSize; 1050 uint32_t dwSize;
1052 pCodecMgr->GetFlateModule()->FlateOrLZWDecode(FALSE, pBuf, nBufLen, TRUE, 0, 1051 pCodecMgr->GetFlateModule()->FlateOrLZWDecode(FALSE, pBuf, nBufLen, TRUE, 0,
1053 0, 0, 0, 0, pOut, dwSize); 1052 0, 0, 0, 0, pOut, dwSize);
1054 if (pOut) { 1053 if (pOut) {
1055 pLocale.reset(CXML_Element::Parse(pOut, dwSize)); 1054 pLocale.reset(CXML_Element::Parse(pOut, dwSize));
1056 FX_Free(pOut); 1055 FX_Free(pOut);
1057 } 1056 }
1058 return pLocale ? new CXFA_XMLLocale(std::move(pLocale)) : nullptr; 1057 return pLocale ? std::unique_ptr<IFX_Locale>(
1058 new CXFA_XMLLocale(std::move(pLocale)))
1059 : nullptr;
1059 } 1060 }
1060 1061
1061 static uint16_t XFA_GetLanguage(CFX_WideString wsLanguage) { 1062 static uint16_t XFA_GetLanguage(CFX_WideString wsLanguage) {
1062 uint16_t dwLangueID = XFA_LANGID_en_US; 1063 uint16_t dwLangueID = XFA_LANGID_en_US;
1063 if (wsLanguage.GetLength() < 2) { 1064 if (wsLanguage.GetLength() < 2) {
1064 return dwLangueID; 1065 return dwLangueID;
1065 } 1066 }
1066 wsLanguage.MakeLower(); 1067 wsLanguage.MakeLower();
1067 uint32_t dwIDFirst = wsLanguage.GetAt(0) << 8 | wsLanguage.GetAt(1); 1068 uint32_t dwIDFirst = wsLanguage.GetAt(0) << 8 | wsLanguage.GetAt(1);
1068 uint32_t dwIDSecond = wsLanguage.GetLength() >= 5 1069 uint32_t dwIDSecond = wsLanguage.GetLength() >= 5
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1112 break; 1113 break;
1113 case FXBSTR_ID(0, 0, 'n', 'l'): 1114 case FXBSTR_ID(0, 0, 'n', 'l'):
1114 dwLangueID = XFA_LANGID_nl_NL; 1115 dwLangueID = XFA_LANGID_nl_NL;
1115 break; 1116 break;
1116 case FXBSTR_ID(0, 0, 'r', 'u'): 1117 case FXBSTR_ID(0, 0, 'r', 'u'):
1117 dwLangueID = XFA_LANGID_ru_RU; 1118 dwLangueID = XFA_LANGID_ru_RU;
1118 break; 1119 break;
1119 } 1120 }
1120 return dwLangueID; 1121 return dwLangueID;
1121 } 1122 }
1123
1122 CXFA_LocaleMgr::CXFA_LocaleMgr(CXFA_Node* pLocaleSet, CFX_WideString wsDeflcid) 1124 CXFA_LocaleMgr::CXFA_LocaleMgr(CXFA_Node* pLocaleSet, CFX_WideString wsDeflcid)
1123 : m_dwLocaleFlags(0x00) { 1125 : m_dwLocaleFlags(0x00) {
1124 m_dwDeflcid = XFA_GetLanguage(wsDeflcid); 1126 m_dwDeflcid = XFA_GetLanguage(wsDeflcid);
1125 if (pLocaleSet) { 1127 if (pLocaleSet) {
1126 CXFA_Node* pNodeLocale = pLocaleSet->GetNodeItem(XFA_NODEITEM_FirstChild); 1128 CXFA_Node* pNodeLocale = pLocaleSet->GetNodeItem(XFA_NODEITEM_FirstChild);
1127 while (pNodeLocale) { 1129 while (pNodeLocale) {
1128 m_LocaleArray.Add(new CXFA_NodeLocale(pNodeLocale)); 1130 m_LocaleArray.emplace_back(new CXFA_NodeLocale(pNodeLocale));
1129 pNodeLocale = pNodeLocale->GetNodeItem(XFA_NODEITEM_NextSibling); 1131 pNodeLocale = pNodeLocale->GetNodeItem(XFA_NODEITEM_NextSibling);
1130 } 1132 }
1131 } 1133 }
1132 m_pDefLocale = GetLocaleByName(wsDeflcid); 1134 m_pDefLocale = GetLocaleByName(wsDeflcid);
1133 } 1135 }
1134 CXFA_LocaleMgr::~CXFA_LocaleMgr() {
1135 for (int32_t i = 0; i < m_LocaleArray.GetSize(); i++)
1136 m_LocaleArray[i]->Release();
1137 1136
1138 for (int32_t j = 0; j < m_XMLLocaleArray.GetSize(); j++) 1137 CXFA_LocaleMgr::~CXFA_LocaleMgr() {}
1139 m_XMLLocaleArray[j]->Release(); 1138
1140 } 1139 uint16_t CXFA_LocaleMgr::GetDefLocaleID() const {
1141 void CXFA_LocaleMgr::Release() {
1142 delete this;
1143 }
1144 uint16_t CXFA_LocaleMgr::GetDefLocaleID() {
1145 return m_dwDeflcid; 1140 return m_dwDeflcid;
1146 } 1141 }
1147 1142
1148 IFX_Locale* CXFA_LocaleMgr::GetDefLocale() { 1143 IFX_Locale* CXFA_LocaleMgr::GetDefLocale() {
1149 if (m_pDefLocale) 1144 if (m_pDefLocale)
1150 return m_pDefLocale; 1145 return m_pDefLocale;
1151 1146
1152 if (m_LocaleArray.GetSize()) 1147 if (!m_LocaleArray.empty())
1153 return m_LocaleArray[0]; 1148 return m_LocaleArray[0].get();
1154 1149
1155 if (m_XMLLocaleArray.GetSize()) 1150 if (!m_XMLLocaleArray.empty())
1156 return m_XMLLocaleArray[0]; 1151 return m_XMLLocaleArray[0].get();
1157 1152
1158 m_pDefLocale = GetLocale(m_dwDeflcid); 1153 std::unique_ptr<IFX_Locale> locale(GetLocale(m_dwDeflcid));
1159 if (m_pDefLocale) 1154 m_pDefLocale = locale.get();
1160 m_XMLLocaleArray.Add(m_pDefLocale); 1155 if (locale)
1156 m_XMLLocaleArray.push_back(std::move(locale));
1161 1157
1162 return m_pDefLocale; 1158 return m_pDefLocale;
1163 } 1159 }
1164 1160
1165 IFX_Locale* CXFA_LocaleMgr::GetLocale(uint16_t lcid) { 1161 std::unique_ptr<IFX_Locale> CXFA_LocaleMgr::GetLocale(uint16_t lcid) {
1166 IFX_Locale* pLocal = nullptr;
1167 switch (lcid) { 1162 switch (lcid) {
1168 case XFA_LANGID_zh_CN: 1163 case XFA_LANGID_zh_CN:
1169 pLocal = XFA_GetLocaleFromBuffer(g_zhCN_Locale, sizeof(g_zhCN_Locale)); 1164 return XFA_GetLocaleFromBuffer(g_zhCN_Locale, sizeof(g_zhCN_Locale));
1170 break;
1171 case XFA_LANGID_zh_TW: 1165 case XFA_LANGID_zh_TW:
1172 pLocal = XFA_GetLocaleFromBuffer(g_zhTW_Locale, sizeof(g_zhTW_Locale)); 1166 return XFA_GetLocaleFromBuffer(g_zhTW_Locale, sizeof(g_zhTW_Locale));
1173 break;
1174 case XFA_LANGID_zh_HK: 1167 case XFA_LANGID_zh_HK:
1175 pLocal = XFA_GetLocaleFromBuffer(g_zhHK_Locale, sizeof(g_zhHK_Locale)); 1168 return XFA_GetLocaleFromBuffer(g_zhHK_Locale, sizeof(g_zhHK_Locale));
1176 break;
1177 case XFA_LANGID_ja_JP: 1169 case XFA_LANGID_ja_JP:
1178 pLocal = XFA_GetLocaleFromBuffer(g_jaJP_Locale, sizeof(g_jaJP_Locale)); 1170 return XFA_GetLocaleFromBuffer(g_jaJP_Locale, sizeof(g_jaJP_Locale));
1179 break;
1180 case XFA_LANGID_ko_KR: 1171 case XFA_LANGID_ko_KR:
1181 pLocal = XFA_GetLocaleFromBuffer(g_koKR_Locale, sizeof(g_koKR_Locale)); 1172 return XFA_GetLocaleFromBuffer(g_koKR_Locale, sizeof(g_koKR_Locale));
1182 break;
1183 case XFA_LANGID_en_GB: 1173 case XFA_LANGID_en_GB:
1184 pLocal = XFA_GetLocaleFromBuffer(g_enGB_Locale, sizeof(g_enGB_Locale)); 1174 return XFA_GetLocaleFromBuffer(g_enGB_Locale, sizeof(g_enGB_Locale));
1185 break;
1186 case XFA_LANGID_es_LA: 1175 case XFA_LANGID_es_LA:
1187 pLocal = XFA_GetLocaleFromBuffer(g_esLA_Locale, sizeof(g_esLA_Locale)); 1176 return XFA_GetLocaleFromBuffer(g_esLA_Locale, sizeof(g_esLA_Locale));
1188 break;
1189 case XFA_LANGID_es_ES: 1177 case XFA_LANGID_es_ES:
1190 pLocal = XFA_GetLocaleFromBuffer(g_esES_Locale, sizeof(g_esES_Locale)); 1178 return XFA_GetLocaleFromBuffer(g_esES_Locale, sizeof(g_esES_Locale));
1191 break;
1192 case XFA_LANGID_de_DE: 1179 case XFA_LANGID_de_DE:
1193 pLocal = XFA_GetLocaleFromBuffer(g_deDE_Loacale, sizeof(g_deDE_Loacale)); 1180 return XFA_GetLocaleFromBuffer(g_deDE_Loacale, sizeof(g_deDE_Loacale));
1194 break;
1195 case XFA_LANGID_fr_FR: 1181 case XFA_LANGID_fr_FR:
1196 pLocal = XFA_GetLocaleFromBuffer(g_frFR_Locale, sizeof(g_frFR_Locale)); 1182 return XFA_GetLocaleFromBuffer(g_frFR_Locale, sizeof(g_frFR_Locale));
1197 break;
1198 case XFA_LANGID_it_IT: 1183 case XFA_LANGID_it_IT:
1199 pLocal = XFA_GetLocaleFromBuffer(g_itIT_Locale, sizeof(g_itIT_Locale)); 1184 return XFA_GetLocaleFromBuffer(g_itIT_Locale, sizeof(g_itIT_Locale));
1200 break;
1201 case XFA_LANGID_pt_BR: 1185 case XFA_LANGID_pt_BR:
1202 pLocal = XFA_GetLocaleFromBuffer(g_ptBR_Locale, sizeof(g_ptBR_Locale)); 1186 return XFA_GetLocaleFromBuffer(g_ptBR_Locale, sizeof(g_ptBR_Locale));
1203 break;
1204 case XFA_LANGID_nl_NL: 1187 case XFA_LANGID_nl_NL:
1205 pLocal = XFA_GetLocaleFromBuffer(g_nlNL_Locale, sizeof(g_nlNL_Locale)); 1188 return XFA_GetLocaleFromBuffer(g_nlNL_Locale, sizeof(g_nlNL_Locale));
1206 break;
1207 case XFA_LANGID_ru_RU: 1189 case XFA_LANGID_ru_RU:
1208 pLocal = XFA_GetLocaleFromBuffer(g_ruRU_Locale, sizeof(g_ruRU_Locale)); 1190 return XFA_GetLocaleFromBuffer(g_ruRU_Locale, sizeof(g_ruRU_Locale));
1209 break;
1210 case XFA_LANGID_en_US: 1191 case XFA_LANGID_en_US:
1211 default: 1192 default:
1212 pLocal = XFA_GetLocaleFromBuffer(g_enUS_Locale, sizeof(g_enUS_Locale)); 1193 return XFA_GetLocaleFromBuffer(g_enUS_Locale, sizeof(g_enUS_Locale));
1213 break;
1214 } 1194 }
1215 return pLocal;
1216 } 1195 }
1196
1217 IFX_Locale* CXFA_LocaleMgr::GetLocaleByName( 1197 IFX_Locale* CXFA_LocaleMgr::GetLocaleByName(
1218 const CFX_WideString& wsLocaleName) { 1198 const CFX_WideString& wsLocaleName) {
1219 int32_t iCount = m_LocaleArray.GetSize(); 1199 for (size_t i = 0; i < m_LocaleArray.size(); i++) {
1220 int32_t i = 0; 1200 IFX_Locale* pLocale = m_LocaleArray[i].get();
1221 for (i = 0; i < iCount; i++) { 1201 if (pLocale->GetName() == wsLocaleName)
1222 IFX_Locale* pLocale = m_LocaleArray[i];
1223 if (pLocale->GetName() == wsLocaleName) {
1224 return pLocale; 1202 return pLocale;
1225 }
1226 } 1203 }
1227 int32_t iLen = wsLocaleName.GetLength(); 1204 if (wsLocaleName.GetLength() < 2)
1228 if (iLen < 2) {
1229 return nullptr; 1205 return nullptr;
1230 } 1206 for (size_t i = 0; i < m_XMLLocaleArray.size(); i++) {
1231 iCount = m_XMLLocaleArray.GetSize(); 1207 IFX_Locale* pLocale = m_XMLLocaleArray[i].get();
1232 for (i = 0; i < iCount; i++) { 1208 if (pLocale->GetName() == wsLocaleName)
1233 IFX_Locale* pLocale = m_XMLLocaleArray[i];
1234 if (pLocale->GetName() == wsLocaleName) {
1235 return pLocale; 1209 return pLocale;
1236 }
1237 } 1210 }
1238 uint16_t dwLangueID = XFA_GetLanguage(wsLocaleName); 1211 uint16_t dwLangueID = XFA_GetLanguage(wsLocaleName);
1239 IFX_Locale* pLocale = GetLocale(dwLangueID); 1212 std::unique_ptr<IFX_Locale> pLocale(GetLocale(dwLangueID));
1213 IFX_Locale* pRetLocale = pLocale.get();
1240 if (pLocale) 1214 if (pLocale)
1241 m_XMLLocaleArray.Add(pLocale); 1215 m_XMLLocaleArray.push_back(std::move(pLocale));
1242 return pLocale; 1216 return pRetLocale;
1243 } 1217 }
1218
1244 void CXFA_LocaleMgr::SetDefLocale(IFX_Locale* pLocale) { 1219 void CXFA_LocaleMgr::SetDefLocale(IFX_Locale* pLocale) {
1245 m_pDefLocale = pLocale; 1220 m_pDefLocale = pLocale;
1246 } 1221 }
1222
1247 CFX_WideStringC CXFA_LocaleMgr::GetConfigLocaleName(CXFA_Node* pConfig) { 1223 CFX_WideStringC CXFA_LocaleMgr::GetConfigLocaleName(CXFA_Node* pConfig) {
1248 if (!(m_dwLocaleFlags & 0x01)) { 1224 if (!(m_dwLocaleFlags & 0x01)) {
1249 m_wsConfigLocale.clear(); 1225 m_wsConfigLocale.clear();
1250 if (pConfig) { 1226 if (pConfig) {
1251 CXFA_Node* pChildfConfig = 1227 CXFA_Node* pChildfConfig =
1252 pConfig->GetFirstChildByClass(XFA_Element::Acrobat); 1228 pConfig->GetFirstChildByClass(XFA_Element::Acrobat);
1253 if (!pChildfConfig) { 1229 if (!pChildfConfig) {
1254 pChildfConfig = pConfig->GetFirstChildByClass(XFA_Element::Present); 1230 pChildfConfig = pConfig->GetFirstChildByClass(XFA_Element::Present);
1255 } 1231 }
1256 CXFA_Node* pCommon = 1232 CXFA_Node* pCommon =
1257 pChildfConfig 1233 pChildfConfig
1258 ? pChildfConfig->GetFirstChildByClass(XFA_Element::Common) 1234 ? pChildfConfig->GetFirstChildByClass(XFA_Element::Common)
1259 : nullptr; 1235 : nullptr;
1260 CXFA_Node* pLocale = 1236 CXFA_Node* pLocale =
1261 pCommon ? pCommon->GetFirstChildByClass(XFA_Element::Locale) 1237 pCommon ? pCommon->GetFirstChildByClass(XFA_Element::Locale)
1262 : nullptr; 1238 : nullptr;
1263 if (pLocale) { 1239 if (pLocale) {
1264 pLocale->TryCData(XFA_ATTRIBUTE_Value, m_wsConfigLocale, FALSE); 1240 pLocale->TryCData(XFA_ATTRIBUTE_Value, m_wsConfigLocale, FALSE);
1265 } 1241 }
1266 } 1242 }
1267 m_dwLocaleFlags |= 0x01; 1243 m_dwLocaleFlags |= 0x01;
1268 } 1244 }
1269 return m_wsConfigLocale.AsStringC(); 1245 return m_wsConfigLocale.AsStringC();
1270 } 1246 }
1247
1271 static CXFA_TimeZoneProvider* g_pProvider = nullptr; 1248 static CXFA_TimeZoneProvider* g_pProvider = nullptr;
1272 1249
1273 // Static. 1250 // Static.
1274 CXFA_TimeZoneProvider* CXFA_TimeZoneProvider::Create() { 1251 CXFA_TimeZoneProvider* CXFA_TimeZoneProvider::Create() {
1275 ASSERT(!g_pProvider); 1252 ASSERT(!g_pProvider);
1276 g_pProvider = new CXFA_TimeZoneProvider(); 1253 g_pProvider = new CXFA_TimeZoneProvider();
1277 return g_pProvider; 1254 return g_pProvider;
1278 } 1255 }
1279 1256
1280 // Static. 1257 // Static.
(...skipping 15 matching lines...) Expand all
1296 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 1273 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
1297 _tzset(); 1274 _tzset();
1298 m_tz.tzHour = (int8_t)(_timezone / 3600 * -1); 1275 m_tz.tzHour = (int8_t)(_timezone / 3600 * -1);
1299 m_tz.tzMinute = (int8_t)((FXSYS_abs(_timezone) % 3600) / 60); 1276 m_tz.tzMinute = (int8_t)((FXSYS_abs(_timezone) % 3600) / 60);
1300 #else 1277 #else
1301 tzset(); 1278 tzset();
1302 m_tz.tzHour = (int8_t)(timezone / 3600 * -1); 1279 m_tz.tzHour = (int8_t)(timezone / 3600 * -1);
1303 m_tz.tzMinute = (int8_t)((FXSYS_abs((int)timezone) % 3600) / 60); 1280 m_tz.tzMinute = (int8_t)((FXSYS_abs((int)timezone) % 3600) / 60);
1304 #endif 1281 #endif
1305 } 1282 }
1283
1306 CXFA_TimeZoneProvider::~CXFA_TimeZoneProvider() {} 1284 CXFA_TimeZoneProvider::~CXFA_TimeZoneProvider() {}
1285
1307 void CXFA_TimeZoneProvider::SetTimeZone(FX_TIMEZONE& tz) { 1286 void CXFA_TimeZoneProvider::SetTimeZone(FX_TIMEZONE& tz) {
1308 m_tz = tz; 1287 m_tz = tz;
1309 } 1288 }
1289
1310 void CXFA_TimeZoneProvider::GetTimeZone(FX_TIMEZONE& tz) { 1290 void CXFA_TimeZoneProvider::GetTimeZone(FX_TIMEZONE& tz) {
1311 tz = m_tz; 1291 tz = m_tz;
1312 } 1292 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_localemgr.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698