| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |