| Index: printing/printing_context_win.h
|
| diff --git a/printing/printing_context_win.h b/printing/printing_context_win.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..90fc7384a6e7acc9b545240357ab35348730c69c
|
| --- /dev/null
|
| +++ b/printing/printing_context_win.h
|
| @@ -0,0 +1,97 @@
|
| +// 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_WIN_H_
|
| +#define PRINTING_PRINTING_CONTEXT_WIN_H_
|
| +
|
| +#include <ocidl.h>
|
| +#include <commdlg.h>
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/scoped_ptr.h"
|
| +#include "build/build_config.h"
|
| +#include "gfx/native_widget_types.h"
|
| +#include "printing/printing_context.h"
|
| +
|
| +namespace printing {
|
| +
|
| +class PrintingContextWin : public PrintingContext {
|
| + public:
|
| + PrintingContextWin();
|
| + ~PrintingContextWin();
|
| +
|
| + // 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;
|
| +
|
| +#if defined(UNIT_TEST)
|
| + // Sets a fake PrintDlgEx function pointer in tests.
|
| + void SetPrintDialog(HRESULT (__stdcall *print_dialog_func)(LPPRINTDLGEX)) {
|
| + print_dialog_func_ = print_dialog_func;
|
| + }
|
| +#endif // defined(UNIT_TEST)
|
| +
|
| + // Allocates the HDC for a specific DEVMODE.
|
| + static bool AllocateContext(const std::wstring& printer_name,
|
| + const DEVMODE* dev_mode,
|
| + gfx::NativeDrawingContext* context);
|
| +
|
| + // Retrieves the content of a GetPrinter call.
|
| + static void GetPrinterHelper(HANDLE printer, int level,
|
| + scoped_array<uint8>* buffer);
|
| +
|
| + private:
|
| + // Class that manages the PrintDlgEx() callbacks. This is meant to be a
|
| + // temporary object used during the Print... dialog display.
|
| + class CallbackHandler;
|
| +
|
| + // Used in response to the user canceling the printing.
|
| + static BOOL CALLBACK AbortProc(HDC hdc, int nCode);
|
| +
|
| + // Reads the settings from the selected device context. Updates settings_ and
|
| + // its margins.
|
| + bool InitializeSettings(const DEVMODE& dev_mode,
|
| + const std::wstring& new_device_name,
|
| + const PRINTPAGERANGE* ranges,
|
| + int number_ranges,
|
| + bool selection_only);
|
| +
|
| + // Retrieves the printer's default low-level settings. On Windows, context_ is
|
| + // allocated with this call.
|
| + bool GetPrinterSettings(HANDLE printer,
|
| + const std::wstring& device_name);
|
| +
|
| + // Parses the result of a PRINTDLGEX result.
|
| + Result ParseDialogResultEx(const PRINTDLGEX& dialog_options);
|
| + Result ParseDialogResult(const PRINTDLG& dialog_options);
|
| +
|
| + // The selected printer context.
|
| + HDC context_;
|
| +
|
| + // The dialog box for the time it is shown.
|
| + volatile HWND dialog_box_;
|
| +
|
| + // Function pointer that defaults to PrintDlgEx. It can be changed using
|
| + // SetPrintDialog() in tests.
|
| + HRESULT (__stdcall *print_dialog_func_)(LPPRINTDLGEX);
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PrintingContextWin);
|
| +};
|
| +
|
| +} // namespace printing
|
| +
|
| +#endif // PRINTING_PRINTING_CONTEXT_WIN_H_
|
|
|