Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / printing / pdf_to_emf_converter.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_
6 #define CHROME_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_
7
8 #include "base/callback.h"
9 #include "base/memory/ref_counted_memory.h"
10 #include "base/memory/scoped_ptr.h"
11
12 namespace base {
13 class FilePath;
14 }
15
16 namespace printing {
17
18 class MetafilePlayer;
19 class PdfRenderSettings;
20
21 class PdfToEmfConverter {
22  public:
23   typedef base::Callback<void(int page_count)> StartCallback;
24   typedef base::Callback<void(int page_number,
25                               double scale_factor,
26                               scoped_ptr<MetafilePlayer> emf)> GetPageCallback;
27
28   virtual ~PdfToEmfConverter();
29
30   static scoped_ptr<PdfToEmfConverter> CreateDefault();
31
32   // Starts conversion of PDF provided as |data|. Calls |start_callback|
33   // with positive |page_count|. |page_count| is 0 if initialization failed.
34   virtual void Start(const scoped_refptr<base::RefCountedMemory>& data,
35                      const PdfRenderSettings& conversion_settings,
36                      const StartCallback& start_callback) = 0;
37
38   // Requests conversion of the page. |page_number| is 0-base page number in
39   // PDF provided in Start() call.
40   // Calls |get_page_callback| after conversion. |emf| of callback in not NULL
41   // if conversion succeeded.
42   virtual void GetPage(int page_number,
43                        const GetPageCallback& get_page_callback) = 0;
44 };
45
46 }  // namespace printing
47
48 #endif  // CHROME_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_