| // 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. |
| |
| #ifndef PRINTING_PDF_RENDER_SETTINGS_H_ |
| #define PRINTING_PDF_RENDER_SETTINGS_H_ |
| |
| #include "ipc/ipc_message_utils.h" |
| #include "ipc/ipc_param_traits.h" |
| #include "printing/printing_export.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/ipc/geometry/gfx_param_traits.h" |
| #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h" |
| |
| namespace printing { |
| |
| // Defining PDF rendering settings. |
| class PdfRenderSettings { |
| public: |
| PdfRenderSettings() {} |
| PdfRenderSettings(gfx::Rect area, int dpi, bool autorotate) |
| : area_(area), dpi_(dpi), autorotate_(autorotate) {} |
| ~PdfRenderSettings() {} |
| |
| const gfx::Rect& area() const { return area_; } |
| int dpi() const { return dpi_; } |
| bool autorotate() const { return autorotate_; } |
| |
| gfx::Rect area_; |
| int dpi_; |
| bool autorotate_; |
| }; |
| |
| } // namespace printing |
| |
| namespace IPC { |
| template <> |
| struct ParamTraits<printing::PdfRenderSettings> { |
| typedef printing::PdfRenderSettings param_type; |
| static void Write(base::Pickle* m, const param_type& p) { |
| WriteParam(m, p.area_); |
| WriteParam(m, p.dpi_); |
| WriteParam(m, p.autorotate_); |
| } |
| |
| 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_); |
| } |
| |
| static void Log(const param_type& p, std::string* l) { |
| LogParam(p.area_, l); |
| l->append(", "); |
| LogParam(p.dpi_, l); |
| l->append(", "); |
| LogParam(p.autorotate_, l); |
| } |
| }; |
| |
| } // namespace IPC |
| |
| #endif // PRINTING_PDF_RENDER_SETTINGS_H_ |