OLD | NEW |
1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "testing/embedder_test.h" | 5 #include "testing/embedder_test.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 | 8 |
9 #include <list> | 9 #include <list> |
10 #include <string> | 10 #include <string> |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 return it->second; | 248 return it->second; |
249 | 249 |
250 FPDF_PAGE page = FPDF_LoadPage(document_, page_number); | 250 FPDF_PAGE page = FPDF_LoadPage(document_, page_number); |
251 if (!page) { | 251 if (!page) { |
252 return nullptr; | 252 return nullptr; |
253 } | 253 } |
254 FORM_OnAfterLoadPage(page, form_handle_); | 254 FORM_OnAfterLoadPage(page, form_handle_); |
255 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN); | 255 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN); |
256 // Cache the page. | 256 // Cache the page. |
257 page_map_[page_number] = page; | 257 page_map_[page_number] = page; |
| 258 page_reverse_map_[page] = page_number; |
258 return page; | 259 return page; |
259 } | 260 } |
260 | 261 |
261 FPDF_BITMAP EmbedderTest::RenderPage(FPDF_PAGE page) { | 262 FPDF_BITMAP EmbedderTest::RenderPage(FPDF_PAGE page) { |
262 int width = static_cast<int>(FPDF_GetPageWidth(page)); | 263 int width = static_cast<int>(FPDF_GetPageWidth(page)); |
263 int height = static_cast<int>(FPDF_GetPageHeight(page)); | 264 int height = static_cast<int>(FPDF_GetPageHeight(page)); |
264 int alpha = FPDFPage_HasTransparency(page) ? 1 : 0; | 265 int alpha = FPDFPage_HasTransparency(page) ? 1 : 0; |
265 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, alpha); | 266 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, alpha); |
266 FPDF_DWORD fill_color = alpha ? 0x00000000 : 0xFFFFFFFF; | 267 FPDF_DWORD fill_color = alpha ? 0x00000000 : 0xFFFFFFFF; |
267 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, fill_color); | 268 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, fill_color); |
268 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0); | 269 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0); |
269 FPDF_FFLDraw(form_handle_, bitmap, page, 0, 0, width, height, 0, 0); | 270 FPDF_FFLDraw(form_handle_, bitmap, page, 0, 0, width, height, 0, 0); |
270 return bitmap; | 271 return bitmap; |
271 } | 272 } |
272 | 273 |
273 void EmbedderTest::UnloadPage(FPDF_PAGE page) { | 274 void EmbedderTest::UnloadPage(FPDF_PAGE page) { |
274 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_CLOSE); | 275 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_CLOSE); |
275 FORM_OnBeforeClosePage(page, form_handle_); | 276 FORM_OnBeforeClosePage(page, form_handle_); |
276 FPDF_ClosePage(page); | 277 FPDF_ClosePage(page); |
| 278 |
| 279 auto it = page_reverse_map_.find(page); |
| 280 if (it == page_reverse_map_.end()) |
| 281 return; |
| 282 |
| 283 page_map_.erase(it->second); |
| 284 page_reverse_map_.erase(it); |
277 } | 285 } |
278 | 286 |
279 FPDF_PAGE EmbedderTest::Delegate::GetPage(FPDF_FORMFILLINFO* info, | 287 FPDF_PAGE EmbedderTest::Delegate::GetPage(FPDF_FORMFILLINFO* info, |
280 FPDF_DOCUMENT document, | 288 FPDF_DOCUMENT document, |
281 int page_index) { | 289 int page_index) { |
282 EmbedderTest* test = static_cast<EmbedderTest*>(info); | 290 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
283 auto it = test->page_map_.find(page_index); | 291 auto it = test->page_map_.find(page_index); |
284 return it != test->page_map_.end() ? it->second : nullptr; | 292 return it != test->page_map_.end() ? it->second : nullptr; |
285 } | 293 } |
286 | 294 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | 343 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |
336 if (g_v8_natives) | 344 if (g_v8_natives) |
337 free(const_cast<char*>(g_v8_natives->data)); | 345 free(const_cast<char*>(g_v8_natives->data)); |
338 if (g_v8_snapshot) | 346 if (g_v8_snapshot) |
339 free(const_cast<char*>(g_v8_snapshot->data)); | 347 free(const_cast<char*>(g_v8_snapshot->data)); |
340 #endif // V8_USE_EXTERNAL_STARTUP_DATA | 348 #endif // V8_USE_EXTERNAL_STARTUP_DATA |
341 #endif // PDF_ENABLE_V8 | 349 #endif // PDF_ENABLE_V8 |
342 | 350 |
343 return ret_val; | 351 return ret_val; |
344 } | 352 } |
OLD | NEW |