summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java726
1 files changed, 0 insertions, 726 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java b/bundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java
deleted file mode 100755
index 7266c2d3d3..0000000000
--- a/bundles/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java
+++ /dev/null
@@ -1,726 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.printing;
-
-
-import org.eclipse.swt.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.internal.*;
-import org.eclipse.swt.internal.motif.*;
-
-/**
- * Instances of this class are used to print to a printer.
- * Applications create a GC on a printer using <code>new GC(printer)</code>
- * and then draw on the printer GC using the usual graphics calls.
- * <p>
- * A <code>Printer</code> object may be constructed by providing
- * a <code>PrinterData</code> object which identifies the printer.
- * A <code>PrintDialog</code> presents a print dialog to the user
- * and returns an initialized instance of <code>PrinterData</code>.
- * Alternatively, calling <code>new Printer()</code> will construct a
- * printer object for the user's default printer.
- * </p><p>
- * Application code must explicitly invoke the <code>Printer.dispose()</code>
- * method to release the operating system resources managed by each instance
- * when those instances are no longer required.
- * </p>
- *
- * @see PrinterData
- * @see PrintDialog
- * @see <a href="http://www.eclipse.org/swt/snippets/#printing">Printing snippets</a>
- * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
- */
-public final class Printer extends Device {
- PrinterData data;
- int printContext, xScreen, xDrawable, xtContext;
- Font defaultFont;
- boolean isGCCreated;
-
- static String APP_NAME = "SWT_Printer";
-
-static DeviceData checkNull (PrinterData data) {
- if (data == null) data = new PrinterData();
- if (data.application_name == null) {
- data.application_name = APP_NAME;
- }
- if (data.application_class == null) {
- data.application_class = APP_NAME;
- }
- if (data.name == null || data.driver == null) {
- PrinterData defaultData = getDefaultPrinterData();
- if (defaultData == null) SWT.error(SWT.ERROR_NO_HANDLES);
- data.name = defaultData.name;
- data.driver = defaultData.driver;
- }
- return data;
-}
-
-/**
- * Returns a <code>PrinterData</code> object representing
- * the default printer or <code>null</code> if there is no
- * default printer.
- *
- * @return the default printer data or null
- *
- * @since 2.1
- */
-public static PrinterData getDefaultPrinterData() {
- PrinterData[] list = getEnvPrinterList();
- PrinterData defaultPrinter = getEnvDefaultPrinter(list);
- if (defaultPrinter != null) return defaultPrinter;
- if (list.length != 0) return list[0];
- return null;
-}
-
-/**
- * Returns the default printer <code>PrinterData</code> specified
- * by XPRINTER.
- *
- * @return the default printer data or <code>null</code>
- */
-static PrinterData getEnvDefaultPrinter(PrinterData[] serverList) {
- String[] printerNames = new String[]{"XPRINTER", "PDPRINTER", "LPDEST", "PRINTER"};
- for (int i = 0; i < printerNames.length; i++) {
- int ptr = OS.getenv(Converter.wcsToMbcs(null, printerNames[i], true));
- if (ptr != 0) {
- int length = OS.strlen(ptr);
- byte[] buffer = new byte[length];
- OS.memmove(buffer, ptr, length);
- String defaultPrinter = new String(Converter.mbcsToWcs(null, buffer));
- int index = defaultPrinter.indexOf("@");
- if (index != -1) {
- String name = defaultPrinter.substring(0, index);
- String driver = defaultPrinter.substring(index + 1);
- return new PrinterData(driver, name);
- } else {
- for (int j = 0; j < serverList.length; j++) {
- PrinterData printerData = serverList[j];
- if (defaultPrinter.equals(printerData.name)) {
- return new PrinterData(printerData.driver, defaultPrinter);
- }
- }
- }
- }
- }
- return null;
-}
-
-/**
- * Returns an array of <code>PrinterData</code> objects
- * representing all available printers. If there are no
- * printers, the array will be empty.
- *
- * @return an array of PrinterData objects representing the available printers
- */
-public static PrinterData[] getPrinterList() {
- PrinterData[] list = getEnvPrinterList();
- /* Ensure that default printer data occurs in the printer list */
- PrinterData data = getEnvDefaultPrinter(list);
- if (data == null) return list;
- for (int i = 0; i < list.length; i++) {
- PrinterData printerData = list[i];
- if (printerData.name.equals(data.name) && printerData.driver.equals(data.driver)) {
- return list;
- }
- }
- PrinterData[] newList = new PrinterData[list.length + 1];
- System.arraycopy(list, 0, newList, 1, list.length);
- newList[0] = data;
- return newList;
-}
-
-/**
- * Returns a array of <code> PrinterData</code> objects
- * representing all available printers for all Xprint
- * servers specified in XPSERVERLIST.
- *
- * Note: The default printer define by XPRINTER may not be
- * included in the list.
- *
- * @return the list of printer for all servers
- */
-static PrinterData[] getEnvPrinterList() {
- String[] serverList = getXPServerList();
- PrinterData[] printerList = new PrinterData[0];
- for (int i = 0; i < serverList.length; i++) {
- PrinterData[] printers = getEnvPrinterList(serverList[i]);
- if (printers.length != 0) {
- PrinterData[] newPrinterList = new PrinterData [printerList.length + printers.length];
- System.arraycopy(printerList, 0, newPrinterList, 0, printerList.length);
- System.arraycopy(printers, 0, newPrinterList, printerList.length, printers.length);
- printerList = newPrinterList;
- }
- }
- return printerList;
-}
-
-/**
- * Returns a array of <code> PrinterData</code> objects
- * representing all available printers for a specific
- * XPrint server
- *
- * @param server the XPrint server name
- * @return the list of printers for a given XPrint server
- */
-static PrinterData[] getEnvPrinterList(String server) {
- byte[] buffer = Converter.wcsToMbcs(null, server, true);
- int pdpy = OS.XOpenDisplay (buffer);
- if (pdpy == 0) return new PrinterData[0];
-
- /* Get the list of printers */
- int[] count = new int[1];
- int plist = OS.XpGetPrinterList(pdpy, null, count);
- int printerCount = count[0];
- if (plist == 0 || printerCount == 0) {
- OS.XCloseDisplay(pdpy);
- if (plist != 0) OS.XpFreePrinterList(plist);
- return new PrinterData[0];
- }
-
- /* Copy the printer names into PrinterData objects */
- int[] stringPointers = new int[printerCount * 2];
- OS.memmove(stringPointers, plist, printerCount * 2 * 4);
- PrinterData printerList[] = new PrinterData[printerCount];
- for (int i = 0; i < printerCount; i++) {
- String name = "";
- int address = stringPointers[i * 2];
- if (address != 0) {
- int length = OS.strlen(address);
- buffer = new byte [length];
- OS.memmove(buffer, address, length);
- name = new String(Converter.mbcsToWcs(null, buffer));
- }
- printerList[i] = new PrinterData(server, name);
- }
- OS.XCloseDisplay(pdpy);
- OS.XpFreePrinterList(plist);
- return printerList;
-}
-
-/**
- * Returns the value of XPSERVERLIST.
- *
- * @return the value of the XPSERVERLIST variable from the environment
- */
-static String[] getXPServerList() {
- byte[] name = Converter.wcsToMbcs(null, "XPSERVERLIST", true);
- int ptr = OS.getenv(name);
- String[] serversList = new String[0];
- if (ptr != 0) {
- int length = OS.strlen(ptr);
- byte[] buffer1 = new byte[length];
- OS.memmove(buffer1, ptr, length);
- char[] buffer2 = Converter.mbcsToWcs(null, buffer1);
- int i = 0;
- while (i < buffer2.length) {
- if (buffer2[i] != ' ') {
- int start = i;
- while (++i < buffer2.length && buffer2[i] != ' ') {/*empty*/}
- String server = new String(buffer2, start, i - start);
- String[] newServerList = new String[serversList.length + 1];
- System.arraycopy(serversList, 0, newServerList, 0, serversList.length);
- newServerList[serversList.length] = server;
- serversList = newServerList;
- }
- i++;
- }
- }
- return serversList;
-}
-
-/**
- * Constructs a new printer representing the default printer.
- * <p>
- * Note: You must dispose the printer when it is no longer required.
- * </p>
- *
- * @exception SWTError <ul>
- * <li>ERROR_NO_HANDLES - if there are no valid printers
- * </ul>
- *
- * @see Device#dispose
- */
-public Printer() {
- this(null);
-}
-
-/**
- * Constructs a new printer given a <code>PrinterData</code>
- * object representing the desired printer. If the argument
- * is null, then the default printer will be used.
- * <p>
- * Note: You must dispose the printer when it is no longer required.
- * </p>
- *
- * @param data the printer data for the specified printer, or null to use the default printer
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_INVALID_ARGUMENT - if the specified printer data does not represent a valid printer
- * </ul>
- * @exception SWTError <ul>
- * <li>ERROR_NO_HANDLES - if there are no valid printers
- * </ul>
- *
- * @see Device#dispose
- */
-public Printer(PrinterData data) {
- super(checkNull(data));
-}
-
-/**
- * Creates the printer handle.
- * This method is called internally by the instance creation
- * mechanism of the <code>Device</code> class.
- * @param deviceData the device data
- */
-protected void create(DeviceData deviceData) {
- data = (PrinterData)deviceData;
- /* Use the character encoding for the default locale */
- byte [] displayName = null, appName = null, appClass = null;
- displayName = Converter.wcsToMbcs(null, data.driver, true);
- appName = Converter.wcsToMbcs(null, data.application_name, true);
- appClass = Converter.wcsToMbcs(null, data.application_class, true);
-
- /* Open the display for the X print server */
- xtContext = OS.XtCreateApplicationContext();
- if (xtContext == 0) SWT.error(SWT.ERROR_NO_HANDLES);
- xDisplay = OS.XtOpenDisplay(xtContext, displayName, appName, appClass, 0, 0, new int[]{0}, 0);
- if (xDisplay == 0) {
- OS.XtDestroyApplicationContext(xtContext);
- SWT.error(SWT.ERROR_NO_HANDLES);
- }
- setDPI = true;
-}
-
-protected void init() {
- super.init();
-
- /* Use the character encoding for the default locale */
- byte[] buffer = Converter.wcsToMbcs(null, data.name, true);
-
- /*
- * Bug in Xp. If the printer name is not valid, Xp will
- * cause a segmentation fault. The fix is to check if the
- * printer name is valid before calling XpCreateContext().
- */
- int[] count = new int[1];
- int plist = OS.XpGetPrinterList(xDisplay, buffer, count);
- if (plist != 0) OS.XpFreePrinterList(plist);
- if (count[0] == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-
- /* Create the printContext for the printer */
- printContext = OS.XpCreateContext(xDisplay, buffer);
-
- /* Set the printContext into the display */
- OS.XpSetContext(xDisplay, printContext);
-
- /* Get the printer's screen */
- xScreen = OS.XpGetScreenOfContext(xDisplay, printContext);
- if (xScreen == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-
- /* Initialize the xDrawable */
- XRectangle rect = new XRectangle();
- short[] width = new short[1];
- short[] height = new short[1];
- OS.XpGetPageDimensions(xDisplay, printContext, width, height, rect);
- xDrawable = OS.XCreateWindow(xDisplay, OS.XRootWindowOfScreen(xScreen),
- 0, 0, rect.width, rect.height, 0,
- OS.CopyFromParent, OS.CopyFromParent, OS.CopyFromParent, 0, null);
- if (xDrawable == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-
- /* Initialize the default font */
- /* Use the character encoding for the default locale */
- Point dpi = getDPI();
- buffer = Converter.wcsToMbcs(null, "-*-courier-medium-r-*-*-*-120-"+dpi.x+"-"+dpi.y+"-*-*-iso8859-1", true);
- int fontListEntry = OS.XmFontListEntryLoad(xDisplay, buffer, OS.XmFONT_IS_FONTSET, OS.XmFONTLIST_DEFAULT_TAG);
- if (fontListEntry == 0) SWT.error(SWT.ERROR_NO_HANDLES);
- int defaultFontList = OS.XmFontListAppendEntry(0, fontListEntry);
- OS.XmFontListEntryFree(new int[]{fontListEntry});
- defaultFont = Font.motif_new(this, defaultFontList);
-}
-
-/**
- * Destroys the printer handle.
- * This method is called internally by the dispose
- * mechanism of the <code>Device</code> class.
- */
-protected void destroy() {
- if (xtContext != 0) OS.XtDestroyApplicationContext (xtContext);
-}
-
-/**
- * Invokes platform specific functionality to allocate a new GC handle.
- * <p>
- * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
- * API for <code>Printer</code>. It is marked public only so that it
- * can be shared within the packages provided by SWT. It is not
- * available on all platforms, and should never be called from
- * application code.
- * </p>
- *
- * @param data the platform specific GC data
- * @return the platform specific GC handle
- */
-public int internal_new_GC(GCData data) {
- if (data != null) {
- if (isGCCreated) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
- int mask = SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
- if ((data.style & mask) == 0) {
- data.style |= SWT.LEFT_TO_RIGHT;
- }
- data.device = this;
- data.display = xDisplay;
- data.drawable = xDrawable;
- data.font = defaultFont;
- data.colormap = OS.XDefaultColormapOfScreen(xScreen);
- int defaultGC = OS.XDefaultGCOfScreen(xScreen);
- if (defaultGC != 0) {
- XGCValues values = new XGCValues();
- OS.XGetGCValues(xDisplay, defaultGC, OS.GCBackground | OS.GCForeground, values);
- XColor foreground = new XColor ();
- foreground.pixel = values.foreground;
- data.foreground = foreground;
- XColor background = new XColor ();
- background.pixel = values.background;
- data.background = background;
- }
- isGCCreated = true;
- }
- int xGC = OS.XCreateGC(xDisplay, xDrawable, 0, null);
- if (xGC == 0) SWT.error(SWT.ERROR_NO_HANDLES);
- return xGC;
-}
-
-/**
- * Invokes platform specific functionality to dispose a GC handle.
- * <p>
- * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
- * API for <code>Printer</code>. It is marked public only so that it
- * can be shared within the packages provided by SWT. It is not
- * available on all platforms, and should never be called from
- * application code.
- * </p>
- *
- * @param hDC the platform specific GC handle
- * @param data the platform specific GC data
- */
-public void internal_dispose_GC(int xGC, GCData data) {
- OS.XFreeGC(xDisplay, xGC);
- if (data != null) isGCCreated = false;
-}
-
-/**
- * Starts a print job and returns true if the job started successfully
- * and false otherwise.
- * <p>
- * This must be the first method called to initiate a print job,
- * followed by any number of startPage/endPage calls, followed by
- * endJob. Calling startPage, endPage, or endJob before startJob
- * will result in undefined behavior.
- * </p>
- *
- * @param jobName the name of the print job to start
- * @return true if the job started successfully and false otherwise.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #startPage
- * @see #endPage
- * @see #endJob
- */
-public boolean startJob(String jobName) {
- checkDevice();
- /* Use the character encoding for the default locale */
- byte [] buffer = Converter.wcsToMbcs(null, "*job-name: " + jobName, true);
- OS.XpSetAttributes(xDisplay, printContext, OS.XPJobAttr, buffer, OS.XPAttrMerge);
- OS.XpStartJob(xDisplay, OS.XPSpool);
- return true;
-}
-
-/**
- * Ends the current print job.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #startJob
- * @see #startPage
- * @see #endPage
- */
-public void endJob() {
- checkDevice();
- OS.XpEndJob(xDisplay);
- OS.XFlush(xDisplay);
-}
-
-/**
- * Cancels a print job in progress.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- */
-public void cancelJob() {
- checkDevice();
- OS.XpCancelJob(xDisplay, true);
-}
-
-/**
- * Starts a page and returns true if the page started successfully
- * and false otherwise.
- * <p>
- * After calling startJob, this method may be called any number of times
- * along with a matching endPage.
- * </p>
- *
- * @return true if the page started successfully and false otherwise.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #endPage
- * @see #startJob
- * @see #endJob
- */
-public boolean startPage() {
- checkDevice();
- OS.XpStartPage(xDisplay, xDrawable);
- return true;
-}
-
-/**
- * Ends the current page.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #startPage
- * @see #startJob
- * @see #endJob
- */
-public void endPage() {
- checkDevice();
- OS.XpEndPage(xDisplay);
-}
-
-/**
- * Returns a point whose x coordinate is the horizontal
- * dots per inch of the printer, and whose y coordinate
- * is the vertical dots per inch of the printer.
- *
- * @return the horizontal and vertical DPI
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- */
-public Point getDPI() {
- checkDevice();
- /* Use the character encoding for the default locale */
- byte [] buffer = Converter.wcsToMbcs(null, "default-printer-resolution", true);
- int pool = OS.XpGetOneAttribute(xDisplay, printContext, OS.XPDocAttr, buffer);
- int length = OS.strlen(pool);
- buffer = new byte[length];
- OS.memmove(buffer, pool, length);
- OS.XtFree(pool);
- String resolution = new String(buffer, 0, buffer.length);
- int res = 300; // default
- if (resolution.length() == 0) {
- /* If we can't get the info from the DocAttrs, ask the printer. */
- /* Use the character encoding for the default locale */
- buffer = Converter.wcsToMbcs(null, "printer-resolutions-supported", true);
- pool = OS.XpGetOneAttribute(xDisplay, printContext, OS.XPPrinterAttr, buffer);
- length = OS.strlen(pool);
- buffer = new byte[length];
- OS.memmove(buffer, pool, length);
- OS.XtFree(pool);
- int n = 0;
- while (!Compatibility.isWhitespace((char)buffer[n]) && n < buffer.length) n++;
- resolution = new String(buffer, 0, n);
- }
- if (resolution.length() != 0) {
- try {
- res = Integer.parseInt(resolution);
- } catch (NumberFormatException ex) {}
- }
- return new Point(res, res);
-}
-
-/**
- * Returns a rectangle describing the receiver's size and location.
- * <p>
- * For a printer, this is the size of the physical page, in pixels.
- * </p>
- *
- * @return the bounding rectangle
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #getClientArea
- * @see #computeTrim
- */
-public Rectangle getBounds() {
- checkDevice();
- XRectangle rect = new XRectangle();
- short [] width = new short [1];
- short [] height = new short [1];
- OS.XpGetPageDimensions(xDisplay, printContext, width, height, rect);
- return new Rectangle(0, 0, width[0], height[0]);
-}
-
-/**
- * Returns a rectangle which describes the area of the
- * receiver which is capable of displaying data.
- * <p>
- * For a printer, this is the size of the printable area
- * of the page, in pixels.
- * </p>
- *
- * @return the client area
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #getBounds
- * @see #computeTrim
- */
-public Rectangle getClientArea() {
- checkDevice();
- XRectangle rect = new XRectangle();
- OS.XpGetPageDimensions(xDisplay, printContext, new short [1], new short [1], rect);
- return new Rectangle(rect.x, rect.y, rect.width, rect.height);
-}
-
-/**
- * Given a <em>client area</em> (as described by the arguments),
- * returns a rectangle, relative to the client area's coordinates,
- * that is the client area expanded by the printer's trim (or minimum margins).
- * <p>
- * Most printers have a minimum margin on each edge of the paper where the
- * printer device is unable to print. This margin is known as the "trim."
- * This method can be used to calculate the printer's minimum margins
- * by passing in a client area of 0, 0, 0, 0 and then using the resulting
- * x and y coordinates (which will be <= 0) to determine the minimum margins
- * for the top and left edges of the paper, and the resulting width and height
- * (offset by the resulting x and y) to determine the minimum margins for the
- * bottom and right edges of the paper, as follows:
- * <ul>
- * <li>The left trim width is -x pixels</li>
- * <li>The top trim height is -y pixels</li>
- * <li>The right trim width is (x + width) pixels</li>
- * <li>The bottom trim height is (y + height) pixels</li>
- * </ul>
- * </p>
- *
- * @param x the x coordinate of the client area
- * @param y the y coordinate of the client area
- * @param width the width of the client area
- * @param height the height of the client area
- * @return a rectangle, relative to the client area's coordinates, that is
- * the client area expanded by the printer's trim (or minimum margins)
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- *
- * @see #getBounds
- * @see #getClientArea
- */
-public Rectangle computeTrim(int x, int y, int width, int height) {
- checkDevice();
- XRectangle rect = new XRectangle();
- short [] paperWidth = new short [1];
- short [] paperHeight = new short [1];
- OS.XpGetPageDimensions(xDisplay, printContext, paperWidth, paperHeight, rect);
- int hTrim = paperWidth[0] - rect.width;
- int vTrim = paperHeight[0] - rect.height;
- return new Rectangle(x - rect.x, y - rect.y, width + hTrim, height + vTrim);
-}
-
-/**
- * Returns a <code>PrinterData</code> object representing the
- * target printer for this print job.
- *
- * @return a PrinterData object describing the receiver
- */
-public PrinterData getPrinterData() {
- return data;
-}
-
-/**
- * Returns a reasonable font for applications to use.
- * On some platforms, this will match the "default font"
- * or "system font" if such can be found. This font
- * should not be free'd because it was allocated by the
- * system, not the application.
- * <p>
- * Typically, applications which want the default look
- * should simply not set the font on the widgets they
- * create. Widgets are always created with the correct
- * default font for the class of user-interface component
- * they represent.
- * </p>
- *
- * @return a font
- *
- * @exception SWTException <ul>
- * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
- * </ul>
- */
-public Font getSystemFont () {
- checkDevice ();
- return defaultFont;
-}
-
-/**
- * Checks the validity of this device.
- *
- * @exception SWTException <ul>
- * <li>ERROR_DEVICE_DISPOSED - if the receiver has been disposed</li>
- * </ul>
- */
-protected void checkDevice() {
- if (xDisplay == 0) SWT.error(SWT.ERROR_DEVICE_DISPOSED);
-}
-
-/**
- * Releases any internal state prior to destroying this printer.
- * This method is called internally by the dispose
- * mechanism of the <code>Device</code> class.
- */
-protected void release() {
- super.release();
- if (defaultFont != null) {
- OS.XmFontListFree(defaultFont.handle);
- defaultFont.handle = 0;
- defaultFont = null;
- }
- if (printContext != 0) {
- OS.XpDestroyContext(xDisplay, printContext);
- printContext = 0;
- }
- if (xDrawable != 0) {
- OS.XDestroyWindow(xDisplay, xDrawable);
- xDrawable = 0;
- }
- xScreen = 0;
- data = null;
-}
-
-}