mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
393a50d4dc
This also corrects what I think are long standing issues with the mapping to and from print settings on Windows. Firstly it only uses the DEVMODE flags to decide what should get stored, in the old code if paper size was not set, it would then use that possibly invalid paper size to map to length and width. Paper setting prefs are mapped back if they were stored or if they have been manually set to something sane. Secondly it corrects the calculation that was used to convert from millimeters to tenths of millimeters. It also gets rid of the paperSizeType field, which was only used on Windows and doesn't actually make sense according to the DEVMODE documentation as the dmPaperLength and dmPaperWidth fields override the dmPaperSize, but can in theory be specified at the same time.
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
/* -*- 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);
|
|
};
|