亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imgscrollpane.java

?? jpeg2000算法實現
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
     * */    public void remove(Component comp) {        throw new IllegalArgumentException();    }    /**     * Throws an IllegalArgumentException since the components should never be      * removed from this container.     * */    public void removeAll() {        throw new IllegalArgumentException();    }    /**     * Throws an IllegalArgumentException since the layout manager is     * internally set and can not be changed.     * */    public void setLayout(LayoutManager mgr) {        throw new IllegalArgumentException();    }    /**     * Sets the scrollbars values, according to the image display area and     * image size. The current scroll position is kept.     *     * */    private void setScrollbars() {        Dimension asz; // actual image area size        Dimension psz; // preferred size        int pos;       // current scroll position        int szx,szy;   // actual image display area size        if (!imgDisplay.calcDim()) {            // While the image dimensions are not known we can't really update             // the scrollbar.            return;        }        // Get the dimensions        asz = imgDisplay.getSize();        psz = imgDisplay.getPreferredSize();        // Initialize lastZoom and lastSize if never done yet        if (lastZoom == 0f) lastZoom = zoom;        if (lastSize == null) lastSize = new Dimension(asz.width,asz.height);        // Get the actual display size        szx = (asz.width < psz.width) ? asz.width : psz.width;        szy = (asz.height < psz.height) ? asz.height : psz.height;        // Set horizontal scrollbar        pos = (int)((hsbar.getValue()+lastSize.width/2f)/lastZoom*zoom-szx/2f);        if (pos > (psz.width-asz.width)) pos = psz.width-asz.width;        if (pos < 0) pos = 0;        if (asz.width <= 0) asz.width = 1;        if (psz.width <= 0) psz.width = 1;        hsbar.setValues(pos,asz.width,0,psz.width);        asz.width = (int)(asz.width*BLOCK_INCREMENT_PROPORTION);        if (asz.width <= 0) asz.width = 1;        hsbar.setBlockIncrementI(asz.width);        // Set vertical scrollbar        pos = (int)((vsbar.getValue()+lastSize.height/2f)/lastZoom*zoom-szy/2f);        if (pos > (psz.height-asz.height)) pos = psz.height-asz.height;        if (pos < 0) pos = 0;        if (asz.height <= 0) asz.height = 1;        if (psz.height <= 0) psz.height = 1;        vsbar.setValues(pos,asz.height,0,psz.height);        asz.height = (int)(asz.height*BLOCK_INCREMENT_PROPORTION);        if (asz.height <= 0) asz.height = 1;        vsbar.setBlockIncrementI(asz.height);        // Save the zoom and display size used in the scrollbar calculation        lastZoom = zoom;        lastSize.width = szx;        lastSize.height = szy;    }    /**     * This class implements the component that displays the currently     * viewable image portion inside the ImgScrollPane. It handles the     * necessary erasing, zooming and panning.     *     * <P>NOTE: extending 'Canvas' instead of 'Component' solves the     * flickering problem of lightweight components which are in heavyweight     * containers.     *     * */    private class ImageScrollDisplay extends Canvas {        /** The image to be displayed          *         * @serial */        Image img;        /** The preferred size for this component          *         * @serial */        Dimension dim = new Dimension();        /** If the current graphics context should be erased prior to drawing         * the image. Set when the image and/or zoom factor is changed.         *         * @serial */        boolean erase;        /** The image dimensions, without any scaling. Set as soon as they are            known.             *            * @serial */        Dimension imgDim = new Dimension();        /** The image dimension flags, as in ImageObserver. The         * ImageObserver.WIDTH and ImageObserver.HEIGHT flags are set whenever         * the dimension is stored in imgDim. They are reset whenever the         * image changes.         *         * @serial */        int dimFlags;        /** The last offset used in update().         *         * @serial */        Point lastUpdateOffset;        /**         * Sets the image to display in this component. If the image is not         * ready for display it will be prepared in the current thread. The         * current zoom factor applies.         *         * <P>If the image is not ready for display (i.e. it has not been         * rendered at its natural size) it will be rendered in the current         * thread, if not being already rendered in another one. This means         * that the current thread can block until the image is ready.         *         * <P>If the image is rendered incrementally (it depends on the         * underlying 'ImageProducer') it will be displayed in that way if the         * incremental display is set for the Component class. See the         * 'imageUpdate()' method of the 'Component' class.         *         * <P>If the image is the same as the current one nothing is done.         *         * @param img The image to display.         *         * @see Component#imageUpdate         *         * */        void setImage(Image img) {            // Update object state            synchronized (ImgScrollPane.this) {                if (img == null) {                    throw new IllegalArgumentException();                }                // If same image do nothing                if (this.img == img) {                    return;                }                                // (Re)initialize                dimFlags = 0;                this.img = img;                lastSize = null;                lastZoom = 0f;                setScrollbars();                // Set to erase previous image                erase = true;            }            // Start image production (if the image is already being prepared            // the method does nothing)            ImgScrollPane.this.prepareImage(img,this);        }            /**         * Returns the minimum size for this component, which is (0,0).         *         * @return The minimum size         *         * */        public Dimension getMinimumSize() {            return new Dimension(0,0);        }        /**         * Returns the maximum size for this component, which is infinite.         *         * @return The maximum size         *         * */        public Dimension getMaximumSize() {            return new Dimension(Integer.MAX_VALUE,Integer.MAX_VALUE);        }        /**         * Returns the preferred size for this component, which is the image         * display size, if known, the previous image display size, if any, or         * the size specified at the constructor.         *         * @return The preferred size for this component.         *         * */        public Dimension getPreferredSize() {            return dim;        }        /**         * Monitors the image rendering for dimensions and calls the         * superclass' 'imageUpdate()' method. If the display size of the         * image is not yet known and the image dimensions are obtained, then         * the scrollbars' values are set. If 'img' is not the current image         * to display nothing is done and 'false' is returned indicating that         * nothing more is necessary for it.         *         * @see ImageObserver#imageUpdate         *         * @see Component#imageUpdate         *         * */        public boolean imageUpdate(Image img, int infoflags,                                   int x, int y, int w, int h) {            if (this.img != img) {                // Not the image we want to display now (might be an old one)                // => do nothing and no more info needed on that image                return false;            }            // If got the image dimensions then store them and set component            // size as appropriate.            if ((infoflags & (ImageObserver.WIDTH|ImageObserver.HEIGHT)) != 0) {                // Got some image dimension                synchronized (ImgScrollPane.this) {                    // Read the dimensions received                    if ((infoflags & ImageObserver.WIDTH) != 0) {                        imgDim.width = w;                        dimFlags |= ImageObserver.WIDTH;                    }                    if ((infoflags & ImageObserver.HEIGHT) != 0) {                        imgDim.height = h;                        dimFlags |= ImageObserver.HEIGHT;                    }                    // If we got to know the image dimensions force the layout                    // to be done (to see if it is necessary to show                    // scrollbars)                    if (dimFlags ==                        (ImageObserver.WIDTH|ImageObserver.HEIGHT)) {                        ImgScrollPane.this.doLayout();                    }                }            }            // Call the superclass' method to continue processing            return super.imageUpdate(img,infoflags,x,y,w,h);        }        /**         * Paints the image, if any, on the graphics context by calling         * update().         *         * @param g The graphics context to paint on.         *         * */        public void paint(Graphics g) {            // Now call update as usual            update(g);        }        /**         * Updates the component by drawing the relevant part of the image         * that fits within the Graphics clipping area of 'g'. If the image is         * not already being prepared for rendering or is not already rendered         * this method does not start it. This is to avoid blocking the AWT         * threads for rendering the image. The image rendering is started by         * the 'setImage()' method.         *         * @param g The graphics context where to draw         *         * @see #setImage         *         * */        public void update(Graphics g) {            Image img;         // The image to display            float zoom;        // The zoom factor            boolean erase;     // If the display area should be erased            int dx1,dy1;       // Scaling destionation upper-left corner            int dx2,dy2;       // Scaling destination down-right corner            int sx1,sy1;       // Scaling source upper-left corner            int sx2,sy2;       // Scaling source down-right corner            int ox,oy;         // Centering offset            Rectangle b;       // Bounds of the display area            int offx,offy;     // Offset of the upper-left corner            int loffx,loffy;   // Offset of the upper-left corner of last update            boolean copyScroll;// If the scrolling should be done by copying            Rectangle clip;    // The clipping area            int status;        // The image fetching status            // Copy to local variables in a synchronized block to avoid races            synchronized (ImgScrollPane.this) {                img = this.img;                zoom = ImgScrollPane.this.zoom;                erase = this.erase;                copyScroll = ImgScrollPane.this.copyScroll;                this.erase = false;                                // If no image or the image has not started preparation yet do                // nothing. We do not want to start the image preparation in                // this thread because it can be long.                if (img == null || (status = this.checkImage(img,null)) == 0) {                    return;                }                // Get the display size and eventual centering offset for the                // image.                b = this.getBounds();                ox = (b.width > dim.width) ? (b.width-dim.width)/2 : 0;                oy = (b.height > dim.height) ? (b.height-dim.height)/2 : 0;                // Get the display offset                clip = g.getClipBounds();                if (lastUpdateOffset != null &&                    (clip.width < b.width || clip.height < b.height)) {                    // The clip is smaller than the display area => we need to                     // paint with the last offset to avoid screwing up the                    // displayed image.                    offx = lastUpdateOffset.x;                    offy = lastUpdateOffset.y;                }                else {                    // The clipping area covers the whole display area => we                    // can use the current offset.                    offx = hsbar.getValue();                    offy = vsbar.getValue();                }                // Get and update the offset of last update                if (lastUpdateOffset == null) {                    lastUpdateOffset = new Point();                }                loffx = lastUpdateOffset.x;                loffy = lastUpdateOffset.y;                lastUpdateOffset.x = offx;                lastUpdateOffset.y = offy;                // Set the display size according to zoom                if (zoom == 1f) {                    // Natural image size, no scaling                    // Displace the origin of the image according to offset                    ox -= offx;                    oy -= offy;                    // No zoom so no translation for scaling compensation needed                    sx1 = sy1 = 0; // to keep compiler happy                    sx2 = sy2 = 0; // to keep compiler happy                    dx1 = dy1 = 0; // to keep compiler happy                    dx2 = dy2 = 0; // to keep compiler happy                }                else {                    int sox,soy;       // Scaling compensation offset                    // Calculate coordinates of lower right corner for scaling                    if (dimFlags != 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人激情在线网| 在线视频一区二区免费| 蜜桃一区二区三区四区| 亚洲图片欧美色图| 亚洲蜜臀av乱码久久精品| 国产精品美女久久久久aⅴ国产馆| 久久久综合激的五月天| 欧美成人精品3d动漫h| 日韩欧美美女一区二区三区| 日韩一区二区在线观看视频| 欧美一卡2卡三卡4卡5免费| 欧美一区二区三区在线观看| 欧美精品乱码久久久久久| 8v天堂国产在线一区二区| 91精品国产欧美一区二区成人 | 欧美丰满嫩嫩电影| 欧美日韩国产一级片| 91精品一区二区三区久久久久久 | 懂色av一区二区三区免费看| 国产不卡一区视频| 成人福利视频网站| 色域天天综合网| 欧美日韩一级大片网址| 日韩美女主播在线视频一区二区三区| 日韩限制级电影在线观看| 久久综合九色综合97婷婷女人| 国产亚洲综合色| 亚洲天堂成人网| 亚洲电影一级片| 久久se这里有精品| 国产成人亚洲综合a∨婷婷图片| 97久久超碰精品国产| 91高清在线观看| 欧美一级黄色大片| 国产精品福利一区| 亚洲国产精品久久人人爱蜜臀 | 国内精品不卡在线| 波多野结衣中文字幕一区| 色美美综合视频| 日韩一本二本av| 中文一区在线播放| 亚洲第一成人在线| 国产精品资源网| 91精品办公室少妇高潮对白| 337p亚洲精品色噜噜| 国产日产欧产精品推荐色| 亚洲精品一二三四区| 青青草视频一区| 99久久99久久精品免费观看 | 久久精品夜色噜噜亚洲aⅴ| 亚洲精品国产一区二区精华液 | 免费高清视频精品| 成人动漫一区二区在线| 欧美色视频一区| 久久九九影视网| 亚洲国产日韩精品| 国产一区二区在线看| 欧美亚洲自拍偷拍| 久久久久久亚洲综合| 亚洲综合在线视频| 国产精品自拍三区| 欧美精品三级日韩久久| 亚洲欧洲一区二区三区| 免费一级片91| 欧美性受极品xxxx喷水| 国产亚洲一区字幕| 秋霞国产午夜精品免费视频| 91免费视频网| 中文无字幕一区二区三区| 日本va欧美va欧美va精品| www.亚洲国产| 精品国产3级a| 天堂精品中文字幕在线| 91毛片在线观看| 国产香蕉久久精品综合网| 日本vs亚洲vs韩国一区三区二区| 一本到一区二区三区| 国产欧美一区二区精品久导航 | 韩国欧美一区二区| 欧美体内she精高潮| 亚洲欧洲另类国产综合| 精品无人码麻豆乱码1区2区| 91精品国产乱| 亚洲成人精品影院| 91丝袜美腿高跟国产极品老师| 欧美精品一区二| 蜜桃视频在线观看一区| 精品视频一区三区九区| 亚洲人成网站影音先锋播放| 国产成人精品亚洲午夜麻豆| 欧美精品一区二区精品网| 奇米在线7777在线精品| 91精品国产一区二区三区蜜臀| 亚洲小说欧美激情另类| 在线中文字幕一区| 亚洲精品国久久99热| 色综合天天综合网天天看片| 国产精品不卡视频| 丁香激情综合国产| 久久精品一区四区| 国产sm精品调教视频网站| 国产日本亚洲高清| 国产91富婆露脸刺激对白| 国产亚洲欧美日韩日本| 国产精品自在欧美一区| 国产女人18毛片水真多成人如厕 | 欧美美女直播网站| 亚洲福利一二三区| 欧美女孩性生活视频| 日韩福利电影在线观看| 制服丝袜亚洲网站| 日韩激情一区二区| 欧美一区二区视频在线观看 | 成人性色生活片免费看爆迷你毛片| 国产亚洲va综合人人澡精品| 成人毛片老司机大片| 国产精品国产a级| 色综合天天综合狠狠| 一区二区三区视频在线看| 在线观看免费视频综合| 亚洲国产精品一区二区久久恐怖片| 欧美区在线观看| 久久国产精品色| 中文字幕 久热精品 视频在线| 91一区二区在线观看| 亚洲综合免费观看高清完整版在线 | 日本一区二区三区国色天香| 成人国产精品免费观看动漫 | 国产揄拍国内精品对白| 国产欧美日韩精品a在线观看| 成人免费高清在线观看| 亚洲综合在线第一页| 欧美精品自拍偷拍| 国产一区二区三区精品欧美日韩一区二区三区 | 久久综合九色综合欧美亚洲| 北岛玲一区二区三区四区| 亚洲一二三四久久| 精品国产免费久久| 色哟哟精品一区| 日韩av电影一区| 国产人伦精品一区二区| 欧美亚洲国产一区二区三区va| 免费观看在线综合| 国产精品久久久久三级| 欧美色老头old∨ideo| 久久99精品国产.久久久久| 国产精品毛片大码女人| 欧美精品 国产精品| 国产成人精品网址| 无码av免费一区二区三区试看| 久久综合九色综合97_久久久| 97久久精品人人澡人人爽| 日本特黄久久久高潮| 国产精品免费看片| 欧美日韩国产高清一区二区三区| 国产精品一色哟哟哟| 亚洲大片精品永久免费| 国产精品视频看| 91精品在线免费观看| 91丨porny丨最新| 精品在线你懂的| 亚洲精品中文在线观看| 国产日韩综合av| 欧美一区午夜视频在线观看| av综合在线播放| 精品在线播放午夜| 午夜亚洲国产au精品一区二区| 国产三级欧美三级| 日韩一区二区精品在线观看| 91麻豆文化传媒在线观看| 国产精品亚洲成人| 免费看黄色91| 亚洲福利一二三区| 亚洲人成伊人成综合网小说| 国产午夜精品久久久久久免费视 | 亚洲成a人片在线观看中文| 国产欧美精品在线观看| 欧美一级久久久久久久大片| 91福利国产成人精品照片| www.欧美色图| 国产精品白丝jk白祙喷水网站| 秋霞国产午夜精品免费视频| 一区二区三区国产精品| 中文字幕在线不卡| 久久久久久麻豆| 日韩午夜激情视频| 欧美精品久久一区二区三区| 在线亚洲+欧美+日本专区| 成人激情小说网站| 国产精品91xxx| 精品一区二区三区免费播放| 日韩激情视频网站| 日韩综合小视频| 亚洲国产精品久久久久秋霞影院| 亚洲人吸女人奶水| 国产精品每日更新在线播放网址| 久久精品视频网| 久久精品免费在线观看| 国产区在线观看成人精品| 久久亚洲一区二区三区明星换脸|