widget/nsIPrintSettingsWin.idl
author Rob Wu <rob@robwu.nl>
Sat, 24 Sep 2016 11:16:32 +0200
changeset 320058 a41f871e2d1b37754bbd1001c36c075511b49342
parent 281302 fb4737474a9c50b44e0ec38e43d42ed8a119b7ee
permissions -rw-r--r--
Bug 1299411 - Decouple Port implementation from API r=aswan Decoupled the API from the implementation. From now on it is possible to create Port instances without generating an API. This allows us to internally use Ports to pass around messages with minimal overhead (in the form of unnecessary clones of messages). This will be used by native messaging. This commit has no behavioral change, it is mostly moving around some code and storing the internal message listener in a set. MozReview-Commit-ID: 4h0LNJvTH9R

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

%{ C++
#include "windows.h"
%}

/**
 * Native types
 */
  [ptr] native nsDevMode(DEVMODEW);
  native nsHdc(HDC);

/**
 * Simplified PrintSettings for Windows interface 
 */
[scriptable, uuid(c63eed41-6ac5-459e-8a64-033eb9ad770a)]

interface nsIPrintSettingsWin : nsISupports
{
  /**
   * Data Members
   *
   * Each of these data members make a copy 
   * of the contents. If you get the value, 
   * you own the memory.
   *
   * The following three pieces of data are needed
   * to create a DC for printing. These are typcially 
   * gotten via the PrintDLG call ro can be obtained
   * via the "m_pd" data member of the CPrintDialog
   * in MFC.
   */
  [noscript] attribute wstring deviceName;
  [noscript] attribute wstring driverName;

  [noscript] attribute nsDevMode devMode;

  /**
   * On Windows we use the printable width and height for the printing surface.
   * We don't want to have to create native print device contexts in the content
   * process, so we need to store these in the settings.
   * Storing in Inches is most convenient as they are retrieved from the device
   * using fields which are in pixels and pixels per inch.
   * Note these are stored in portrait format to ensure that we can take account
   * of our own changes to the orientation print setting.
   */
  [noscript] attribute double printableWidthInInches;
  [noscript] attribute double printableHeightInInches;

  /**
   * Copy relevant print settings from native Windows device.
   *
   * @param hdc HDC to copy from
   * @param devMode DEVMODE to copy from
   */
  [notxpcom] void copyFromNative(in nsHdc hdc, in nsDevMode devMode);

  /**
   * Copy relevant print settings to native windows structures.
   *
   * @param devMode DEVMODE to be populated.
   */
  [notxpcom] void copyToNative(in nsDevMode devMode);
};