 Chromium Code Reviews
 Chromium Code Reviews Issue 2640033005:
  Substitute boolean GDI printing for a mode type  (Closed)
    
  
    Issue 2640033005:
  Substitute boolean GDI printing for a mode type  (Closed) 
  | Index: printing/pdf_render_settings.h | 
| diff --git a/printing/pdf_render_settings.h b/printing/pdf_render_settings.h | 
| index d9e8f9e7801fe134fa689712a33a3eb4f4c9a9aa..a0c0da93d0cc41bb6edee58932d39fe4469611a6 100644 | 
| --- a/printing/pdf_render_settings.h | 
| +++ b/printing/pdf_render_settings.h | 
| @@ -16,14 +16,22 @@ namespace printing { | 
| // Defining PDF rendering settings. | 
| struct PdfRenderSettings { | 
| - PdfRenderSettings() : dpi(0), autorotate(false) {} | 
| - PdfRenderSettings(gfx::Rect area, int dpi, bool autorotate) | 
| - : area(area), dpi(dpi), autorotate(autorotate) {} | 
| + enum class Mode : uint8_t { | 
| + NORMAL = 0, | 
| +#if defined(OS_WIN) | 
| + GDI_TEXT, | 
| +#endif | 
| + }; | 
| + | 
| + PdfRenderSettings() : dpi(0), autorotate(false), mode(Mode::NORMAL) {} | 
| + PdfRenderSettings(gfx::Rect area, int dpi, bool autorotate, Mode mode) | 
| + : area(area), dpi(dpi), autorotate(autorotate), mode(mode) {} | 
| ~PdfRenderSettings() {} | 
| gfx::Rect area; | 
| int dpi; | 
| bool autorotate; | 
| + Mode mode; | 
| }; | 
| } // namespace printing | 
| @@ -31,19 +39,25 @@ struct PdfRenderSettings { | 
| namespace IPC { | 
| template <> | 
| struct ParamTraits<printing::PdfRenderSettings> { | 
| - typedef printing::PdfRenderSettings param_type; | 
| + using param_type = printing::PdfRenderSettings; | 
| static void Write(base::Pickle* m, const param_type& p) { | 
| WriteParam(m, p.area); | 
| WriteParam(m, p.dpi); | 
| WriteParam(m, p.autorotate); | 
| + WriteParam(m, static_cast<uint8_t>(p.mode)); | 
| } | 
| static bool Read(const base::Pickle* m, | 
| base::PickleIterator* iter, | 
| param_type* r) { | 
| - return ReadParam(m, iter, &r->area) && | 
| - ReadParam(m, iter, &r->dpi) && | 
| - ReadParam(m, iter, &r->autorotate); | 
| + uint8_t mode = 0; | 
| + bool ret = ReadParam(m, iter, &r->area) && | 
| + ReadParam(m, iter, &r->dpi) && | 
| + ReadParam(m, iter, &r->autorotate) && | 
| + ReadParam(m, iter, &mode); | 
| + if (ret) | 
| + r->mode = static_cast<printing::PdfRenderSettings::Mode>(mode); | 
| 
Tom Sepez
2017/01/23 21:14:08
Need to validate that mode is in range here or use
 
Vitaly Buka (NO REVIEWS)
2017/01/23 22:03:30
Better to use IPC macros
 
rbpotter
2017/01/24 02:22:01
Done.
I switched the entire structure to use the
 | 
| + return ret; | 
| } | 
| static void Log(const param_type& p, std::string* l) { | 
| @@ -52,6 +66,8 @@ struct ParamTraits<printing::PdfRenderSettings> { | 
| LogParam(p.dpi, l); | 
| l->append(", "); | 
| LogParam(p.autorotate, l); | 
| + l->append(", "); | 
| + LogParam(static_cast<uint8_t>(p.mode), l); | 
| } | 
| }; |