亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

SWT(JFace) 圖片瀏覽器 實現代碼

2020-01-31 16:50:57
字體:
來源:轉載
供稿:網友
代碼如下:
ImageViewer.java
復制代碼 代碼如下:

package swt_jface.demo11;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class ImageViewer {

    Display display = new Display();
    Shell shell = new Shell(display);
    Canvas canvas;
    Image image;
    String fileName;

    public ImageViewer() {

        shell.setText("Image viewer");
        shell.setLayout(new GridLayout(1, true));
        ToolBar toolBar = new ToolBar(shell, SWT.FLAT);
        ToolItem itemOpen = new ToolItem(toolBar, SWT.PUSH);
        itemOpen.setText("Open");
        itemOpen.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                FileDialog dialog = new FileDialog(shell, SWT.OPEN);
                String file = dialog.open();
                if (file != null) {
                    if (image != null)
                        image.dispose();
                    image = null;
                    try {
                        image = new Image(display, file);
                    } catch (RuntimeException e) {
                    }
                    if (image != null) {
                        fileName = file;
                    } else {
                        System.err.println(
                            "Failed to load image from file: " + file);
                    }
                    canvas.redraw();
                }
            }
        });
        ToolItem itemPrintPreview = new ToolItem(toolBar, SWT.PUSH);
        itemPrintPreview.setText("Preview");
        itemPrintPreview.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                ImagePrintPreviewDialog dialog =
                    new ImagePrintPreviewDialog(ImageViewer.this);
                dialog.open();
            }
        });
        ToolItem itemPrint = new ToolItem(toolBar, SWT.PUSH);
        itemPrint.setText("Print");
        itemPrint.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                print();
            }
        });
        canvas = new Canvas(shell, SWT.BORDER);
        canvas.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
        canvas.setLayoutData(new GridData(GridData.FILL_BOTH));
        canvas.addPaintListener(new PaintListener() {
            public void paintControl(PaintEvent e) {
                if (image == null) {
                    e.gc.drawString("No image", 0, 0);
                } else {
                    e.gc.drawImage(image, 0, 0);
                }
            }
        });
        image = new Image(display, "C:/icons/scene.jpg");
        fileName = "scene.jpg";
        shell.setSize(500, 400);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
    void print() {
        PrintDialog dialog = new PrintDialog(shell);
        PrinterData printerData = dialog.open();
        if (printerData == null) return;
        Printer printer = new Printer(printerData);
        print(printer, null);
    }
    void print(final Printer printer, PrintMargin printMargin) {
        if (image == null) return;
        final Point printerDPI = printer.getDPI();
        final Point displayDPI = display.getDPI();
        System.out.println(displayDPI + " " + printerDPI);
        final PrintMargin margin = (printMargin == null ? PrintMargin.getPrintMargin(printer, 1.0) : printMargin);
        Thread printThread = new Thread() {
            public void run() {
                if (!printer.startJob(fileName)) {
                    System.err.println("Failed to start print job!");
                    printer.dispose();
                    return;
                }
                GC gc = new GC(printer);
                if (!printer.startPage()) {
                    System.err.println("Failed to start a new page!");
                    gc.dispose();
                    return;
                } else {
                    int imageWidth = image.getBounds().width;
                    int imageHeight = image.getBounds().height;
                    double dpiScaleFactorX = printerDPI.x * 1.0 / displayDPI.x;
                    double dpiScaleFactorY = printerDPI.y * 1.0 / displayDPI.y;
                    double imageSizeFactor =
                        Math.min(
                            1,
                            (margin.right - margin.left)
                                * 1.0
                                / (dpiScaleFactorX * imageWidth));
                    imageSizeFactor =
                        Math.min(
                            imageSizeFactor,
                            (margin.bottom - margin.top)
                                * 1.0
                                / (dpiScaleFactorY * imageHeight));
                    gc.drawImage(
                        image,
                        0,
                        0,
                        imageWidth,
                        imageHeight,
                        margin.left,
                        margin.top,
                        (int) (dpiScaleFactorX * imageSizeFactor * imageWidth),
                        (int) (dpiScaleFactorY
                            * imageSizeFactor
                            * imageHeight));
                    gc.dispose();
                }
                printer.endPage();
                printer.endJob();
                printer.dispose();
                System.out.println("Printing job done!");
            }
        };
        printThread.start();
    }
    public static void main(String[] args) {
        new ImageViewer();
    }
}

ImagePrintPreviewDialog.java
復制代碼 代碼如下:

package swt_jface.demo11;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class ImagePrintPreviewDialog extends Dialog {

ImageViewer viewer;
Shell shell;
Canvas canvas;
Printer printer;
PrintMargin margin;
Combo combo;
public ImagePrintPreviewDialog(ImageViewer viewer) {
super(viewer.shell);
this.viewer = viewer;
}
public void open() {
shell =
new Shell(
viewer.shell,
SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.RESIZE);
shell.setText("Print preview");
shell.setLayout(new GridLayout(4, false));
final Button buttonSelectPrinter = new Button(shell, SWT.PUSH);
buttonSelectPrinter.setText("Select a printer");
buttonSelectPrinter.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
PrintDialog dialog = new PrintDialog(shell);
PrinterData printerData = dialog.open();
if (printerData == null) return;
final Printer printer = new Printer(printerData);
setPrinter(
printer,
Double.parseDouble(
combo.getItem(combo.getSelectionIndex())));
}
});
new Label(shell, SWT.NULL).setText("Margin in inches: ");
combo = new Combo(shell, SWT.READ_ONLY);
combo.add("0.5");
combo.add("1.0");
combo.add("1.5");
combo.add("2.0");
combo.add("2.5");
combo.add("3.0");
combo.select(1);
combo.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
double value =
Double.parseDouble(
combo.getItem(combo.getSelectionIndex()));
setPrinter(printer, value);
}
});
final Button buttonPrint = new Button(shell, SWT.PUSH);
buttonPrint.setText("Print");
buttonPrint.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
if (printer == null)
viewer.print();
else
viewer.print(printer, margin);
shell.dispose();
}
});
canvas = new Canvas(shell, SWT.BORDER);
GridData gridData = new GridData(GridData.FILL_BOTH);
gridData.horizontalSpan = 4;
canvas.setLayoutData(gridData);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
int canvasBorder = 20;
if (printer == null || printer.isDisposed()) return;
Rectangle rectangle = printer.getBounds();
Point canvasSize = canvas.getSize();
double viewScaleFactor =
(canvasSize.x - canvasBorder * 2) * 1.0 / rectangle.width;
viewScaleFactor =
Math.min(
viewScaleFactor,
(canvasSize.y - canvasBorder * 2)
* 1.0
/ rectangle.height);
int offsetX =
(canvasSize.x - (int) (viewScaleFactor * rectangle.width))
/ 2;
int offsetY =
(canvasSize.y - (int) (viewScaleFactor * rectangle.height))
/ 2;
e.gc.setBackground(
shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
e.gc.fillRectangle(
offsetX,
offsetY,
(int) (viewScaleFactor * rectangle.width),
(int) (viewScaleFactor * rectangle.height));
e.gc.setLineStyle(SWT.LINE_DASH);
e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
int marginOffsetX = offsetX + (int) (viewScaleFactor * margin.left);
int marginOffsetY = offsetY + (int) (viewScaleFactor * margin.top);
e.gc.drawRectangle(
marginOffsetX,
marginOffsetY,
(int) (viewScaleFactor * (margin.right - margin.left)),
(int) (viewScaleFactor * (margin.bottom - margin.top)));
if (viewer.image != null) {
int imageWidth = viewer.image.getBounds().width;
int imageHeight = viewer.image.getBounds().height;
double dpiScaleFactorX =
printer.getDPI().x
* 1.0
/ shell.getDisplay().getDPI().x;
double dpiScaleFactorY =
printer.getDPI().y
* 1.0
/ shell.getDisplay().getDPI().y;
double imageSizeFactor =
Math.min(
1,
(margin.right - margin.left)
* 1.0
/ (dpiScaleFactorX * imageWidth));
imageSizeFactor =
Math.min(
imageSizeFactor,
(margin.bottom - margin.top)
* 1.0
/ (dpiScaleFactorY * imageHeight));
e.gc.drawImage(
viewer.image,
0,
0,
imageWidth,
imageHeight,
marginOffsetX,
marginOffsetY,
(int) (dpiScaleFactorX
* imageSizeFactor
* imageWidth
* viewScaleFactor),
(int) (dpiScaleFactorY
* imageSizeFactor
* imageHeight
* viewScaleFactor));
}
}
});
shell.setSize(400, 400);
shell.open();
setPrinter(null, 1.0);
while (!shell.isDisposed()) {
if (!shell.getDisplay().readAndDispatch()) {
shell.getDisplay().sleep();
}
}
}
void setPrinter(Printer printer, double marginSize) {
if (printer == null) {
printer = new Printer(Printer.getDefaultPrinterData());
}
this.printer = printer;
margin = PrintMargin.getPrintMargin(printer, marginSize);
canvas.redraw();
}
}
package swt_jface.demo11;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class ImagePrintPreviewDialog extends Dialog {

    ImageViewer viewer;
    Shell shell;
    Canvas canvas;
    Printer printer;
    PrintMargin margin;
    Combo combo;
    public ImagePrintPreviewDialog(ImageViewer viewer) {
        super(viewer.shell);
        this.viewer = viewer;
    }
    public void open() {
        shell =
            new Shell(
                viewer.shell,
                SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.RESIZE);
        shell.setText("Print preview");
        shell.setLayout(new GridLayout(4, false));
        final Button buttonSelectPrinter = new Button(shell, SWT.PUSH);
        buttonSelectPrinter.setText("Select a printer");
        buttonSelectPrinter.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                PrintDialog dialog = new PrintDialog(shell);
                PrinterData printerData = dialog.open();
                if (printerData == null) return;
                final Printer printer = new Printer(printerData);
                setPrinter(
                    printer,
                    Double.parseDouble(
                        combo.getItem(combo.getSelectionIndex())));
            }
        });
        new Label(shell, SWT.NULL).setText("Margin in inches: ");
        combo = new Combo(shell, SWT.READ_ONLY);
        combo.add("0.5");
        combo.add("1.0");
        combo.add("1.5");
        combo.add("2.0");
        combo.add("2.5");
        combo.add("3.0");
        combo.select(1);
        combo.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                double value =
                    Double.parseDouble(
                        combo.getItem(combo.getSelectionIndex()));
                setPrinter(printer, value);
            }
        });
        final Button buttonPrint = new Button(shell, SWT.PUSH);
        buttonPrint.setText("Print");
        buttonPrint.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                if (printer == null)
                    viewer.print();
                else
                    viewer.print(printer, margin);
                shell.dispose();
            }
        });
        canvas = new Canvas(shell, SWT.BORDER);
        GridData gridData = new GridData(GridData.FILL_BOTH);
        gridData.horizontalSpan = 4;
        canvas.setLayoutData(gridData);
        canvas.addPaintListener(new PaintListener() {
            public void paintControl(PaintEvent e) {
                int canvasBorder = 20;
                if (printer == null || printer.isDisposed()) return;
                Rectangle rectangle = printer.getBounds();
                Point canvasSize = canvas.getSize();
                double viewScaleFactor =
                    (canvasSize.x - canvasBorder * 2) * 1.0 / rectangle.width;
                viewScaleFactor =
                    Math.min(
                        viewScaleFactor,
                        (canvasSize.y - canvasBorder * 2)
                            * 1.0
                            / rectangle.height);
                int offsetX =
                    (canvasSize.x - (int) (viewScaleFactor * rectangle.width))
                        / 2;
                int offsetY =
                    (canvasSize.y - (int) (viewScaleFactor * rectangle.height))
                        / 2;
                e.gc.setBackground(
                    shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
                e.gc.fillRectangle(
                    offsetX,
                    offsetY,
                    (int) (viewScaleFactor * rectangle.width),
                    (int) (viewScaleFactor * rectangle.height));
                e.gc.setLineStyle(SWT.LINE_DASH);
                e.gc.setForeground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
                int marginOffsetX = offsetX + (int) (viewScaleFactor * margin.left);
                int marginOffsetY = offsetY + (int) (viewScaleFactor * margin.top);
                e.gc.drawRectangle(
                    marginOffsetX,
                    marginOffsetY,
                    (int) (viewScaleFactor * (margin.right - margin.left)),
                    (int) (viewScaleFactor * (margin.bottom - margin.top)));
                if (viewer.image != null) {
                    int imageWidth = viewer.image.getBounds().width;
                    int imageHeight = viewer.image.getBounds().height;
                    double dpiScaleFactorX =
                        printer.getDPI().x
                            * 1.0
                            / shell.getDisplay().getDPI().x;
                    double dpiScaleFactorY =
                        printer.getDPI().y
                            * 1.0
                            / shell.getDisplay().getDPI().y;
                    double imageSizeFactor =
                        Math.min(
                            1,
                            (margin.right - margin.left)
                                * 1.0
                                / (dpiScaleFactorX * imageWidth));
                    imageSizeFactor =
                        Math.min(
                            imageSizeFactor,
                            (margin.bottom - margin.top)
                                * 1.0
                                / (dpiScaleFactorY * imageHeight));
                    e.gc.drawImage(
                        viewer.image,
                        0,
                        0,
                        imageWidth,
                        imageHeight,
                        marginOffsetX,
                        marginOffsetY,
                        (int) (dpiScaleFactorX
                            * imageSizeFactor
                            * imageWidth
                            * viewScaleFactor),
                        (int) (dpiScaleFactorY
                            * imageSizeFactor
                            * imageHeight
                            * viewScaleFactor));
                }
            }
        });
        shell.setSize(400, 400);
        shell.open();
        setPrinter(null, 1.0);
        while (!shell.isDisposed()) {
            if (!shell.getDisplay().readAndDispatch()) {
                shell.getDisplay().sleep();
            }
        }
    }
    void setPrinter(Printer printer, double marginSize) {
        if (printer == null) {
            printer = new Printer(Printer.getDefaultPrinterData());
        }
        this.printer = printer;
        margin = PrintMargin.getPrintMargin(printer, marginSize);
        canvas.redraw();
    }
}


PrintMargin.java

復制代碼 代碼如下:

package swt_jface.demo11;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.printing.Printer;
public class PrintMargin {

public int left;
public int right;
public int top;
public int bottom;
private PrintMargin(int left, int right, int top, int bottom) {
this.left = left;
this.right = right;
this.top = top;
this.bottom = bottom;
}
static PrintMargin getPrintMargin(Printer printer, double margin) {
return getPrintMargin(printer, margin, margin, margin, margin);
}
static PrintMargin getPrintMargin(
Printer printer,
double marginLeft,
double marginRight,
double marginTop,
double marginBottom) {
Rectangle clientArea = printer.getClientArea();
Rectangle trim = printer.computeTrim(0, 0, 0, 0);
Point dpi = printer.getDPI();
int leftMargin = (int) (marginLeft * dpi.x) - trim.x;
int rightMargin =
clientArea.width
+ trim.width
- (int) (marginRight * dpi.x)
- trim.x;
int topMargin = (int) (marginTop * dpi.y) - trim.y;
int bottomMargin =
clientArea.height
+ trim.height
- (int) (marginBottom * dpi.y)
- trim.y;
return new PrintMargin(
leftMargin,
rightMargin,
topMargin,
bottomMargin);
}
public String toString() {
return "Margin { "
+ left
+ ", "
+ right
+ "; "
+ top
+ ", "
+ bottom
+ " }";
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区二区三区四| 日韩视频在线观看免费| 精品无码久久久久久国产| 国产日韩欧美在线播放| 国产精品美女主播在线观看纯欲| 亚洲欧美综合精品久久成人| 97国产精品视频| 国产精品视频最多的网站| 国产精品国模在线| 国产中文字幕日韩| 精品电影在线观看| 在线午夜精品自拍| 国产视频亚洲精品| 亚洲视频网站在线观看| 国外成人性视频| 日韩电影中文字幕在线观看| 国产精品福利网站| 国产亚洲精品久久久优势| 成人国产精品色哟哟| 欧美性jizz18性欧美| 日韩中文字幕在线| 国产一区二中文字幕在线看| 久久久免费高清电视剧观看| 97热在线精品视频在线观看| 日本不卡高字幕在线2019| 色综合久久天天综线观看| 国产精品视频xxx| 国产精品视频中文字幕91| 日韩毛片在线观看| 亚洲一区二区日本| 亚洲一区二区三区视频| 国产精品视频网址| 日韩国产激情在线| 亚洲网站视频福利| 欧美精品日韩www.p站| 欧美视频免费在线| 日韩综合中文字幕| 97超级碰碰人国产在线观看| 91精品久久久久久久久久另类| 亚洲人成网站免费播放| 亚洲午夜精品久久久久久性色| 国产乱人伦真实精品视频| 国内精品伊人久久| 69久久夜色精品国产7777| 欧美中文在线视频| 国产精品亚洲美女av网站| 欧美一级视频在线观看| 日本成人在线视频网址| 91色视频在线导航| 国产精品免费一区豆花| 精品二区三区线观看| 国产精品极品美女粉嫩高清在线| 亚洲精品视频网上网址在线观看| 欧美床上激情在线观看| 国产在线播放91| 伦伦影院午夜日韩欧美限制| 国产一区二区三区欧美| 久久久亚洲欧洲日产国码aⅴ| 午夜精品99久久免费| 精品久久久久久久久中文字幕| 国产不卡在线观看| 国产日韩专区在线| 91在线中文字幕| 国产精品极品美女粉嫩高清在线| 色无极亚洲影院| 97视频在线观看网址| 亚洲第一区第二区| 亚洲欧美日韩精品| 欧美激情性做爰免费视频| 欧美黄色免费网站| 欧美成人一区在线| 国产午夜精品理论片a级探花| 精品久久久久久中文字幕一区奶水| 国产精品视频精品| 日韩中文有码在线视频| 欧美性xxxx极品高清hd直播| 成人久久一区二区三区| 国产一区二区在线免费| 亚洲综合国产精品| 欧美成人精品在线视频| 成人免费视频a| 国产福利精品av综合导导航| 欧美—级a级欧美特级ar全黄| 亚洲精品视频在线播放| 亚洲综合色激情五月| 一区二区三区无码高清视频| 97av在线影院| 日韩电视剧在线观看免费网站| 91地址最新发布| 国产精品免费小视频| 国产精品对白刺激| 91精品视频专区| 日本韩国欧美精品大片卡二| 日韩av电影手机在线观看| 成人黄色免费在线观看| 国产精品成人免费视频| 激情成人中文字幕| 欧美另类99xxxxx| 国产日产欧美a一级在线| 在线精品视频视频中文字幕| 欧美激情高清视频| 少妇激情综合网| 国产精品成人va在线观看| 色一情一乱一区二区| 亚洲成人av在线播放| 日韩成人黄色av| 久久久97精品| 日韩欧美亚洲综合| 日韩精品免费在线播放| 欧美精品在线视频观看| 全亚洲最色的网站在线观看| 午夜精品久久久久久久男人的天堂| 亚洲精品中文字幕有码专区| 国产91|九色| 国产精品美女免费| 国产欧美日韩91| 91av在线影院| 欧美日韩中文在线| 国产aⅴ夜夜欢一区二区三区| www.久久草.com| 国产精品视频1区| 精品国产依人香蕉在线精品| 日韩国产在线看| 色哟哟入口国产精品| 久久精品国产免费观看| 91在线观看免费高清完整版在线观看| 亚洲欧美国产精品久久久久久久| 91麻豆国产语对白在线观看| 欧美性色视频在线| 日韩精品久久久久| 国产欧美va欧美va香蕉在线| 91网在线免费观看| 日韩av有码在线| 国模吧一区二区三区| 亚洲欧美福利视频| 在线中文字幕日韩| 亚洲精品二三区| 久久精品国产久精国产思思| 大伊人狠狠躁夜夜躁av一区| 国产欧美va欧美va香蕉在线| 一区二区三区国产在线观看| 成人福利视频在线观看| 欧美另类第一页| 亚洲精品美女在线观看播放| 日韩免费观看视频| www.美女亚洲精品| 一区二区三区无码高清视频| 亚洲人成在线观看网站高清| 91精品在线国产| 日本成人免费在线| 亚洲精品短视频| 欧美在线免费观看| 精品国产网站地址| 另类美女黄大片| 伊人伊成久久人综合网小说| 欧美激情精品久久久久久变态| 成人精品视频99在线观看免费| 欧美性猛交xxxxx免费看| 日韩福利视频在线观看| 欧美一级视频在线观看| 在线看日韩欧美| 精品国产电影一区| 中文字幕亚洲欧美日韩在线不卡| 久久免费视频网|