diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-19 15:18:36 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-19 15:18:36 +0000 |
commit | b6e61227773f4d00d5a5daa857f7cb7f91b1d012 (patch) | |
tree | 4bf46dbfb9015fc5796a484818f18bf212d40d44 /ppapi | |
parent | c4c0ce8b7086e34ef9159439fd27c9b3db1354c4 (diff) | |
download | chromium_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.h | 80 |
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_ */ |