Chromium Code Reviews| 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 "../include/fsdk_define.h" | 7 #include "../include/fsdk_define.h" |
| 8 #include "../../public/fpdf_doc.h" | 8 #include "../../public/fpdf_doc.h" |
| 9 | 9 |
| 10 static int THISMODULE = 0; | 10 static int THISMODULE = 0; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 } | 162 } |
| 163 | 163 |
| 164 static void ReleaseLinkList(void* data) { | 164 static void ReleaseLinkList(void* data) { |
| 165 delete (CPDF_LinkList*)data; | 165 delete (CPDF_LinkList*)data; |
| 166 } | 166 } |
| 167 | 167 |
| 168 DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, | 168 DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, |
| 169 double x, | 169 double x, |
| 170 double y) { | 170 double y) { |
| 171 if (!page) | 171 if (!page) |
| 172 return NULL; | 172 return nullptr; |
| 173 | |
| 173 CPDF_Page* pPage = (CPDF_Page*)page; | 174 CPDF_Page* pPage = (CPDF_Page*)page; |
| 174 // Link list is stored with the document | 175 // Link list is stored with the document |
| 175 CPDF_Document* pDoc = pPage->m_pDocument; | 176 CPDF_Document* pDoc = pPage->m_pDocument; |
| 176 CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&THISMODULE); | 177 CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&THISMODULE); |
| 177 if (!pLinkList) { | 178 if (!pLinkList) { |
| 178 pLinkList = new CPDF_LinkList(pDoc); | 179 pLinkList = new CPDF_LinkList; |
| 179 pDoc->SetPrivateData(&THISMODULE, pLinkList, ReleaseLinkList); | 180 pDoc->SetPrivateData(&THISMODULE, pLinkList, ReleaseLinkList); |
| 180 } | 181 } |
| 181 return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y).GetDict(); | 182 return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y, nullptr) |
| 183 .GetDict(); | |
| 184 } | |
| 185 | |
| 186 DLLEXPORT int STDCALL FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, | |
| 187 double x, | |
| 188 double y) { | |
| 189 if (!page) | |
| 190 return -1; | |
| 191 | |
| 192 CPDF_Page* pPage = (CPDF_Page*)page; | |
| 193 // Link list is stored with the document | |
| 194 CPDF_Document* pDoc = pPage->m_pDocument; | |
| 195 CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&THISMODULE); | |
|
Tom Sepez
2015/08/07 18:14:06
nit: Is this the only place we do "get or create"?
Lei Zhang
2015/08/07 23:03:41
I consolidated.
| |
| 196 if (!pLinkList) { | |
| 197 pLinkList = new CPDF_LinkList; | |
| 198 pDoc->SetPrivateData(&THISMODULE, pLinkList, ReleaseLinkList); | |
| 199 } | |
| 200 int z_order = -1; | |
| 201 pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y, &z_order); | |
|
Tom Sepez
2015/08/07 18:14:06
nit: maybe (void) to indicate result not used?
Lei Zhang
2015/08/07 23:03:41
Done.
| |
| 202 return z_order; | |
| 182 } | 203 } |
| 183 | 204 |
| 184 DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, | 205 DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, |
| 185 FPDF_LINK pDict) { | 206 FPDF_LINK pDict) { |
| 186 if (!document) | 207 if (!document) |
| 187 return NULL; | 208 return NULL; |
| 188 if (!pDict) | 209 if (!pDict) |
| 189 return NULL; | 210 return NULL; |
| 190 CPDF_Document* pDoc = (CPDF_Document*)document; | 211 CPDF_Document* pDoc = (CPDF_Document*)document; |
| 191 CPDF_Link link((CPDF_Dictionary*)pDict); | 212 CPDF_Link link((CPDF_Dictionary*)pDict); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 290 return 0; | 311 return 0; |
| 291 CFX_WideString text = pInfo->GetUnicodeText(tag); | 312 CFX_WideString text = pInfo->GetUnicodeText(tag); |
| 292 // Use UTF-16LE encoding | 313 // Use UTF-16LE encoding |
| 293 CFX_ByteString encodedText = text.UTF16LE_Encode(); | 314 CFX_ByteString encodedText = text.UTF16LE_Encode(); |
| 294 unsigned long len = encodedText.GetLength(); | 315 unsigned long len = encodedText.GetLength(); |
| 295 if (buffer && buflen >= len) { | 316 if (buffer && buflen >= len) { |
| 296 FXSYS_memcpy(buffer, encodedText.c_str(), len); | 317 FXSYS_memcpy(buffer, encodedText.c_str(), len); |
| 297 } | 318 } |
| 298 return len; | 319 return len; |
| 299 } | 320 } |
| OLD | NEW |