summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-19 15:18:36 +0000
committerdmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-19 15:18:36 +0000
commitb6e61227773f4d00d5a5daa857f7cb7f91b1d012 (patch)
tree4bf46dbfb9015fc5796a484818f18bf212d40d44 /ppapi
parentc4c0ce8b7086e34ef9159439fd27c9b3db1354c4 (diff)
downloadchromium_src-b6e61227773f4d00d5a5daa857f7cb7f91b1d012.zip
chromium_src-b6e61227773f4d00d5a5daa857f7cb7f91b1d012.tar.gz
chromium_src-b6e61227773f4d00d5a5daa857f7cb7f91b1d012.tar.bz2
Change PPP_Printing_Dev QuerySupportedFormats to not require MemAlloc and MemFree.
This also is a first stab at providing backwards-compatibility (even though in this case 0.3 will go away once everyone is ported). To use the new version, you need to 'opt-in' by adding the following line before including ppp_printing_dev.h: #define PPP_PRINTING_DEV_USE_0_4 I have NOT updated the C++ wrapper. I can work on that next, although it would help to have some test code that relies on it to make sure I'm not breaking anything. brettw: Please focus on the backwards-compatibility code, let me know what you think. thestig: Please focus on print code. I'd appreciate any tips on being able to test this better; I don't have access to the PDF plugin code. I verified that the existing plugin still works with this change by copying in libpdf.so, opening a PDF, and printing it. BUG=80696 TEST=Manual. Try to print a PDF. Review URL: http://codereview.chromium.org/6975018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85912 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/c/dev/ppp_printing_dev.h80
1 files changed, 71 insertions, 9 deletions
diff --git a/ppapi/c/dev/ppp_printing_dev.h b/ppapi/c/dev/ppp_printing_dev.h
index 805c6e2..638f7cb 100644
--- a/ppapi/c/dev/ppp_printing_dev.h
+++ b/ppapi/c/dev/ppp_printing_dev.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010 The Chromium Authors. All rights reserved.
+/* Copyright (c) 2011 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -20,11 +20,28 @@ typedef enum {
} PP_PrintOrientation_Dev;
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_PrintOrientation_Dev, 4);
+#ifdef PPP_PRINTING_DEV_USE_0_4
+/* TODO(dmichael): Remove the conditional compilation when NaCl proxy is
+ ported to 0.4. Remove 0.3 when PDF is ported. */
+typedef enum {
+ PP_PRINTOUTPUTFORMAT_RASTER_DEPRECATED = 0,
+ PP_PRINTOUTPUTFORMAT_PDF_DEPRECATED = 1,
+ PP_PRINTOUTPUTFORMAT_POSTSCRIPT_DEPRECATED = 2
+} PP_PrintOutputFormat_Dev_0_3;
+typedef enum {
+ PP_PRINTOUTPUTFORMAT_RASTER = 1u << 0,
+ PP_PRINTOUTPUTFORMAT_PDF = 1u << 1,
+ PP_PRINTOUTPUTFORMAT_POSTSCRIPT = 1u << 2
+} PP_PrintOutputFormat_Dev_0_4;
+typedef PP_PrintOutputFormat_Dev_0_4 PP_PrintOutputFormat_Dev;
+#else
typedef enum {
PP_PRINTOUTPUTFORMAT_RASTER = 0,
PP_PRINTOUTPUTFORMAT_PDF = 1,
PP_PRINTOUTPUTFORMAT_POSTSCRIPT = 2
-} PP_PrintOutputFormat_Dev;
+} PP_PrintOutputFormat_Dev_0_3;
+typedef PP_PrintOutputFormat_Dev_0_3 PP_PrintOutputFormat_Dev;
+#endif
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_PrintOutputFormat_Dev, 4);
struct PP_PrintSettings_Dev {
@@ -35,6 +52,15 @@ struct PP_PrintSettings_Dev {
PP_Bool grayscale;
PP_PrintOutputFormat_Dev format;
};
+#ifdef PPP_PRINTING_DEV_USE_0_4
+struct PP_PrintSettings_Dev_0_3 {
+ struct PP_Rect printable_area;
+ int32_t dpi;
+ PP_PrintOrientation_Dev orientation;
+ PP_Bool grayscale;
+ PP_PrintOutputFormat_Dev_0_3 format;
+};
+#endif
PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PrintSettings_Dev, 32);
// Specifies a contiguous range of page numbers to be printed.
@@ -46,15 +72,21 @@ struct PP_PrintPageNumberRange_Dev {
PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_PrintPageNumberRange_Dev, 8);
// Interface for the plugin to implement printing.
-#define PPP_PRINTING_DEV_INTERFACE "PPP_Printing(Dev);0.3"
+#define PPP_PRINTING_DEV_INTERFACE_0_3 "PPP_Printing(Dev);0.3"
+#define PPP_PRINTING_DEV_INTERFACE_0_4 "PPP_Printing(Dev);0.4"
+#ifdef PPP_PRINTING_DEV_USE_0_4
+#define PPP_PRINTING_DEV_INTERFACE PPP_PRINTING_DEV_INTERFACE_0_4
+#else
+#define PPP_PRINTING_DEV_INTERFACE PPP_PRINTING_DEV_INTERFACE_0_3
+#endif
+#ifdef PPP_PRINTING_DEV_USE_0_4
struct PPP_Printing_Dev {
- // Returns array of supported print output formats. The array is allocated
- // using PPB_Core.MemAlloc. The caller is responsible for freeing the array
- // using PPB_Core.MemFree.
- // Sets |*format_count| to 0 returns NULL if printing is not supported at all.
- PP_PrintOutputFormat_Dev* (*QuerySupportedFormats)(PP_Instance instance,
- uint32_t* format_count);
+ // Returns a bit field representing the supported print output formats. For
+ // example, if only Raster and PostScript are supported,
+ // QuerySupportedFormats returns a value equivalent to:
+ // (PP_PRINTOUTPUTFORMAT_RASTER | PP_PRINTOUTPUTFORMAT_POSTSCRIPT)
+ uint32_t (*QuerySupportedFormats)(PP_Instance instance);
// Begins a print session with the given print settings. Calls to PrintPage
// can only be made after a successful call to Begin. Returns the number of
@@ -76,5 +108,35 @@ struct PPP_Printing_Dev {
void (*End)(PP_Instance instance);
};
+struct PPP_Printing_Dev_0_3 {
+ // Returns array of supported print output formats. The array is allocated
+ // using PPB_Core.MemAlloc. The caller is responsible for freeing the array
+ // using PPB_Core.MemFree.
+ // Sets |*format_count| to 0 returns NULL if printing is not supported at all
+ PP_PrintOutputFormat_Dev_0_3* (*QuerySupportedFormats)(
+ PP_Instance instance, uint32_t* format_count);
+ int32_t (*Begin)(PP_Instance instance,
+ const struct PP_PrintSettings_Dev_0_3* print_settings);
+ // The following methods are the same as in 0_4. See above for documentation.
+ PP_Resource (*PrintPages)(
+ PP_Instance instance,
+ const struct PP_PrintPageNumberRange_Dev* page_ranges,
+ uint32_t page_range_count);
+ void (*End)(PP_Instance instance);
+};
+#else
+struct PPP_Printing_Dev {
+ PP_PrintOutputFormat_Dev* (*QuerySupportedFormats)(
+ PP_Instance instance, uint32_t* format_count);
+ int32_t (*Begin)(PP_Instance instance,
+ const struct PP_PrintSettings_Dev* print_settings);
+ PP_Resource (*PrintPages)(
+ PP_Instance instance,
+ const struct PP_PrintPageNumberRange_Dev* page_ranges,
+ uint32_t page_range_count);
+ void (*End)(PP_Instance instance);
+};
+#endif
+
#endif /* PPAPI_C_DEV_PPP_PRINTING_DEV_H_ */