package jxcapture.image.win;

import com.teamdev.jxcapture.ImageCapture;
import com.teamdev.jxcapture.image.ImageFormat;
import com.teamdev.jxcapture.video.WindowSource;
import com.teamdev.jxdesktop.WindowManager;

import java.awt.*;
import java.io.File;

/**
 * The example shows how to capture a browser window.
 * <pre>
 * Platforms:           Windows
 * Capture source:      WindowSource
 * Output image format: PNG
 * Output file:         Explorer.png
 *
 * @author Serge Piletsky
 */
public class CaptureExplorerWindow {
    public static void main(String[] args) throws Exception {
        Runtime.getRuntime().exec("explorer http://www.teamdev.com/jxcapture");
        Thread.sleep(3000);

        // Find explorer window by the title
        WindowManager windowManager = WindowManager.getInstance();
        com.teamdev.jxdesktop.ui.Window explorerWindow = (com.teamdev.jxdesktop.ui.Window) windowManager.findWindow("JxCapture — TeamDev Ltd. - Windows Internet Explorer");
        if (explorerWindow == null) {
            explorerWindow = (com.teamdev.jxdesktop.ui.Window) windowManager.findWindow("JxCapture — TeamDev Ltd. - Mozilla Firefox");
        }

        if (explorerWindow == null) {
            throw new IllegalStateException("Could not find a required window to capture image");
        }

        // Capturing notepad window
        ImageCapture imageCapture = ImageCapture.create(new WindowSource(explorerWindow));
        imageCapture.setCaptureArea(new Rectangle(50, 50, 800, 600));
        long before = System.currentTimeMillis();
        imageCapture.
                takeSnapshot()
                .resize(new Dimension(640, 480))
                .save(new File("Explorer.png"), ImageFormat.PNG);

        imageCapture.release();
        long after = System.currentTimeMillis();
        System.out.println("Operation took " + (after - before));
    }
}