Example usage for org.eclipse.swt.widgets Display getDPI

List of usage examples for org.eclipse.swt.widgets Display getDPI

Introduction

In this page you can find the example usage for org.eclipse.swt.widgets Display getDPI.

Prototype

@Override
    public Point getDPI() 

Source Link

Usage

From source file:MainClass.java

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);

    Image image = new Image(display, "fileName.gif");
    ImageData imageData = image.getImageData();

    PrintDialog dialog = new PrintDialog(shell, SWT.NULL);
    PrinterData printerData = dialog.open();

    Printer printer = new Printer(printerData);

    Point screenDPI = display.getDPI();
    Point printerDPI = printer.getDPI();
    int scaleFactor = printerDPI.x / screenDPI.x;

    Rectangle trim = printer.computeTrim(0, 0, 0, 0);

    if (printer.startJob("fileName")) {
        if (printer.startPage()) {
            GC gc = new GC(printer);
            Image printerImage = new Image(printer, imageData);

            // Draw the image
            gc.drawImage(printerImage, 0, 0, imageData.width, imageData.height, -trim.x, -trim.y,
                    scaleFactor * imageData.width, scaleFactor * imageData.height);

            // Clean up
            printerImage.dispose();// w  ww .jav  a  2s.  c om
            gc.dispose();
            printer.endPage();
        }
    }
    // End the job and dispose the printer
    printer.endJob();
    printer.dispose();

    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
}

From source file:ImagePrinterExample.java

/**
 * The application entry point/*from w  ww .jav a 2 s .  c  o m*/
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display, SWT.NONE);

    try {
        // Prompt the user for an image file
        FileDialog fileChooser = new FileDialog(shell, SWT.OPEN);
        String fileName = fileChooser.open();

        if (fileName == null) {
            return;
        }

        // Load the image
        ImageLoader loader = new ImageLoader();
        ImageData[] imageData = loader.load(fileName);

        if (imageData.length > 0) {
            // Show the Choose Printer dialog
            PrintDialog dialog = new PrintDialog(shell, SWT.NULL);
            PrinterData printerData = dialog.open();

            if (printerData != null) {
                // Create the printer object
                Printer printer = new Printer(printerData);

                // Calculate the scale factor between the screen resolution and printer
                // resolution in order to correctly size the image for the printer
                Point screenDPI = display.getDPI();
                Point printerDPI = printer.getDPI();
                int scaleFactor = printerDPI.x / screenDPI.x;

                // Determine the bounds of the entire area of the printer
                Rectangle trim = printer.computeTrim(0, 0, 0, 0);

                // Start the print job
                if (printer.startJob(fileName)) {
                    if (printer.startPage()) {
                        GC gc = new GC(printer);
                        Image printerImage = new Image(printer, imageData[0]);

                        // Draw the image
                        gc.drawImage(printerImage, 0, 0, imageData[0].width, imageData[0].height, -trim.x,
                                -trim.y, scaleFactor * imageData[0].width, scaleFactor * imageData[0].height);

                        // Clean up
                        printerImage.dispose();
                        gc.dispose();
                        printer.endPage();
                    }
                }
                // End the job and dispose the printer
                printer.endJob();
                printer.dispose();
            }
        }
    } catch (Exception e) {
        MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
        messageBox.setMessage("Error printing test image");
        messageBox.open();
    }
}

From source file:org.eclipse.swt.snippets.Snippet367.java

public static void main(String[] args) {
    final ImageFileNameProvider filenameProvider = zoom -> {
        switch (zoom) {
        case 100:
            return IMAGE_PATH_100;
        case 150:
            return IMAGE_PATH_150;
        case 200:
            return IMAGE_PATH_200;
        default://w ww.j av  a2s  .co  m
            return null;
        }
    };
    final ImageDataProvider imageDataProvider = zoom -> {
        switch (zoom) {
        case 100:
            return new ImageData(IMAGE_PATH_100);
        case 150:
            return new ImageData(IMAGE_PATH_150);
        case 200:
            return new ImageData(IMAGE_PATH_200);
        default:
            return null;
        }
    };

    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Snippet367");
    shell.setLayout(new GridLayout(3, false));

    Menu menuBar = new Menu(shell, SWT.BAR);
    shell.setMenuBar(menuBar);
    MenuItem fileItem = new MenuItem(menuBar, SWT.CASCADE);
    fileItem.setText("&File");
    Menu fileMenu = new Menu(menuBar);
    fileItem.setMenu(fileMenu);
    MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH);
    exitItem.setText("&Exit");
    exitItem.addListener(SWT.Selection, e -> shell.close());

    new Label(shell, SWT.NONE).setText(IMAGE_200 + ":");
    new Label(shell, SWT.NONE).setImage(new Image(display, IMAGE_PATH_200));
    new Button(shell, SWT.PUSH).setImage(new Image(display, IMAGE_PATH_200));

    new Label(shell, SWT.NONE).setText(IMAGE_150 + ":");
    new Label(shell, SWT.NONE).setImage(new Image(display, IMAGE_PATH_150));
    new Button(shell, SWT.NONE).setImage(new Image(display, IMAGE_PATH_150));

    new Label(shell, SWT.NONE).setText(IMAGE_100 + ":");
    new Label(shell, SWT.NONE).setImage(new Image(display, IMAGE_PATH_100));
    new Button(shell, SWT.NONE).setImage(new Image(display, IMAGE_PATH_100));

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("ImageFileNameProvider:");
    new Label(shell, SWT.NONE).setImage(new Image(display, filenameProvider));
    new Button(shell, SWT.NONE).setImage(new Image(display, filenameProvider));

    new Label(shell, SWT.NONE).setText("ImageDataProvider:");
    new Label(shell, SWT.NONE).setImage(new Image(display, imageDataProvider));
    new Button(shell, SWT.NONE).setImage(new Image(display, imageDataProvider));

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("1. Canvas\n(PaintListener)");
    final Point size = new Point(550, 40);
    final Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(e -> {
        Point size1 = canvas.getSize();
        paintImage(e.gc, size1);
    });
    GridData gridData = new GridData(size.x, size.y);
    gridData.horizontalSpan = 2;
    canvas.setLayoutData(gridData);

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("2. Painted image\n (default resolution)");
    Image image = new Image(display, size.x, size.y);
    GC gc = new GC(image);
    try {
        paintImage(gc, size);
    } finally {
        gc.dispose();
    }
    Label imageLabel = new Label(shell, SWT.NONE);
    imageLabel.setImage(image);
    imageLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("3. Painted image\n(multi-res, unzoomed paint)");
    imageLabel = new Label(shell, SWT.NONE);
    imageLabel.setImage(new Image(display, (ImageDataProvider) zoom -> {
        Image temp = new Image(display, size.x * zoom / 100, size.y * zoom / 100);
        GC gc1 = new GC(temp);
        try {
            paintImage(gc1, size);
            return temp.getImageData();
        } finally {
            gc1.dispose();
            temp.dispose();
        }
    }));
    imageLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("4. Painted image\n(multi-res, zoomed paint)");
    imageLabel = new Label(shell, SWT.NONE);
    imageLabel.setImage(new Image(display, (ImageDataProvider) zoom -> {
        Image temp = new Image(display, size.x * zoom / 100, size.y * zoom / 100);
        GC gc1 = new GC(temp);
        try {
            paintImage2(gc1, new Point(size.x * zoom / 100, size.y * zoom / 100), zoom / 100);
            return temp.getImageData();
        } finally {
            gc1.dispose();
            temp.dispose();
        }
    }));
    imageLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1));

    createSeparator(shell);

    new Label(shell, SWT.NONE).setText("5. 50x50 box\n(Display#getDPI(): " + display.getDPI().x + ")");
    Label box = new Label(shell, SWT.NONE);
    box.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
    box.setLayoutData(new GridData(50, 50));

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

From source file:org.eclipse.swt.snippets.Snippet361.java

private static void performPrintAction(final Display display, final Shell shell) {
    Rectangle r = composite.getBounds();
    Point p = shell.toDisplay(r.x, r.y);
    org.eclipse.swt.graphics.Image snapshotImage = new org.eclipse.swt.graphics.Image(display, r.width - 2,
            r.height - 2);/*from   w  w w. ja  v a2 s  .c  o m*/
    GC snapshotGC = new GC(display);
    snapshotGC.copyArea(snapshotImage, p.x + 1, p.y + 1);
    PrintDialog dialog = new PrintDialog(shell, SWT.NONE);
    PrinterData data = new PrinterData();
    data.orientation = PrinterData.LANDSCAPE;
    dialog.setPrinterData(data);
    data = dialog.open();
    if (data != null) {
        Printer printer = new Printer(data);
        Point screenDPI = display.getDPI();
        Point printerDPI = printer.getDPI();
        int scaleFactor = printerDPI.x / screenDPI.x;
        Rectangle trim = printer.computeTrim(0, 0, 0, 0);
        if (printer.startJob("Print Image")) {
            ImageData imageData = snapshotImage.getImageData();
            org.eclipse.swt.graphics.Image printerImage = new org.eclipse.swt.graphics.Image(printer,
                    imageData);
            GC printerGC = new GC(printer);
            if (printer.startPage()) {
                printerGC.drawImage(printerImage, 0, 0, imageData.width, imageData.height, -trim.x, -trim.y,
                        scaleFactor * imageData.width, scaleFactor * imageData.height);
                printer.endPage();
            }
            printerGC.dispose();
            printer.endJob();
        }
        printer.dispose();
    }
    snapshotImage.dispose();
    snapshotGC.dispose();
}