[go: nahoru, domu]

Printing: Convert PrintingContext into an interface implemented by the separate
platforms.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/3610013

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61714 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h
new file mode 100644
index 0000000..f94fae2
--- /dev/null
+++ b/printing/printing_context_mac.h
@@ -0,0 +1,55 @@
+// Copyright (c) 2010 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_PRINTING_CONTEXT_MAC_H_
+#define PRINTING_PRINTING_CONTEXT_MAC_H_
+
+#include "printing/printing_context.h"
+
+#ifdef __OBJC__
+@class NSPrintInfo;
+#else
+class NSPrintInfo;
+#endif  // __OBJC__
+
+namespace printing {
+
+class PrintingContextMac : public PrintingContext {
+ public:
+  PrintingContextMac();
+  ~PrintingContextMac();
+
+  // PrintingContext implementation.
+  virtual void AskUserForSettings(gfx::NativeView parent_view,
+                                  int max_pages,
+                                  bool has_selection,
+                                  PrintSettingsCallback* callback);
+  virtual Result UseDefaultSettings();
+  virtual Result InitWithSettings(const PrintSettings& settings);
+  virtual Result NewDocument(const string16& document_name);
+  virtual Result NewPage();
+  virtual Result PageDone();
+  virtual Result DocumentDone();
+  virtual void Cancel();
+  virtual void DismissDialog();
+  virtual void ReleaseContext();
+  virtual gfx::NativeDrawingContext context() const;
+
+ private:
+  // Read the settings from the given NSPrintInfo (and cache it for later use).
+  void ParsePrintInfo(NSPrintInfo* print_info);
+
+  // The native print info object.
+  NSPrintInfo* print_info_;
+
+  // The current page's context; only valid between NewPage and PageDone call
+  // pairs.
+  CGContext* context_;
+
+  DISALLOW_COPY_AND_ASSIGN(PrintingContextMac);
+};
+
+}  // namespace printing
+
+#endif  // PRINTING_PRINTING_CONTEXT_MAC_H_