Ignore:
Timestamp:
01/31/14 16:42:05 (10 years ago)
Author:
jts21
Message:

Make JfxBrowser use only JavaFX Nodes, and make WebParser get images with webView.snapshot() instead of blitting the parent Swing component onto an Image

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/io/WebParser.java

    r796 r801  
    1111import java.net.MalformedURLException;
    1212import java.net.URL;
     13import java.nio.IntBuffer;
    1314import java.text.SimpleDateFormat;
    1415
     
    1819import javafx.beans.value.ObservableValue;
    1920import javafx.concurrent.Worker.State;
     21import javafx.embed.swing.SwingFXUtils;
     22import javafx.scene.SnapshotParameters;
     23import javafx.scene.image.WritableImage;
     24import javafx.scene.image.WritablePixelFormat;
    2025import javafx.scene.web.WebEngine;
     26import javafx.scene.web.WebView;
    2127
    2228import javax.imageio.ImageIO;
     
    3743import org.w3c.dom.Node;
    3844import org.w3c.dom.html.HTMLBodyElement;
     45
     46
     47
     48
     49
     50
    3951
    4052/*
     
    279291         *            The Expeditee frame to output the converted page to
    280292         */
    281         public static void parsePageSimple(final WebEngine webEngine, final Object webView, final JComponent jfxPanel, final Frame frame) {
     293        public static void parsePageSimple(final WebEngine webEngine, final WebView webView, final Frame frame) {
    282294                try {
    283295                        final Object notifier = new Object();
     
    354366                                                System.out.println("hidden");
    355367
    356                                                 BufferedImage image = new BufferedImage(jfxPanel.getWidth(), jfxPanel.getHeight(), BufferedImage.TYPE_INT_ARGB);
    357 
    358                                                 Graphics graphics = image.createGraphics();
     368                                                WritableImage tmp = new WritableImage((int)webView.getWidth(), (int)webView.getHeight());
     369
    359370                                                System.out.println("painted");
    360371                                                // Drawing the JfxPanel (containing the webview) to the image
    361                                                 jfxPanel.paint(graphics);
     372                                                webView.snapshot(new SnapshotParameters(), tmp);
     373                                               
     374                                                // Getting a BufferedImage from the JavaFX image
     375                                                BufferedImage image = SwingFXUtils.fromFXImage(tmp, null);
    362376
    363377                                                try {
     
    425439                                                }
    426440
    427                                                 graphics.dispose();
    428441                                                image.flush();
    429442
Note: See TracChangeset for help on using the changeset viewer.